Skip to content

Commit 12d6493

Browse files
committed
fix: fixed the issue where the image preview function could not be used on some pages.
1 parent 24977c4 commit 12d6493

File tree

9 files changed

+195
-74
lines changed

9 files changed

+195
-74
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
// .vitepress/config.ts
2+
import { defineConfigWithTheme } from "file:///Users/hacxy/Projects/vitepress-theme-mild/node_modules/.pnpm/vitepress@1.6.1_@algolia+client-search@5.18.0_@types+node@20.14.9_async-validator@4.2.5_light_32gskswphm2krivmguvncrv3kq/node_modules/vitepress/dist/node/index.js";
3+
import baseConfig from "file:///Users/hacxy/Projects/vitepress-theme-mild/packages/theme/config/index.js";
4+
5+
// ../theme/package.json
6+
var package_default = {
7+
name: "vitepress-theme-mild",
8+
type: "module",
9+
version: "0.6.0",
10+
description: "A VitePress theme with rich capabilities.",
11+
author: {
12+
name: "Hacxy",
13+
email: "hacxy.js@outlook.com"
14+
},
15+
license: "MIT",
16+
homepage: "https://github.com/hacxy/vitepress-theme-mild",
17+
bugs: {
18+
url: "https://github.com/hacxy/vitepress-theme-mild/issues"
19+
},
20+
keywords: [
21+
"vitepress",
22+
"vitepress-theme"
23+
],
24+
module: "./index.js",
25+
types: "./types/index.d.ts",
26+
files: [
27+
"config",
28+
"index.ts",
29+
"src",
30+
"types"
31+
],
32+
scripts: {
33+
dev: "tsup --watch",
34+
build: "tsup",
35+
lint: "eslint .",
36+
"lint:fix": "eslint . --fix",
37+
"lint:staged": "eslint --fix",
38+
release: "node scripts/release.js",
39+
prepublishOnly: "npm run build",
40+
changelog: "conventional-changelog -p angular -i ../docs/CHANGELOG.md -s"
41+
},
42+
dependencies: {
43+
"@css-render/vue3-ssr": "^0.15.14",
44+
"@giscus/vue": "^3.1.1",
45+
"@iconify/vue": "^4.3.0",
46+
"@nanostores/vue": "^0.11.0",
47+
"@shikijs/vitepress-twoslash": "^1.24.3",
48+
"@vueuse/core": "^12.0.0",
49+
"@vueuse/motion": "^2.2.6",
50+
"directory-tree": "^3.5.2",
51+
"fs-extra": "^11.2.0",
52+
"gray-matter": "^4.0.3",
53+
"naive-ui": "^2.40.4",
54+
nanostores: "^0.11.3",
55+
nprogress: "^0.2.0",
56+
"reading-time-estimator": "^1.11.0",
57+
sass: "^1.78.0",
58+
"simple-git": "^3.27.0",
59+
tinyglobby: "^0.2.10",
60+
"typed.js": "^2.1.0",
61+
"vitepress-plugin-group-icons": "^1.3.2",
62+
"vitepress-plugin-rss": "^0.3.0",
63+
vue: "^3.4.21",
64+
"vue-easy-lightbox": "^1.19.0"
65+
},
66+
devDependencies: {
67+
"@types/fs-extra": "^11.0.4",
68+
"@types/markdown-it": "^14.1.2",
69+
"@types/node": "^20.14.9",
70+
"@types/nprogress": "^0.2.3",
71+
bumpp: "^9.9.1",
72+
tsup: "8.3.5",
73+
typescript: "^5.3.3",
74+
vitepress: "^1.6.1"
75+
}
76+
};
77+
78+
// .vitepress/config.ts
79+
var config_default = defineConfigWithTheme({
80+
title: "VitePress Mild Theme",
81+
description: "\u7B80\u7EA6\u98CE\u683C\u7684\u535A\u5BA2\u4E3B\u9898",
82+
extends: baseConfig,
83+
lang: "zh",
84+
appearance: "dark",
85+
themeConfig: {
86+
comment: {
87+
repo: "hacxy/vitepress-theme-mild",
88+
repoId: "R_kgDOLdAvmA",
89+
category: "Announcements",
90+
categoryId: "DIC_kwDOLdAvmM4Cl3ba",
91+
mapping: "title",
92+
strict: "1",
93+
reactionsEnabled: "1",
94+
inputPosition: "bottom",
95+
lang: "zh-CN",
96+
darkTheme: "catppuccin_macchiato",
97+
lightTheme: "catppuccin_latte"
98+
},
99+
progressBar: {
100+
speed: 200
101+
},
102+
rss: {
103+
title: "Hacxy",
104+
baseUrl: "https://theme.hacxy.cn",
105+
copyright: "Copyright (c) 2024-present, Hacxy"
106+
},
107+
logo: "/logo.png",
108+
search: {
109+
provider: "local",
110+
options: {
111+
detailedView: true,
112+
translations: {
113+
button: {
114+
buttonText: "\u641C\u7D22\u4E00\u4E0B"
115+
}
116+
}
117+
}
118+
},
119+
nav: [
120+
{
121+
text: "\u6307\u5357",
122+
link: "/guide/intro/",
123+
activeMatch: "/guide/"
124+
},
125+
{
126+
text: "\u53C2\u8003",
127+
link: "/config/"
128+
},
129+
{
130+
text: `v${package_default.version}`,
131+
items: [
132+
{
133+
text: "\u66F4\u65B0\u65E5\u5FD7",
134+
link: "CHANGELOG.md"
135+
}
136+
]
137+
}
138+
],
139+
socialLinks: [
140+
{ icon: "github", link: "https://github.com/hacxy/vitepress-theme-mild" }
141+
],
142+
sidebar: {
143+
"/guide/": "auto",
144+
"/config/": "auto"
145+
},
146+
footer: {
147+
message: "MIT Licensed",
148+
copyright: 'Copyright \xA9 2024-Present <a href="https://github.com/hacxy">Hacxy</a>'
149+
}
150+
}
151+
});
152+
export {
153+
config_default as default
154+
};
155+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLnZpdGVwcmVzcy9jb25maWcudHMiLCAiLi4vdGhlbWUvcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL2hhY3h5L1Byb2plY3RzL3ZpdGVwcmVzcy10aGVtZS1taWxkL3BhY2thZ2VzL2RvY3MvLnZpdGVwcmVzc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2hhY3h5L1Byb2plY3RzL3ZpdGVwcmVzcy10aGVtZS1taWxkL3BhY2thZ2VzL2RvY3MvLnZpdGVwcmVzcy9jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2hhY3h5L1Byb2plY3RzL3ZpdGVwcmVzcy10aGVtZS1taWxkL3BhY2thZ2VzL2RvY3MvLnZpdGVwcmVzcy9jb25maWcudHNcIjtpbXBvcnQgdHlwZSB7IFRoZW1lQ29uZmlnIH0gZnJvbSAndml0ZXByZXNzLXRoZW1lLW1pbGQnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnV2l0aFRoZW1lIH0gZnJvbSAndml0ZXByZXNzJztcbmltcG9ydCBiYXNlQ29uZmlnIGZyb20gJ3ZpdGVwcmVzcy10aGVtZS1taWxkL2NvbmZpZyc7XG5pbXBvcnQgcGtnIGZyb20gJy4uLy4uL3RoZW1lL3BhY2thZ2UuanNvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZ1dpdGhUaGVtZTxUaGVtZUNvbmZpZz4oe1xuICB0aXRsZTogJ1ZpdGVQcmVzcyBNaWxkIFRoZW1lJyxcbiAgZGVzY3JpcHRpb246ICdcdTdCODBcdTdFQTZcdTk4Q0VcdTY4M0NcdTc2ODRcdTUzNUFcdTVCQTJcdTRFM0JcdTk4OTgnLFxuICBleHRlbmRzOiBiYXNlQ29uZmlnLFxuICBsYW5nOiAnemgnLFxuICBhcHBlYXJhbmNlOiAnZGFyaycsXG4gIHRoZW1lQ29uZmlnOiB7XG4gICAgY29tbWVudDoge1xuICAgICAgcmVwbzogJ2hhY3h5L3ZpdGVwcmVzcy10aGVtZS1taWxkJyxcbiAgICAgIHJlcG9JZDogJ1Jfa2dET0xkQXZtQScsXG4gICAgICBjYXRlZ29yeTogJ0Fubm91bmNlbWVudHMnLFxuICAgICAgY2F0ZWdvcnlJZDogJ0RJQ19rd0RPTGRBdm1NNENsM2JhJyxcbiAgICAgIG1hcHBpbmc6ICd0aXRsZScsXG4gICAgICBzdHJpY3Q6ICcxJyxcbiAgICAgIHJlYWN0aW9uc0VuYWJsZWQ6ICcxJyxcbiAgICAgIGlucHV0UG9zaXRpb246ICdib3R0b20nLFxuICAgICAgbGFuZzogJ3poLUNOJyxcbiAgICAgIGRhcmtUaGVtZTogJ2NhdHBwdWNjaW5fbWFjY2hpYXRvJyxcbiAgICAgIGxpZ2h0VGhlbWU6ICdjYXRwcHVjY2luX2xhdHRlJ1xuICAgIH0sXG4gICAgcHJvZ3Jlc3NCYXI6IHtcbiAgICAgIHNwZWVkOiAyMDBcbiAgICB9LFxuICAgIHJzczoge1xuICAgICAgdGl0bGU6ICdIYWN4eScsXG4gICAgICBiYXNlVXJsOiAnaHR0cHM6Ly90aGVtZS5oYWN4eS5jbicsXG4gICAgICBjb3B5cmlnaHQ6ICdDb3B5cmlnaHQgKGMpIDIwMjQtcHJlc2VudCwgSGFjeHknXG4gICAgfSxcbiAgICBsb2dvOiAnL2xvZ28ucG5nJyxcbiAgICBzZWFyY2g6IHtcbiAgICAgIHByb3ZpZGVyOiAnbG9jYWwnLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBkZXRhaWxlZFZpZXc6IHRydWUsXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgIGJ1dHRvbjoge1xuICAgICAgICAgICAgYnV0dG9uVGV4dDogJ1x1NjQxQ1x1N0QyMlx1NEUwMFx1NEUwQidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG5hdjogW1xuICAgICAge1xuICAgICAgICB0ZXh0OiAnXHU2MzA3XHU1MzU3JyxcbiAgICAgICAgbGluazogJy9ndWlkZS9pbnRyby8nLFxuICAgICAgICBhY3RpdmVNYXRjaDogJy9ndWlkZS8nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiAnXHU1M0MyXHU4MDAzJyxcbiAgICAgICAgbGluazogJy9jb25maWcvJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IGB2JHtwa2cudmVyc2lvbn1gLFxuICAgICAgICBpdGVtczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6ICdcdTY2RjRcdTY1QjBcdTY1RTVcdTVGRDcnLFxuICAgICAgICAgICAgbGluazogJ0NIQU5HRUxPRy5tZCdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIHNvY2lhbExpbmtzOiBbXG4gICAgICB7IGljb246ICdnaXRodWInLCBsaW5rOiAnaHR0cHM6Ly9naXRodWIuY29tL2hhY3h5L3ZpdGVwcmVzcy10aGVtZS1taWxkJyB9XG4gICAgXSxcbiAgICBzaWRlYmFyOiB7XG4gICAgICAnL2d1aWRlLyc6ICdhdXRvJyxcbiAgICAgICcvY29uZmlnLyc6ICdhdXRvJyxcbiAgICB9LFxuICAgIGZvb3Rlcjoge1xuICAgICAgbWVzc2FnZTogJ01JVCBMaWNlbnNlZCcsXG4gICAgICBjb3B5cmlnaHQ6XG4gICAgICAgICdDb3B5cmlnaHQgXHUwMEE5IDIwMjQtUHJlc2VudCA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL2hhY3h5XCI+SGFjeHk8L2E+JyxcbiAgICB9LFxuICB9LFxufSk7XG4iLCAie1xuICBcIm5hbWVcIjogXCJ2aXRlcHJlc3MtdGhlbWUtbWlsZFwiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC42LjBcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkEgVml0ZVByZXNzIHRoZW1lIHdpdGggcmljaCBjYXBhYmlsaXRpZXMuXCIsXG4gIFwiYXV0aG9yXCI6IHtcbiAgICBcIm5hbWVcIjogXCJIYWN4eVwiLFxuICAgIFwiZW1haWxcIjogXCJoYWN4eS5qc0BvdXRsb29rLmNvbVwiXG4gIH0sXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2hhY3h5L3ZpdGVwcmVzcy10aGVtZS1taWxkXCIsXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaGFjeHkvdml0ZXByZXNzLXRoZW1lLW1pbGQvaXNzdWVzXCJcbiAgfSxcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJ2aXRlcHJlc3NcIixcbiAgICBcInZpdGVwcmVzcy10aGVtZVwiXG4gIF0sXG4gIFwibW9kdWxlXCI6IFwiLi9pbmRleC5qc1wiLFxuICBcInR5cGVzXCI6IFwiLi90eXBlcy9pbmRleC5kLnRzXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiY29uZmlnXCIsXG4gICAgXCJpbmRleC50c1wiLFxuICAgIFwic3JjXCIsXG4gICAgXCJ0eXBlc1wiXG4gIF0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJkZXZcIjogXCJ0c3VwIC0td2F0Y2hcIixcbiAgICBcImJ1aWxkXCI6IFwidHN1cFwiLFxuICAgIFwibGludFwiOiBcImVzbGludCAuXCIsXG4gICAgXCJsaW50OmZpeFwiOiBcImVzbGludCAuIC0tZml4XCIsXG4gICAgXCJsaW50OnN0YWdlZFwiOiBcImVzbGludCAtLWZpeFwiLFxuICAgIFwicmVsZWFzZVwiOiBcIm5vZGUgc2NyaXB0cy9yZWxlYXNlLmpzXCIsXG4gICAgXCJwcmVwdWJsaXNoT25seVwiOiBcIm5wbSBydW4gYnVpbGRcIixcbiAgICBcImNoYW5nZWxvZ1wiOiBcImNvbnZlbnRpb25hbC1jaGFuZ2Vsb2cgLXAgYW5ndWxhciAtaSAuLi9kb2NzL0NIQU5HRUxPRy5tZCAtc1wiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBjc3MtcmVuZGVyL3Z1ZTMtc3NyXCI6IFwiXjAuMTUuMTRcIixcbiAgICBcIkBnaXNjdXMvdnVlXCI6IFwiXjMuMS4xXCIsXG4gICAgXCJAaWNvbmlmeS92dWVcIjogXCJeNC4zLjBcIixcbiAgICBcIkBuYW5vc3RvcmVzL3Z1ZVwiOiBcIl4wLjExLjBcIixcbiAgICBcIkBzaGlraWpzL3ZpdGVwcmVzcy10d29zbGFzaFwiOiBcIl4xLjI0LjNcIixcbiAgICBcIkB2dWV1c2UvY29yZVwiOiBcIl4xMi4wLjBcIixcbiAgICBcIkB2dWV1c2UvbW90aW9uXCI6IFwiXjIuMi42XCIsXG4gICAgXCJkaXJlY3RvcnktdHJlZVwiOiBcIl4zLjUuMlwiLFxuICAgIFwiZnMtZXh0cmFcIjogXCJeMTEuMi4wXCIsXG4gICAgXCJncmF5LW1hdHRlclwiOiBcIl40LjAuM1wiLFxuICAgIFwibmFpdmUtdWlcIjogXCJeMi40MC40XCIsXG4gICAgXCJuYW5vc3RvcmVzXCI6IFwiXjAuMTEuM1wiLFxuICAgIFwibnByb2dyZXNzXCI6IFwiXjAuMi4wXCIsXG4gICAgXCJyZWFkaW5nLXRpbWUtZXN0aW1hdG9yXCI6IFwiXjEuMTEuMFwiLFxuICAgIFwic2Fzc1wiOiBcIl4xLjc4LjBcIixcbiAgICBcInNpbXBsZS1naXRcIjogXCJeMy4yNy4wXCIsXG4gICAgXCJ0aW55Z2xvYmJ5XCI6IFwiXjAuMi4xMFwiLFxuICAgIFwidHlwZWQuanNcIjogXCJeMi4xLjBcIixcbiAgICBcInZpdGVwcmVzcy1wbHVnaW4tZ3JvdXAtaWNvbnNcIjogXCJeMS4zLjJcIixcbiAgICBcInZpdGVwcmVzcy1wbHVnaW4tcnNzXCI6IFwiXjAuMy4wXCIsXG4gICAgXCJ2dWVcIjogXCJeMy40LjIxXCIsXG4gICAgXCJ2dWUtZWFzeS1saWdodGJveFwiOiBcIl4xLjE5LjBcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAdHlwZXMvZnMtZXh0cmFcIjogXCJeMTEuMC40XCIsXG4gICAgXCJAdHlwZXMvbWFya2Rvd24taXRcIjogXCJeMTQuMS4yXCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xNC45XCIsXG4gICAgXCJAdHlwZXMvbnByb2dyZXNzXCI6IFwiXjAuMi4zXCIsXG4gICAgXCJidW1wcFwiOiBcIl45LjkuMVwiLFxuICAgIFwidHN1cFwiOiBcIjguMy41XCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiXjUuMy4zXCIsXG4gICAgXCJ2aXRlcHJlc3NcIjogXCJeMS42LjFcIlxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyw2QkFBNkI7QUFDdEMsT0FBTyxnQkFBZ0I7OztBQ0Z2QjtBQUFBLEVBQ0UsTUFBUTtBQUFBLEVBQ1IsTUFBUTtBQUFBLEVBQ1IsU0FBVztBQUFBLEVBQ1gsYUFBZTtBQUFBLEVBQ2YsUUFBVTtBQUFBLElBQ1IsTUFBUTtBQUFBLElBQ1IsT0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLFNBQVc7QUFBQSxFQUNYLFVBQVk7QUFBQSxFQUNaLE1BQVE7QUFBQSxJQUNOLEtBQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxVQUFZO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxPQUFTO0FBQUEsSUFDUDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQU87QUFBQSxJQUNQLE9BQVM7QUFBQSxJQUNULE1BQVE7QUFBQSxJQUNSLFlBQVk7QUFBQSxJQUNaLGVBQWU7QUFBQSxJQUNmLFNBQVc7QUFBQSxJQUNYLGdCQUFrQjtBQUFBLElBQ2xCLFdBQWE7QUFBQSxFQUNmO0FBQUEsRUFDQSxjQUFnQjtBQUFBLElBQ2Qsd0JBQXdCO0FBQUEsSUFDeEIsZUFBZTtBQUFBLElBQ2YsZ0JBQWdCO0FBQUEsSUFDaEIsbUJBQW1CO0FBQUEsSUFDbkIsK0JBQStCO0FBQUEsSUFDL0IsZ0JBQWdCO0FBQUEsSUFDaEIsa0JBQWtCO0FBQUEsSUFDbEIsa0JBQWtCO0FBQUEsSUFDbEIsWUFBWTtBQUFBLElBQ1osZUFBZTtBQUFBLElBQ2YsWUFBWTtBQUFBLElBQ1osWUFBYztBQUFBLElBQ2QsV0FBYTtBQUFBLElBQ2IsMEJBQTBCO0FBQUEsSUFDMUIsTUFBUTtBQUFBLElBQ1IsY0FBYztBQUFBLElBQ2QsWUFBYztBQUFBLElBQ2QsWUFBWTtBQUFBLElBQ1osZ0NBQWdDO0FBQUEsSUFDaEMsd0JBQXdCO0FBQUEsSUFDeEIsS0FBTztBQUFBLElBQ1AscUJBQXFCO0FBQUEsRUFDdkI7QUFBQSxFQUNBLGlCQUFtQjtBQUFBLElBQ2pCLG1CQUFtQjtBQUFBLElBQ25CLHNCQUFzQjtBQUFBLElBQ3RCLGVBQWU7QUFBQSxJQUNmLG9CQUFvQjtBQUFBLElBQ3BCLE9BQVM7QUFBQSxJQUNULE1BQVE7QUFBQSxJQUNSLFlBQWM7QUFBQSxJQUNkLFdBQWE7QUFBQSxFQUNmO0FBQ0Y7OztBRGpFQSxJQUFPLGlCQUFRLHNCQUFtQztBQUFBLEVBQ2hELE9BQU87QUFBQSxFQUNQLGFBQWE7QUFBQSxFQUNiLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxNQUNULFFBQVE7QUFBQSxNQUNSLGtCQUFrQjtBQUFBLE1BQ2xCLGVBQWU7QUFBQSxNQUNmLE1BQU07QUFBQSxNQUNOLFdBQVc7QUFBQSxNQUNYLFlBQVk7QUFBQSxJQUNkO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsT0FBTztBQUFBLE1BQ1AsU0FBUztBQUFBLE1BQ1QsV0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxNQUNOLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxRQUNQLGNBQWM7QUFBQSxRQUNkLGNBQWM7QUFBQSxVQUNaLFFBQVE7QUFBQSxZQUNOLFlBQVk7QUFBQSxVQUNkO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSDtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixNQUFNO0FBQUEsTUFDUjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU0sSUFBSSxnQkFBSSxPQUFPO0FBQUEsUUFDckIsT0FBTztBQUFBLFVBQ0w7QUFBQSxZQUNFLE1BQU07QUFBQSxZQUNOLE1BQU07QUFBQSxVQUNSO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxFQUFFLE1BQU0sVUFBVSxNQUFNLGdEQUFnRDtBQUFBLElBQzFFO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsSUFDZDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsV0FDRTtBQUFBLElBQ0o7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K

packages/theme/src/client/components/ContentWrapper.vue

-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
<script lang="ts" setup>
2-
import { useImagePreview } from '../hooks/useImagePreview';
3-
4-
const props = defineProps<{
5-
imgsStr: string
6-
}>();
72
const classes = { 'slide-enter-content': !((import.meta as any).env.DEV) };
8-
const imgs = props.imgsStr.split(',');
9-
const { $images } = useImagePreview();
10-
$images.set(imgs);
113
</script>
124

135
<template>

packages/theme/src/client/components/ImagePreview.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
import VueEaseLightBox from 'vue-easy-lightbox';
33
import { useImagePreview } from '../hooks/useImagePreview';
44
5-
const { visible, hide, currentIndex, images } = useImagePreview();
5+
const { visible, hide, currentIndex, imgs } = useImagePreview();
66
</script>
77

88
<template>
99
<VueEaseLightBox
1010
move-disabled
1111
loop
12-
:imgs="images"
12+
:imgs="imgs"
1313
:visible="visible"
1414
:index="currentIndex"
1515
@hide="hide"

packages/theme/src/client/datas/base.data.ts

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface ArticlesData {
2323
category: string
2424
order: number
2525
sidebar: boolean | SidebarFrontmatter
26+
imgs: string[]
2627
}
2728

2829
export default createBaseDataLoader({
@@ -48,6 +49,7 @@ export default createBaseDataLoader({
4849
path: item.url,
4950
description,
5051
title,
52+
imgs: item.imgs,
5153
words,
5254
minutes,
5355
date,

packages/theme/src/client/datas/base.ts

+21-15
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export interface ContentData {
1616
html: string | undefined
1717
frontmatter: Record<string, any>
1818
excerpt: string | undefined
19+
imgs: string[]
1920
// fileModifiedTime: number
2021
}
2122
export interface ContentOptions<T = ContentData[]> {
@@ -177,7 +178,6 @@ function handleAutoSidebar(config: SiteConfig, data: Map<string, ContentData>) {
177178
}
178179
});
179180
}
180-
181181
return autoSidebar;
182182
}
183183

@@ -199,8 +199,7 @@ export function createBaseDataLoader<T = {
199199

200200
if (!config) {
201201
throw new Error(
202-
'content loader invoked without an active vitepress process, '
203-
+ 'or before vitepress config is resolved.'
202+
'content loader invoked without an active vitepress process, ' + 'or before vitepress config is resolved.'
204203
);
205204
}
206205
const pattern = getPattern(config.srcDir);
@@ -227,7 +226,6 @@ export function createBaseDataLoader<T = {
227226
if (cached.data.frontmatter.publish !== false) {
228227
raw.push(cached.data);
229228
}
230-
231229
sidebarMapData.set(file, cached.data);
232230
}
233231
else {
@@ -254,23 +252,31 @@ export function createBaseDataLoader<T = {
254252
else {
255253
frontmatter.sticky = 0;
256254
}
257-
const url
258-
= `/${
259-
normalizePath(path.relative(config.srcDir, file))
260-
.replace(/(^|\/)index\.md$/, '$1')
261-
.replace(/\.md$/, config.cleanUrls ? '' : '.html')}`;
255+
const url = `/${normalizePath(path.relative(config.srcDir, file))
256+
.replace(/(^|\/)index\.md$/, '$1')
257+
.replace(/\.md$/, config.cleanUrls ? '' : '.html')}`;
262258

263259
const html = render ? md.render(src) : undefined;
264-
// const fileModifiedTime = timestamp;
265-
const renderedExcerpt = renderExcerpt
266-
? excerpt && md.render(excerpt)
267-
268-
: undefined;
260+
const tokens = md.parse(src, {});
261+
const imgs: string[] = [];
262+
tokens.forEach(token => {
263+
if (token.type === 'inline' && token.children) {
264+
token.children.forEach(child => {
265+
if (child.type === 'image') {
266+
const src = child.attrGet('src');
267+
if (src) {
268+
imgs.push(src);
269+
}
270+
}
271+
});
272+
}
273+
});
274+
const renderedExcerpt = renderExcerpt ? excerpt && md.render(excerpt) : undefined;
269275
const data: ContentData = {
270-
// fileModifiedTime,
271276
path: file,
272277
src: includeSrc ? src : undefined,
273278
html,
279+
imgs,
274280
frontmatter,
275281
excerpt: renderedExcerpt,
276282
url

packages/theme/src/client/hooks/useArticleData.ts

-23
This file was deleted.

packages/theme/src/client/hooks/useImagePreview.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import { useStore } from '@nanostores/vue';
22
import { atom } from 'nanostores';
3+
import { computed } from 'vue';
4+
import { useArticleListStore } from '../store/article';
35

46
const $visible = atom(false);
57
const $currentIndex = atom(0);
6-
const $images = atom<string[]>([]);
78

89
export function useImagePreview() {
910
const visible = useStore($visible);
1011
const currentIndex = useStore($currentIndex);
11-
const images = useStore($images as any);
12-
12+
const { currentArticle } = useArticleListStore();
13+
// const images = useStore($images as any);
14+
const imgs = computed(() => currentArticle.value?.imgs as string[] || []);
1315
function show(index: number) {
1416
$visible.set(true);
1517
$currentIndex.set(index);
@@ -24,7 +26,6 @@ export function useImagePreview() {
2426
currentIndex,
2527
show,
2628
hide,
27-
images,
28-
$images
29+
imgs
2930
};
3031
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import type { ArticlesData } from '../datas/base.data';
22
import { useStore } from '@nanostores/vue';
33
import { atom } from 'nanostores';
4+
import { useRoute } from 'vitepress';
5+
import { computed } from 'vue';
46

57
export const $articleList = atom<ArticlesData[]>([]);
68

79
export function useArticleListStore() {
810
const articleList = useStore($articleList);
11+
const route = useRoute();
12+
const currentArticle = computed(() => {
13+
return articleList.value.find(item => item.path === route.path);
14+
});
15+
916
return {
17+
currentArticle,
1018
articleList
1119
};
1220
}

0 commit comments

Comments
 (0)