Jacky Zhao
2024-02-02 3b596c9311fd5fe552d6c53e9b27841932a26587
fix: flatmap children when highlighting rich preview to avoid body
1 files modified
6 ■■■■ changed files
quartz/components/scripts/search.inline.ts 6 ●●●● patch | view | raw | blame | history
quartz/components/scripts/search.inline.ts
@@ -81,10 +81,10 @@
  }`
}
function highlightHTML(searchTerm: string, innerHTML: string) {
function highlightHTML(searchTerm: string, el: HTMLElement) {
  const p = new DOMParser()
  const tokenizedTerms = tokenizeTerm(searchTerm)
  const html = p.parseFromString(innerHTML, "text/html")
  const html = p.parseFromString(el.innerHTML, "text/html")
  const createHighlightSpan = (text: string) => {
    const span = document.createElement("span")
@@ -389,7 +389,7 @@
    previewInner = document.createElement("div")
    previewInner.classList.add("preview-inner")
    const innerDiv = await fetchContent(slug).then((contents) =>
      contents.map((el) => highlightHTML(currentSearchTerm, el.innerHTML)),
      contents.flatMap((el) => [...highlightHTML(currentSearchTerm, el as HTMLElement).children]),
    )
    previewInner.append(...innerDiv)
    preview.replaceChildren(previewInner)