Jacky Zhao
2023-07-04 ab9da02c60c962128820e6874e6f07c98bc3dda7
quartz/components/scripts/popover.inline.ts
@@ -19,11 +19,9 @@
  )
}
document.addEventListener("nav", () => {
  const links = [...document.getElementsByClassName("internal")] as HTMLLinkElement[]
  const p = new DOMParser()
  for (const link of links) {
    link.addEventListener("mouseenter", async ({ clientX, clientY }) => {
async function mouseEnterHandler(this: HTMLLinkElement, { clientX, clientY }: { clientX: number, clientY: number }) {
  const link = this
      async function setPosition(popoverElement: HTMLElement) {
        const { x, y } = await computePosition(link, popoverElement, {
          middleware: [
@@ -38,7 +36,8 @@
        })
      }
      if (link.dataset.fetchedPopover === "true") {
  // dont refetch if there's already a popover
  if ([...link.children].some(child => child.classList.contains("popover"))) {
        return setPosition(link.lastChild as HTMLElement)
      }
@@ -73,7 +72,6 @@
      setPosition(popoverElement)
      link.appendChild(popoverElement)
      link.dataset.fetchedPopover = "true"
      if (hash !== "") {
        const heading = popoverInner.querySelector(hash) as HTMLElement | null
@@ -82,6 +80,12 @@
          popoverInner.scroll({ top: heading.offsetTop - 12, behavior: 'instant' })
        }
      }
    })
}
document.addEventListener("nav", () => {
  const links = [...document.getElementsByClassName("internal")] as HTMLLinkElement[]
  for (const link of links) {
    link.removeEventListener("mouseenter", mouseEnterHandler)
    link.addEventListener("mouseenter", mouseEnterHandler)
  }
})