feat(markdown): render TikZ fenced blocks to SVG

Adds a markdown-it extractor for ```tikz blocks that emits a sanitized
placeholder, plus a runTikz() that lazy-loads the obsidian-tikzjax 0.5.2
bundle from jsdelivr on first encounter, sanitizes the produced SVG with
DOMPurify, and caches it in PouchDB keyed by sha256(source) so repeat
views are instant and offline-capable.
This commit is contained in:
Julien Calixte
2026-05-15 15:38:48 +02:00
parent bfd981de13
commit bf19e982fe
10 changed files with 265 additions and 178 deletions

View File

@@ -16,6 +16,7 @@ import { useLinks } from "@/hooks/useLinks.hook"
import {
renderCodeFile,
runMermaid,
runTikz,
useShikiji
} from "@/hooks/useMarkdown.hook"
import { useNoteFreshness } from "@/hooks/useNoteFreshness.hook"
@@ -160,6 +161,10 @@ watch([content, mode], () => {
runMermaid(`.note-${sha.value} .mermaid`)
}
if (rawContent.value.includes("```tikz")) {
void runTikz(`.note-${sha.value} .tikz`)
}
if (isMarkdown.value && rawContent.value.includes("```")) {
useShikiji()
}