From 6245935c8c51868da1061d6cf4c344027b4b68f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 13:34:04 -0700 Subject: [PATCH 01/14] chore(deps): bump shiki from 1.6.0 to 1.10.3 (#1264) Bumps [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) from 1.6.0 to 1.10.3. - [Release notes](https://github.com/shikijs/shiki/releases) - [Changelog](https://github.com/shikijs/shiki/blob/main/CHANGELOG.md) - [Commits](https://github.com/shikijs/shiki/commits/v1.10.3/packages/shiki) --- updated-dependencies: - dependency-name: shiki dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 20 ++++++++++++-------- package.json | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 918f890..a8afd03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,7 @@ "rfdc": "^1.3.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", - "shiki": "^1.6.0", + "shiki": "^1.10.3", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", @@ -820,9 +820,12 @@ } }, "node_modules/@shikijs/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.6.0.tgz", - "integrity": "sha512-NIEAi5U5R7BLkbW1pG/ZKu3eb1lzc3/+jD0lFsuxMT7zjaf9bbNwdNyMr7zh/Zl8EXQtQ+MYBAt5G+JLu+5DlA==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.3.tgz", + "integrity": "sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==", + "dependencies": { + "@types/hast": "^3.0.4" + } }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", @@ -5563,11 +5566,12 @@ } }, "node_modules/shiki": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.6.0.tgz", - "integrity": "sha512-P31ROeXcVgW/k3Z+vUUErcxoTah7ZRaimctOpzGuqAntqnnSmx1HOsvnbAB8Z2qfXPRhw61yptAzCsuKOhTHwQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.3.tgz", + "integrity": "sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==", "dependencies": { - "@shikijs/core": "1.6.0" + "@shikijs/core": "1.10.3", + "@types/hast": "^3.0.4" } }, "node_modules/signal-exit": { diff --git a/package.json b/package.json index 516fd1b..a9d0683 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "rfdc": "^1.3.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", - "shiki": "^1.6.0", + "shiki": "^1.10.3", "source-map-support": "^0.5.21", "to-vfile": "^8.0.0", "toml": "^3.0.0", From 4eeacb7fbf0059f47317d813a9077437c75ce2f6 Mon Sep 17 00:00:00 2001 From: Cao Mingjun Date: Tue, 9 Jul 2024 04:34:43 +0800 Subject: [PATCH 02/14] Fix Non-English Anchor Popover Positioning Issue and Update Type Hint (#1252) - [Major] Changed `hash` passed to `querySelector` to `decodeURIComponent(hash)` to fix the issue where non-English anchors were not correctly positioning the popover content to the corresponding title. - [Minor] Updated the type hint from `HTMLLinkElement` to `HTMLAnchorElement` as the passed element is an `` element, not a `` element (reference: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement). --- quartz/components/scripts/popover.inline.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quartz/components/scripts/popover.inline.ts b/quartz/components/scripts/popover.inline.ts index 972d3c6..49f4382 100644 --- a/quartz/components/scripts/popover.inline.ts +++ b/quartz/components/scripts/popover.inline.ts @@ -3,7 +3,7 @@ import { normalizeRelativeURLs } from "../../util/path" const p = new DOMParser() async function mouseEnterHandler( - this: HTMLLinkElement, + this: HTMLAnchorElement, { clientX, clientY }: { clientX: number; clientY: number }, ) { const link = this @@ -33,7 +33,7 @@ async function mouseEnterHandler( thisUrl.hash = "" thisUrl.search = "" const targetUrl = new URL(link.href) - const hash = targetUrl.hash + const hash = decodeURIComponent(targetUrl.hash) targetUrl.hash = "" targetUrl.search = "" @@ -100,7 +100,7 @@ async function mouseEnterHandler( } document.addEventListener("nav", () => { - const links = [...document.getElementsByClassName("internal")] as HTMLLinkElement[] + const links = [...document.getElementsByClassName("internal")] as HTMLAnchorElement[] for (const link of links) { link.addEventListener("mouseenter", mouseEnterHandler) window.addCleanup(() => link.removeEventListener("mouseenter", mouseEnterHandler)) From 3eda53cac71a2f38393048558a43942615bfebda Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:16:02 -0700 Subject: [PATCH 03/14] chore(deps): bump remark-smartypants from 2.1.0 to 3.0.2 (#1263) Bumps [remark-smartypants](https://github.com/silvenon/remark-smartypants) from 2.1.0 to 3.0.2. - [Release notes](https://github.com/silvenon/remark-smartypants/releases) - [Commits](https://github.com/silvenon/remark-smartypants/compare/v2.1.0...v3.0.2) --- updated-dependencies: - dependency-name: remark-smartypants dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 352 ++++++++++------------------------------------ package.json | 2 +- 2 files changed, 72 insertions(+), 282 deletions(-) diff --git a/package-lock.json b/package-lock.json index a8afd03..4514605 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "remark-math": "^6.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", - "remark-smartypants": "^2.1.0", + "remark-smartypants": "^3.0.2", "rfdc": "^1.3.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", @@ -1165,9 +1165,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/nlcst": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.0.tgz", - "integrity": "sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", "dependencies": { "@types/unist": "*" } @@ -3018,28 +3018,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -4527,11 +4505,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nlcst-to-string": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", - "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", "dependencies": { - "@types/nlcst": "^1.0.0" + "@types/nlcst": "^2.0.0" }, "funding": { "type": "opencollective", @@ -4604,19 +4582,27 @@ } }, "node_modules/parse-latin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", - "integrity": "sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", "dependencies": { - "nlcst-to-string": "^3.0.0", - "unist-util-modify-children": "^3.0.0", - "unist-util-visit-children": "^2.0.0" + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-latin/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", @@ -5122,16 +5108,17 @@ } }, "node_modules/remark-smartypants": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-2.1.0.tgz", - "integrity": "sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", "dependencies": { - "retext": "^8.1.0", - "retext-smartypants": "^5.2.0", + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", "unist-util-visit": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16.0.0" } }, "node_modules/remark-stringify": { @@ -5195,14 +5182,14 @@ } }, "node_modules/retext": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-8.1.0.tgz", - "integrity": "sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", "dependencies": { - "@types/nlcst": "^1.0.0", - "retext-latin": "^3.0.0", - "retext-stringify": "^3.0.0", - "unified": "^10.0.0" + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -5210,47 +5197,13 @@ } }, "node_modules/retext-latin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-3.1.0.tgz", - "integrity": "sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", "dependencies": { - "@types/nlcst": "^1.0.0", - "parse-latin": "^5.0.0", - "unherit": "^3.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -5258,61 +5211,13 @@ } }, "node_modules/retext-smartypants": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-5.2.0.tgz", - "integrity": "sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.1.0.tgz", + "integrity": "sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==", "dependencies": { - "@types/nlcst": "^1.0.0", - "nlcst-to-string": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", @@ -5320,79 +5225,13 @@ } }, "node_modules/retext-stringify": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-3.1.0.tgz", - "integrity": "sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", "dependencies": { - "@types/nlcst": "^1.0.0", - "nlcst-to-string": "^3.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -6342,15 +6181,6 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "node_modules/unherit": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz", - "integrity": "sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", @@ -6415,24 +6245,12 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-modify-children": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-3.1.1.tgz", - "integrity": "sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", "dependencies": { - "@types/unist": "^2.0.0", + "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" }, "funding": { @@ -6440,6 +6258,11 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-modify-children/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, "node_modules/unist-util-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", @@ -6475,18 +6298,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-visit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", @@ -6502,29 +6313,21 @@ } }, "node_modules/unist-util-visit-children": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-2.0.2.tgz", - "integrity": "sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", "dependencies": { - "@types/unist": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/unist-util-visit-children/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, "node_modules/unist-util-visit/node_modules/@types/unist": { "version": "3.0.2", @@ -6605,19 +6408,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile/node_modules/@types/unist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", diff --git a/package.json b/package.json index a9d0683..ffe4603 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "remark-math": "^6.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", - "remark-smartypants": "^2.1.0", + "remark-smartypants": "^3.0.2", "rfdc": "^1.3.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", From 2154d36d9993e128faaa6471cdae305cca3d810d Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 9 Jul 2024 17:20:07 -0700 Subject: [PATCH 04/14] chore: use regex flag instead of string in regexp ctor --- quartz/plugins/transformers/ofm.ts | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 925d21e..c4dd4d8 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -98,7 +98,7 @@ function canonicalizeCallout(calloutName: string): keyof typeof calloutMapping { export const externalLinkRegex = /^https?:\/\//i -export const arrowRegex = new RegExp(/(-{1,2}>|={1,2}>|<-{1,2}|<={1,2})/, "g") +export const arrowRegex = new RegExp(/(-{1,2}>|={1,2}>|<-{1,2}|<={1,2})/g) // !? -> optional embedding // \[\[ -> open brace @@ -106,35 +106,30 @@ export const arrowRegex = new RegExp(/(-{1,2}>|={1,2}>|<-{1,2}|<={1,2})/, "g") // (#[^\[\]\|\#]+)? -> # then one or more non-special characters (heading link) // (\\?\|[^\[\]\#]+)? -> optional escape \ then | then one or more non-special characters (alias) export const wikilinkRegex = new RegExp( - /!?\[\[([^\[\]\|\#\\]+)?(#+[^\[\]\|\#\\]+)?(\\?\|[^\[\]\#]+)?\]\]/, - "g", + /!?\[\[([^\[\]\|\#\\]+)?(#+[^\[\]\|\#\\]+)?(\\?\|[^\[\]\#]+)?\]\]/g, ) // ^\|([^\n])+\|\n(\|) -> matches the header row // ( ?:?-{3,}:? ?\|)+ -> matches the header row separator // (\|([^\n])+\|\n)+ -> matches the body rows -export const tableRegex = new RegExp( - /^\|([^\n])+\|\n(\|)( ?:?-{3,}:? ?\|)+\n(\|([^\n])+\|\n?)+/, - "gm", -) +export const tableRegex = new RegExp(/^\|([^\n])+\|\n(\|)( ?:?-{3,}:? ?\|)+\n(\|([^\n])+\|\n?)+/gm) // matches any wikilink, only used for escaping wikilinks inside tables -export const tableWikilinkRegex = new RegExp(/(!?\[\[[^\]]*?\]\])/, "g") +export const tableWikilinkRegex = new RegExp(/(!?\[\[[^\]]*?\]\])/g) -const highlightRegex = new RegExp(/==([^=]+)==/, "g") -const commentRegex = new RegExp(/%%[\s\S]*?%%/, "g") +const highlightRegex = new RegExp(/==([^=]+)==/g) +const commentRegex = new RegExp(/%%[\s\S]*?%%/g) // from https://github.com/escwxyz/remark-obsidian-callout/blob/main/src/index.ts const calloutRegex = new RegExp(/^\[\!(\w+)\|?(.+?)?\]([+-]?)/) -const calloutLineRegex = new RegExp(/^> *\[\!\w+\|?.*?\][+-]?.*$/, "gm") +const calloutLineRegex = new RegExp(/^> *\[\!\w+\|?.*?\][+-]?.*$/gm) // (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line // #(...) -> capturing group, tag itself must start with # // (?:[-_\p{L}\d\p{Z}])+ -> non-capturing group, non-empty string of (Unicode-aware) alpha-numeric characters and symbols, hyphens and/or underscores // (?:\/[-_\p{L}\d\p{Z}]+)*) -> non-capturing group, matches an arbitrary number of tag strings separated by "/" const tagRegex = new RegExp( - /(?:^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/, - "gu", + /(?:^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu, ) -const blockReferenceRegex = new RegExp(/\^([-_A-Za-z0-9]+)$/, "g") +const blockReferenceRegex = new RegExp(/\^([-_A-Za-z0-9]+)$/g) const ytLinkRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/ const ytPlaylistLinkRegex = /[?&]list=([^#?&]*)/ const videoExtensionRegex = new RegExp(/\.(mp4|webm|ogg|avi|mov|flv|wmv|mkv|mpg|mpeg|3gp|m4v)$/) @@ -185,8 +180,8 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin // replace all wikilinks inside a table first src = src.replace(tableRegex, (value) => { // escape all aliases and headers in wikilinks inside a table - return value.replace(tableWikilinkRegex, (value, ...capture) => { - const [raw]: (string | undefined)[] = capture + return value.replace(tableWikilinkRegex, (_value, raw) => { + // const [raw]: (string | undefined)[] = capture let escaped = raw ?? "" escaped = escaped.replace("#", "\\#") // escape pipe characters if they are not already escaped From ef375d265df178d4672b850770674ae768413628 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:20:37 -0700 Subject: [PATCH 05/14] chore(deps): bump rfdc from 1.3.1 to 1.4.1 (#1235) Bumps [rfdc](https://github.com/davidmarkclements/rfdc) from 1.3.1 to 1.4.1. - [Release notes](https://github.com/davidmarkclements/rfdc/releases) - [Commits](https://github.com/davidmarkclements/rfdc/compare/v1.3.1...1.4.1) --- updated-dependencies: - dependency-name: rfdc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4514605..19388e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", "remark-smartypants": "^3.0.2", - "rfdc": "^1.3.1", + "rfdc": "^1.4.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", "shiki": "^1.10.3", @@ -5248,9 +5248,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/rimraf": { "version": "5.0.7", diff --git a/package.json b/package.json index ffe4603..6a51fb7 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", "remark-smartypants": "^3.0.2", - "rfdc": "^1.3.1", + "rfdc": "^1.4.1", "rimraf": "^5.0.7", "serve-handler": "^6.1.5", "shiki": "^1.10.3", From b7793bd856979d0515a75c4c7a322912bdb72602 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 10 Jul 2024 01:21:00 +0100 Subject: [PATCH 06/14] feat(style): Add textHighlight theme setting (#1242) * Add textHighlight theme setting * update docs to include textHighlight * Remove errant `S` --- docs/configuration.md | 1 + quartz.config.ts | 2 ++ quartz/styles/base.scss | 3 +-- quartz/util/theme.ts | 3 +++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index e97d8df..1dc1148 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -53,6 +53,7 @@ This part of the configuration concerns anything that can affect the whole site. - `secondary`: link colour, current [[graph view|graph]] node - `tertiary`: hover states and visited [[graph view|graph]] nodes - `highlight`: internal link background, highlighted text, [[syntax highlighting|highlighted lines of code]] + - `textHighlight`: markdown highlighted text background ## Plugins diff --git a/quartz.config.ts b/quartz.config.ts index fa08723..b6abbb2 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -36,6 +36,7 @@ const config: QuartzConfig = { secondary: "#284b63", tertiary: "#84a59d", highlight: "rgba(143, 159, 169, 0.15)", + textHighlight: "#fff23688", }, darkMode: { light: "#161618", @@ -46,6 +47,7 @@ const config: QuartzConfig = { secondary: "#7b97aa", tertiary: "#84a59d", highlight: "rgba(143, 159, 169, 0.15)", + textHighlight: "#b3aa0288", }, }, }, diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 37aa8ce..52cd102 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -20,11 +20,10 @@ section { } .text-highlight { - background-color: #fff23688; + background-color: var(--textHighlight); padding: 0 0.1rem; border-radius: 5px; } - ::selection { background: color-mix(in srgb, var(--tertiary) 60%, rgba(255, 255, 255, 0)); color: var(--darkgray); diff --git a/quartz/util/theme.ts b/quartz/util/theme.ts index d3bfb9a..9046cec 100644 --- a/quartz/util/theme.ts +++ b/quartz/util/theme.ts @@ -7,6 +7,7 @@ export interface ColorScheme { secondary: string tertiary: string highlight: string + textHighlight: string } interface Colors { @@ -49,6 +50,7 @@ ${stylesheet.join("\n\n")} --secondary: ${theme.colors.lightMode.secondary}; --tertiary: ${theme.colors.lightMode.tertiary}; --highlight: ${theme.colors.lightMode.highlight}; + --textHighlight: ${theme.colors.lightMode.textHighlight}; --headerFont: "${theme.typography.header}", ${DEFAULT_SANS_SERIF}; --bodyFont: "${theme.typography.body}", ${DEFAULT_SANS_SERIF}; @@ -64,6 +66,7 @@ ${stylesheet.join("\n\n")} --secondary: ${theme.colors.darkMode.secondary}; --tertiary: ${theme.colors.darkMode.tertiary}; --highlight: ${theme.colors.darkMode.highlight}; + --textHighlight: ${theme.colors.darkMode.textHighlight}; } ` } From c95f1d233664d40dde90528d054b809b0f4515ea Mon Sep 17 00:00:00 2001 From: Alex Nordstrom <6267244+HyperEpsilon@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:26:32 -0600 Subject: [PATCH 07/14] feat: add alias/metadata to transclude tag (#1229) --- quartz/plugins/transformers/ofm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index c4dd4d8..8fbfd37 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -271,7 +271,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin return { type: "html", data: { hProperties: { transclude: true } }, - value: `
Transclude of ${url}${block}
`, } From 596e06ab0ebc49f9aad16cce5190328d3bb1526e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:28:49 -0700 Subject: [PATCH 08/14] chore(deps-dev): bump typescript from 5.4.5 to 5.5.3 (#1254) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.4.5 to 5.5.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.4.5...v5.5.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19388e1..7b26ae5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "esbuild": "^0.19.9", "prettier": "^3.3.2", "tsx": "^4.16.0", - "typescript": "^5.4.5" + "typescript": "^5.5.3" }, "engines": { "node": ">=18.14", @@ -6163,9 +6163,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 6a51fb7..7b50382 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,6 @@ "esbuild": "^0.19.9", "prettier": "^3.3.2", "tsx": "^4.16.0", - "typescript": "^5.4.5" + "typescript": "^5.5.3" } } From ea92ed4f45e6e863a432447a977c33c6319423bc Mon Sep 17 00:00:00 2001 From: Cao Mingjun Date: Wed, 10 Jul 2024 08:42:33 +0800 Subject: [PATCH 09/14] feat: Allow custom sorting of FolderPage and TagPage (#1250) --- quartz/components/PageList.tsx | 6 +- quartz/components/pages/FolderContent.tsx | 3 + quartz/components/pages/TagContent.tsx | 196 +++++++++++----------- quartz/plugins/emitters/folderPage.tsx | 8 +- quartz/plugins/emitters/tagPage.tsx | 8 +- 5 files changed, 116 insertions(+), 105 deletions(-) diff --git a/quartz/components/PageList.tsx b/quartz/components/PageList.tsx index 1e5d232..2512b62 100644 --- a/quartz/components/PageList.tsx +++ b/quartz/components/PageList.tsx @@ -27,10 +27,12 @@ export function byDateAndAlphabetical( type Props = { limit?: number + sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } & QuartzComponentProps -export const PageList: QuartzComponent = ({ cfg, fileData, allFiles, limit }: Props) => { - let list = allFiles.sort(byDateAndAlphabetical(cfg)) +export const PageList: QuartzComponent = ({ cfg, fileData, allFiles, limit, sort }: Props) => { + const sorter = sort ?? byDateAndAlphabetical(cfg) + let list = allFiles.sort(sorter) if (limit) { list = list.slice(0, limit) } diff --git a/quartz/components/pages/FolderContent.tsx b/quartz/components/pages/FolderContent.tsx index a13f135..e01496c 100644 --- a/quartz/components/pages/FolderContent.tsx +++ b/quartz/components/pages/FolderContent.tsx @@ -7,12 +7,14 @@ import { stripSlashes, simplifySlug } from "../../util/path" import { Root } from "hast" import { htmlToJsx } from "../../util/jsx" import { i18n } from "../../i18n" +import { QuartzPluginData } from "../../plugins/vfile" interface FolderContentOptions { /** * Whether to display number of folders */ showFolderCount: boolean + sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } const defaultOptions: FolderContentOptions = { @@ -37,6 +39,7 @@ export default ((opts?: Partial) => { const classes = ["popover-hint", ...cssClasses].join(" ") const listProps = { ...props, + sort: options.sort, allFiles: allPagesInFolder, } diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx index 9e04359..7598b13 100644 --- a/quartz/components/pages/TagContent.tsx +++ b/quartz/components/pages/TagContent.tsx @@ -7,107 +7,109 @@ import { Root } from "hast" import { htmlToJsx } from "../../util/jsx" import { i18n } from "../../i18n" -const numPages = 10 -const TagContent: QuartzComponent = (props: QuartzComponentProps) => { - const { tree, fileData, allFiles, cfg } = props - const slug = fileData.slug +export default ((opts?: { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number }) => { + const numPages = 10 + const TagContent: QuartzComponent = (props: QuartzComponentProps) => { + const { tree, fileData, allFiles, cfg } = props + const slug = fileData.slug - if (!(slug?.startsWith("tags/") || slug === "tags")) { - throw new Error(`Component "TagContent" tried to render a non-tag page: ${slug}`) - } - - const tag = simplifySlug(slug.slice("tags/".length) as FullSlug) - const allPagesWithTag = (tag: string) => - allFiles.filter((file) => - (file.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes).includes(tag), - ) - - const content = - (tree as Root).children.length === 0 - ? fileData.description - : htmlToJsx(fileData.filePath!, tree) - const cssClasses: string[] = fileData.frontmatter?.cssclasses ?? [] - const classes = ["popover-hint", ...cssClasses].join(" ") - if (tag === "/") { - const tags = [ - ...new Set( - allFiles.flatMap((data) => data.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes), - ), - ].sort((a, b) => a.localeCompare(b)) - const tagItemMap: Map = new Map() - for (const tag of tags) { - tagItemMap.set(tag, allPagesWithTag(tag)) - } - return ( -
-
-

{content}

-
-

{i18n(cfg.locale).pages.tagContent.totalTags({ count: tags.length })}

-
- {tags.map((tag) => { - const pages = tagItemMap.get(tag)! - const listProps = { - ...props, - allFiles: pages, - } - - const contentPage = allFiles.filter((file) => file.slug === `tags/${tag}`).at(0) - - const root = contentPage?.htmlAst - const content = - !root || root?.children.length === 0 - ? contentPage?.description - : htmlToJsx(contentPage.filePath!, root) - - return ( -
-

- - {tag} - -

- {content &&

{content}

} -
-

- {i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })} - {pages.length > numPages && ( - <> - {" "} - - {i18n(cfg.locale).pages.tagContent.showingFirst({ count: numPages })} - - - )} -

- -
-
- ) - })} -
-
- ) - } else { - const pages = allPagesWithTag(tag) - const listProps = { - ...props, - allFiles: pages, + if (!(slug?.startsWith("tags/") || slug === "tags")) { + throw new Error(`Component "TagContent" tried to render a non-tag page: ${slug}`) } - return ( -
-
{content}
-
-

{i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })}

+ const tag = simplifySlug(slug.slice("tags/".length) as FullSlug) + const allPagesWithTag = (tag: string) => + allFiles.filter((file) => + (file.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes).includes(tag), + ) + + const content = + (tree as Root).children.length === 0 + ? fileData.description + : htmlToJsx(fileData.filePath!, tree) + const cssClasses: string[] = fileData.frontmatter?.cssclasses ?? [] + const classes = ["popover-hint", ...cssClasses].join(" ") + if (tag === "/") { + const tags = [ + ...new Set( + allFiles.flatMap((data) => data.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes), + ), + ].sort((a, b) => a.localeCompare(b)) + const tagItemMap: Map = new Map() + for (const tag of tags) { + tagItemMap.set(tag, allPagesWithTag(tag)) + } + return ( +
+
+

{content}

+
+

{i18n(cfg.locale).pages.tagContent.totalTags({ count: tags.length })}

- + {tags.map((tag) => { + const pages = tagItemMap.get(tag)! + const listProps = { + ...props, + allFiles: pages, + } + + const contentPage = allFiles.filter((file) => file.slug === `tags/${tag}`).at(0) + + const root = contentPage?.htmlAst + const content = + !root || root?.children.length === 0 + ? contentPage?.description + : htmlToJsx(contentPage.filePath!, root) + + return ( +
+

+ + {tag} + +

+ {content &&

{content}

} +
+

+ {i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })} + {pages.length > numPages && ( + <> + {" "} + + {i18n(cfg.locale).pages.tagContent.showingFirst({ count: numPages })} + + + )} +

+ +
+
+ ) + })}
-
- ) - } -} + ) + } else { + const pages = allPagesWithTag(tag) + const listProps = { + ...props, + allFiles: pages, + } -TagContent.css = style + PageList.css -export default (() => TagContent) satisfies QuartzComponentConstructor + return ( +
+
{content}
+
+

{i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })}

+
+ +
+
+
+ ) + } + } + + TagContent.css = style + PageList.css + return TagContent +}) satisfies QuartzComponentConstructor diff --git a/quartz/plugins/emitters/folderPage.tsx b/quartz/plugins/emitters/folderPage.tsx index d892b28..bd17e57 100644 --- a/quartz/plugins/emitters/folderPage.tsx +++ b/quartz/plugins/emitters/folderPage.tsx @@ -3,7 +3,7 @@ import { QuartzComponentProps } from "../../components/types" import HeaderConstructor from "../../components/Header" import BodyConstructor from "../../components/Body" import { pageResources, renderPage } from "../../components/renderPage" -import { ProcessedContent, defaultProcessedContent } from "../vfile" +import { ProcessedContent, QuartzPluginData, defaultProcessedContent } from "../vfile" import { FullPageLayout } from "../../cfg" import path from "path" import { @@ -21,11 +21,13 @@ import { write } from "./helpers" import { i18n } from "../../i18n" import DepGraph from "../../depgraph" -export const FolderPage: QuartzEmitterPlugin> = (userOpts) => { +export const FolderPage: QuartzEmitterPlugin< + Partial & { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } +> = (userOpts) => { const opts: FullPageLayout = { ...sharedPageComponents, ...defaultListPageLayout, - pageBody: FolderContent(), + pageBody: FolderContent({ sort: userOpts?.sort }), ...userOpts, } diff --git a/quartz/plugins/emitters/tagPage.tsx b/quartz/plugins/emitters/tagPage.tsx index d88d072..3994140 100644 --- a/quartz/plugins/emitters/tagPage.tsx +++ b/quartz/plugins/emitters/tagPage.tsx @@ -3,7 +3,7 @@ import { QuartzComponentProps } from "../../components/types" import HeaderConstructor from "../../components/Header" import BodyConstructor from "../../components/Body" import { pageResources, renderPage } from "../../components/renderPage" -import { ProcessedContent, defaultProcessedContent } from "../vfile" +import { ProcessedContent, QuartzPluginData, defaultProcessedContent } from "../vfile" import { FullPageLayout } from "../../cfg" import { FilePath, @@ -18,11 +18,13 @@ import { write } from "./helpers" import { i18n } from "../../i18n" import DepGraph from "../../depgraph" -export const TagPage: QuartzEmitterPlugin> = (userOpts) => { +export const TagPage: QuartzEmitterPlugin< + Partial & { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } +> = (userOpts) => { const opts: FullPageLayout = { ...sharedPageComponents, ...defaultListPageLayout, - pageBody: TagContent(), + pageBody: TagContent({ sort: userOpts?.sort }), ...userOpts, } From 965425d54d801c29c65dac7f21f92485be8405f5 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 9 Jul 2024 17:55:19 -0700 Subject: [PATCH 10/14] docs + chore: cleanup custom sort ordering for folder + tag listings, add docs --- docs/features/folder and tag listings.md | 2 +- docs/plugins/FolderPage.md | 6 ++++-- docs/plugins/TagPage.md | 6 ++++-- quartz/components/PageList.tsx | 8 ++++---- quartz/components/pages/FolderContent.tsx | 5 ++--- quartz/components/pages/TagContent.tsx | 24 +++++++++++++++++------ quartz/plugins/emitters/folderPage.tsx | 8 +++++--- quartz/plugins/emitters/tagPage.tsx | 8 +++++--- 8 files changed, 43 insertions(+), 24 deletions(-) diff --git a/docs/features/folder and tag listings.md b/docs/features/folder and tag listings.md index d330f14..3190709 100644 --- a/docs/features/folder and tag listings.md +++ b/docs/features/folder and tag listings.md @@ -30,4 +30,4 @@ As with folder listings, you can also provide a description and title for a tag ## Customization -The folder listings are a functionality of the [[FolderPage]] plugin, the tag listings of the [[TagPage]] plugin. See the plugin pages for customization options. +Quartz allows you to define a custom sort ordering for content on both page types. The folder listings are a functionality of the [[FolderPage]] plugin, the tag listings of the [[TagPage]] plugin. See the plugin pages for customization options. diff --git a/docs/plugins/FolderPage.md b/docs/plugins/FolderPage.md index ead8e75..45cfa15 100644 --- a/docs/plugins/FolderPage.md +++ b/docs/plugins/FolderPage.md @@ -11,10 +11,12 @@ Example: [[advanced/|Advanced]] > [!note] > For information on how to add, remove or configure plugins, see the [[configuration#Plugins|Configuration]] page. -This plugin has no configuration options. - The pages are displayed using the `defaultListPageLayout` in `quartz.layouts.ts`. For the content, the `FolderContent` component is used. If you want to modify the layout, you must edit it directly (`quartz/components/pages/FolderContent.tsx`). +This plugin accepts the following configuration options: + +- `sort`: A function of type `(f1: QuartzPluginData, f2: QuartzPluginData) => number{:ts}` used to sort entries. Defaults to sorting by date and tie-breaking on lexographical order. + ## API - Category: Emitter diff --git a/docs/plugins/TagPage.md b/docs/plugins/TagPage.md index 9c704b3..9556363 100644 --- a/docs/plugins/TagPage.md +++ b/docs/plugins/TagPage.md @@ -9,10 +9,12 @@ This plugin emits dedicated pages for each tag used in the content. See [[folder > [!note] > For information on how to add, remove or configure plugins, see the [[configuration#Plugins|Configuration]] page. -This plugin has no configuration options. - The pages are displayed using the `defaultListPageLayout` in `quartz.layouts.ts`. For the content, the `TagContent` component is used. If you want to modify the layout, you must edit it directly (`quartz/components/pages/TagContent.tsx`). +This plugin accepts the following configuration options: + +- `sort`: A function of type `(f1: QuartzPluginData, f2: QuartzPluginData) => number{:ts}` used to sort entries. Defaults to sorting by date and tie-breaking on lexographical order. + ## API - Category: Emitter diff --git a/quartz/components/PageList.tsx b/quartz/components/PageList.tsx index 2512b62..8dc19b7 100644 --- a/quartz/components/PageList.tsx +++ b/quartz/components/PageList.tsx @@ -4,9 +4,9 @@ import { Date, getDate } from "./Date" import { QuartzComponent, QuartzComponentProps } from "./types" import { GlobalConfiguration } from "../cfg" -export function byDateAndAlphabetical( - cfg: GlobalConfiguration, -): (f1: QuartzPluginData, f2: QuartzPluginData) => number { +export type SortFn = (f1: QuartzPluginData, f2: QuartzPluginData) => number + +export function byDateAndAlphabetical(cfg: GlobalConfiguration): SortFn { return (f1, f2) => { if (f1.dates && f2.dates) { // sort descending @@ -27,7 +27,7 @@ export function byDateAndAlphabetical( type Props = { limit?: number - sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number + sort?: SortFn } & QuartzComponentProps export const PageList: QuartzComponent = ({ cfg, fileData, allFiles, limit, sort }: Props) => { diff --git a/quartz/components/pages/FolderContent.tsx b/quartz/components/pages/FolderContent.tsx index e01496c..dc216cd 100644 --- a/quartz/components/pages/FolderContent.tsx +++ b/quartz/components/pages/FolderContent.tsx @@ -2,19 +2,18 @@ import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } fro import path from "path" import style from "../styles/listPage.scss" -import { PageList } from "../PageList" +import { PageList, SortFn } from "../PageList" import { stripSlashes, simplifySlug } from "../../util/path" import { Root } from "hast" import { htmlToJsx } from "../../util/jsx" import { i18n } from "../../i18n" -import { QuartzPluginData } from "../../plugins/vfile" interface FolderContentOptions { /** * Whether to display number of folders */ showFolderCount: boolean - sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number + sort?: SortFn } const defaultOptions: FolderContentOptions = { diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx index 7598b13..e41ab46 100644 --- a/quartz/components/pages/TagContent.tsx +++ b/quartz/components/pages/TagContent.tsx @@ -1,14 +1,24 @@ import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "../types" import style from "../styles/listPage.scss" -import { PageList } from "../PageList" +import { PageList, SortFn } from "../PageList" import { FullSlug, getAllSegmentPrefixes, simplifySlug } from "../../util/path" import { QuartzPluginData } from "../../plugins/vfile" import { Root } from "hast" import { htmlToJsx } from "../../util/jsx" import { i18n } from "../../i18n" -export default ((opts?: { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number }) => { - const numPages = 10 +interface TagContentOptions { + sort?: SortFn + numPages: number +} + +const defaultOptions: TagContentOptions = { + numPages: 10, +} + +export default ((opts?: Partial) => { + const options: TagContentOptions = { ...defaultOptions, ...opts } + const TagContent: QuartzComponent = (props: QuartzComponentProps) => { const { tree, fileData, allFiles, cfg } = props const slug = fileData.slug @@ -72,16 +82,18 @@ export default ((opts?: { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) =>

{i18n(cfg.locale).pages.tagContent.itemsUnderTag({ count: pages.length })} - {pages.length > numPages && ( + {pages.length > options.numPages && ( <> {" "} - {i18n(cfg.locale).pages.tagContent.showingFirst({ count: numPages })} + {i18n(cfg.locale).pages.tagContent.showingFirst({ + count: options.numPages, + })} )}

- +
) diff --git a/quartz/plugins/emitters/folderPage.tsx b/quartz/plugins/emitters/folderPage.tsx index bd17e57..cd154f4 100644 --- a/quartz/plugins/emitters/folderPage.tsx +++ b/quartz/plugins/emitters/folderPage.tsx @@ -21,9 +21,11 @@ import { write } from "./helpers" import { i18n } from "../../i18n" import DepGraph from "../../depgraph" -export const FolderPage: QuartzEmitterPlugin< - Partial & { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } -> = (userOpts) => { +interface FolderPageOptions extends FullPageLayout { + sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number +} + +export const FolderPage: QuartzEmitterPlugin> = (userOpts) => { const opts: FullPageLayout = { ...sharedPageComponents, ...defaultListPageLayout, diff --git a/quartz/plugins/emitters/tagPage.tsx b/quartz/plugins/emitters/tagPage.tsx index 3994140..9b727eb 100644 --- a/quartz/plugins/emitters/tagPage.tsx +++ b/quartz/plugins/emitters/tagPage.tsx @@ -18,9 +18,11 @@ import { write } from "./helpers" import { i18n } from "../../i18n" import DepGraph from "../../depgraph" -export const TagPage: QuartzEmitterPlugin< - Partial & { sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number } -> = (userOpts) => { +interface TagPageOptions extends FullPageLayout { + sort?: (f1: QuartzPluginData, f2: QuartzPluginData) => number +} + +export const TagPage: QuartzEmitterPlugin> = (userOpts) => { const opts: FullPageLayout = { ...sharedPageComponents, ...defaultListPageLayout, From 9cabf2b41675a715b58c007f4dc74cb7d7b1f392 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 9 Jul 2024 18:07:00 -0700 Subject: [PATCH 11/14] chore: update features --- docs/features/upcoming features.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/features/upcoming features.md b/docs/features/upcoming features.md index 76adda0..e7e242b 100644 --- a/docs/features/upcoming features.md +++ b/docs/features/upcoming features.md @@ -2,22 +2,13 @@ draft: true --- -## high priority backlog - -- static dead link detection -- block links: https://help.obsidian.md/Linking+notes+and+files/Internal+links#Link+to+a+block+in+a+note -- note/header/block transcludes: https://help.obsidian.md/Linking+notes+and+files/Embedding+files -- docker support ## misc backlog -- breadcrumbs component +- static dead link detection - cursor chat extension - https://giscus.app/ extension - sidenotes? https://github.com/capnfabs/paperesque - direct match in search using double quotes - https://help.obsidian.md/Advanced+topics/Using+Obsidian+URI -- audio/video embed styling - Canvas -- parse all images in page: use this for page lists if applicable? -- CV mode? with print stylesheet From 4b407e786f93a9823b2d6c08ea62cb912a2ede39 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 9 Jul 2024 18:08:21 -0700 Subject: [PATCH 12/14] chore: format --- docs/features/upcoming features.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/features/upcoming features.md b/docs/features/upcoming features.md index e7e242b..11d9cbd 100644 --- a/docs/features/upcoming features.md +++ b/docs/features/upcoming features.md @@ -2,7 +2,6 @@ draft: true --- - ## misc backlog - static dead link detection From 247625c4f538a113617e553e1ed3c74d94545e62 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 9 Jul 2024 19:09:31 -0700 Subject: [PATCH 13/14] feat(layout): add afterBody --- docs/advanced/making plugins.md | 4 ++-- docs/images/quartz layout.png | Bin 56729 -> 66230 bytes docs/layout.md | 1 + quartz.layout.ts | 1 + quartz/cfg.ts | 3 ++- quartz/components/Footer.tsx | 1 - quartz/components/renderPage.tsx | 8 ++++++++ quartz/plugins/emitters/contentPage.tsx | 15 +++++++++++++-- quartz/plugins/emitters/folderPage.tsx | 15 +++++++++++++-- quartz/plugins/emitters/tagPage.tsx | 15 +++++++++++++-- quartz/plugins/transformers/ofm.ts | 1 - quartz/styles/base.scss | 12 ++++++++++-- 12 files changed, 63 insertions(+), 13 deletions(-) diff --git a/docs/advanced/making plugins.md b/docs/advanced/making plugins.md index b2bacf0..0ba2968 100644 --- a/docs/advanced/making plugins.md +++ b/docs/advanced/making plugins.md @@ -260,11 +260,11 @@ export const ContentPage: QuartzEmitterPlugin = () => { ...defaultContentPageLayout, pageBody: Content(), } - const { head, header, beforeBody, pageBody, left, right, footer } = layout + const { head, header, beforeBody, pageBody, afterBody, left, right, footer } = layout return { name: "ContentPage", getQuartzComponents() { - return [head, ...header, ...beforeBody, pageBody, ...left, ...right, footer] + return [head, ...header, ...beforeBody, pageBody, ...afterBody, ...left, ...right, footer] }, async emit(ctx, content, resources, emit): Promise { const cfg = ctx.cfg.configuration diff --git a/docs/images/quartz layout.png b/docs/images/quartz layout.png index 03435f7d57874b5c7c438dd0866318fe3c8d61dd..71ef3ac71edf91b81fc5cb7a051abf10e25dcd73 100644 GIT binary patch literal 66230 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≧itPg6L@|j0))h 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 -export type SharedLayout = Pick +export type SharedLayout = Pick diff --git a/quartz/components/Footer.tsx b/quartz/components/Footer.tsx index 076c378..cff28cb 100644 --- a/quartz/components/Footer.tsx +++ b/quartz/components/Footer.tsx @@ -13,7 +13,6 @@ export default ((opts?: Options) => { const links = opts?.links ?? [] return (