fix: load mermaid as normal now that inline is safely below bundle size

This commit is contained in:
Jacky Zhao 2025-03-10 16:42:08 -07:00
parent 9e3e711646
commit b00198b888
3 changed files with 22 additions and 19 deletions

View file

@ -9,9 +9,6 @@ import { visit } from "unist-util-visit"
import { Root, Element, ElementContent } from "hast" import { Root, Element, ElementContent } from "hast"
import { GlobalConfiguration } from "../cfg" import { GlobalConfiguration } from "../cfg"
import { i18n } from "../i18n" import { i18n } from "../i18n"
// @ts-ignore
import mermaidScript from "./scripts/mermaid.inline"
import mermaidStyle from "./styles/mermaid.inline.scss"
import { QuartzPluginData } from "../plugins/vfile" import { QuartzPluginData } from "../plugins/vfile"
interface RenderComponents { interface RenderComponents {
@ -65,17 +62,6 @@ export function pageResources(
contentType: "external", contentType: "external",
}) })
// dynamic afterDOMReady must come after postscript.js
if (fileData.hasMermaidDiagram) {
resources.js.push({
script: mermaidScript,
loadTime: "afterDOMReady",
moduleType: "module",
contentType: "inline",
})
resources.css.push({ content: mermaidStyle, inline: true })
}
return resources return resources
} }

View file

@ -1,4 +1,4 @@
import { removeAllChildren } from "./util" import { registerEscapeHandler, removeAllChildren } from "./util"
interface Position { interface Position {
x: number x: number
@ -158,7 +158,7 @@ document.addEventListener("nav", async () => {
) )
mermaidImport ||= await import( mermaidImport ||= await import(
//@ts-ignore // @ts-ignore
"https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.4.0/mermaid.esm.min.mjs" "https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.4.0/mermaid.esm.min.mjs"
) )
const mermaid = mermaidImport.default const mermaid = mermaidImport.default
@ -237,12 +237,12 @@ document.addEventListener("nav", async () => {
closeBtn.addEventListener("click", hideMermaid) closeBtn.addEventListener("click", hideMermaid)
expandBtn.addEventListener("click", showMermaid) expandBtn.addEventListener("click", showMermaid)
registerEscapeHandler(popupContainer, hideMermaid)
document.addEventListener("keydown", handleEscape) document.addEventListener("keydown", handleEscape)
window.addCleanup(() => { window.addCleanup(() => {
closeBtn.removeEventListener("click", hideMermaid) closeBtn.removeEventListener("click", hideMermaid)
expandBtn.removeEventListener("click", showMermaid) expandBtn.removeEventListener("click", showMermaid)
document.removeEventListener("keydown", handleEscape)
}) })
} }
}) })

View file

@ -16,9 +16,12 @@ import path from "path"
import { splitAnchor } from "../../util/path" import { splitAnchor } from "../../util/path"
import { JSResource, CSSResource } from "../../util/resources" import { JSResource, CSSResource } from "../../util/resources"
// @ts-ignore // @ts-ignore
import calloutScript from "../../components/scripts/callout.inline.ts" import calloutScript from "../../components/scripts/callout.inline"
// @ts-ignore // @ts-ignore
import checkboxScript from "../../components/scripts/checkbox.inline.ts" import checkboxScript from "../../components/scripts/checkbox.inline"
// @ts-ignore
import mermaidScript from "../../components/scripts/mermaid.inline"
import mermaidStyle from "../../components/styles/mermaid.inline.scss"
import { FilePath, pathToRoot, slugTag, slugifyFilePath } from "../../util/path" import { FilePath, pathToRoot, slugTag, slugifyFilePath } from "../../util/path"
import { toHast } from "mdast-util-to-hast" import { toHast } from "mdast-util-to-hast"
import { toHtml } from "hast-util-to-html" import { toHtml } from "hast-util-to-html"
@ -806,6 +809,20 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>>
}) })
} }
if (opts.mermaid) {
js.push({
script: mermaidScript,
loadTime: "afterDOMReady",
contentType: "inline",
moduleType: "module",
})
css.push({
content: mermaidStyle,
inline: true,
})
}
return { js, css } return { js, css }
}, },
} }