完全去除lightbox插件

This commit is contained in:
ArenaDruid 2025-02-05 01:52:36 +08:00
parent fe728c8670
commit 544684669e
5 changed files with 25 additions and 100 deletions

41
package-lock.json generated
View File

@ -66,7 +66,6 @@
"to-vfile": "^8.0.0",
"toml": "^3.0.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.3",
"workerpool": "^9.2.0",
"ws": "^8.18.0",
@ -2102,11 +2101,12 @@
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"license": "MIT",
"dependencies": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@ -2407,9 +2407,10 @@
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@ -3209,9 +3210,10 @@
"license": "MIT"
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@ -3958,6 +3960,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@ -4057,9 +4060,9 @@
}
},
"node_modules/katex": {
"version": "0.16.11",
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz",
"integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==",
"version": "0.16.21",
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz",
"integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==",
"funding": [
"https://opencollective.com/katex",
"https://github.com/sponsors/katex"
@ -5303,11 +5306,12 @@
]
},
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"license": "MIT",
"dependencies": {
"braces": "^3.0.2",
"braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@ -7082,6 +7086,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},

View File

@ -92,7 +92,6 @@
"to-vfile": "^8.0.0",
"toml": "^3.0.0",
"unified": "^11.0.5",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.3",
"workerpool": "^9.2.0",
"ws": "^8.18.0",

View File

@ -19,7 +19,7 @@ const config: QuartzConfig = {
defaultDateType: "created",
generateSocialImages: {
colorScheme: "darkMode",
socialImage: "cover.png",
//image: "cover.png",
},
theme: {
fontOrigin: "googleFonts",
@ -75,11 +75,8 @@ const config: QuartzConfig = {
Plugin.Description(),
Plugin.Latex({ renderEngine: "katex" }),
// Adds image caption support. Syntax:
// ```md
// ![alt text](image.jpg)
// *caption text*
// ```
Plugin.FigureCaptions(),
// 启动中文斜体转楷体插件
Plugin.ChineseItalic(),
// Adds image lightbox support
//Plugin.Lightbox(),

View File

@ -12,5 +12,4 @@ export { TableOfContents } from "./toc"
export { HardLineBreaks } from "./linebreaks"
export { RoamFlavoredMarkdown } from "./roam"
export { FigureCaptions } from "./figcaptions"
export { Lightbox } from "./lightbox"
export { ChineseItalic } from "./chinese-italic"

View File

@ -1,75 +0,0 @@
import { QuartzTransformerPlugin } from "../types"
import { visit } from "unist-util-visit"
import { Root } from "hast"
// Options supported here should be in sync with what GLightbox supports:
// https://github.com/biati-digital/glightbox
interface Options {
/** Name of the effect on lightbox open. */
openEffect: "zoom" | "fade" | "none"
/** Name of the effect on lightbox close. */
closeEffect: "zoom" | "fade" | "none"
/** Name of the effect on slide change. */
slideEffect: "slide" | "zoom" | "fade" | "none"
/** Show or hide the close button. */
closeButton: boolean
}
const defaultOptions: Options = {
openEffect: "zoom",
closeEffect: "zoom",
slideEffect: "slide",
closeButton: true,
}
export const Lightbox: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
const opts = { ...defaultOptions, ...userOpts }
return {
name: "Lightbox",
htmlPlugins(ctx) {
return [
() => {
return (tree: Root, file) => {
visit(tree, "element", (node, _index, _parent) => {
if (
node.tagName === "img" &&
node.properties &&
typeof node.properties.src === "string"
) {
// Add Image Lightbox support
const classes = (node.properties.className ?? []) as string[]
classes.push("glightbox")
node.properties.className = classes
}
})
}
},
]
},
externalResources() {
return {
css: ["https://cdnjs.cloudflare.com/ajax/libs/glightbox/3.3.0/css/glightbox.min.css"],
js: [
{
src: "https://cdnjs.cloudflare.com/ajax/libs/glightbox/3.3.0/js/glightbox.min.js",
loadTime: "afterDOMReady",
contentType: "external",
},
{
contentType: "inline",
loadTime: "afterDOMReady",
// GLightbox needs to be reloaded whenever there's a page content change
// to make sure it loads all the images in the new page content.
// Ref: https://quartz.jzhao.xyz/advanced/creating-components#scripts-and-interactivity
script: `
document.addEventListener("nav", () => {
const lightbox = GLightbox(${JSON.stringify(opts)});
});
`.trim(),
},
],
}
},
}
}