From b1a920e5c0c2c749beae19cfe15ca5301257bcb0 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Thu, 10 Apr 2025 23:28:36 +0000
Subject: [PATCH] fix: add proper popover hint to tag content page

---
 quartz/components/scripts/popover.inline.ts |   22 +++++++++-------------
 1 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/quartz/components/scripts/popover.inline.ts b/quartz/components/scripts/popover.inline.ts
index d02b0b7..9fd0aaf 100644
--- a/quartz/components/scripts/popover.inline.ts
+++ b/quartz/components/scripts/popover.inline.ts
@@ -12,7 +12,7 @@
   clearActivePopover()
 
   const link = this
-  link.id = `backlink-${randomIdNonSecure()}`
+  const id = randomIdNonSecure()
   if (link.dataset.noPopover === "true") {
     return
   }
@@ -23,12 +23,12 @@
       middleware: [inline({ x: clientX, y: clientY }), shift(), flip()],
     })
     Object.assign(popoverElement.style, {
-      transform: `translate(${x}px, ${y}px)`,
+      transform: `translate(${x.toFixed()}px, ${y.toFixed()}px)`,
     })
   }
 
-  const prevPopoverElement = document.getElementById(`popover-${link.id.split("-")[1]}`)
-  const hasAlreadyBeenFetched = () => !!prevPopoverElement
+  const prevPopoverElement = document.getElementById(`popover-${id}`)
+  const hasAlreadyBeenFetched = () => !!document.getElementById(`popover-${id}`)
 
   // dont refetch if there's already a popover
   if (hasAlreadyBeenFetched()) {
@@ -91,7 +91,7 @@
       normalizeRelativeURLs(html, targetUrl)
       // prepend all IDs inside popovers to prevent duplicates
       html.querySelectorAll("[id]").forEach((el) => {
-        const targetID = `popover-${el.id}`
+        const targetID = `popover-internal-${el.id}`
         el.id = targetID
       })
       const elts = [...html.getElementsByClassName("popover-hint")]
@@ -101,12 +101,12 @@
   }
 
   setPosition(popoverElement)
-  popoverElement.id = `popover-${link.id.split("-")[1]}`
-  popoverElement?.classList.add("active-popover")
+  popoverElement.id = `popover-${id}`
+  popoverElement.classList.add("active-popover")
   document.body.appendChild(popoverElement)
 
   if (hash !== "") {
-    const targetAnchor = hash.startsWith("#popover") ? hash : `#popover-${hash.slice(1)}`
+    const targetAnchor = `#popover-internal-${hash.slice(1)}`
     const heading = popoverInner.querySelector(targetAnchor) as HTMLElement | null
     if (heading) {
       // leave ~12px of buffer when scrolling to a heading
@@ -117,11 +117,7 @@
 
 function clearActivePopover() {
   const allPopoverElements = document.querySelectorAll(".popover")
-  if (allPopoverElements) {
-    allPopoverElements.forEach((popoverElement) =>
-      popoverElement.classList.remove("active-popover"),
-    )
-  }
+  allPopoverElements.forEach((popoverElement) => popoverElement.classList.remove("active-popover"))
 }
 
 document.addEventListener("nav", () => {

--
Gitblit v1.10.0