| | |
| | | import { Root, Element, ElementContent } from "hast" |
| | | import { GlobalConfiguration } from "../cfg" |
| | | import { i18n } from "../i18n" |
| | | // @ts-ignore |
| | | import mermaidScript from "./scripts/mermaid.inline" |
| | | import mermaidStyle from "./styles/mermaid.inline.scss" |
| | | import { QuartzPluginData } from "../plugins/vfile" |
| | | |
| | | interface RenderComponents { |
| | | head: QuartzComponent |
| | |
| | | const headerRegex = new RegExp(/h[1-6]/) |
| | | export function pageResources( |
| | | baseDir: FullSlug | RelativeURL, |
| | | fileData: QuartzPluginData, |
| | | staticResources: StaticResources, |
| | | ): StaticResources { |
| | | const contentIndexPath = joinSegments(baseDir, "static/contentIndex.json") |
| | | const contentIndexScript = `const fetchData = fetch("${contentIndexPath}").then(data => data.json())` |
| | | |
| | | return { |
| | | const resources: StaticResources = { |
| | | css: [ |
| | | { |
| | | content: joinSegments(baseDir, "index.css"), |
| | |
| | | script: contentIndexScript, |
| | | }, |
| | | ...staticResources.js, |
| | | { |
| | | ], |
| | | } |
| | | |
| | | if (fileData.hasMermaidDiagram) { |
| | | resources.js.push({ |
| | | script: mermaidScript, |
| | | loadTime: "afterDOMReady", |
| | | moduleType: "module", |
| | | contentType: "inline", |
| | | }) |
| | | resources.css.push({ content: mermaidStyle, inline: true }) |
| | | } |
| | | |
| | | // NOTE: we have to put this last to make sure spa.inline.ts is the last item. |
| | | resources.js.push({ |
| | | src: joinSegments(baseDir, "postscript.js"), |
| | | loadTime: "afterDOMReady", |
| | | moduleType: "module", |
| | | contentType: "external", |
| | | }, |
| | | ], |
| | | } |
| | | }) |
| | | |
| | | return resources |
| | | } |
| | | |
| | | export function renderPage( |