Jacky Zhao
2024-02-02 a0b927da4aa9bb540b50c875e77f97bd4a7c279a
quartz/components/scripts/search.inline.ts
@@ -188,7 +188,7 @@
      removeAllChildren(preview)
    }
    if (searchLayout) {
      searchLayout.style.visibility = "hidden"
      searchLayout.classList.remove("display-results")
    }
    searchType = "basic" // reset search type after closing
@@ -424,7 +424,7 @@
  async function onType(e: HTMLElementEventMap["input"]) {
    if (!searchLayout || !index) return
    currentSearchTerm = (e.target as HTMLInputElement).value
    searchLayout.style.visibility = currentSearchTerm === "" ? "hidden" : "visible"
    searchLayout.classList.toggle("display-results", currentSearchTerm !== "")
    searchType = currentSearchTerm.startsWith("#") ? "tags" : "basic"
    let searchResults: FlexSearch.SimpleDocumentSearchResultSetUnit[]
@@ -464,8 +464,8 @@
  searchBar?.addEventListener("input", onType)
  window.addCleanup(() => searchBar?.removeEventListener("input", onType))
  await fillDocument(data)
  registerEscapeHandler(container, hideSearch)
  await fillDocument(data)
})
/**
@@ -475,13 +475,18 @@
 */
async function fillDocument(data: { [key: FullSlug]: ContentDetails }) {
  let id = 0
  const promises: Array<Promise<unknown>> = []
  for (const [slug, fileData] of Object.entries<ContentDetails>(data)) {
    await index.addAsync(id++, {
      id,
      slug: slug as FullSlug,
      title: fileData.title,
      content: fileData.content,
      tags: fileData.tags,
    })
    promises.push(
      index.addAsync(id++, {
        id,
        slug: slug as FullSlug,
        title: fileData.title,
        content: fileData.content,
        tags: fileData.tags,
      }),
    )
  }
  return await Promise.all(promises)
}