diff --git a/docs/advanced/creating components.md b/docs/advanced/creating components.md
index 549c130a3..1923875aa 100644
--- a/docs/advanced/creating components.md
+++ b/docs/advanced/creating components.md
@@ -127,11 +127,11 @@ export default (() => {
return
}
- YourComponent.beforeDOM = `
+ YourComponent.beforeDOMLoaded = `
console.log("hello from before the page loads!")
`
- YourComponent.afterDOM = `
+ YourComponent.afterDOMLoaded = `
document.getElementById('btn').onclick = () => {
alert('button clicked!')
}
@@ -176,7 +176,7 @@ export default (() => {
return
}
- YourComponent.afterDOM = script
+ YourComponent.afterDOMLoaded = script
return YourComponent
}) satisfies QuartzComponentConstructor
```
diff --git a/package-lock.json b/package-lock.json
index cad623d7d..7ab52fc92 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,8 +32,8 @@
"mdast-util-to-hast": "^13.1.0",
"mdast-util-to-string": "^4.0.0",
"micromorph": "^0.4.5",
- "preact": "^10.20.1",
- "preact-render-to-string": "^6.4.2",
+ "preact": "^10.22.0",
+ "preact-render-to-string": "^6.5.4",
"pretty-bytes": "^6.1.1",
"pretty-time": "^1.1.0",
"reading-time": "^1.5.0",
@@ -4696,21 +4696,18 @@
}
},
"node_modules/preact": {
- "version": "10.20.1",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz",
- "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==",
+ "version": "10.22.0",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.0.tgz",
+ "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/preact-render-to-string": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.4.2.tgz",
- "integrity": "sha512-Sio5SvlyZSAXHuvnMgYzVQd67lNIuQe4uSjJ+2gfpJNC6L8zoHQR5xV7B/EjIqrAYWVyJ2eACkTCxVrIzZi6Vw==",
- "dependencies": {
- "pretty-format": "^3.8.0"
- },
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-6.5.4.tgz",
+ "integrity": "sha512-06s0E3cEMLoXQznmtJ/K/xbFs3uwo52Qpgf8lzbe+VbF/XzwJ0LxZGtVLZekhaEeC39+W1MEf05F4lUikzPnxA==",
"peerDependencies": {
"preact": ">=10"
}
@@ -4741,11 +4738,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pretty-format": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
- "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
- },
"node_modules/pretty-time": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
diff --git a/quartz/components/scripts/graph.inline.ts b/quartz/components/scripts/graph.inline.ts
index 009071652..2608b3b64 100644
--- a/quartz/components/scripts/graph.inline.ts
+++ b/quartz/components/scripts/graph.inline.ts
@@ -399,7 +399,7 @@ function renderGlobalGraph() {
document.addEventListener("nav", async (e: CustomEventMap["nav"]) => {
const slug = e.detail.url
- addToVisited(slug)
+ addToVisited(simplifySlug(slug))
await renderGraph("graph-container", slug)
const containerIcon = document.getElementById("global-graph-icon")
diff --git a/quartz/plugins/transformers/links.ts b/quartz/plugins/transformers/links.ts
index 9255c20e9..0f1eb644f 100644
--- a/quartz/plugins/transformers/links.ts
+++ b/quartz/plugins/transformers/links.ts
@@ -95,7 +95,7 @@ export const CrawlLinks: QuartzTransformerPlugin<
}
node.properties.className = classes
- if (opts.openLinksInNewTab) {
+ if (isExternal && opts.openLinksInNewTab) {
node.properties.target = "_blank"
}
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index f4f6066d1..51d2e654f 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -6,6 +6,7 @@ import { slug as slugAnchor } from "github-slugger"
import rehypeRaw from "rehype-raw"
import { SKIP, visit } from "unist-util-visit"
import path from "path"
+import { splitAnchor } from "../../util/path"
import { JSResource } from "../../util/resources"
// @ts-ignore
import calloutScript from "../../components/scripts/callout.inline.ts"
@@ -199,10 +200,9 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
src = src.replace(wikilinkRegex, (value, ...capture) => {
const [rawFp, rawHeader, rawAlias]: (string | undefined)[] = capture
- const fp = rawFp ?? ""
- const anchor = rawHeader?.trim().replace(/^#+/, "")
+ const [fp, anchor] = splitAnchor(`${rawFp ?? ""}${rawHeader ?? ""}`)
const blockRef = Boolean(anchor?.startsWith("^")) ? "^" : ""
- const displayAnchor = anchor ? `#${blockRef}${slugAnchor(anchor)}` : ""
+ const displayAnchor = anchor ? `#${blockRef}${anchor.trim().replace(/^#+/, "")}` : ""
const displayAlias = rawAlias ?? rawHeader?.replace("#", "|") ?? ""
const embedDisplay = value.startsWith("!") ? "!" : ""
@@ -414,8 +414,8 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
return
}
- // find first line
- const firstChild = node.children[0]
+ // find first line and callout content
+ const [firstChild, ...calloutContent] = node.children
if (firstChild.type !== "paragraph" || firstChild.children[0]?.type !== "text") {
return
}
@@ -492,6 +492,21 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin
"data-callout-metadata": calloutMetaData,
},
}
+
+ // Add callout-content class to callout body if it has one.
+ if (calloutContent.length > 0) {
+ const contentData: BlockContent | DefinitionContent = {
+ data: {
+ hProperties: {
+ className: "callout-content",
+ },
+ hName: "div",
+ },
+ type: "blockquote",
+ children: [...calloutContent],
+ }
+ node.children = [node.children[0], contentData]
+ }
}
})
}
diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss
index b3c498e98..3d93800a9 100644
--- a/quartz/styles/base.scss
+++ b/quartz/styles/base.scss
@@ -489,6 +489,7 @@ ul.overflow,
ol.overflow {
max-height: 400;
overflow-y: auto;
+ position: relative;
// clearfix
content: "";
diff --git a/quartz/styles/callouts.scss b/quartz/styles/callouts.scss
index b1fd180ce..d6f65aadc 100644
--- a/quartz/styles/callouts.scss
+++ b/quartz/styles/callouts.scss
@@ -10,7 +10,7 @@
transition: max-height 0.3s ease;
box-sizing: border-box;
- & > *:nth-child(2) {
+ & > .callout-content > :first-child {
margin-top: 0;
}