Jacky Zhao
2023-06-20 fd5c8d17d3b3cd0a13b0a21a2b78d85010e02e12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
import { Fragment, jsx, jsxs } from 'preact/jsx-runtime'
import { toJsxRuntime } from "hast-util-to-jsx-runtime"
 
// @ts-ignore
import popoverScript from './scripts/popover.inline'
import popoverStyle from './styles/popover.scss'
 
interface Options {
  enablePopover: boolean
}
 
const defaultOptions: Options = {
  enablePopover: true
}
 
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