vitepress 1.0.0-draft.1 → 1.0.0-draft.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.d.ts +5 -0
- package/dist/client/shared.js +1 -0
- package/dist/client/theme-default/Layout.vue +18 -1
- package/dist/client/theme-default/components/VPBackdrop.vue +1 -1
- package/dist/client/theme-default/components/VPBox.vue +59 -0
- package/dist/client/theme-default/components/VPButton.vue +123 -0
- package/dist/client/theme-default/components/VPContent.vue +35 -5
- package/dist/client/theme-default/components/{VPContentDoc.vue → VPDoc.vue} +13 -13
- package/dist/client/theme-default/components/{VPContentDocFooter.vue → VPDocFooter.vue} +3 -2
- package/dist/client/theme-default/components/{VPContentDocOutline.vue → VPDocOutline.vue} +2 -2
- package/dist/client/theme-default/components/VPFooter.vue +53 -0
- package/dist/client/theme-default/components/VPHero.vue +144 -0
- package/dist/client/theme-default/components/VPHome.vue +33 -0
- package/dist/client/theme-default/components/VPHomeFeatures.vue +96 -0
- package/dist/client/theme-default/components/VPHomeHero.vue +17 -0
- package/dist/client/theme-default/components/VPHomeSponsors.vue +97 -0
- package/dist/client/theme-default/components/VPNavBar.vue +1 -0
- package/dist/client/theme-default/components/VPNavBarAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPNavBarExtra.vue +2 -2
- package/dist/client/theme-default/components/VPNavBarSearch.vue +3 -3
- package/dist/client/theme-default/components/VPNavBarTitle.vue +26 -13
- package/dist/client/theme-default/components/VPNavScreenAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPPage.vue +5 -0
- package/dist/client/theme-default/components/VPSponsors.vue +77 -0
- package/dist/client/theme-default/components/VPSponsorsGrid.vue +32 -0
- package/dist/client/theme-default/components/VPSwitchAppearance.vue +3 -3
- package/dist/client/theme-default/components/icons/VPIconHeart.vue +5 -0
- package/dist/client/theme-default/composables/outline.js +1 -19
- package/dist/client/theme-default/composables/sponsor-grid.js +92 -0
- package/dist/client/theme-default/composables/sponsor.js +87 -0
- package/dist/client/theme-default/index.js +4 -0
- package/dist/client/theme-default/styles/base.css +3 -0
- package/dist/client/theme-default/styles/vars.css +86 -1
- package/dist/client/theme-default/styles/vp-doc.css +8 -2
- package/dist/client/theme-default/styles/vp-sponsor.css +86 -0
- package/dist/client/theme-default/support/utils.js +19 -0
- package/dist/node/alias.js +60 -0
- package/dist/node/alias.js.map +1 -0
- package/dist/node/build/build.js +57 -0
- package/dist/node/build/build.js.map +1 -0
- package/dist/node/build/buildMPAClient.js +44 -0
- package/dist/node/build/buildMPAClient.js.map +1 -0
- package/dist/node/build/bundle.js +163 -0
- package/dist/node/build/bundle.js.map +1 -0
- package/dist/node/build/render.js +185 -0
- package/dist/node/build/render.js.map +1 -0
- package/dist/node/cli.js +37 -294
- package/dist/node/cli.js.map +1 -0
- package/dist/node/config.js +176 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/index.d.ts +19 -1
- package/dist/node/index.js +22 -37
- package/dist/node/index.js.map +1 -0
- package/dist/node/markdown/markdown.js +75 -0
- package/dist/node/markdown/markdown.js.map +1 -0
- package/dist/node/markdown/plugins/component.js +86 -0
- package/dist/node/markdown/plugins/component.js.map +1 -0
- package/dist/node/markdown/plugins/containers.js +41 -0
- package/dist/node/markdown/plugins/containers.js.map +1 -0
- package/dist/node/markdown/plugins/headings.js +25 -0
- package/dist/node/markdown/plugins/headings.js.map +1 -0
- package/dist/node/markdown/plugins/highlight.js +53 -0
- package/dist/node/markdown/plugins/highlight.js.map +1 -0
- package/dist/node/markdown/plugins/highlightLines.js +48 -0
- package/dist/node/markdown/plugins/highlightLines.js.map +1 -0
- package/dist/node/markdown/plugins/hoist.js +22 -0
- package/dist/node/markdown/plugins/hoist.js.map +1 -0
- package/dist/node/markdown/plugins/image.js +17 -0
- package/dist/node/markdown/plugins/image.js.map +1 -0
- package/dist/node/markdown/plugins/lineNumbers.js +23 -0
- package/dist/node/markdown/plugins/lineNumbers.js.map +1 -0
- package/dist/node/markdown/plugins/link.js +85 -0
- package/dist/node/markdown/plugins/link.js.map +1 -0
- package/dist/node/markdown/plugins/preWrapper.js +22 -0
- package/dist/node/markdown/plugins/preWrapper.js.map +1 -0
- package/dist/node/markdown/plugins/slugify.js +26 -0
- package/dist/node/markdown/plugins/slugify.js.map +1 -0
- package/dist/node/markdown/plugins/snippet.js +146 -0
- package/dist/node/markdown/plugins/snippet.js.map +1 -0
- package/dist/node/markdownToVue.js +166 -0
- package/dist/node/markdownToVue.js.map +1 -0
- package/dist/node/plugin.js +227 -0
- package/dist/node/plugin.js.map +1 -0
- package/dist/node/serve/serve.js +59 -0
- package/dist/node/serve/serve.js.map +1 -0
- package/dist/node/{serve-428d4610.js → serve-b5dc02b2.js} +26 -2
- package/dist/node/server.js +18 -0
- package/dist/node/server.js.map +1 -0
- package/dist/node/shared.js +72 -0
- package/dist/node/shared.js.map +1 -0
- package/dist/node/staticDataPlugin.js +99 -0
- package/dist/node/staticDataPlugin.js.map +1 -0
- package/dist/node/utils/getGitTimestamp.js +17 -0
- package/dist/node/utils/getGitTimestamp.js.map +1 -0
- package/dist/node/utils/parseHeader.js +57 -0
- package/dist/node/utils/parseHeader.js.map +1 -0
- package/dist/node/utils/slash.js +8 -0
- package/dist/node/utils/slash.js.map +1 -0
- package/package.json +4 -2
- package/types/default-theme.d.ts +12 -0
- package/types/shared.d.ts +11 -6
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { onMounted, onUnmounted } from 'vue';
|
|
2
|
+
import { throttleAndDebounce } from '../support/utils';
|
|
3
|
+
const GridSettings = {
|
|
4
|
+
small: [
|
|
5
|
+
[920, 6, 2],
|
|
6
|
+
[768, 5, 2],
|
|
7
|
+
[640, 4, 2],
|
|
8
|
+
[480, 3, 2],
|
|
9
|
+
[0, 2, 2]
|
|
10
|
+
],
|
|
11
|
+
medium: [
|
|
12
|
+
[832, 4, 3],
|
|
13
|
+
[640, 3, 3],
|
|
14
|
+
[480, 2, 2]
|
|
15
|
+
],
|
|
16
|
+
big: [
|
|
17
|
+
[832, 3, 3],
|
|
18
|
+
[640, 2, 2]
|
|
19
|
+
]
|
|
20
|
+
};
|
|
21
|
+
export function useSponsorsGrid(options) {
|
|
22
|
+
const onResize = throttleAndDebounce(manage, 100);
|
|
23
|
+
onMounted(() => {
|
|
24
|
+
manage();
|
|
25
|
+
window.addEventListener('resize', onResize);
|
|
26
|
+
});
|
|
27
|
+
onUnmounted(() => {
|
|
28
|
+
window.removeEventListener('resize', onResize);
|
|
29
|
+
});
|
|
30
|
+
function manage() {
|
|
31
|
+
adjustSlots(options.el.value, options.size);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function adjustSlots(el, size) {
|
|
35
|
+
const tsize = el.children.length;
|
|
36
|
+
const asize = el.querySelectorAll('.vp-sponsor-grid-item:not(.empty)').length;
|
|
37
|
+
const grid = setGrid(el, size, asize);
|
|
38
|
+
manageSlots(el, grid, tsize, asize);
|
|
39
|
+
}
|
|
40
|
+
function setGrid(el, size, items) {
|
|
41
|
+
const settings = GridSettings[size];
|
|
42
|
+
const screen = window.innerWidth;
|
|
43
|
+
let grid = 1;
|
|
44
|
+
const match = settings.some(([breakpoint, value, min]) => {
|
|
45
|
+
if (screen < breakpoint) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (items < min) {
|
|
49
|
+
setGridData(el, items);
|
|
50
|
+
grid = items;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setGridData(el, value);
|
|
54
|
+
grid = value;
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
});
|
|
58
|
+
match || setGridData(el, 1);
|
|
59
|
+
return grid;
|
|
60
|
+
}
|
|
61
|
+
function setGridData(el, value) {
|
|
62
|
+
el.dataset.vpGrid = String(value);
|
|
63
|
+
}
|
|
64
|
+
function manageSlots(el, grid, tsize, asize) {
|
|
65
|
+
const diff = tsize - asize;
|
|
66
|
+
const rem = asize % grid;
|
|
67
|
+
const drem = rem === 0 ? rem : grid - rem;
|
|
68
|
+
neutralizeSlots(el, drem - diff);
|
|
69
|
+
}
|
|
70
|
+
function neutralizeSlots(el, count) {
|
|
71
|
+
if (count === 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
count > 0 ? addSlots(el, count) : removeSlots(el, count * -1);
|
|
75
|
+
}
|
|
76
|
+
function addSlots(el, count) {
|
|
77
|
+
for (let i = 0; i < count; i++) {
|
|
78
|
+
const slot = document.createElement('div');
|
|
79
|
+
slot.classList.add('vp-sponsor-grid-item', 'empty');
|
|
80
|
+
el.append(slot);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function removeSlots(el, count) {
|
|
84
|
+
for (let i = 0; i < count; i++) {
|
|
85
|
+
el.removeChild(el.lastElementChild);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -3,8 +3,12 @@ import './styles/vars.css';
|
|
|
3
3
|
import './styles/base.css';
|
|
4
4
|
import './styles/utils.css';
|
|
5
5
|
import './styles/vp-doc.css';
|
|
6
|
+
import './styles/vp-sponsor.css';
|
|
6
7
|
import Layout from './Layout.vue';
|
|
7
8
|
import NotFound from './NotFound.vue';
|
|
9
|
+
export { default as VPHomeHero } from './components/VPHomeHero.vue';
|
|
10
|
+
export { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';
|
|
11
|
+
export { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';
|
|
8
12
|
const theme = {
|
|
9
13
|
Layout,
|
|
10
14
|
NotFound
|
|
@@ -52,6 +52,9 @@
|
|
|
52
52
|
--vp-c-indigo: #213547;
|
|
53
53
|
--vp-c-indigo-soft: #476582;
|
|
54
54
|
--vp-c-indigo-light: #aac8e4;
|
|
55
|
+
--vp-c-indigo-lighter: #c9def1;
|
|
56
|
+
--vp-c-indigo-dark: #1d2f3f;
|
|
57
|
+
--vp-c-indigo-darker: #14212e;
|
|
55
58
|
|
|
56
59
|
--vp-c-blue: #3b8eed;
|
|
57
60
|
--vp-c-blue-light: #549ced;
|
|
@@ -109,7 +112,11 @@
|
|
|
109
112
|
|
|
110
113
|
--vp-c-brand: var(--vp-c-green);
|
|
111
114
|
--vp-c-brand-light: var(--vp-c-green-light);
|
|
115
|
+
--vp-c-brand-lighter: var(--vp-c-green-lighter);
|
|
112
116
|
--vp-c-brand-dark: var(--vp-c-green-dark);
|
|
117
|
+
--vp-c-brand-darker: var(--vp-c-green-darker);
|
|
118
|
+
|
|
119
|
+
--vp-c-sponsor: #fd1d7c;
|
|
113
120
|
}
|
|
114
121
|
|
|
115
122
|
.dark {
|
|
@@ -168,8 +175,9 @@
|
|
|
168
175
|
:root {
|
|
169
176
|
--vp-z-index-local-nav: 10;
|
|
170
177
|
--vp-z-index-nav: 20;
|
|
171
|
-
--vp-z-backdrop: 30;
|
|
178
|
+
--vp-z-index-backdrop: 30;
|
|
172
179
|
--vp-z-index-sidebar: 40;
|
|
180
|
+
--vp-z-index-footer: 50;
|
|
173
181
|
}
|
|
174
182
|
|
|
175
183
|
/**
|
|
@@ -185,10 +193,17 @@
|
|
|
185
193
|
* -------------------------------------------------------------------------- */
|
|
186
194
|
|
|
187
195
|
:root {
|
|
196
|
+
--vp-nav-height: var(--vp-nav-height-mobile);
|
|
188
197
|
--vp-nav-height-mobile: 56px;
|
|
189
198
|
--vp-nav-height-desktop: 72px;
|
|
190
199
|
}
|
|
191
200
|
|
|
201
|
+
@media (min-width: 960px) {
|
|
202
|
+
:root {
|
|
203
|
+
--vp-nav-height: var(--vp-nav-height-desktop);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
192
207
|
/**
|
|
193
208
|
* Component: Sidebar
|
|
194
209
|
* -------------------------------------------------------------------------- */
|
|
@@ -212,3 +227,73 @@
|
|
|
212
227
|
.dark {
|
|
213
228
|
--vp-code-block-bg: var(--vp-c-bg-sidebar);
|
|
214
229
|
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Component: Button
|
|
233
|
+
* -------------------------------------------------------------------------- */
|
|
234
|
+
|
|
235
|
+
:root {
|
|
236
|
+
--vp-button-brand-border: var(--vp-c-brand-light);
|
|
237
|
+
--vp-button-brand-text: var(--vp-c-text-dark-1);
|
|
238
|
+
--vp-button-brand-bg: var(--vp-c-brand);
|
|
239
|
+
--vp-button-brand-hover-border: var(--vp-c-brand-light);
|
|
240
|
+
--vp-button-brand-hover-text: var(--vp-c-text-dark-1);
|
|
241
|
+
--vp-button-brand-hover-bg: var(--vp-c-brand-light);
|
|
242
|
+
--vp-button-brand-active-border: var(--vp-c-brand-light);
|
|
243
|
+
--vp-button-brand-active-text: var(--vp-c-text-dark-1);
|
|
244
|
+
--vp-button-brand-active-bg: var(--vp-button-brand-bg);
|
|
245
|
+
|
|
246
|
+
--vp-button-alt-border: var(--vp-c-gray-light-3);
|
|
247
|
+
--vp-button-alt-text: var(--vp-c-text-light-1);
|
|
248
|
+
--vp-button-alt-bg: var(--vp-c-gray-light-5);
|
|
249
|
+
--vp-button-alt-hover-border: var(--vp-c-gray-light-3);
|
|
250
|
+
--vp-button-alt-hover-text: var(--vp-c-text-light-1);
|
|
251
|
+
--vp-button-alt-hover-bg: var(--vp-c-gray-light-4);
|
|
252
|
+
--vp-button-alt-active-border: var(--vp-c-gray-light-3);
|
|
253
|
+
--vp-button-alt-active-text: var(--vp-c-text-light-1);
|
|
254
|
+
--vp-button-alt-active-bg: var(--vp-c-gray-light-3);
|
|
255
|
+
|
|
256
|
+
--vp-button-sponsor-border: var(--vp-c-gray-light-3);
|
|
257
|
+
--vp-button-sponsor-text: var(--vp-c-text-light-2);
|
|
258
|
+
--vp-button-sponsor-bg: transparent;
|
|
259
|
+
--vp-button-sponsor-hover-border: var(--vp-c-sponsor);
|
|
260
|
+
--vp-button-sponsor-hover-text: var(--vp-c-sponsor);
|
|
261
|
+
--vp-button-sponsor-hover-bg: transparent;
|
|
262
|
+
--vp-button-sponsor-active-border: var(--vp-c-sponsor);
|
|
263
|
+
--vp-button-sponsor-active-text: var(--vp-c-sponsor);
|
|
264
|
+
--vp-button-sponsor-active-bg: transparent;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.dark {
|
|
268
|
+
--vp-button-brand-border: var(--vp-c-brand-lighter);
|
|
269
|
+
--vp-button-brand-text: var(--vp-c-text-light-1);
|
|
270
|
+
--vp-button-brand-bg: var(--vp-c-brand-light);
|
|
271
|
+
--vp-button-brand-hover-border: var(--vp-c-brand-lighter);
|
|
272
|
+
--vp-button-brand-hover-text: var(--vp-c-text-light-1);
|
|
273
|
+
--vp-button-brand-hover-bg: var(--vp-c-brand-lighter);
|
|
274
|
+
--vp-button-brand-active-border: var(--vp-c-brand-lighter);
|
|
275
|
+
--vp-button-brand-active-text: var(--vp-c-text-light-1);
|
|
276
|
+
--vp-button-brand-active-bg: var(--vp-button-brand-bg);
|
|
277
|
+
|
|
278
|
+
--vp-button-alt-border: var(--vp-c-gray-dark-2);
|
|
279
|
+
--vp-button-alt-text: var(--vp-c-text-dark-1);
|
|
280
|
+
--vp-button-alt-bg: var(--vp-c-bg-mute);
|
|
281
|
+
--vp-button-alt-hover-border: var(--vp-c-gray-dark-2);
|
|
282
|
+
--vp-button-alt-hover-text: var(--vp-c-text-dark-1);
|
|
283
|
+
--vp-button-alt-hover-bg: var(--vp-c-gray-dark-3);
|
|
284
|
+
--vp-button-alt-active-border: var(--vp-c-gray-dark-2);
|
|
285
|
+
--vp-button-alt-active-text: var(--vp-c-text-dark-1);
|
|
286
|
+
--vp-button-alt-active-bg: var(--vp-button-alt-bg);
|
|
287
|
+
|
|
288
|
+
--vp-button-sponsor-border: var(--vp-c-gray-dark-1);
|
|
289
|
+
--vp-button-sponsor-text: var(--vp-c-text-dark-2);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Component: Home
|
|
294
|
+
* -------------------------------------------------------------------------- */
|
|
295
|
+
|
|
296
|
+
:root {
|
|
297
|
+
--vp-home-hero-name-color: var(--vp-c-brand);
|
|
298
|
+
--vp-home-hero-name-background: transparent;
|
|
299
|
+
}
|
|
@@ -123,6 +123,10 @@
|
|
|
123
123
|
list-style: disc;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
.vp-doc li + li {
|
|
127
|
+
margin-top: 8px;
|
|
128
|
+
}
|
|
129
|
+
|
|
126
130
|
/**
|
|
127
131
|
* Table
|
|
128
132
|
* -------------------------------------------------------------------------- */
|
|
@@ -184,7 +188,7 @@
|
|
|
184
188
|
|
|
185
189
|
.vp-doc :not(pre) > code {
|
|
186
190
|
border-radius: 4px;
|
|
187
|
-
padding:
|
|
191
|
+
padding: 3px 6px;
|
|
188
192
|
color: var(--vp-c-text-code);
|
|
189
193
|
background-color: var(--vp-c-bg-mute);
|
|
190
194
|
transition: color 0.5s, background-color 0.5s;
|
|
@@ -217,7 +221,7 @@
|
|
|
217
221
|
@media (min-width: 640px) {
|
|
218
222
|
.vp-doc div[class*='language-'] {
|
|
219
223
|
border-radius: 8px;
|
|
220
|
-
margin:
|
|
224
|
+
margin: 24px 0;
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
|
|
@@ -331,6 +335,8 @@
|
|
|
331
335
|
.vp-doc [class~='language-ts']:before { content: 'ts'; }
|
|
332
336
|
.vp-doc [class~='language-tsx']:before { content: 'tsx'; }
|
|
333
337
|
.vp-doc [class~='language-json']:before { content: 'json'; }
|
|
338
|
+
.vp-doc [class~='language-yaml']:before { content: 'yaml'; }
|
|
339
|
+
.vp-doc [class~='language-yml']:before { content: 'yaml'; }
|
|
334
340
|
.vp-doc [class~='language-sh']:before { content: 'sh'; }
|
|
335
341
|
.vp-doc [class~='language-bash']:before { content: 'sh'; }
|
|
336
342
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.vp-sponsor-grid {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-wrap: wrap;
|
|
4
|
+
gap: 4px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.vp-sponsor-grid.small .vp-sponsor-grid-link { height: 96px; }
|
|
8
|
+
.vp-sponsor-grid.small .vp-sponsor-grid-image { max-width: 96px; max-height: 24px }
|
|
9
|
+
|
|
10
|
+
.vp-sponsor-grid.medium .vp-sponsor-grid-link { height: 112px; }
|
|
11
|
+
.vp-sponsor-grid.medium .vp-sponsor-grid-image { max-width: 120px; max-height: 36px }
|
|
12
|
+
|
|
13
|
+
.vp-sponsor-grid.big .vp-sponsor-grid-link { height: 184px; }
|
|
14
|
+
.vp-sponsor-grid.big .vp-sponsor-grid-image { max-width: 192px; max-height: 56px }
|
|
15
|
+
|
|
16
|
+
.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item {
|
|
17
|
+
width: calc((100% - 4px) / 2);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item {
|
|
21
|
+
width: calc((100% - 4px * 2) / 3);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item {
|
|
25
|
+
width: calc((100% - 4px * 3) / 4);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item {
|
|
29
|
+
width: calc((100% - 4px * 4) / 5);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item {
|
|
33
|
+
width: calc((100% - 4px * 5) / 6);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.vp-sponsor-grid-item {
|
|
37
|
+
flex-shrink: 0;
|
|
38
|
+
width: 100%;
|
|
39
|
+
background-color: var(--vp-c-white-soft);
|
|
40
|
+
transition: background-color 0.25s;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.vp-sponsor-grid-item:hover {
|
|
44
|
+
background-color: var(--vp-c-white-mute);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.vp-sponsor-grid-item:hover .vp-sponsor-grid-image {
|
|
48
|
+
filter: grayscale(0) invert(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.vp-sponsor-grid-item.empty:hover {
|
|
52
|
+
background-color: var(--vp-c-white-soft);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dark .vp-sponsor-grid-item {
|
|
56
|
+
background-color: var(--vp-c-black-mute);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.dark .vp-sponsor-grid-item:hover {
|
|
60
|
+
background-color: var(--vp-c-white-soft);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.dark .vp-sponsor-grid-item.empty:hover {
|
|
64
|
+
background-color: var(--vp-c-black-mute);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.vp-sponsor-grid-link {
|
|
68
|
+
display: flex;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.vp-sponsor-grid-box {
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
align-items: center;
|
|
75
|
+
width: 100%;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.vp-sponsor-grid-image {
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
filter: grayscale(1);
|
|
81
|
+
transition: filter 0.25s;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dark .vp-sponsor-grid-image {
|
|
85
|
+
filter: grayscale(1) invert(1);
|
|
86
|
+
}
|
|
@@ -8,6 +8,25 @@ const hashRef = ref(inBrowser ? location.hash : '');
|
|
|
8
8
|
export function isExternal(path) {
|
|
9
9
|
return OUTBOUND_RE.test(path);
|
|
10
10
|
}
|
|
11
|
+
export function throttleAndDebounce(fn, delay) {
|
|
12
|
+
let timeout;
|
|
13
|
+
let called = false;
|
|
14
|
+
return () => {
|
|
15
|
+
if (timeout) {
|
|
16
|
+
clearTimeout(timeout);
|
|
17
|
+
}
|
|
18
|
+
if (!called) {
|
|
19
|
+
fn();
|
|
20
|
+
called = true;
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
called = false;
|
|
23
|
+
}, delay);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
timeout = setTimeout(fn, delay);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
11
30
|
export function isActive(currentPath, matchPath, asRegex = false) {
|
|
12
31
|
if (matchPath === undefined) {
|
|
13
32
|
return false;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveAliases = exports.SITE_DATA_REQUEST_PATH = exports.SITE_DATA_ID = exports.DEFAULT_THEME_PATH = exports.SHARED_PATH = exports.APP_PATH = exports.DIST_CLIENT_PATH = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const PKG_ROOT = path_1.default.join(__dirname, '../../');
|
|
9
|
+
exports.DIST_CLIENT_PATH = path_1.default.join(__dirname, '../client');
|
|
10
|
+
exports.APP_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'app');
|
|
11
|
+
exports.SHARED_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'shared');
|
|
12
|
+
exports.DEFAULT_THEME_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'theme-default');
|
|
13
|
+
// special virtual file
|
|
14
|
+
// we can't directly import '/@siteData' because
|
|
15
|
+
// - it's not an actual file so we can't use tsconfig paths to redirect it
|
|
16
|
+
// - TS doesn't allow shimming a module that starts with '/'
|
|
17
|
+
exports.SITE_DATA_ID = '@siteData';
|
|
18
|
+
exports.SITE_DATA_REQUEST_PATH = '/' + exports.SITE_DATA_ID;
|
|
19
|
+
const vueRuntimePath = 'vue/dist/vue.runtime.esm-bundler.js';
|
|
20
|
+
function resolveAliases(root, themeDir) {
|
|
21
|
+
const paths = {
|
|
22
|
+
'/@theme': themeDir,
|
|
23
|
+
'@theme': themeDir,
|
|
24
|
+
[exports.SITE_DATA_ID]: exports.SITE_DATA_REQUEST_PATH
|
|
25
|
+
};
|
|
26
|
+
// prioritize vue installed in project root and fallback to
|
|
27
|
+
// vue that comes with vitepress itself.
|
|
28
|
+
let vuePath;
|
|
29
|
+
try {
|
|
30
|
+
vuePath = require.resolve(vueRuntimePath, { paths: [root] });
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
vuePath = require.resolve(vueRuntimePath);
|
|
34
|
+
}
|
|
35
|
+
const aliases = [
|
|
36
|
+
...Object.keys(paths).map((p) => ({
|
|
37
|
+
find: p,
|
|
38
|
+
replacement: paths[p]
|
|
39
|
+
})),
|
|
40
|
+
{
|
|
41
|
+
find: /^vitepress$/,
|
|
42
|
+
replacement: path_1.default.join(__dirname, '../client/index')
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
find: /^vitepress\/theme$/,
|
|
46
|
+
replacement: path_1.default.join(__dirname, '../client/theme-default/index')
|
|
47
|
+
},
|
|
48
|
+
// alias for local linked development
|
|
49
|
+
{ find: /^vitepress\//, replacement: PKG_ROOT + '/' },
|
|
50
|
+
// make sure it always use the same vue dependency that comes with
|
|
51
|
+
// vitepress itself
|
|
52
|
+
{
|
|
53
|
+
find: /^vue$/,
|
|
54
|
+
replacement: vuePath
|
|
55
|
+
}
|
|
56
|
+
];
|
|
57
|
+
return aliases;
|
|
58
|
+
}
|
|
59
|
+
exports.resolveAliases = resolveAliases;
|
|
60
|
+
//# sourceMappingURL=alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias.js","sourceRoot":"","sources":["../../src/node/alias.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAGvB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AAClC,QAAA,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AACpD,QAAA,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,KAAK,CAAC,CAAA;AAC7C,QAAA,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,QAAQ,CAAC,CAAA;AACnD,QAAA,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,eAAe,CAAC,CAAA;AAE9E,uBAAuB;AACvB,gDAAgD;AAChD,0EAA0E;AAC1E,4DAA4D;AAC/C,QAAA,YAAY,GAAG,WAAW,CAAA;AAC1B,QAAA,sBAAsB,GAAG,GAAG,GAAG,oBAAY,CAAA;AAExD,MAAM,cAAc,GAAG,qCAAqC,CAAA;AAE5D,SAAgB,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAA2B;QACpC,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,QAAQ;QAClB,CAAC,oBAAY,CAAC,EAAE,8BAAsB;KACvC,CAAA;IAED,2DAA2D;IAC3D,wCAAwC;IACxC,IAAI,OAAO,CAAA;IACX,IAAI;QACF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KAC7D;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;KAC1C;IAED,MAAM,OAAO,GAAY;QACvB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;QACH;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACrD;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC;SACnE;QACD,qCAAqC;QACrC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAG,GAAG,EAAE;QACrD,kEAAkE;QAClE,mBAAmB;QACnB;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO;SACrB;KACF,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAxCD,wCAwCC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.build = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const bundle_1 = require("./bundle");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const render_1 = require("./render");
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
async function build(root, buildOptions = {}) {
|
|
14
|
+
const start = Date.now();
|
|
15
|
+
process.env.NODE_ENV = 'production';
|
|
16
|
+
const siteConfig = await (0, config_1.resolveConfig)(root, 'build', 'production');
|
|
17
|
+
if (buildOptions.mpa) {
|
|
18
|
+
siteConfig.mpa = true;
|
|
19
|
+
delete buildOptions.mpa;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const { clientResult, serverResult, pageToHashMap } = await (0, bundle_1.bundle)(siteConfig, buildOptions);
|
|
23
|
+
const spinner = (0, ora_1.default)();
|
|
24
|
+
spinner.start('rendering pages...');
|
|
25
|
+
try {
|
|
26
|
+
const appChunk = clientResult &&
|
|
27
|
+
clientResult.output.find((chunk) => chunk.type === 'chunk' && chunk.isEntry);
|
|
28
|
+
const cssChunk = (siteConfig.mpa ? serverResult : clientResult).output.find((chunk) => chunk.type === 'asset' && chunk.fileName.endsWith('.css'));
|
|
29
|
+
// We embed the hash map string into each page directly so that it doesn't
|
|
30
|
+
// alter the main chunk's hash on every build. It's also embedded as a
|
|
31
|
+
// string and JSON.parsed from the client because it's faster than embedding
|
|
32
|
+
// as JS object literal.
|
|
33
|
+
const hashMapString = JSON.stringify(JSON.stringify(pageToHashMap));
|
|
34
|
+
for (const page of siteConfig.pages) {
|
|
35
|
+
await (0, render_1.renderPage)(siteConfig, page, clientResult, appChunk, cssChunk, pageToHashMap, hashMapString);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
spinner.stopAndPersist({
|
|
40
|
+
symbol: bundle_1.failMark
|
|
41
|
+
});
|
|
42
|
+
throw e;
|
|
43
|
+
}
|
|
44
|
+
spinner.stopAndPersist({
|
|
45
|
+
symbol: bundle_1.okMark
|
|
46
|
+
});
|
|
47
|
+
// emit page hash map for the case where a user session is open
|
|
48
|
+
// when the site got redeployed (which invalidates current hash map)
|
|
49
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(siteConfig.outDir, 'hashmap.json'), pageToHashMap);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await fs_extra_1.default.remove(siteConfig.tempDir);
|
|
53
|
+
}
|
|
54
|
+
console.log(`build complete in ${((Date.now() - start) / 1000).toFixed(2)}s.`);
|
|
55
|
+
}
|
|
56
|
+
exports.build = build;
|
|
57
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/node/build/build.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAyB;AACzB,qCAAmD;AAEnD,sCAAyC;AACzC,qCAAqC;AAErC,8CAAqB;AACrB,gDAAuB;AAEhB,KAAK,UAAU,KAAK,CACzB,IAAY,EACZ,eAAgD,EAAE;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAA;IACnC,MAAM,UAAU,GAAG,MAAM,IAAA,sBAAa,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;IAEnE,IAAI,YAAY,CAAC,GAAG,EAAE;QACpB,UAAU,CAAC,GAAG,GAAG,IAAI,CAAA;QACrB,OAAO,YAAY,CAAC,GAAG,CAAA;KACxB;IAED,IAAI;QACF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,eAAM,EAChE,UAAU,EACV,YAAY,CACb,CAAA;QAED,MAAM,OAAO,GAAG,IAAA,aAAG,GAAE,CAAA;QACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEnC,IAAI;YACF,MAAM,QAAQ,GACZ,YAAY;gBACX,YAAY,CAAC,MAAM,CAAC,IAAI,CACvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CACnC,CAAA;YAEnB,MAAM,QAAQ,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAC7C,CAAC,MAAM,CAAC,IAAI,CACX,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtD,CAAA;YAEhB,0EAA0E;YAC1E,sEAAsE;YACtE,4EAA4E;YAC5E,wBAAwB;YACxB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;YAEnE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;gBACnC,MAAM,IAAA,mBAAU,EACd,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,CACd,CAAA;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,cAAc,CAAC;gBACrB,MAAM,EAAE,iBAAQ;aACjB,CAAC,CAAA;YACF,MAAM,CAAC,CAAA;SACR;QACD,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,EAAE,eAAM;SACf,CAAC,CAAA;QAEF,+DAA+D;QAC/D,oEAAoE;QACpE,kBAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,aAAa,CACd,CAAA;KACF;YAAS;QACR,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;KACpC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAChF,CAAC;AA1ED,sBA0EC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildMPAClient = void 0;
|
|
4
|
+
const vite_1 = require("vite");
|
|
5
|
+
const virtualEntry = 'client.js';
|
|
6
|
+
async function buildMPAClient(js, config) {
|
|
7
|
+
const files = Object.keys(js);
|
|
8
|
+
const themeFiles = files.filter((f) => !f.endsWith('.md'));
|
|
9
|
+
const pages = files.filter((f) => f.endsWith('.md'));
|
|
10
|
+
return (0, vite_1.build)({
|
|
11
|
+
root: config.srcDir,
|
|
12
|
+
base: config.site.base,
|
|
13
|
+
logLevel: 'warn',
|
|
14
|
+
build: {
|
|
15
|
+
emptyOutDir: false,
|
|
16
|
+
outDir: config.outDir,
|
|
17
|
+
rollupOptions: {
|
|
18
|
+
input: [virtualEntry, ...pages]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
plugins: [
|
|
22
|
+
{
|
|
23
|
+
name: 'vitepress-mpa-client',
|
|
24
|
+
resolveId(id) {
|
|
25
|
+
if (id === virtualEntry) {
|
|
26
|
+
return id;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
load(id) {
|
|
30
|
+
if (id === virtualEntry) {
|
|
31
|
+
return themeFiles
|
|
32
|
+
.map((file) => `import ${JSON.stringify(file)}`)
|
|
33
|
+
.join('\n');
|
|
34
|
+
}
|
|
35
|
+
else if (id in js) {
|
|
36
|
+
return js[id];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.buildMPAClient = buildMPAClient;
|
|
44
|
+
//# sourceMappingURL=buildMPAClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildMPAClient.js","sourceRoot":"","sources":["../../../src/node/build/buildMPAClient.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAI5B,MAAM,YAAY,GAAG,WAAW,CAAA;AAEzB,KAAK,UAAU,cAAc,CAClC,EAA0B,EAC1B,MAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpD,OAAO,IAAA,YAAK,EAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE;gBACb,KAAK,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;aAChC;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,CAAC,EAAE;oBACV,IAAI,EAAE,KAAK,YAAY,EAAE;wBACvB,OAAO,EAAE,CAAA;qBACV;gBACH,CAAC;gBACD,IAAI,CAAC,EAAE;oBACL,IAAI,EAAE,KAAK,YAAY,EAAE;wBACvB,OAAO,UAAU;6BACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;6BAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;qBACd;yBAAM,IAAI,EAAE,IAAI,EAAE,EAAE;wBACnB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;qBACd;gBACH,CAAC;aACF;SACF;KACF,CAA0B,CAAA;AAC7B,CAAC;AAvCD,wCAuCC"}
|