vitepress 2.0.0-alpha.2 → 2.0.0-alpha.21
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/README.md +34 -2
- package/THIRD-PARTY-NOTICES.md +1736 -0
- package/bin/vitepress.js +14 -0
- package/client.d.ts +9 -0
- package/dist/client/app/components/ClientOnly.d.ts +5 -0
- package/dist/client/app/components/ClientOnly.js +11 -10
- package/dist/client/app/components/Content.d.ts +17 -0
- package/dist/client/app/components/Content.js +25 -22
- package/dist/client/app/composables/codeGroups.d.ts +3 -0
- package/dist/client/app/composables/codeGroups.js +36 -39
- package/dist/client/app/composables/copyCode.d.ts +3 -0
- package/dist/client/app/composables/copyCode.js +59 -70
- package/dist/client/app/composables/head.d.ts +5 -0
- package/dist/client/app/composables/head.js +56 -74
- package/dist/client/app/composables/icon.d.ts +12 -0
- package/dist/client/app/composables/icon.js +56 -0
- package/dist/client/app/composables/preFetch.d.ts +3 -0
- package/dist/client/app/composables/preFetch.js +64 -96
- package/dist/client/app/data.d.ts +9 -0
- package/dist/client/app/data.js +34 -59
- package/dist/client/app/devtools.d.ts +7 -0
- package/dist/client/app/devtools.js +29 -28
- package/dist/client/app/index.d.ts +11 -0
- package/dist/client/app/index.js +106 -131
- package/dist/client/app/router.d.ts +49 -0
- package/dist/client/app/router.js +198 -239
- package/dist/client/app/ssr.d.ts +4 -0
- package/dist/client/app/ssr.js +14 -9
- package/dist/client/app/theme.d.ts +24 -0
- package/dist/client/app/theme.js +0 -1
- package/dist/client/app/utils.d.ts +35 -0
- package/dist/client/app/utils.js +77 -110
- package/dist/client/index.d.ts +21 -137
- package/dist/client/index.js +8 -9
- package/dist/client/shared.d.ts +88 -0
- package/dist/client/shared.js +265 -141
- package/dist/client/theme-default/Layout.d.vue.ts +79 -0
- package/dist/client/theme-default/Layout.vue +33 -36
- package/dist/client/theme-default/NotFound.d.vue.ts +3 -0
- package/dist/client/theme-default/NotFound.vue +33 -35
- package/dist/client/theme-default/components/VPAlgoliaSearchBox.d.vue.ts +11 -0
- package/dist/client/theme-default/components/VPAlgoliaSearchBox.vue +202 -70
- package/dist/client/theme-default/components/VPBackdrop.d.vue.ts +6 -0
- package/dist/client/theme-default/components/VPBackdrop.vue +8 -12
- package/dist/client/theme-default/components/VPBadge.d.vue.ts +19 -0
- package/dist/client/theme-default/components/VPBadge.vue +49 -26
- package/dist/client/theme-default/components/VPButton.d.vue.ts +25 -0
- package/dist/client/theme-default/components/VPButton.vue +53 -36
- package/dist/client/theme-default/components/VPCarbonAds.d.vue.ts +7 -0
- package/dist/client/theme-default/components/VPCarbonAds.vue +51 -52
- package/dist/client/theme-default/components/VPContent.d.vue.ts +59 -0
- package/dist/client/theme-default/components/VPContent.vue +27 -26
- package/dist/client/theme-default/components/VPDoc.d.vue.ts +33 -0
- package/dist/client/theme-default/components/VPDoc.vue +52 -48
- package/dist/client/theme-default/components/VPDocAside.d.vue.ts +23 -0
- package/dist/client/theme-default/components/VPDocAside.vue +7 -8
- package/dist/client/theme-default/components/VPDocAsideCarbonAds.d.vue.ts +7 -0
- package/dist/client/theme-default/components/VPDocAsideCarbonAds.vue +7 -11
- package/dist/client/theme-default/components/VPDocAsideOutline.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPDocAsideOutline.vue +22 -38
- package/dist/client/theme-default/components/VPDocAsideSponsors.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPDocAsideSponsors.vue +17 -11
- package/dist/client/theme-default/components/VPDocFooter.d.vue.ts +13 -0
- package/dist/client/theme-default/components/VPDocFooter.vue +38 -45
- package/dist/client/theme-default/components/VPDocFooterLastUpdated.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPDocFooterLastUpdated.vue +30 -29
- package/dist/client/theme-default/components/VPDocOutlineItem.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPDocOutlineItem.vue +20 -19
- package/dist/client/theme-default/components/VPFeature.d.vue.ts +13 -0
- package/dist/client/theme-default/components/VPFeature.vue +62 -36
- package/dist/client/theme-default/components/VPFeatures.d.vue.ts +16 -0
- package/dist/client/theme-default/components/VPFeatures.vue +35 -48
- package/dist/client/theme-default/components/VPFlyout.d.vue.ts +26 -0
- package/dist/client/theme-default/components/VPFlyout.vue +111 -47
- package/dist/client/theme-default/components/VPFooter.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPFooter.vue +22 -15
- package/dist/client/theme-default/components/VPHero.d.vue.ts +38 -0
- package/dist/client/theme-default/components/VPHero.vue +109 -99
- package/dist/client/theme-default/components/VPHome.d.vue.ts +31 -0
- package/dist/client/theme-default/components/VPHome.vue +15 -15
- package/dist/client/theme-default/components/VPHomeContent.d.vue.ts +13 -0
- package/dist/client/theme-default/components/VPHomeContent.vue +9 -27
- package/dist/client/theme-default/components/VPHomeFeatures.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPHomeFeatures.vue +4 -5
- package/dist/client/theme-default/components/VPHomeHero.d.vue.ts +23 -0
- package/dist/client/theme-default/components/VPHomeHero.vue +5 -5
- package/dist/client/theme-default/components/VPHomeSponsors.d.vue.ts +21 -0
- package/dist/client/theme-default/components/VPHomeSponsors.vue +42 -43
- package/dist/client/theme-default/components/VPIcon.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPIcon.vue +29 -0
- package/dist/client/theme-default/components/VPImage.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPImage.vue +20 -14
- package/dist/client/theme-default/components/VPLink.d.vue.ts +23 -0
- package/dist/client/theme-default/components/VPLink.vue +42 -23
- package/dist/client/theme-default/components/VPLocalNav.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPLocalNav.vue +69 -86
- package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.vue +98 -96
- package/dist/client/theme-default/components/VPLocalSearchBox.d.vue.ts +7 -0
- package/dist/client/theme-default/components/VPLocalSearchBox.vue +391 -454
- package/dist/client/theme-default/components/VPMenu.d.vue.ts +23 -0
- package/dist/client/theme-default/components/VPMenu.vue +19 -31
- package/dist/client/theme-default/components/VPMenuGroup.d.vue.ts +22 -0
- package/dist/client/theme-default/components/VPMenuGroup.vue +72 -18
- package/dist/client/theme-default/components/VPMenuLink.d.vue.ts +22 -0
- package/dist/client/theme-default/components/VPMenuLink.vue +65 -31
- package/dist/client/theme-default/components/VPNav.d.vue.ts +23 -0
- package/dist/client/theme-default/components/VPNav.vue +18 -24
- package/dist/client/theme-default/components/VPNavAppearance.d.vue.ts +9 -0
- package/dist/client/theme-default/components/VPNavAppearance.vue +88 -0
- package/dist/client/theme-default/components/VPNavBar.d.vue.ts +26 -0
- package/dist/client/theme-default/components/VPNavBar.vue +170 -142
- package/dist/client/theme-default/components/VPNavBarAskAiButton.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPNavBarAskAiButton.vue +31 -0
- package/dist/client/theme-default/components/VPNavBarExtra.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPNavBarExtra.vue +51 -73
- package/dist/client/theme-default/components/VPNavBarHamburger.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPNavBarHamburger.vue +38 -28
- package/dist/client/theme-default/components/VPNavBarSearch.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPNavBarSearch.vue +129 -160
- package/dist/client/theme-default/components/VPNavBarSearchButton.d.vue.ts +6 -0
- package/dist/client/theme-default/components/VPNavBarSearchButton.vue +48 -182
- package/dist/client/theme-default/components/VPNavBarTitle.d.vue.ts +15 -0
- package/dist/client/theme-default/components/VPNavBarTitle.vue +39 -38
- package/dist/client/theme-default/components/VPNavMenu.d.vue.ts +6 -0
- package/dist/client/theme-default/components/VPNavMenu.vue +76 -0
- package/dist/client/theme-default/components/VPNavMenuGroup.d.vue.ts +11 -0
- package/dist/client/theme-default/components/VPNavMenuGroup.vue +140 -0
- package/dist/client/theme-default/components/VPNavMenuLink.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPNavMenuLink.vue +69 -0
- package/dist/client/theme-default/components/VPNavScreen.d.vue.ts +18 -0
- package/dist/client/theme-default/components/VPNavScreen.vue +36 -34
- package/dist/client/theme-default/components/VPNavSocialLinks.d.vue.ts +6 -0
- package/dist/client/theme-default/components/VPNavSocialLinks.vue +36 -0
- package/dist/client/theme-default/components/VPNavTranslations.d.vue.ts +9 -0
- package/dist/client/theme-default/components/VPNavTranslations.vue +170 -0
- package/dist/client/theme-default/components/VPPage.d.vue.ts +15 -0
- package/dist/client/theme-default/components/VPSidebar.d.vue.ts +18 -0
- package/dist/client/theme-default/components/VPSidebar.vue +40 -53
- package/dist/client/theme-default/components/VPSidebarGroup.d.vue.ts +7 -0
- package/dist/client/theme-default/components/VPSidebarGroup.vue +24 -29
- package/dist/client/theme-default/components/VPSidebarItem.d.vue.ts +8 -0
- package/dist/client/theme-default/components/VPSidebarItem.vue +60 -93
- package/dist/client/theme-default/components/VPSkipLink.d.vue.ts +6 -0
- package/dist/client/theme-default/components/VPSkipLink.vue +23 -42
- package/dist/client/theme-default/components/VPSocialLink.d.vue.ts +11 -0
- package/dist/client/theme-default/components/VPSocialLink.vue +42 -49
- package/dist/client/theme-default/components/VPSocialLinks.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPSocialLinks.vue +26 -16
- package/dist/client/theme-default/components/VPSponsors.d.vue.ts +18 -0
- package/dist/client/theme-default/components/VPSponsors.vue +34 -33
- package/dist/client/theme-default/components/VPSponsorsGrid.d.vue.ts +15 -0
- package/dist/client/theme-default/components/VPSponsorsGrid.vue +23 -26
- package/dist/client/theme-default/components/VPSwitch.d.vue.ts +13 -0
- package/dist/client/theme-default/components/VPSwitch.vue +12 -13
- package/dist/client/theme-default/components/VPSwitchAppearance.d.vue.ts +3 -0
- package/dist/client/theme-default/components/VPSwitchAppearance.vue +16 -21
- package/dist/client/theme-default/components/VPTeamMembers.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPTeamMembers.vue +59 -32
- package/dist/client/theme-default/components/VPTeamMembersItem.d.vue.ts +10 -0
- package/dist/client/theme-default/components/VPTeamMembersItem.vue +62 -58
- package/dist/client/theme-default/components/VPTeamPage.d.vue.ts +13 -0
- package/dist/client/theme-default/components/VPTeamPage.vue +14 -14
- package/dist/client/theme-default/components/VPTeamPageSection.d.vue.ts +17 -0
- package/dist/client/theme-default/components/VPTeamPageSection.vue +20 -19
- package/dist/client/theme-default/components/VPTeamPageTitle.d.vue.ts +15 -0
- package/dist/client/theme-default/components/VPTeamPageTitle.vue +22 -22
- package/dist/client/theme-default/composables/data.d.ts +5 -0
- package/dist/client/theme-default/composables/data.js +5 -2
- package/dist/client/theme-default/composables/edit-link.d.ts +6 -0
- package/dist/client/theme-default/composables/edit-link.js +17 -15
- package/dist/client/theme-default/composables/flyout.d.ts +10 -0
- package/dist/client/theme-default/composables/flyout.js +33 -32
- package/dist/client/theme-default/composables/langs.d.ts +44 -0
- package/dist/client/theme-default/composables/langs.js +48 -24
- package/dist/client/theme-default/composables/layout.d.ts +13 -0
- package/dist/client/theme-default/composables/layout.js +68 -0
- package/dist/client/theme-default/composables/nav-overflow.d.ts +54 -0
- package/dist/client/theme-default/composables/nav-overflow.js +179 -0
- package/dist/client/theme-default/composables/nav.d.ts +25 -0
- package/dist/client/theme-default/composables/nav.js +58 -29
- package/dist/client/theme-default/composables/outline.d.ts +8 -0
- package/dist/client/theme-default/composables/outline.js +144 -166
- package/dist/client/theme-default/composables/prev-next.d.ts +16 -0
- package/dist/client/theme-default/composables/prev-next.js +34 -56
- package/dist/client/theme-default/composables/scroll-lock.d.ts +4 -0
- package/dist/client/theme-default/composables/scroll-lock.js +95 -0
- package/dist/client/theme-default/composables/sidebar.d.ts +25 -0
- package/dist/client/theme-default/composables/sidebar.js +96 -133
- package/dist/client/theme-default/composables/sponsor-grid.d.ts +10 -0
- package/dist/client/theme-default/composables/sponsor-grid.js +69 -76
- package/dist/client/theme-default/fonts/inter-italic-cyrillic-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-cyrillic.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-greek-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-greek.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-latin.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-symbols.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-italic-vietnamese.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-cyrillic-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-cyrillic.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-greek-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-greek.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-latin-ext.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-latin.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-symbols.woff2 +0 -0
- package/dist/client/theme-default/fonts/inter-roman-vietnamese.woff2 +0 -0
- package/dist/client/theme-default/index.d.ts +3 -0
- package/dist/client/theme-default/index.js +4 -3
- package/dist/client/theme-default/styles/base.css +279 -211
- package/dist/client/theme-default/styles/components/custom-block.css +12 -7
- package/dist/client/theme-default/styles/components/vp-code-group.css +13 -16
- package/dist/client/theme-default/styles/components/vp-code.css +10 -2
- package/dist/client/theme-default/styles/components/vp-doc.css +188 -142
- package/dist/client/theme-default/styles/components/vp-sponsor.css +48 -37
- package/dist/client/theme-default/styles/docsearch.css +138 -0
- package/dist/client/theme-default/styles/fonts.css +216 -55
- package/dist/client/theme-default/styles/icons.css +42 -22
- package/dist/client/theme-default/styles/vars.css +111 -46
- package/dist/client/theme-default/support/docsearch.d.ts +57 -0
- package/dist/client/theme-default/support/docsearch.js +145 -0
- package/dist/client/theme-default/support/local-search.d.ts +9 -0
- package/dist/client/theme-default/support/local-search.js +31 -0
- package/dist/client/theme-default/support/lru.d.ts +11 -0
- package/dist/client/theme-default/support/lru.js +30 -33
- package/dist/client/theme-default/support/reactivity.d.ts +4 -0
- package/dist/client/theme-default/support/reactivity.js +10 -0
- package/dist/client/theme-default/support/sidebar.d.ts +27 -0
- package/dist/client/theme-default/support/sidebar.js +69 -80
- package/dist/client/theme-default/support/translation.d.ts +6 -0
- package/dist/client/theme-default/support/translation.js +33 -47
- package/dist/client/theme-default/support/utils.d.ts +7 -0
- package/dist/client/theme-default/support/utils.js +39 -30
- package/dist/client/theme-default/without-fonts.d.ts +25 -0
- package/dist/client/theme-default/without-fonts.js +37 -36
- package/dist/node/chunk-BjrVv9r8.js +28627 -0
- package/dist/node/cli.d.ts +1 -0
- package/dist/node/cli.js +160 -423
- package/dist/node/index.d.ts +1761 -2476
- package/dist/node/index.js +1 -121
- package/dist/web-types.json +75 -0
- package/package.json +89 -98
- package/template/.vitepress/config.js +3 -1
- package/template/.vitepress/theme/style.css +3 -11
- package/theme.d.ts +30 -23
- package/types/default-theme.d.ts +109 -113
- package/types/docsearch.d.ts +61 -142
- package/types/shared.d.ts +469 -50
- package/dist/client/theme-default/components/VPNavBarAppearance.vue +0 -32
- package/dist/client/theme-default/components/VPNavBarMenu.vue +0 -40
- package/dist/client/theme-default/components/VPNavBarMenuGroup.vue +0 -42
- package/dist/client/theme-default/components/VPNavBarMenuLink.vue +0 -53
- package/dist/client/theme-default/components/VPNavBarSocialLinks.vue +0 -27
- package/dist/client/theme-default/components/VPNavBarTranslations.vue +0 -47
- package/dist/client/theme-default/components/VPNavScreenAppearance.vue +0 -40
- package/dist/client/theme-default/components/VPNavScreenMenu.vue +0 -26
- package/dist/client/theme-default/components/VPNavScreenMenuGroup.vue +0 -112
- package/dist/client/theme-default/components/VPNavScreenMenuGroupLink.vue +0 -40
- package/dist/client/theme-default/components/VPNavScreenMenuGroupSection.vue +0 -34
- package/dist/client/theme-default/components/VPNavScreenMenuLink.vue +0 -43
- package/dist/client/theme-default/components/VPNavScreenSocialLinks.vue +0 -14
- package/dist/client/theme-default/components/VPNavScreenTranslations.vue +0 -73
- package/dist/client/theme-default/components/icons/VPIconAlignJustify.vue +0 -8
- package/dist/client/theme-default/components/icons/VPIconAlignLeft.vue +0 -8
- package/dist/client/theme-default/components/icons/VPIconAlignRight.vue +0 -8
- package/dist/client/theme-default/components/icons/VPIconArrowLeft.vue +0 -7
- package/dist/client/theme-default/components/icons/VPIconArrowRight.vue +0 -7
- package/dist/client/theme-default/components/icons/VPIconChevronDown.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconChevronLeft.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconChevronRight.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconChevronUp.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconEdit.vue +0 -6
- package/dist/client/theme-default/components/icons/VPIconHeart.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconLanguages.vue +0 -9
- package/dist/client/theme-default/components/icons/VPIconMinus.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconMinusSquare.vue +0 -6
- package/dist/client/theme-default/components/icons/VPIconMoon.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconMoreHorizontal.vue +0 -7
- package/dist/client/theme-default/components/icons/VPIconPlus.vue +0 -5
- package/dist/client/theme-default/components/icons/VPIconPlusSquare.vue +0 -6
- package/dist/client/theme-default/components/icons/VPIconSun.vue +0 -13
- package/dist/client/theme-default/composables/aside.js +0 -17
- package/dist/client/theme-default/composables/local-nav.js +0 -18
- package/dist/node/chunk-C-d2RJOW.js +0 -470
- package/dist/node/chunk-CxQfvv8o.js +0 -49065
- package/dist/node/worker_shikiResolveLang.js +0 -13
package/dist/client/app/utils.js
CHANGED
|
@@ -1,119 +1,86 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { EXTERNAL_URL_RE, RELATIVE_BASE_SENTINEL, escapeHtml, inBrowser, isRelativeBase, joinPath, pageChunkPath, sanitizeFileName } from "../shared.js";
|
|
2
|
+
import { siteDataRef } from "./data.js";
|
|
3
|
+
import { h, isVNode, onMounted, shallowRef } from "vue";
|
|
4
|
+
import { tryOnUnmounted } from "@vueuse/core";
|
|
5
|
+
//#region src/client/app/utils.ts
|
|
6
|
+
let resolvedBase;
|
|
5
7
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
* Runtime base path used by the app.
|
|
9
|
+
*
|
|
10
|
+
* Usually this is the configured site base.
|
|
11
|
+
*
|
|
12
|
+
* For a relative base (`'./'`), the mount point is unknown at build time, so:
|
|
13
|
+
* - SSR: uses `RELATIVE_BASE_SENTINEL` (for per-page URL relativization)
|
|
14
|
+
* - dev browser: uses `'/'` (dev server always mounts at root)
|
|
15
|
+
* - prod browser: resolves from the page's `__VP_SITE_ROOT__`
|
|
16
|
+
*/
|
|
17
|
+
function runtimeBase() {
|
|
18
|
+
if (resolvedBase === void 0) {
|
|
19
|
+
const base = siteDataRef.value.base;
|
|
20
|
+
if (!isRelativeBase(base)) return resolvedBase = base;
|
|
21
|
+
if (!inBrowser) return resolvedBase = RELATIVE_BASE_SENTINEL;
|
|
22
|
+
if (import.meta.env.DEV) return resolvedBase = "/";
|
|
23
|
+
const root = window.__VP_SITE_ROOT__;
|
|
24
|
+
resolvedBase = root ? decodeURIComponent(new URL(root, location.href).pathname) : "/";
|
|
25
|
+
}
|
|
26
|
+
return resolvedBase;
|
|
10
27
|
}
|
|
11
28
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
? path
|
|
17
|
-
: joinPath(siteDataRef.value.base, path);
|
|
29
|
+
* Prepend base to internal (non-relative) urls
|
|
30
|
+
*/
|
|
31
|
+
function withBase(path) {
|
|
32
|
+
return EXTERNAL_URL_RE.test(path) || !path.startsWith("/") ? path : joinPath(runtimeBase(), path);
|
|
18
33
|
}
|
|
19
34
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (!pageHash) {
|
|
42
|
-
pagePath = pagePath.endsWith('_index.md')
|
|
43
|
-
? pagePath.slice(0, -9) + '.md'
|
|
44
|
-
: pagePath.slice(0, -3) + '_index.md';
|
|
45
|
-
pageHash = __VP_HASH_MAP__[pagePath.toLowerCase()];
|
|
46
|
-
}
|
|
47
|
-
if (!pageHash)
|
|
48
|
-
return null;
|
|
49
|
-
pagePath = `${base}${__ASSETS_DIR__}/${pagePath}.${pageHash}.js`;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// ssr build uses much simpler name mapping
|
|
53
|
-
pagePath = `./${sanitizeFileName(pagePath.slice(1).replace(/\//g, '_'))}.md.js`;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return pagePath;
|
|
35
|
+
* Converts a url path to the corresponding js chunk filename.
|
|
36
|
+
*/
|
|
37
|
+
function pathToFile(path) {
|
|
38
|
+
let pagePath = path.replace(/\.html$/, "");
|
|
39
|
+
pagePath = decodeURIComponent(pagePath);
|
|
40
|
+
pagePath = pagePath.replace(/\/$/, "/index");
|
|
41
|
+
if (import.meta.env.DEV) pagePath += `.md?t=${Date.now()}`;
|
|
42
|
+
else if (inBrowser) {
|
|
43
|
+
const base = runtimeBase();
|
|
44
|
+
if (pagePath + "/" === base) pagePath = base;
|
|
45
|
+
if (!pagePath.startsWith(base)) return null;
|
|
46
|
+
pagePath = sanitizeFileName(pagePath.slice(base.length).replace(/\//g, "_") || "index") + ".md";
|
|
47
|
+
let pageHash = __VP_HASH_MAP__[pagePath.toLowerCase()];
|
|
48
|
+
if (!pageHash) {
|
|
49
|
+
pagePath = pagePath.endsWith("_index.md") ? pagePath.slice(0, -9) + ".md" : pagePath.slice(0, -3) + "_index.md";
|
|
50
|
+
pageHash = __VP_HASH_MAP__[pagePath.toLowerCase()];
|
|
51
|
+
}
|
|
52
|
+
if (!pageHash) return null;
|
|
53
|
+
pagePath = `${__ASSETS_BASE__ || base}${__ASSETS_DIR__}/${pageChunkPath(pagePath, pageHash)}`;
|
|
54
|
+
} else pagePath = `./${sanitizeFileName(pagePath.slice(1).replace(/\//g, "_"))}.md.js`;
|
|
55
|
+
return pagePath;
|
|
57
56
|
}
|
|
58
|
-
|
|
57
|
+
let contentUpdatedCallbacks = [];
|
|
59
58
|
/**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
* Register callback that is called every time the markdown content is updated
|
|
60
|
+
* in the DOM.
|
|
61
|
+
*/
|
|
62
|
+
function onContentUpdated(fn) {
|
|
63
|
+
contentUpdatedCallbacks.push(fn);
|
|
64
|
+
tryOnUnmounted(() => {
|
|
65
|
+
contentUpdatedCallbacks = contentUpdatedCallbacks.filter((f) => f !== fn);
|
|
66
|
+
});
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
export function getScrollOffset() {
|
|
87
|
-
let scrollOffset = siteDataRef.value.scrollOffset;
|
|
88
|
-
let offset = 0;
|
|
89
|
-
let padding = 24;
|
|
90
|
-
if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) {
|
|
91
|
-
padding = scrollOffset.padding;
|
|
92
|
-
scrollOffset = scrollOffset.selector;
|
|
93
|
-
}
|
|
94
|
-
if (typeof scrollOffset === 'number') {
|
|
95
|
-
offset = scrollOffset;
|
|
96
|
-
}
|
|
97
|
-
else if (typeof scrollOffset === 'string') {
|
|
98
|
-
offset = tryOffsetSelector(scrollOffset, padding);
|
|
99
|
-
}
|
|
100
|
-
else if (Array.isArray(scrollOffset)) {
|
|
101
|
-
for (const selector of scrollOffset) {
|
|
102
|
-
const res = tryOffsetSelector(selector, padding);
|
|
103
|
-
if (res) {
|
|
104
|
-
offset = res;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return offset;
|
|
110
|
-
}
|
|
111
|
-
function tryOffsetSelector(selector, padding) {
|
|
112
|
-
const el = document.querySelector(selector);
|
|
113
|
-
if (!el)
|
|
114
|
-
return 0;
|
|
115
|
-
const bot = el.getBoundingClientRect().bottom;
|
|
116
|
-
if (bot < 0)
|
|
117
|
-
return 0;
|
|
118
|
-
return bot + padding;
|
|
68
|
+
function defineClientComponent(loader, args, cb) {
|
|
69
|
+
return { setup(_, { slots }) {
|
|
70
|
+
const comp = shallowRef();
|
|
71
|
+
onMounted(async () => {
|
|
72
|
+
let res = await loader();
|
|
73
|
+
if (res && (res.__esModule || res[Symbol.toStringTag] === "Module")) res = res.default;
|
|
74
|
+
comp.value = res;
|
|
75
|
+
await cb?.();
|
|
76
|
+
});
|
|
77
|
+
return () => {
|
|
78
|
+
if (!comp.value) return null;
|
|
79
|
+
const props = args?.[0];
|
|
80
|
+
if ((!args || args.length < 2) && (props == null || typeof props === "object" && !Array.isArray(props) && !isVNode(props))) return h(comp.value, props, slots);
|
|
81
|
+
return h(comp.value, ...args ?? []);
|
|
82
|
+
};
|
|
83
|
+
} };
|
|
119
84
|
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { escapeHtml as _escapeHtml, contentUpdatedCallbacks, defineClientComponent, inBrowser, joinPath, onContentUpdated, pathToFile, runtimeBase, withBase };
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,138 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
interface
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { ClientOnly } from "./app/components/ClientOnly.js";
|
|
2
|
+
import { Content } from "./app/components/Content.js";
|
|
3
|
+
import { Route, VitePressData, escapeHtml, inBrowser } from "./shared.js";
|
|
4
|
+
import { useIcon } from "./app/composables/icon.js";
|
|
5
|
+
import { dataSymbol, useData } from "./app/data.js";
|
|
6
|
+
import { Router, useRoute, useRouter } from "./app/router.js";
|
|
7
|
+
import { EnhanceAppContext, Theme } from "./app/theme.js";
|
|
8
|
+
import { defineClientComponent, onContentUpdated, withBase } from "./app/utils.js";
|
|
9
|
+
import { HeadConfig, Header, PageData, PageData as PageData$1, SiteData } from "../../types/shared.js";
|
|
10
|
+
//#region src/client/index.d.ts
|
|
11
|
+
declare module 'vue' {
|
|
12
|
+
interface GlobalComponents {
|
|
13
|
+
ClientOnly: typeof ClientOnly;
|
|
14
|
+
Content: typeof Content;
|
|
15
|
+
}
|
|
16
|
+
interface ComponentCustomProperties {
|
|
17
|
+
$frontmatter: PageData$1['frontmatter'];
|
|
18
|
+
$params: PageData$1['params'];
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* Current route.
|
|
22
|
-
*/
|
|
23
|
-
route: Route;
|
|
24
|
-
/**
|
|
25
|
-
* Navigate to a new URL.
|
|
26
|
-
*/
|
|
27
|
-
go: (to: string, options?: {
|
|
28
|
-
initialLoad?: boolean;
|
|
29
|
-
smoothScroll?: boolean;
|
|
30
|
-
}) => Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Called before the route changes. Return `false` to cancel the navigation.
|
|
33
|
-
*/
|
|
34
|
-
onBeforeRouteChange?: (to: string) => Awaitable<void | boolean>;
|
|
35
|
-
/**
|
|
36
|
-
* Called before the page component is loaded (after the history state is
|
|
37
|
-
* updated). Return `false` to cancel the navigation.
|
|
38
|
-
*/
|
|
39
|
-
onBeforePageLoad?: (to: string) => Awaitable<void | boolean>;
|
|
40
|
-
/**
|
|
41
|
-
* Called after the page component is loaded (before the page component is updated).
|
|
42
|
-
*/
|
|
43
|
-
onAfterPageLoad?: (to: string) => Awaitable<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Called after the route changes.
|
|
46
|
-
*/
|
|
47
|
-
onAfterRouteChange?: (to: string) => Awaitable<void>;
|
|
48
|
-
}
|
|
49
|
-
declare function useRouter(): Router;
|
|
50
|
-
declare function useRoute(): Route;
|
|
51
|
-
|
|
52
|
-
declare const dataSymbol: InjectionKey<VitePressData>;
|
|
53
|
-
interface VitePressData<T = any> {
|
|
54
|
-
/**
|
|
55
|
-
* Site-level metadata
|
|
56
|
-
*/
|
|
57
|
-
site: Ref<SiteData<T>>;
|
|
58
|
-
/**
|
|
59
|
-
* themeConfig from .vitepress/config.js
|
|
60
|
-
*/
|
|
61
|
-
theme: Ref<T>;
|
|
62
|
-
/**
|
|
63
|
-
* Page-level metadata
|
|
64
|
-
*/
|
|
65
|
-
page: Ref<PageData>;
|
|
66
|
-
/**
|
|
67
|
-
* page frontmatter data
|
|
68
|
-
*/
|
|
69
|
-
frontmatter: Ref<PageData['frontmatter']>;
|
|
70
|
-
/**
|
|
71
|
-
* dynamic route params
|
|
72
|
-
*/
|
|
73
|
-
params: Ref<PageData['params']>;
|
|
74
|
-
title: Ref<string>;
|
|
75
|
-
description: Ref<string>;
|
|
76
|
-
lang: Ref<string>;
|
|
77
|
-
dir: Ref<string>;
|
|
78
|
-
localeIndex: Ref<string>;
|
|
79
|
-
isDark: Ref<boolean>;
|
|
80
|
-
/**
|
|
81
|
-
* Current location hash
|
|
82
|
-
*/
|
|
83
|
-
hash: Ref<string>;
|
|
84
|
-
}
|
|
85
|
-
declare function useData<T = any>(): VitePressData<T>;
|
|
86
|
-
|
|
87
|
-
interface EnhanceAppContext {
|
|
88
|
-
app: App;
|
|
89
|
-
router: Router;
|
|
90
|
-
siteData: Ref<SiteData>;
|
|
91
|
-
}
|
|
92
|
-
interface Theme {
|
|
93
|
-
Layout?: Component;
|
|
94
|
-
enhanceApp?: (ctx: EnhanceAppContext) => Awaitable<void>;
|
|
95
|
-
extends?: Theme;
|
|
96
|
-
/**
|
|
97
|
-
* @deprecated can be replaced by wrapping layout component
|
|
98
|
-
*/
|
|
99
|
-
setup?: () => void;
|
|
100
|
-
/**
|
|
101
|
-
* @deprecated Render not found page by checking `useData().page.value.isNotFound` in Layout instead.
|
|
102
|
-
*/
|
|
103
|
-
NotFound?: Component;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Append base to internal (non-relative) urls
|
|
108
|
-
*/
|
|
109
|
-
declare function withBase(path: string): string;
|
|
110
|
-
/**
|
|
111
|
-
* Register callback that is called every time the markdown content is updated
|
|
112
|
-
* in the DOM.
|
|
113
|
-
*/
|
|
114
|
-
declare function onContentUpdated(fn: () => any): void;
|
|
115
|
-
declare function defineClientComponent(loader: AsyncComponentLoader, args?: any[], cb?: () => Awaitable<void>): {
|
|
116
|
-
setup(): () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
117
|
-
[key: string]: any;
|
|
118
|
-
}> | null;
|
|
119
|
-
};
|
|
120
|
-
declare function getScrollOffset(): number;
|
|
121
|
-
|
|
122
|
-
declare const Content: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
123
|
-
as: {
|
|
124
|
-
type: (ObjectConstructor | StringConstructor)[];
|
|
125
|
-
default: string;
|
|
126
|
-
};
|
|
127
|
-
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
128
|
-
[key: string]: any;
|
|
129
|
-
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
130
|
-
as: {
|
|
131
|
-
type: (ObjectConstructor | StringConstructor)[];
|
|
132
|
-
default: string;
|
|
133
|
-
};
|
|
134
|
-
}>> & Readonly<{}>, {
|
|
135
|
-
as: string | Record<string, any>;
|
|
136
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
137
|
-
|
|
138
|
-
export { Content, type EnhanceAppContext, type Route, type Router, type Theme, type VitePressData, escapeHtml as _escapeHtml, dataSymbol, defineClientComponent, getScrollOffset, inBrowser, onContentUpdated, useData, useRoute, useRouter, withBase };
|
|
21
|
+
//#endregion
|
|
22
|
+
export { ClientOnly, Content, type EnhanceAppContext, type HeadConfig, type Header, type PageData, type Route, type Router, type SiteData, type Theme, type VitePressData, escapeHtml as _escapeHtml, dataSymbol, defineClientComponent, inBrowser, onContentUpdated, useData, useIcon, useRoute, useRouter, withBase };
|
package/dist/client/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export { Content } from './app/components/Content';
|
|
1
|
+
import { ClientOnly } from "./app/components/ClientOnly.js";
|
|
2
|
+
import { escapeHtml, inBrowser } from "./shared.js";
|
|
3
|
+
import { dataSymbol, useData } from "./app/data.js";
|
|
4
|
+
import { defineClientComponent, onContentUpdated, withBase } from "./app/utils.js";
|
|
5
|
+
import { Content } from "./app/components/Content.js";
|
|
6
|
+
import { useIcon } from "./app/composables/icon.js";
|
|
7
|
+
import { useRoute, useRouter } from "./app/router.js";
|
|
8
|
+
export { ClientOnly, Content, escapeHtml as _escapeHtml, dataSymbol, defineClientComponent, inBrowser, onContentUpdated, useData, useIcon, useRoute, useRouter, withBase };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { AdditionalConfig, AdditionalConfigDict, AdditionalConfigLoader, Awaitable, CodeCopyButtonOptions, ContainerOptions, DefaultTheme, HeadConfig, HeadConfig as HeadConfig$1, Header, LocaleConfig, LocaleSpecificConfig, MarkdownEnv, MarkdownLocaleOptions, PageData, PageData as PageData$1, PageDataPayload, Route, SSGContext, SiteData, SiteData as SiteData$1, VitePressData } from "../../types/shared.js";
|
|
2
|
+
//#region src/client/shared.d.ts
|
|
3
|
+
export declare const EXTERNAL_URL_RE: RegExp;
|
|
4
|
+
export declare const APPEARANCE_KEY = "vitepress-theme-appearance";
|
|
5
|
+
/**
|
|
6
|
+
* Parses a fully qualified `collection:name` icon name, corresponding to
|
|
7
|
+
* the `vpi-<collection>-<name>` class. Returns null for anything else,
|
|
8
|
+
* keeping malformed input out of generated selectors and class attributes.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseIconName(name: string): {
|
|
11
|
+
collection: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
} | null;
|
|
14
|
+
/**
|
|
15
|
+
* Placeholder prepended to SSR-emitted URLs when base is relative, later
|
|
16
|
+
* replaced with each page's `../` prefix back to the site root.
|
|
17
|
+
*/
|
|
18
|
+
export declare const RELATIVE_BASE_SENTINEL = "/__VP_BASE__/";
|
|
19
|
+
export declare function isRelativeBase(base: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The ../-prefix that leads from `relativePath`'s directory back to the
|
|
22
|
+
* site root ('./' for root-level pages).
|
|
23
|
+
*/
|
|
24
|
+
export declare function relativePathToRoot(relativePath: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Join two paths, collapsing slash collisions but keeping the `//` that
|
|
27
|
+
* follows a protocol.
|
|
28
|
+
*/
|
|
29
|
+
export declare function joinPath(base: string, path: string): string;
|
|
30
|
+
export declare const VP_SOURCE_KEY = "[VP_SOURCE]";
|
|
31
|
+
export declare const inBrowser: boolean;
|
|
32
|
+
export declare const notFoundPageData: PageData$1;
|
|
33
|
+
export declare function isActive(currentPath: string, currentHash: string, matchPath: string, asRegex?: boolean, skipHashCheck?: boolean): boolean;
|
|
34
|
+
export declare function normalize(path: string): string;
|
|
35
|
+
export declare function isExternal(path: string): boolean;
|
|
36
|
+
export declare function getLocaleForPath(siteData: SiteData$1 | undefined, relativePath: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Resolves the site data for a route, layering the matched locale and
|
|
39
|
+
* additional configs over the root config.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveSiteDataByRoute(siteData: SiteData$1, relativePath: string, filePath?: string): SiteData$1;
|
|
42
|
+
/**
|
|
43
|
+
* Create the page title string based on config.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTitle(siteData: SiteData$1, pageData: PageData$1): string;
|
|
46
|
+
export declare function mergeHead(...headArrays: HeadConfig$1[][]): HeadConfig$1[];
|
|
47
|
+
export declare function sanitizeFileName(name: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Output path of a page's client chunk relative to `assetsDir`, from its hash
|
|
50
|
+
* map entry. The entry is the chunk's hash, prefixed with the subdirectory the
|
|
51
|
+
* build put the chunk in when `assetsShards` is set (`<shard>/<hash>`), so the
|
|
52
|
+
* client never has to guess the layout.
|
|
53
|
+
*/
|
|
54
|
+
export declare function pageChunkPath(pageName: string, hashEntry: string, ext?: string): string;
|
|
55
|
+
export declare function slash(p: string): string;
|
|
56
|
+
export declare function treatAsHtml(filename: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Default `tokenize` of the local search. It splits on spaces and punctuation
|
|
59
|
+
* like MiniSearch does, and additionally segments the runs of Chinese or
|
|
60
|
+
* Japanese characters inside those words, as they are not separated by spaces.
|
|
61
|
+
* Everything else is kept as MiniSearch would.
|
|
62
|
+
*
|
|
63
|
+
* It is used both when building the index and when searching in the browser.
|
|
64
|
+
* A browser without `Intl.Segmenter` (e.g. Firefox < 125) falls back to the
|
|
65
|
+
* plain split, which can't match multi-word queries against an index that was
|
|
66
|
+
* built with segmentation.
|
|
67
|
+
*
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
export declare function tokenizeSearchText(text: string): string[];
|
|
71
|
+
export declare function escapeRegExp(str: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
export declare function escapeHtml(str: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a readonly proxy behaving like a deep merge of the given layers,
|
|
78
|
+
* without mutating them. Earlier layers take precedence.
|
|
79
|
+
*/
|
|
80
|
+
export declare function stackView<T extends ObjectType>(..._layers: Partial<T>[]): T;
|
|
81
|
+
export declare namespace stackView {
|
|
82
|
+
var unpack: <T>(obj: T) => T[] | undefined;
|
|
83
|
+
}
|
|
84
|
+
type ObjectType = Record<PropertyKey, any>;
|
|
85
|
+
export declare function isObject(value: unknown): value is ObjectType;
|
|
86
|
+
export declare function isShell(lang: string): boolean;
|
|
87
|
+
//#endregion
|
|
88
|
+
export type { AdditionalConfig, AdditionalConfigDict, AdditionalConfigLoader, Awaitable, CodeCopyButtonOptions, ContainerOptions, DefaultTheme, HeadConfig, Header, LocaleConfig, LocaleSpecificConfig, MarkdownEnv, MarkdownLocaleOptions, PageData, PageDataPayload, Route, SSGContext, SiteData, VitePressData };
|