import { toJsxRuntime } from "hast-util-to-jsx-runtime" import { resolveToRoot } from "../../path" import { StaticResources } from "../../resources" import { EmitCallback, QuartzEmitterPlugin } from "../types" import { ProcessedContent } from "../vfile" import { Fragment, jsx, jsxs } from 'preact/jsx-runtime' import { render } from "preact-render-to-string" import { ComponentType } from "preact" import { HeadProps } from "../../components/Head" interface Options { Head: ComponentType } export class ContentPage extends QuartzEmitterPlugin { name = "ContentPage" opts: Options constructor(opts: Options) { super() this.opts = opts } async emit(content: ProcessedContent[], resources: StaticResources, emit: EmitCallback): Promise { const fps: string[] = [] for (const [tree, file] of content) { // @ts-ignore (preact makes it angry) const content = toJsxRuntime(tree, { Fragment, jsx, jsxs, elementAttributeNameCase: 'html' }) const { Head } = this.opts const doc =

{file.data.frontmatter?.title}

{content}
{resources.js.filter(resource => resource.loadTime === "afterDOMReady").map(resource =>