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
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user