| | |
| | | import { removeAllChildren } from "./util" |
| | | import mermaid from "mermaid" |
| | | import { registerEscapeHandler, removeAllChildren } from "./util" |
| | | |
| | | interface Position { |
| | | x: number |
| | |
| | | "--codeFont", |
| | | ] as const |
| | | |
| | | let mermaidImport = undefined |
| | | document.addEventListener("nav", async () => { |
| | | const center = document.querySelector(".center") as HTMLElement |
| | | const nodes = center.querySelectorAll("code.mermaid") as NodeListOf<HTMLElement> |
| | |
| | | {} as Record<(typeof cssVars)[number], string>, |
| | | ) |
| | | |
| | | mermaidImport ||= await import( |
| | | // @ts-ignore |
| | | "https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.4.0/mermaid.esm.min.mjs" |
| | | ) |
| | | const mermaid = mermaidImport.default |
| | | |
| | | const darkMode = document.documentElement.getAttribute("saved-theme") === "dark" |
| | | mermaid.initialize({ |
| | | startOnLoad: false, |
| | |
| | | |
| | | closeBtn.addEventListener("click", hideMermaid) |
| | | expandBtn.addEventListener("click", showMermaid) |
| | | registerEscapeHandler(popupContainer, hideMermaid) |
| | | document.addEventListener("keydown", handleEscape) |
| | | |
| | | window.addCleanup(() => { |
| | | closeBtn.removeEventListener("click", hideMermaid) |
| | | expandBtn.removeEventListener("click", showMermaid) |
| | | document.removeEventListener("keydown", handleEscape) |
| | | }) |
| | | } |
| | | }) |