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.
Files changed (286) hide show
  1. package/README.md +34 -2
  2. package/THIRD-PARTY-NOTICES.md +1736 -0
  3. package/bin/vitepress.js +14 -0
  4. package/client.d.ts +9 -0
  5. package/dist/client/app/components/ClientOnly.d.ts +5 -0
  6. package/dist/client/app/components/ClientOnly.js +11 -10
  7. package/dist/client/app/components/Content.d.ts +17 -0
  8. package/dist/client/app/components/Content.js +25 -22
  9. package/dist/client/app/composables/codeGroups.d.ts +3 -0
  10. package/dist/client/app/composables/codeGroups.js +36 -39
  11. package/dist/client/app/composables/copyCode.d.ts +3 -0
  12. package/dist/client/app/composables/copyCode.js +59 -70
  13. package/dist/client/app/composables/head.d.ts +5 -0
  14. package/dist/client/app/composables/head.js +56 -74
  15. package/dist/client/app/composables/icon.d.ts +12 -0
  16. package/dist/client/app/composables/icon.js +56 -0
  17. package/dist/client/app/composables/preFetch.d.ts +3 -0
  18. package/dist/client/app/composables/preFetch.js +64 -96
  19. package/dist/client/app/data.d.ts +9 -0
  20. package/dist/client/app/data.js +34 -59
  21. package/dist/client/app/devtools.d.ts +7 -0
  22. package/dist/client/app/devtools.js +29 -28
  23. package/dist/client/app/index.d.ts +11 -0
  24. package/dist/client/app/index.js +106 -131
  25. package/dist/client/app/router.d.ts +49 -0
  26. package/dist/client/app/router.js +198 -239
  27. package/dist/client/app/ssr.d.ts +4 -0
  28. package/dist/client/app/ssr.js +14 -9
  29. package/dist/client/app/theme.d.ts +24 -0
  30. package/dist/client/app/theme.js +0 -1
  31. package/dist/client/app/utils.d.ts +35 -0
  32. package/dist/client/app/utils.js +77 -110
  33. package/dist/client/index.d.ts +21 -137
  34. package/dist/client/index.js +8 -9
  35. package/dist/client/shared.d.ts +88 -0
  36. package/dist/client/shared.js +265 -141
  37. package/dist/client/theme-default/Layout.d.vue.ts +79 -0
  38. package/dist/client/theme-default/Layout.vue +33 -36
  39. package/dist/client/theme-default/NotFound.d.vue.ts +3 -0
  40. package/dist/client/theme-default/NotFound.vue +33 -35
  41. package/dist/client/theme-default/components/VPAlgoliaSearchBox.d.vue.ts +11 -0
  42. package/dist/client/theme-default/components/VPAlgoliaSearchBox.vue +202 -70
  43. package/dist/client/theme-default/components/VPBackdrop.d.vue.ts +6 -0
  44. package/dist/client/theme-default/components/VPBackdrop.vue +8 -12
  45. package/dist/client/theme-default/components/VPBadge.d.vue.ts +19 -0
  46. package/dist/client/theme-default/components/VPBadge.vue +49 -26
  47. package/dist/client/theme-default/components/VPButton.d.vue.ts +25 -0
  48. package/dist/client/theme-default/components/VPButton.vue +53 -36
  49. package/dist/client/theme-default/components/VPCarbonAds.d.vue.ts +7 -0
  50. package/dist/client/theme-default/components/VPCarbonAds.vue +51 -52
  51. package/dist/client/theme-default/components/VPContent.d.vue.ts +59 -0
  52. package/dist/client/theme-default/components/VPContent.vue +27 -26
  53. package/dist/client/theme-default/components/VPDoc.d.vue.ts +33 -0
  54. package/dist/client/theme-default/components/VPDoc.vue +52 -48
  55. package/dist/client/theme-default/components/VPDocAside.d.vue.ts +23 -0
  56. package/dist/client/theme-default/components/VPDocAside.vue +7 -8
  57. package/dist/client/theme-default/components/VPDocAsideCarbonAds.d.vue.ts +7 -0
  58. package/dist/client/theme-default/components/VPDocAsideCarbonAds.vue +7 -11
  59. package/dist/client/theme-default/components/VPDocAsideOutline.d.vue.ts +3 -0
  60. package/dist/client/theme-default/components/VPDocAsideOutline.vue +22 -38
  61. package/dist/client/theme-default/components/VPDocAsideSponsors.d.vue.ts +10 -0
  62. package/dist/client/theme-default/components/VPDocAsideSponsors.vue +17 -11
  63. package/dist/client/theme-default/components/VPDocFooter.d.vue.ts +13 -0
  64. package/dist/client/theme-default/components/VPDocFooter.vue +38 -45
  65. package/dist/client/theme-default/components/VPDocFooterLastUpdated.d.vue.ts +3 -0
  66. package/dist/client/theme-default/components/VPDocFooterLastUpdated.vue +30 -29
  67. package/dist/client/theme-default/components/VPDocOutlineItem.d.vue.ts +8 -0
  68. package/dist/client/theme-default/components/VPDocOutlineItem.vue +20 -19
  69. package/dist/client/theme-default/components/VPFeature.d.vue.ts +13 -0
  70. package/dist/client/theme-default/components/VPFeature.vue +62 -36
  71. package/dist/client/theme-default/components/VPFeatures.d.vue.ts +16 -0
  72. package/dist/client/theme-default/components/VPFeatures.vue +35 -48
  73. package/dist/client/theme-default/components/VPFlyout.d.vue.ts +26 -0
  74. package/dist/client/theme-default/components/VPFlyout.vue +111 -47
  75. package/dist/client/theme-default/components/VPFooter.d.vue.ts +3 -0
  76. package/dist/client/theme-default/components/VPFooter.vue +22 -15
  77. package/dist/client/theme-default/components/VPHero.d.vue.ts +38 -0
  78. package/dist/client/theme-default/components/VPHero.vue +109 -99
  79. package/dist/client/theme-default/components/VPHome.d.vue.ts +31 -0
  80. package/dist/client/theme-default/components/VPHome.vue +15 -15
  81. package/dist/client/theme-default/components/VPHomeContent.d.vue.ts +13 -0
  82. package/dist/client/theme-default/components/VPHomeContent.vue +9 -27
  83. package/dist/client/theme-default/components/VPHomeFeatures.d.vue.ts +3 -0
  84. package/dist/client/theme-default/components/VPHomeFeatures.vue +4 -5
  85. package/dist/client/theme-default/components/VPHomeHero.d.vue.ts +23 -0
  86. package/dist/client/theme-default/components/VPHomeHero.vue +5 -5
  87. package/dist/client/theme-default/components/VPHomeSponsors.d.vue.ts +21 -0
  88. package/dist/client/theme-default/components/VPHomeSponsors.vue +42 -43
  89. package/dist/client/theme-default/components/VPIcon.d.vue.ts +8 -0
  90. package/dist/client/theme-default/components/VPIcon.vue +29 -0
  91. package/dist/client/theme-default/components/VPImage.d.vue.ts +8 -0
  92. package/dist/client/theme-default/components/VPImage.vue +20 -14
  93. package/dist/client/theme-default/components/VPLink.d.vue.ts +23 -0
  94. package/dist/client/theme-default/components/VPLink.vue +42 -23
  95. package/dist/client/theme-default/components/VPLocalNav.d.vue.ts +10 -0
  96. package/dist/client/theme-default/components/VPLocalNav.vue +69 -86
  97. package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.d.vue.ts +8 -0
  98. package/dist/client/theme-default/components/VPLocalNavOutlineDropdown.vue +98 -96
  99. package/dist/client/theme-default/components/VPLocalSearchBox.d.vue.ts +7 -0
  100. package/dist/client/theme-default/components/VPLocalSearchBox.vue +391 -454
  101. package/dist/client/theme-default/components/VPMenu.d.vue.ts +23 -0
  102. package/dist/client/theme-default/components/VPMenu.vue +19 -31
  103. package/dist/client/theme-default/components/VPMenuGroup.d.vue.ts +22 -0
  104. package/dist/client/theme-default/components/VPMenuGroup.vue +72 -18
  105. package/dist/client/theme-default/components/VPMenuLink.d.vue.ts +22 -0
  106. package/dist/client/theme-default/components/VPMenuLink.vue +65 -31
  107. package/dist/client/theme-default/components/VPNav.d.vue.ts +23 -0
  108. package/dist/client/theme-default/components/VPNav.vue +18 -24
  109. package/dist/client/theme-default/components/VPNavAppearance.d.vue.ts +9 -0
  110. package/dist/client/theme-default/components/VPNavAppearance.vue +88 -0
  111. package/dist/client/theme-default/components/VPNavBar.d.vue.ts +26 -0
  112. package/dist/client/theme-default/components/VPNavBar.vue +170 -142
  113. package/dist/client/theme-default/components/VPNavBarAskAiButton.d.vue.ts +3 -0
  114. package/dist/client/theme-default/components/VPNavBarAskAiButton.vue +31 -0
  115. package/dist/client/theme-default/components/VPNavBarExtra.d.vue.ts +3 -0
  116. package/dist/client/theme-default/components/VPNavBarExtra.vue +51 -73
  117. package/dist/client/theme-default/components/VPNavBarHamburger.d.vue.ts +10 -0
  118. package/dist/client/theme-default/components/VPNavBarHamburger.vue +38 -28
  119. package/dist/client/theme-default/components/VPNavBarSearch.d.vue.ts +3 -0
  120. package/dist/client/theme-default/components/VPNavBarSearch.vue +129 -160
  121. package/dist/client/theme-default/components/VPNavBarSearchButton.d.vue.ts +6 -0
  122. package/dist/client/theme-default/components/VPNavBarSearchButton.vue +48 -182
  123. package/dist/client/theme-default/components/VPNavBarTitle.d.vue.ts +15 -0
  124. package/dist/client/theme-default/components/VPNavBarTitle.vue +39 -38
  125. package/dist/client/theme-default/components/VPNavMenu.d.vue.ts +6 -0
  126. package/dist/client/theme-default/components/VPNavMenu.vue +76 -0
  127. package/dist/client/theme-default/components/VPNavMenuGroup.d.vue.ts +11 -0
  128. package/dist/client/theme-default/components/VPNavMenuGroup.vue +140 -0
  129. package/dist/client/theme-default/components/VPNavMenuLink.d.vue.ts +8 -0
  130. package/dist/client/theme-default/components/VPNavMenuLink.vue +69 -0
  131. package/dist/client/theme-default/components/VPNavScreen.d.vue.ts +18 -0
  132. package/dist/client/theme-default/components/VPNavScreen.vue +36 -34
  133. package/dist/client/theme-default/components/VPNavSocialLinks.d.vue.ts +6 -0
  134. package/dist/client/theme-default/components/VPNavSocialLinks.vue +36 -0
  135. package/dist/client/theme-default/components/VPNavTranslations.d.vue.ts +9 -0
  136. package/dist/client/theme-default/components/VPNavTranslations.vue +170 -0
  137. package/dist/client/theme-default/components/VPPage.d.vue.ts +15 -0
  138. package/dist/client/theme-default/components/VPSidebar.d.vue.ts +18 -0
  139. package/dist/client/theme-default/components/VPSidebar.vue +40 -53
  140. package/dist/client/theme-default/components/VPSidebarGroup.d.vue.ts +7 -0
  141. package/dist/client/theme-default/components/VPSidebarGroup.vue +24 -29
  142. package/dist/client/theme-default/components/VPSidebarItem.d.vue.ts +8 -0
  143. package/dist/client/theme-default/components/VPSidebarItem.vue +60 -93
  144. package/dist/client/theme-default/components/VPSkipLink.d.vue.ts +6 -0
  145. package/dist/client/theme-default/components/VPSkipLink.vue +23 -42
  146. package/dist/client/theme-default/components/VPSocialLink.d.vue.ts +11 -0
  147. package/dist/client/theme-default/components/VPSocialLink.vue +42 -49
  148. package/dist/client/theme-default/components/VPSocialLinks.d.vue.ts +10 -0
  149. package/dist/client/theme-default/components/VPSocialLinks.vue +26 -16
  150. package/dist/client/theme-default/components/VPSponsors.d.vue.ts +18 -0
  151. package/dist/client/theme-default/components/VPSponsors.vue +34 -33
  152. package/dist/client/theme-default/components/VPSponsorsGrid.d.vue.ts +15 -0
  153. package/dist/client/theme-default/components/VPSponsorsGrid.vue +23 -26
  154. package/dist/client/theme-default/components/VPSwitch.d.vue.ts +13 -0
  155. package/dist/client/theme-default/components/VPSwitch.vue +12 -13
  156. package/dist/client/theme-default/components/VPSwitchAppearance.d.vue.ts +3 -0
  157. package/dist/client/theme-default/components/VPSwitchAppearance.vue +16 -21
  158. package/dist/client/theme-default/components/VPTeamMembers.d.vue.ts +10 -0
  159. package/dist/client/theme-default/components/VPTeamMembers.vue +59 -32
  160. package/dist/client/theme-default/components/VPTeamMembersItem.d.vue.ts +10 -0
  161. package/dist/client/theme-default/components/VPTeamMembersItem.vue +62 -58
  162. package/dist/client/theme-default/components/VPTeamPage.d.vue.ts +13 -0
  163. package/dist/client/theme-default/components/VPTeamPage.vue +14 -14
  164. package/dist/client/theme-default/components/VPTeamPageSection.d.vue.ts +17 -0
  165. package/dist/client/theme-default/components/VPTeamPageSection.vue +20 -19
  166. package/dist/client/theme-default/components/VPTeamPageTitle.d.vue.ts +15 -0
  167. package/dist/client/theme-default/components/VPTeamPageTitle.vue +22 -22
  168. package/dist/client/theme-default/composables/data.d.ts +5 -0
  169. package/dist/client/theme-default/composables/data.js +5 -2
  170. package/dist/client/theme-default/composables/edit-link.d.ts +6 -0
  171. package/dist/client/theme-default/composables/edit-link.js +17 -15
  172. package/dist/client/theme-default/composables/flyout.d.ts +10 -0
  173. package/dist/client/theme-default/composables/flyout.js +33 -32
  174. package/dist/client/theme-default/composables/langs.d.ts +44 -0
  175. package/dist/client/theme-default/composables/langs.js +48 -24
  176. package/dist/client/theme-default/composables/layout.d.ts +13 -0
  177. package/dist/client/theme-default/composables/layout.js +68 -0
  178. package/dist/client/theme-default/composables/nav-overflow.d.ts +54 -0
  179. package/dist/client/theme-default/composables/nav-overflow.js +179 -0
  180. package/dist/client/theme-default/composables/nav.d.ts +25 -0
  181. package/dist/client/theme-default/composables/nav.js +58 -29
  182. package/dist/client/theme-default/composables/outline.d.ts +8 -0
  183. package/dist/client/theme-default/composables/outline.js +144 -166
  184. package/dist/client/theme-default/composables/prev-next.d.ts +16 -0
  185. package/dist/client/theme-default/composables/prev-next.js +34 -56
  186. package/dist/client/theme-default/composables/scroll-lock.d.ts +4 -0
  187. package/dist/client/theme-default/composables/scroll-lock.js +95 -0
  188. package/dist/client/theme-default/composables/sidebar.d.ts +25 -0
  189. package/dist/client/theme-default/composables/sidebar.js +96 -133
  190. package/dist/client/theme-default/composables/sponsor-grid.d.ts +10 -0
  191. package/dist/client/theme-default/composables/sponsor-grid.js +69 -76
  192. package/dist/client/theme-default/fonts/inter-italic-cyrillic-ext.woff2 +0 -0
  193. package/dist/client/theme-default/fonts/inter-italic-cyrillic.woff2 +0 -0
  194. package/dist/client/theme-default/fonts/inter-italic-greek-ext.woff2 +0 -0
  195. package/dist/client/theme-default/fonts/inter-italic-greek.woff2 +0 -0
  196. package/dist/client/theme-default/fonts/inter-italic-latin-ext.woff2 +0 -0
  197. package/dist/client/theme-default/fonts/inter-italic-latin.woff2 +0 -0
  198. package/dist/client/theme-default/fonts/inter-italic-symbols.woff2 +0 -0
  199. package/dist/client/theme-default/fonts/inter-italic-vietnamese.woff2 +0 -0
  200. package/dist/client/theme-default/fonts/inter-roman-cyrillic-ext.woff2 +0 -0
  201. package/dist/client/theme-default/fonts/inter-roman-cyrillic.woff2 +0 -0
  202. package/dist/client/theme-default/fonts/inter-roman-greek-ext.woff2 +0 -0
  203. package/dist/client/theme-default/fonts/inter-roman-greek.woff2 +0 -0
  204. package/dist/client/theme-default/fonts/inter-roman-latin-ext.woff2 +0 -0
  205. package/dist/client/theme-default/fonts/inter-roman-latin.woff2 +0 -0
  206. package/dist/client/theme-default/fonts/inter-roman-symbols.woff2 +0 -0
  207. package/dist/client/theme-default/fonts/inter-roman-vietnamese.woff2 +0 -0
  208. package/dist/client/theme-default/index.d.ts +3 -0
  209. package/dist/client/theme-default/index.js +4 -3
  210. package/dist/client/theme-default/styles/base.css +279 -211
  211. package/dist/client/theme-default/styles/components/custom-block.css +12 -7
  212. package/dist/client/theme-default/styles/components/vp-code-group.css +13 -16
  213. package/dist/client/theme-default/styles/components/vp-code.css +10 -2
  214. package/dist/client/theme-default/styles/components/vp-doc.css +188 -142
  215. package/dist/client/theme-default/styles/components/vp-sponsor.css +48 -37
  216. package/dist/client/theme-default/styles/docsearch.css +138 -0
  217. package/dist/client/theme-default/styles/fonts.css +216 -55
  218. package/dist/client/theme-default/styles/icons.css +42 -22
  219. package/dist/client/theme-default/styles/vars.css +111 -46
  220. package/dist/client/theme-default/support/docsearch.d.ts +57 -0
  221. package/dist/client/theme-default/support/docsearch.js +145 -0
  222. package/dist/client/theme-default/support/local-search.d.ts +9 -0
  223. package/dist/client/theme-default/support/local-search.js +31 -0
  224. package/dist/client/theme-default/support/lru.d.ts +11 -0
  225. package/dist/client/theme-default/support/lru.js +30 -33
  226. package/dist/client/theme-default/support/reactivity.d.ts +4 -0
  227. package/dist/client/theme-default/support/reactivity.js +10 -0
  228. package/dist/client/theme-default/support/sidebar.d.ts +27 -0
  229. package/dist/client/theme-default/support/sidebar.js +69 -80
  230. package/dist/client/theme-default/support/translation.d.ts +6 -0
  231. package/dist/client/theme-default/support/translation.js +33 -47
  232. package/dist/client/theme-default/support/utils.d.ts +7 -0
  233. package/dist/client/theme-default/support/utils.js +39 -30
  234. package/dist/client/theme-default/without-fonts.d.ts +25 -0
  235. package/dist/client/theme-default/without-fonts.js +37 -36
  236. package/dist/node/chunk-BjrVv9r8.js +28627 -0
  237. package/dist/node/cli.d.ts +1 -0
  238. package/dist/node/cli.js +160 -423
  239. package/dist/node/index.d.ts +1761 -2476
  240. package/dist/node/index.js +1 -121
  241. package/dist/web-types.json +75 -0
  242. package/package.json +89 -98
  243. package/template/.vitepress/config.js +3 -1
  244. package/template/.vitepress/theme/style.css +3 -11
  245. package/theme.d.ts +30 -23
  246. package/types/default-theme.d.ts +109 -113
  247. package/types/docsearch.d.ts +61 -142
  248. package/types/shared.d.ts +469 -50
  249. package/dist/client/theme-default/components/VPNavBarAppearance.vue +0 -32
  250. package/dist/client/theme-default/components/VPNavBarMenu.vue +0 -40
  251. package/dist/client/theme-default/components/VPNavBarMenuGroup.vue +0 -42
  252. package/dist/client/theme-default/components/VPNavBarMenuLink.vue +0 -53
  253. package/dist/client/theme-default/components/VPNavBarSocialLinks.vue +0 -27
  254. package/dist/client/theme-default/components/VPNavBarTranslations.vue +0 -47
  255. package/dist/client/theme-default/components/VPNavScreenAppearance.vue +0 -40
  256. package/dist/client/theme-default/components/VPNavScreenMenu.vue +0 -26
  257. package/dist/client/theme-default/components/VPNavScreenMenuGroup.vue +0 -112
  258. package/dist/client/theme-default/components/VPNavScreenMenuGroupLink.vue +0 -40
  259. package/dist/client/theme-default/components/VPNavScreenMenuGroupSection.vue +0 -34
  260. package/dist/client/theme-default/components/VPNavScreenMenuLink.vue +0 -43
  261. package/dist/client/theme-default/components/VPNavScreenSocialLinks.vue +0 -14
  262. package/dist/client/theme-default/components/VPNavScreenTranslations.vue +0 -73
  263. package/dist/client/theme-default/components/icons/VPIconAlignJustify.vue +0 -8
  264. package/dist/client/theme-default/components/icons/VPIconAlignLeft.vue +0 -8
  265. package/dist/client/theme-default/components/icons/VPIconAlignRight.vue +0 -8
  266. package/dist/client/theme-default/components/icons/VPIconArrowLeft.vue +0 -7
  267. package/dist/client/theme-default/components/icons/VPIconArrowRight.vue +0 -7
  268. package/dist/client/theme-default/components/icons/VPIconChevronDown.vue +0 -5
  269. package/dist/client/theme-default/components/icons/VPIconChevronLeft.vue +0 -5
  270. package/dist/client/theme-default/components/icons/VPIconChevronRight.vue +0 -5
  271. package/dist/client/theme-default/components/icons/VPIconChevronUp.vue +0 -5
  272. package/dist/client/theme-default/components/icons/VPIconEdit.vue +0 -6
  273. package/dist/client/theme-default/components/icons/VPIconHeart.vue +0 -5
  274. package/dist/client/theme-default/components/icons/VPIconLanguages.vue +0 -9
  275. package/dist/client/theme-default/components/icons/VPIconMinus.vue +0 -5
  276. package/dist/client/theme-default/components/icons/VPIconMinusSquare.vue +0 -6
  277. package/dist/client/theme-default/components/icons/VPIconMoon.vue +0 -5
  278. package/dist/client/theme-default/components/icons/VPIconMoreHorizontal.vue +0 -7
  279. package/dist/client/theme-default/components/icons/VPIconPlus.vue +0 -5
  280. package/dist/client/theme-default/components/icons/VPIconPlusSquare.vue +0 -6
  281. package/dist/client/theme-default/components/icons/VPIconSun.vue +0 -13
  282. package/dist/client/theme-default/composables/aside.js +0 -17
  283. package/dist/client/theme-default/composables/local-nav.js +0 -18
  284. package/dist/node/chunk-C-d2RJOW.js +0 -470
  285. package/dist/node/chunk-CxQfvv8o.js +0 -49065
  286. package/dist/node/worker_shikiResolveLang.js +0 -13
@@ -1,119 +1,86 @@
1
- import { h, onMounted, onUnmounted, shallowRef } from 'vue';
2
- import { EXTERNAL_URL_RE, inBrowser, sanitizeFileName } from '../shared';
3
- import { siteDataRef } from './data';
4
- export { escapeHtml as _escapeHtml, inBrowser } from '../shared';
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
- * Join two paths by resolving the slash collision.
7
- */
8
- export function joinPath(base, path) {
9
- return `${base}${path}`.replace(/\/+/g, '/');
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
- * Append base to internal (non-relative) urls
13
- */
14
- export function withBase(path) {
15
- return EXTERNAL_URL_RE.test(path) || !path.startsWith('/')
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
- * Converts a url path to the corresponding js chunk filename.
21
- */
22
- export function pathToFile(path) {
23
- let pagePath = path.replace(/\.html$/, '');
24
- pagePath = decodeURIComponent(pagePath);
25
- pagePath = pagePath.replace(/\/$/, '/index'); // /foo/ -> /foo/index
26
- if (import.meta.env.DEV) {
27
- // always force re-fetch content in dev
28
- pagePath += `.md?t=${Date.now()}`;
29
- }
30
- else {
31
- // in production, each .md file is built into a .md.js file following
32
- // the path conversion scheme.
33
- // /foo/bar.html -> ./foo_bar.md
34
- if (inBrowser) {
35
- const base = import.meta.env.BASE_URL;
36
- pagePath =
37
- sanitizeFileName(pagePath.slice(base.length).replace(/\//g, '_') || 'index') + '.md';
38
- // client production build needs to account for page hash, which is
39
- // injected directly in the page's html
40
- let pageHash = __VP_HASH_MAP__[pagePath.toLowerCase()];
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
- export let contentUpdatedCallbacks = [];
57
+ let contentUpdatedCallbacks = [];
59
58
  /**
60
- * Register callback that is called every time the markdown content is updated
61
- * in the DOM.
62
- */
63
- export function onContentUpdated(fn) {
64
- contentUpdatedCallbacks.push(fn);
65
- onUnmounted(() => {
66
- contentUpdatedCallbacks = contentUpdatedCallbacks.filter((f) => f !== fn);
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
- export function defineClientComponent(loader, args, cb) {
70
- return {
71
- setup() {
72
- const comp = shallowRef();
73
- onMounted(async () => {
74
- let res = await loader();
75
- // interop module default
76
- if (res && (res.__esModule || res[Symbol.toStringTag] === 'Module')) {
77
- res = res.default;
78
- }
79
- comp.value = res;
80
- await cb?.();
81
- });
82
- return () => (comp.value ? h(comp.value, ...(args ?? [])) : null);
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 };
@@ -1,138 +1,22 @@
1
- import * as vue from 'vue';
2
- import { Component, InjectionKey, Ref, App, AsyncComponentLoader } from 'vue';
3
- import { PageData, Awaitable, SiteData } from '../../types/shared.js';
4
- export { HeadConfig, Header, PageData, SiteData } from '../../types/shared.js';
5
-
6
- declare const inBrowser: boolean;
7
- /**
8
- * @internal
9
- */
10
- declare function escapeHtml(str: string): string;
11
-
12
- interface Route {
13
- path: string;
14
- hash: string;
15
- query: string;
16
- data: PageData;
17
- component: Component | null;
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
- interface Router {
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 };
@@ -1,9 +1,8 @@
1
- // exports in this file are exposed to themes and md files via 'vitepress'
2
- // so the user can do `import { useRoute, useData } from 'vitepress'`
3
- // composables
4
- export { dataSymbol, useData } from './app/data';
5
- export { useRoute, useRouter } from './app/router';
6
- // utilities
7
- export { _escapeHtml, defineClientComponent, getScrollOffset, inBrowser, onContentUpdated, withBase } from './app/utils';
8
- // components
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 };