roadmap/quartz/components/Content.tsx

32 lines
933 B
TypeScript
Raw Normal View History

2023-06-12 06:46:38 +00:00
import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
2023-06-10 06:06:02 +00:00
import { Fragment, jsx, jsxs } from 'preact/jsx-runtime'
import { toJsxRuntime } from "hast-util-to-jsx-runtime"
2023-06-17 23:05:46 +00:00
// @ts-ignore
import popoverScript from './scripts/popover.inline'
import popoverStyle from './styles/popover.scss'
interface Options {
enablePopover: boolean
}
const defaultOptions: Options = {
enablePopover: true
2023-06-10 06:06:02 +00:00
}
2023-06-12 06:46:38 +00:00
2023-06-17 23:05:46 +00:00
export default ((opts?: Partial<Options>) => {
function Content({ tree }: QuartzComponentProps) {
// @ts-ignore (preact makes it angry)
const content = toJsxRuntime(tree, { Fragment, jsx, jsxs, elementAttributeNameCase: 'html' })
return <article>{content}</article>
}
const enablePopover = opts?.enablePopover ?? defaultOptions.enablePopover
if (enablePopover) {
Content.afterDOMLoaded = popoverScript
Content.css = popoverStyle
}
return Content
}) satisfies QuartzComponentConstructor