| | |
| | | import { Root, Element, ElementContent } from "hast" |
| | | import { GlobalConfiguration } from "../cfg" |
| | | import { i18n } from "../i18n" |
| | | 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") |
| | |
| | | return resources |
| | | } |
| | | |
| | | export function renderPage( |
| | | function renderTranscludes( |
| | | root: Root, |
| | | cfg: GlobalConfiguration, |
| | | slug: FullSlug, |
| | | componentData: QuartzComponentProps, |
| | | components: RenderComponents, |
| | | pageResources: StaticResources, |
| | | ): string { |
| | | // make a deep copy of the tree so we don't remove the transclusion references |
| | | // for the file cached in contentMap in build.ts |
| | | const root = clone(componentData.tree) as Root |
| | | |
| | | ) { |
| | | // process transcludes in componentData |
| | | visit(root, "element", (node, _index, _parent) => { |
| | | if (node.tagName === "blockquote") { |
| | |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export function renderPage( |
| | | cfg: GlobalConfiguration, |
| | | slug: FullSlug, |
| | | componentData: QuartzComponentProps, |
| | | components: RenderComponents, |
| | | pageResources: StaticResources, |
| | | ): string { |
| | | // make a deep copy of the tree so we don't remove the transclusion references |
| | | // for the file cached in contentMap in build.ts |
| | | const root = clone(componentData.tree) as Root |
| | | renderTranscludes(root, cfg, slug, componentData) |
| | | |
| | | // set componentData.tree to the edited html that has transclusions rendered |
| | | componentData.tree = root |