fix(popover): automatically position anchored links properly (#1897)
* fix(popover): automatically position heading links at heading * Impement linking of blockreferences * Popover fixes * id mapping * Remove excess regexes * Updated blockref * Remove linker element * Restore the docs to their former glory * Move the hash out of the loop * Redundant * Redundant * Restore docs * Remove log * Let it const
This commit is contained in:
parent
685c06ce2e
commit
d61fb266c7
2 changed files with 8 additions and 5 deletions
|
@ -82,8 +82,11 @@ async function mouseEnterHandler(
|
|||
const contents = await response.text()
|
||||
const html = p.parseFromString(contents, "text/html")
|
||||
normalizeRelativeURLs(html, targetUrl)
|
||||
// strip all IDs from elements to prevent duplicates
|
||||
html.querySelectorAll("[id]").forEach((el) => el.removeAttribute("id"))
|
||||
// prepend all IDs inside popovers to prevent duplicates
|
||||
html.querySelectorAll("[id]").forEach((el) => {
|
||||
const targetID = `popover-${el.id}`
|
||||
el.id = targetID
|
||||
})
|
||||
const elts = [...html.getElementsByClassName("popover-hint")]
|
||||
if (elts.length === 0) return
|
||||
|
||||
|
@ -94,7 +97,8 @@ async function mouseEnterHandler(
|
|||
link.appendChild(popoverElement)
|
||||
|
||||
if (hash !== "") {
|
||||
const heading = popoverInner.querySelector(hash) as HTMLElement | null
|
||||
const targetAnchor = hash.startsWith("#popover") ? hash : `#popover-${hash.slice(1)}`
|
||||
const heading = popoverInner.querySelector(targetAnchor) as HTMLElement | null
|
||||
if (heading) {
|
||||
// leave ~12px of buffer when scrolling to a heading
|
||||
popoverInner.scroll({ top: heading.offsetTop - 12, behavior: "instant" })
|
||||
|
|
|
@ -191,8 +191,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>>
|
|||
const [rawFp, rawHeader, rawAlias]: (string | undefined)[] = capture
|
||||
|
||||
const [fp, anchor] = splitAnchor(`${rawFp ?? ""}${rawHeader ?? ""}`)
|
||||
const blockRef = Boolean(rawHeader?.match(/^#?\^/)) ? "^" : ""
|
||||
const displayAnchor = anchor ? `#${blockRef}${anchor.trim().replace(/^#+/, "")}` : ""
|
||||
const displayAnchor = anchor ? `#${anchor.trim().replace(/^#+/, "")}` : ""
|
||||
const displayAlias = rawAlias ?? rawHeader?.replace("#", "|") ?? ""
|
||||
const embedDisplay = value.startsWith("!") ? "!" : ""
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue