import { resolveToRoot } from "../path" import { JSResourceToScriptElement } from "../resources" import { QuartzComponentConstructor, QuartzComponentProps } from "./types" interface Options { prefetchContentIndex: boolean } const defaultOptions: Options = { prefetchContentIndex: true } export default ((opts?: Options) => { function Head({ fileData, externalResources }: QuartzComponentProps) { const slug = fileData.slug! const title = fileData.frontmatter?.title ?? "Untitled" const description = fileData.description ?? "No description provided" const { css, js } = externalResources const baseDir = resolveToRoot(slug) const iconPath = baseDir + "/static/icon.png" const ogImagePath = baseDir + "/static/og-image.png" const prefetchContentIndex = opts?.prefetchContentIndex ?? defaultOptions.prefetchContentIndex const contentIndexPath = baseDir + "/static/contentIndex.json" const contentIndexScript = `const fetchData = fetch(\`${contentIndexPath}\`).then(data => data.json())` return {title} {prefetchContentIndex && } {css.map(href => )} {js.filter(resource => resource.loadTime === "beforeDOMReady").map(res => JSResourceToScriptElement(res, true))} } return Head }) satisfies QuartzComponentConstructor