From 8bfee04c8c6948a88114d53769d4bb89b8ec7bf5 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Sat, 17 Jun 2023 23:05:46 +0000
Subject: [PATCH] popovers

---
 quartz/components/Content.tsx |   30 +++++++++++++++++++++++++-----
 1 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/quartz/components/Content.tsx b/quartz/components/Content.tsx
index cc5d66a..0bcab1e 100644
--- a/quartz/components/Content.tsx
+++ b/quartz/components/Content.tsx
@@ -2,10 +2,30 @@
 import { Fragment, jsx, jsxs } from 'preact/jsx-runtime'
 import { toJsxRuntime } from "hast-util-to-jsx-runtime"
 
-function Content({ tree }: QuartzComponentProps) {
-  // @ts-ignore (preact makes it angry)
-  const content = toJsxRuntime(tree, { Fragment, jsx, jsxs, elementAttributeNameCase: 'html' })
-  return <article>{content}</article>
+// @ts-ignore
+import popoverScript from './scripts/popover.inline'
+import popoverStyle from './styles/popover.scss'
+
+interface Options {
+  enablePopover: boolean
 }
 
-export default (() => Content) satisfies QuartzComponentConstructor
+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

--
Gitblit v1.10.0