From 367c6035b73b05f1c347287096d7b716e5e779cd Mon Sep 17 00:00:00 2001 From: Simon Haines Date: Mon, 15 Jan 2024 11:05:04 +0000 Subject: [PATCH 01/15] docs: fix typo (#3451) --- docs/guide/markdown.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/markdown.md b/docs/guide/markdown.md index 568155bd..7dccbe7e 100644 --- a/docs/guide/markdown.md +++ b/docs/guide/markdown.md @@ -377,7 +377,7 @@ export default { // Highlighted } ``` -Alternatively, it's possible to highlight directly in the line by using the `// [!code hightlight]` comment. +Alternatively, it's possible to highlight directly in the line by using the `// [!code highlight]` comment. **Input** From cd8ee6fb32d8135e78c5827a36b79efad509042c Mon Sep 17 00:00:00 2001 From: Yuta Nakamura Date: Tue, 16 Jan 2024 03:12:01 +0900 Subject: [PATCH 02/15] fix: enter key behavior conflict with IME in search box (#3454) --- src/client/theme-default/components/VPLocalSearchBox.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/client/theme-default/components/VPLocalSearchBox.vue b/src/client/theme-default/components/VPLocalSearchBox.vue index 965ab1df..36eeb84d 100644 --- a/src/client/theme-default/components/VPLocalSearchBox.vue +++ b/src/client/theme-default/components/VPLocalSearchBox.vue @@ -322,6 +322,8 @@ onKeyStroke('ArrowDown', (event) => { const router = useRouter() onKeyStroke('Enter', (e) => { + if (e.isComposing) return + if (e.target instanceof HTMLButtonElement && e.target.type !== 'submit') return From 910b2125bb9971b5b974084f668fb0d2cb5e54ae Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 01:39:33 +0530 Subject: [PATCH 03/15] fix(theme): misaligned outline indicator\ fixes #3449 --- src/client/app/router.ts | 36 +++---------------- src/client/app/utils.ts | 33 +++++++++++++++++ .../theme-default/composables/outline.ts | 5 +-- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/src/client/app/router.ts b/src/client/app/router.ts index a1397018..00c98531 100644 --- a/src/client/app/router.ts +++ b/src/client/app/router.ts @@ -1,9 +1,9 @@ -import { reactive, inject, markRaw, nextTick, readonly } from 'vue' import type { Component, InjectionKey } from 'vue' +import { inject, markRaw, nextTick, reactive, readonly } from 'vue' +import type { Awaitable, PageData, PageDataPayload } from '../shared' import { notFoundPageData, treatAsHtml } from '../shared' -import type { PageData, PageDataPayload, Awaitable } from '../shared' -import { inBrowser, withBase } from './utils' import { siteDataRef } from './data' +import { getScrollOffset, inBrowser, withBase } from './utils' export interface Route { path: string @@ -261,26 +261,6 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } if (target) { - let scrollOffset = siteDataRef.value.scrollOffset - let offset = 0 - let padding = 24 - if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { - padding = scrollOffset.padding - scrollOffset = scrollOffset.selector - } - if (typeof scrollOffset === 'number') { - offset = scrollOffset - } else if (typeof scrollOffset === 'string') { - offset = tryOffsetSelector(scrollOffset, padding) - } else if (Array.isArray(scrollOffset)) { - for (const selector of scrollOffset) { - const res = tryOffsetSelector(selector, padding) - if (res) { - offset = res - break - } - } - } const targetPadding = parseInt( window.getComputedStyle(target).paddingTop, 10 @@ -288,7 +268,7 @@ export function scrollTo(el: Element, hash: string, smooth = false) { const targetTop = window.scrollY + target.getBoundingClientRect().top - - offset + + getScrollOffset() + targetPadding function scrollToTarget() { // only smooth scroll if distance is smaller than screen height. @@ -300,14 +280,6 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } } -function tryOffsetSelector(selector: string, padding: number): number { - const el = document.querySelector(selector) - if (!el) return 0 - const bot = el.getBoundingClientRect().bottom - if (bot < 0) return 0 - return bot + padding -} - function handleHMR(route: Route): void { // update route.data on HMR updates of active page if (import.meta.hot) { diff --git a/src/client/app/utils.ts b/src/client/app/utils.ts index 5028483c..dfa5cffc 100644 --- a/src/client/app/utils.ts +++ b/src/client/app/utils.ts @@ -107,3 +107,36 @@ export function defineClientComponent( } } } + +export function getScrollOffset() { + let scrollOffset = siteDataRef.value.scrollOffset + let offset = 0 + let padding = 24 + if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { + padding = scrollOffset.padding + scrollOffset = scrollOffset.selector + } + if (typeof scrollOffset === 'number') { + offset = scrollOffset + } else if (typeof scrollOffset === 'string') { + offset = tryOffsetSelector(scrollOffset, padding) + } else if (Array.isArray(scrollOffset)) { + for (const selector of scrollOffset) { + const res = tryOffsetSelector(selector, padding) + if (res) { + offset = res + break + } + } + } + + return offset +} + +function tryOffsetSelector(selector: string, padding: number): number { + const el = document.querySelector(selector) + if (!el) return 0 + const bot = el.getBoundingClientRect().bottom + if (bot < 0) return 0 + return bot + padding +} diff --git a/src/client/theme-default/composables/outline.ts b/src/client/theme-default/composables/outline.ts index 8ec4f3e5..1b9137fb 100644 --- a/src/client/theme-default/composables/outline.ts +++ b/src/client/theme-default/composables/outline.ts @@ -1,8 +1,9 @@ import type { DefaultTheme } from 'vitepress/theme' import { onMounted, onUnmounted, onUpdated, type Ref } from 'vue' +import { getScrollOffset } from '../../app/utils' import type { Header } from '../../shared' -import { useAside } from './aside' import { throttleAndDebounce } from '../support/utils' +import { useAside } from './aside' // cached list of anchor elements from resolveHeaders const resolvedHeaders: { element: HTMLHeadElement; link: string }[] = [] @@ -179,7 +180,7 @@ export function useActiveAnchor( // find the last header above the top of viewport let activeLink: string | null = null for (const { link, top } of headers) { - if (top > scrollY + offsetDocTop) { + if (top > scrollY + offsetDocTop + getScrollOffset()) { break } activeLink = link From 4c613c53fffcfd8931599b0be493b122d5480ef1 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 02:03:44 +0530 Subject: [PATCH 04/15] chore: bump deps --- package.json | 12 +-- pnpm-lock.yaml | 229 +++++++++++++++++++++++++------------------------ 2 files changed, 121 insertions(+), 120 deletions(-) diff --git a/package.json b/package.json index eb31aa5a..ee165279 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,8 @@ "@types/markdown-it": "^13.0.7", "@vitejs/plugin-vue": "^5.0.3", "@vue/devtools-api": "^6.5.1", - "@vueuse/core": "^10.7.1", - "@vueuse/integrations": "^10.7.1", + "@vueuse/core": "^10.7.2", + "@vueuse/integrations": "^10.7.2", "focus-trap": "^7.5.4", "mark.js": "8.11.1", "minisearch": "^6.3.0", @@ -106,7 +106,7 @@ "shikiji-core": "^0.9.19", "shikiji-transformers": "^0.9.19", "vite": "^5.0.11", - "vue": "^3.4.11" + "vue": "^3.4.14" }, "peerDependencies": { "markdown-it-mathjax3": "^4.3.2", @@ -146,10 +146,10 @@ "@types/markdown-it-emoji": "^2.0.4", "@types/micromatch": "^4.0.6", "@types/minimist": "^1.2.5", - "@types/node": "^20.11.0", + "@types/node": "^20.11.2", "@types/postcss-prefix-selector": "^1.16.3", "@types/prompts": "^2.4.9", - "@vue/shared": "^3.4.11", + "@vue/shared": "^3.4.14", "chokidar": "^3.5.3", "compression": "^1.7.4", "conventional-changelog-cli": "^4.1.0", @@ -183,7 +183,7 @@ "playwright-chromium": "^1.40.1", "polka": "1.0.0-next.23", "postcss-prefix-selector": "^1.16.0", - "prettier": "^3.2.0", + "prettier": "^3.2.2", "prompts": "^2.4.2", "punycode": "^2.3.1", "rimraf": "^5.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 019471a9..6bef66ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,16 +22,16 @@ importers: version: 13.0.7 '@vitejs/plugin-vue': specifier: ^5.0.3 - version: 5.0.3(vite@5.0.11)(vue@3.4.11) + version: 5.0.3(vite@5.0.11)(vue@3.4.14) '@vue/devtools-api': specifier: ^6.5.1 version: 6.5.1 '@vueuse/core': - specifier: ^10.7.1 - version: 10.7.1(vue@3.4.11) + specifier: ^10.7.2 + version: 10.7.2(vue@3.4.14) '@vueuse/integrations': - specifier: ^10.7.1 - version: 10.7.1(focus-trap@7.5.4)(vue@3.4.11) + specifier: ^10.7.2 + version: 10.7.2(focus-trap@7.5.4)(vue@3.4.14) focus-trap: specifier: ^7.5.4 version: 7.5.4 @@ -52,10 +52,10 @@ importers: version: 0.9.19 vite: specifier: ^5.0.11 - version: 5.0.11(@types/node@20.11.0) + version: 5.0.11(@types/node@20.11.2) vue: - specifier: ^3.4.11 - version: 3.4.11(typescript@5.3.3) + specifier: ^3.4.14 + version: 3.4.14(typescript@5.3.3) devDependencies: '@clack/prompts': specifier: ^0.7.0 @@ -133,8 +133,8 @@ importers: specifier: ^1.2.5 version: 1.2.5 '@types/node': - specifier: ^20.11.0 - version: 20.11.0 + specifier: ^20.11.2 + version: 20.11.2 '@types/postcss-prefix-selector': specifier: ^1.16.3 version: 1.16.3 @@ -142,8 +142,8 @@ importers: specifier: ^2.4.9 version: 2.4.9 '@vue/shared': - specifier: ^3.4.11 - version: 3.4.11 + specifier: ^3.4.14 + version: 3.4.14 chokidar: specifier: ^3.5.3 version: 3.5.3 @@ -244,8 +244,8 @@ importers: specifier: ^1.16.0 version: 1.16.0 prettier: - specifier: ^3.2.0 - version: 3.2.0 + specifier: ^3.2.2 + version: 3.2.2 prompts: specifier: ^2.4.2 version: 2.4.2 @@ -284,7 +284,7 @@ importers: version: 5.3.3 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@20.11.0)(supports-color@9.4.0) + version: 1.2.0(@types/node@20.11.2)(supports-color@9.4.0) vue-tsc: specifier: ^1.8.27 version: 1.8.27(typescript@5.3.3) @@ -814,7 +814,7 @@ packages: '@lit-labs/ssr-dom-shim': 1.1.2 '@lit/reactive-element': 2.0.3 '@parse5/tools': 0.3.0 - '@types/node': 16.18.70 + '@types/node': 16.18.71 enhanced-resolve: 5.15.0 lit: 3.1.1 lit-element: 4.0.3 @@ -1162,7 +1162,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/braces@3.0.4: @@ -1178,13 +1178,13 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/cross-spawn@6.0.6: resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/debug@4.1.12: @@ -1203,7 +1203,7 @@ packages: /@types/express-serve-static-core@4.17.41: resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -1222,7 +1222,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/hast@3.0.3: @@ -1244,7 +1244,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/linkify-it@3.0.5: @@ -1321,16 +1321,16 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true - /@types/node@16.18.70: - resolution: {integrity: sha512-8eIk20G5VVVQNZNouHjLA2b8utE2NvGybLjMaF4lyhA9uhGwnmXF8o+icdXKGSQSNANJewXva/sFUoZLwAaYAg==} + /@types/node@16.18.71: + resolution: {integrity: sha512-ARO+458bNJQeNEFuPyT6W+q9ULotmsQzhV3XABsFSxEvRMUYENcBsNAHWYPlahU+UHa5gCVwyKT1Z3f1Wwr26Q==} dev: true /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true - /@types/node@20.11.0: - resolution: {integrity: sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==} + /@types/node@20.11.2: + resolution: {integrity: sha512-cZShBaVa+UO1LjWWBPmWRR4+/eY/JR/UIEcDlVsw3okjWEu+rB7/mH6X3B/L+qJVHDLjk9QW/y2upp9wp1yDXA==} dependencies: undici-types: 5.26.5 @@ -1347,7 +1347,7 @@ packages: /@types/prompts@2.4.9: resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 kleur: 3.0.3 dev: true @@ -1366,14 +1366,14 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/serve-static@1.15.5: @@ -1381,7 +1381,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.0 + '@types/node': 20.11.2 dev: true /@types/sizzle@2.3.8: @@ -1404,15 +1404,15 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.11): + /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.14): resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.0.11(@types/node@20.11.0) - vue: 3.4.11(typescript@5.3.3) + vite: 5.0.11(@types/node@20.11.2) + vue: 3.4.14(typescript@5.3.3) dev: false /@vitest/expect@1.2.0: @@ -1473,40 +1473,40 @@ packages: path-browserify: 1.0.1 dev: true - /@vue/compiler-core@3.4.11: - resolution: {integrity: sha512-xFD+p14L4J0DkzHMdgLiQBU5g861fuOTzag30GsfPXBpghLZOvmd22lKiBMTRRpQRpp7qxPnBlFMoeiGMM4MBg==} + /@vue/compiler-core@3.4.14: + resolution: {integrity: sha512-ro4Zzl/MPdWs7XwxT7omHRxAjMbDFRZEEjD+2m3NBf8YzAe3HuoSEZosXQo+m1GQ1G3LQ1LdmNh1RKTYe+ssEg==} dependencies: '@babel/parser': 7.23.6 - '@vue/shared': 3.4.11 + '@vue/shared': 3.4.14 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.0.2 - /@vue/compiler-dom@3.4.11: - resolution: {integrity: sha512-cRVLROlY7D72WK2xS91L126Dd6xHNTWDWPUBRh1Syk7+TahCk8Eown1/fSi+VX9c76sMMqEZROQSbwV0HSJnhg==} + /@vue/compiler-dom@3.4.14: + resolution: {integrity: sha512-nOZTY+veWNa0DKAceNWxorAbWm0INHdQq7cejFaWM1WYnoNSJbSEKYtE7Ir6lR/+mo9fttZpPVI9ZFGJ1juUEQ==} dependencies: - '@vue/compiler-core': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/compiler-core': 3.4.14 + '@vue/shared': 3.4.14 - /@vue/compiler-sfc@3.4.11: - resolution: {integrity: sha512-1y5xHAD4a/AhK5+dgsZwFg145J6/rl1c8ILC7Gokca+ql51tTpduz/njCHeNmU15XiE7O62LjJFNOtSZ9vxKOQ==} + /@vue/compiler-sfc@3.4.14: + resolution: {integrity: sha512-1vHc9Kv1jV+YBZC/RJxQJ9JCxildTI+qrhtDh6tPkR1O8S+olBUekimY0km0ZNn8nG1wjtFAe9XHij+YLR8cRQ==} dependencies: '@babel/parser': 7.23.6 - '@vue/compiler-core': 3.4.11 - '@vue/compiler-dom': 3.4.11 - '@vue/compiler-ssr': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/compiler-core': 3.4.14 + '@vue/compiler-dom': 3.4.14 + '@vue/compiler-ssr': 3.4.14 + '@vue/shared': 3.4.14 estree-walker: 2.0.2 magic-string: 0.30.5 postcss: 8.4.33 source-map-js: 1.0.2 dev: false - /@vue/compiler-ssr@3.4.11: - resolution: {integrity: sha512-cP9Z2ArRgciYmNraqE0gQkuYInfdn66+LE4pR+16uyBiQeswcU4kEzGA+mF1MdhqYXuENpyGQsTkZapq4cy9YA==} + /@vue/compiler-ssr@3.4.14: + resolution: {integrity: sha512-bXT6+oAGlFjTYVOTtFJ4l4Jab1wjsC0cfSfOe2B4Z0N2vD2zOBSQ9w694RsCfhjk+bC2DY5Gubb1rHZVii107Q==} dependencies: - '@vue/compiler-dom': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/compiler-dom': 3.4.14 + '@vue/shared': 3.4.14 dev: false /@vue/devtools-api@6.5.1: @@ -1523,8 +1523,8 @@ packages: dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/compiler-dom': 3.4.14 + '@vue/shared': 3.4.14 computeds: 0.0.1 minimatch: 9.0.3 muggle-string: 0.3.1 @@ -1533,54 +1533,54 @@ packages: vue-template-compiler: 2.7.16 dev: true - /@vue/reactivity@3.4.11: - resolution: {integrity: sha512-KscADwKpSynT3S2iJEX8EfPqc9kPFR261sHIQnDh1xhOBf8qd4ait9tEgLt1/uVxyrAgFj/TNGmjDkcsytyA8w==} + /@vue/reactivity@3.4.14: + resolution: {integrity: sha512-xRYwze5Q4tK7tT2J4uy4XLhK/AIXdU5EBUu9PLnIHcOKXO0uyXpNNMzlQKuq7B+zwtq6K2wuUL39pHA6ZQzObw==} dependencies: - '@vue/shared': 3.4.11 + '@vue/shared': 3.4.14 dev: false - /@vue/runtime-core@3.4.11: - resolution: {integrity: sha512-wduRf9w1OtSORFs5KVpKEQ1bRwW5D9/E8mB0I4m0f5Wrd53OZridzWWVZaowSKNMXXIF5Y/lYFP9GOM/IL5i2g==} + /@vue/runtime-core@3.4.14: + resolution: {integrity: sha512-qu+NMkfujCoZL6cfqK5NOfxgXJROSlP2ZPs4CTcVR+mLrwl4TtycF5Tgo0QupkdBL+2kigc6EsJlTcuuZC1NaQ==} dependencies: - '@vue/reactivity': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/reactivity': 3.4.14 + '@vue/shared': 3.4.14 dev: false - /@vue/runtime-dom@3.4.11: - resolution: {integrity: sha512-pWlCTzo6Ad3pSBjzgcZ9maPaz+N/SngLOMfkSKIx7rIWJgcHBoFp4GAbhnkR3jxT4BqIvti6EH3aNSC02VtgOg==} + /@vue/runtime-dom@3.4.14: + resolution: {integrity: sha512-B85XmcR4E7XsirEHVqhmy4HPbRT9WLFWV9Uhie3OapV9m1MEN9+Er6hmUIE6d8/l2sUygpK9RstFM2bmHEUigA==} dependencies: - '@vue/runtime-core': 3.4.11 - '@vue/shared': 3.4.11 + '@vue/runtime-core': 3.4.14 + '@vue/shared': 3.4.14 csstype: 3.1.3 dev: false - /@vue/server-renderer@3.4.11(vue@3.4.11): - resolution: {integrity: sha512-19rLK9N0yNNzQ83ieyoO9ZT/iBt0S8IkxQ4eVmnqPLCbZgSRMm7GRXnjTFvo0n5vTVVeyaYosBzZ2559L/rP+w==} + /@vue/server-renderer@3.4.14(vue@3.4.14): + resolution: {integrity: sha512-pwSKXQfYdJBTpvWHGEYI+akDE18TXAiLcGn+Q/2Fj8wQSHWztoo7PSvfMNqu6NDhp309QXXbPFEGCU5p85HqkA==} peerDependencies: - vue: 3.4.11 + vue: 3.4.14 dependencies: - '@vue/compiler-ssr': 3.4.11 - '@vue/shared': 3.4.11 - vue: 3.4.11(typescript@5.3.3) + '@vue/compiler-ssr': 3.4.14 + '@vue/shared': 3.4.14 + vue: 3.4.14(typescript@5.3.3) dev: false - /@vue/shared@3.4.11: - resolution: {integrity: sha512-BtC+vE8kHf/jZoyJnTFd0PmY8NejyUeUkshXm8LriHs8KmQUmcZXIbrifjA3WDmvzg7C8D6gBSvdl49pOfU2lQ==} + /@vue/shared@3.4.14: + resolution: {integrity: sha512-nmi3BtLpvqXAWoRZ6HQ+pFJOHBU4UnH3vD3opgmwXac7vhaHKA9nj1VeGjMggdB9eLtW83eHyPCmOU1qzdsC7Q==} - /@vueuse/core@10.7.1(vue@3.4.11): - resolution: {integrity: sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==} + /@vueuse/core@10.7.2(vue@3.4.14): + resolution: {integrity: sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==} dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.7.1 - '@vueuse/shared': 10.7.1(vue@3.4.11) - vue-demi: 0.14.6(vue@3.4.11) + '@vueuse/metadata': 10.7.2 + '@vueuse/shared': 10.7.2(vue@3.4.14) + vue-demi: 0.14.6(vue@3.4.14) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/integrations@10.7.1(focus-trap@7.5.4)(vue@3.4.11): - resolution: {integrity: sha512-cKo5LEeKVHdBRBtMTOrDPdR0YNtrmN9IBfdcnY2P3m5LHVrsD0xiHUtAH1WKjHQRIErZG6rJUa6GA4tWZt89Og==} + /@vueuse/integrations@10.7.2(focus-trap@7.5.4)(vue@3.4.14): + resolution: {integrity: sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==} peerDependencies: async-validator: '*' axios: '*' @@ -1620,23 +1620,23 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 10.7.1(vue@3.4.11) - '@vueuse/shared': 10.7.1(vue@3.4.11) + '@vueuse/core': 10.7.2(vue@3.4.14) + '@vueuse/shared': 10.7.2(vue@3.4.14) focus-trap: 7.5.4 - vue-demi: 0.14.6(vue@3.4.11) + vue-demi: 0.14.6(vue@3.4.14) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/metadata@10.7.1: - resolution: {integrity: sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==} + /@vueuse/metadata@10.7.2: + resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==} dev: false - /@vueuse/shared@10.7.1(vue@3.4.11): - resolution: {integrity: sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==} + /@vueuse/shared@10.7.2(vue@3.4.14): + resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} dependencies: - vue-demi: 0.14.6(vue@3.4.11) + vue-demi: 0.14.6(vue@3.4.14) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1871,7 +1871,7 @@ packages: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + set-function-length: 1.2.0 dev: true /ccount@2.0.1: @@ -2463,7 +2463,7 @@ packages: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.0 safe-regex-test: 1.0.2 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 @@ -3351,8 +3351,8 @@ packages: hasBin: true dev: true - /joi@17.11.0: - resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} + /joi@17.11.1: + resolution: {integrity: sha512-671acnrx+w96PCcQOzvm0VYQVwNL2PVgZmDRaFuSsx8sIUmGzYElPw5lU8F3Cr0jOuPs1oM56p7W2a1cdDOwcw==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -4212,8 +4212,8 @@ packages: resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} dev: false - /prettier@3.2.0: - resolution: {integrity: sha512-/vBUecTGaPlRVwyZVROVC58bYIScqaoEJzZmzQXXrZOzqn0TwWz0EnOozOlFO/YAImRnb7XsKpTCd3m1SjS2Ww==} + /prettier@3.2.2: + resolution: {integrity: sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A==} engines: {node: '>=14'} hasBin: true dev: true @@ -4490,8 +4490,8 @@ packages: tslib: 2.6.2 dev: true - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 @@ -4542,11 +4542,12 @@ packages: lru-cache: 6.0.0 dev: true - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 @@ -5204,7 +5205,7 @@ packages: vfile-message: 4.0.2 dev: true - /vite-node@1.2.0(@types/node@20.11.0)(supports-color@9.4.0): + /vite-node@1.2.0(@types/node@20.11.2)(supports-color@9.4.0): resolution: {integrity: sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5213,7 +5214,7 @@ packages: debug: 4.3.4(supports-color@9.4.0) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.11(@types/node@20.11.0) + vite: 5.0.11(@types/node@20.11.2) transitivePeerDependencies: - '@types/node' - less @@ -5225,7 +5226,7 @@ packages: - terser dev: true - /vite@5.0.11(@types/node@20.11.0): + /vite@5.0.11(@types/node@20.11.2): resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5253,14 +5254,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 esbuild: 0.19.11 postcss: 8.4.33 rollup: 4.9.5 optionalDependencies: fsevents: 2.3.3 - /vitest@1.2.0(@types/node@20.11.0)(supports-color@9.4.0): + /vitest@1.2.0(@types/node@20.11.2)(supports-color@9.4.0): resolution: {integrity: sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5285,7 +5286,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.0 + '@types/node': 20.11.2 '@vitest/expect': 1.2.0 '@vitest/runner': 1.2.0 '@vitest/snapshot': 1.2.0 @@ -5304,8 +5305,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.8.1 - vite: 5.0.11(@types/node@20.11.0) - vite-node: 1.2.0(@types/node@20.11.0)(supports-color@9.4.0) + vite: 5.0.11(@types/node@20.11.2) + vite-node: 1.2.0(@types/node@20.11.2)(supports-color@9.4.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -5317,7 +5318,7 @@ packages: - terser dev: true - /vue-demi@0.14.6(vue@3.4.11): + /vue-demi@0.14.6(vue@3.4.14): resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} engines: {node: '>=12'} hasBin: true @@ -5329,7 +5330,7 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.11(typescript@5.3.3) + vue: 3.4.14(typescript@5.3.3) dev: false /vue-template-compiler@2.7.16: @@ -5351,19 +5352,19 @@ packages: typescript: 5.3.3 dev: true - /vue@3.4.11(typescript@5.3.3): - resolution: {integrity: sha512-iaA98z14ZrrVJlclpHX/HCNeacbMOLdX5foYN7/vt4cHFhDkBRzojjbLQZ2UDRAeNV1v4V5I21+QpdCXWlpG5Q==} + /vue@3.4.14(typescript@5.3.3): + resolution: {integrity: sha512-Rop5Al/ZcBbBz+KjPZaZDgHDX0kUP4duEzDbm+1o91uxYUNmJrZSBuegsNIJvUGy+epLevNRNhLjm08VKTgGyw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.4.11 - '@vue/compiler-sfc': 3.4.11 - '@vue/runtime-dom': 3.4.11 - '@vue/server-renderer': 3.4.11(vue@3.4.11) - '@vue/shared': 3.4.11 + '@vue/compiler-dom': 3.4.14 + '@vue/compiler-sfc': 3.4.14 + '@vue/runtime-dom': 3.4.14 + '@vue/server-renderer': 3.4.14(vue@3.4.14) + '@vue/shared': 3.4.14 typescript: 5.3.3 dev: false @@ -5373,7 +5374,7 @@ packages: hasBin: true dependencies: axios: 1.6.5(debug@4.3.4) - joi: 17.11.0 + joi: 17.11.1 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 From d16e5800111bbab06003fd6a33356d59f5661c6b Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 02:04:42 +0530 Subject: [PATCH 05/15] release: v1.0.0-rc.37 --- CHANGELOG.md | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7665a718..b5939420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [1.0.0-rc.37](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2024-01-15) + +### Bug Fixes + +- **theme:** enter key behavior conflict with IME in search box ([#3454](https://github.com/vuejs/vitepress/issues/3454)) ([cd8ee6f](https://github.com/vuejs/vitepress/commit/cd8ee6fb32d8135e78c5827a36b79efad509042c)) +- **theme:** misaligned outline indicator ([910b212](https://github.com/vuejs/vitepress/commit/910b2125bb9971b5b974084f668fb0d2cb5e54ae)), closes [#3449](https://github.com/vuejs/vitepress/issues/3449) +- **theme:** use`--vp-c-tip-` CSS variable for badge/block colors with type`tip` ([#3434](https://github.com/vuejs/vitepress/issues/3434)) ([78abf47](https://github.com/vuejs/vitepress/commit/78abf47b8b563d66db9d481a98bbdefac95cc84c)) + +### Features + +- **theme:** export VPBadge ([#3431](https://github.com/vuejs/vitepress/issues/3431)) ([18981c1](https://github.com/vuejs/vitepress/commit/18981c1d1c74a4f4ca379a88b00c02ba5eace6db)) + # [1.0.0-rc.36](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.35...v1.0.0-rc.36) (2024-1-8) ### Bug Fixes diff --git a/package.json b/package.json index ee165279..592123ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.0.0-rc.36", + "version": "1.0.0-rc.37", "description": "Vite & Vue powered static site generator", "type": "module", "packageManager": "pnpm@8.14.1", From 4020b419de88a1e4d037e63536df58f4268baf59 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 13:38:46 +0530 Subject: [PATCH 06/15] Revert "fix(theme): misaligned outline indicator\" This reverts commit 910b2125bb9971b5b974084f668fb0d2cb5e54ae. --- src/client/app/router.ts | 36 ++++++++++++++++--- src/client/app/utils.ts | 33 ----------------- .../theme-default/composables/outline.ts | 5 ++- 3 files changed, 34 insertions(+), 40 deletions(-) diff --git a/src/client/app/router.ts b/src/client/app/router.ts index 00c98531..a1397018 100644 --- a/src/client/app/router.ts +++ b/src/client/app/router.ts @@ -1,9 +1,9 @@ +import { reactive, inject, markRaw, nextTick, readonly } from 'vue' import type { Component, InjectionKey } from 'vue' -import { inject, markRaw, nextTick, reactive, readonly } from 'vue' -import type { Awaitable, PageData, PageDataPayload } from '../shared' import { notFoundPageData, treatAsHtml } from '../shared' +import type { PageData, PageDataPayload, Awaitable } from '../shared' +import { inBrowser, withBase } from './utils' import { siteDataRef } from './data' -import { getScrollOffset, inBrowser, withBase } from './utils' export interface Route { path: string @@ -261,6 +261,26 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } if (target) { + let scrollOffset = siteDataRef.value.scrollOffset + let offset = 0 + let padding = 24 + if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { + padding = scrollOffset.padding + scrollOffset = scrollOffset.selector + } + if (typeof scrollOffset === 'number') { + offset = scrollOffset + } else if (typeof scrollOffset === 'string') { + offset = tryOffsetSelector(scrollOffset, padding) + } else if (Array.isArray(scrollOffset)) { + for (const selector of scrollOffset) { + const res = tryOffsetSelector(selector, padding) + if (res) { + offset = res + break + } + } + } const targetPadding = parseInt( window.getComputedStyle(target).paddingTop, 10 @@ -268,7 +288,7 @@ export function scrollTo(el: Element, hash: string, smooth = false) { const targetTop = window.scrollY + target.getBoundingClientRect().top - - getScrollOffset() + + offset + targetPadding function scrollToTarget() { // only smooth scroll if distance is smaller than screen height. @@ -280,6 +300,14 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } } +function tryOffsetSelector(selector: string, padding: number): number { + const el = document.querySelector(selector) + if (!el) return 0 + const bot = el.getBoundingClientRect().bottom + if (bot < 0) return 0 + return bot + padding +} + function handleHMR(route: Route): void { // update route.data on HMR updates of active page if (import.meta.hot) { diff --git a/src/client/app/utils.ts b/src/client/app/utils.ts index dfa5cffc..5028483c 100644 --- a/src/client/app/utils.ts +++ b/src/client/app/utils.ts @@ -107,36 +107,3 @@ export function defineClientComponent( } } } - -export function getScrollOffset() { - let scrollOffset = siteDataRef.value.scrollOffset - let offset = 0 - let padding = 24 - if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { - padding = scrollOffset.padding - scrollOffset = scrollOffset.selector - } - if (typeof scrollOffset === 'number') { - offset = scrollOffset - } else if (typeof scrollOffset === 'string') { - offset = tryOffsetSelector(scrollOffset, padding) - } else if (Array.isArray(scrollOffset)) { - for (const selector of scrollOffset) { - const res = tryOffsetSelector(selector, padding) - if (res) { - offset = res - break - } - } - } - - return offset -} - -function tryOffsetSelector(selector: string, padding: number): number { - const el = document.querySelector(selector) - if (!el) return 0 - const bot = el.getBoundingClientRect().bottom - if (bot < 0) return 0 - return bot + padding -} diff --git a/src/client/theme-default/composables/outline.ts b/src/client/theme-default/composables/outline.ts index 1b9137fb..8ec4f3e5 100644 --- a/src/client/theme-default/composables/outline.ts +++ b/src/client/theme-default/composables/outline.ts @@ -1,9 +1,8 @@ import type { DefaultTheme } from 'vitepress/theme' import { onMounted, onUnmounted, onUpdated, type Ref } from 'vue' -import { getScrollOffset } from '../../app/utils' import type { Header } from '../../shared' -import { throttleAndDebounce } from '../support/utils' import { useAside } from './aside' +import { throttleAndDebounce } from '../support/utils' // cached list of anchor elements from resolveHeaders const resolvedHeaders: { element: HTMLHeadElement; link: string }[] = [] @@ -180,7 +179,7 @@ export function useActiveAnchor( // find the last header above the top of viewport let activeLink: string | null = null for (const { link, top } of headers) { - if (top > scrollY + offsetDocTop + getScrollOffset()) { + if (top > scrollY + offsetDocTop) { break } activeLink = link From 2b13bc94d1800c47c35e76bde37e18b1718f662a Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 13:40:16 +0530 Subject: [PATCH 07/15] release: v1.0.0-rc.38 --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5939420..dc108276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# [1.0.0-rc.38](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.37...v1.0.0-rc.38) (2024-01-16) + +### Reverts + +- Revert "fix(theme): misaligned outline indicator" ([4020b41](https://github.com/vuejs/vitepress/commit/4020b419de88a1e4d037e63536df58f4268baf59)) + # [1.0.0-rc.37](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2024-01-15) ### Bug Fixes diff --git a/package.json b/package.json index 592123ef..bd9ac198 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.0.0-rc.37", + "version": "1.0.0-rc.38", "description": "Vite & Vue powered static site generator", "type": "module", "packageManager": "pnpm@8.14.1", From 0ce5ece35687bdad7a65d61432419cfe3961a329 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 14:17:50 +0530 Subject: [PATCH 08/15] fix(theme): misaligned outline indicator (#3458) --- docs/.vitepress/config/index.ts | 60 +------------------ docs/.vitepress/config/shared.ts | 60 +++++++++++++++++++ src/client/app/router.ts | 36 ++--------- src/client/app/utils.ts | 33 ++++++++++ src/client/index.ts | 3 +- .../theme-default/composables/outline.ts | 5 +- 6 files changed, 105 insertions(+), 92 deletions(-) create mode 100644 docs/.vitepress/config/shared.ts diff --git a/docs/.vitepress/config/index.ts b/docs/.vitepress/config/index.ts index 50f024d1..de218788 100644 --- a/docs/.vitepress/config/index.ts +++ b/docs/.vitepress/config/index.ts @@ -1,64 +1,10 @@ import { defineConfig } from 'vitepress' +import { shared } from './shared' import { en } from './en' -import { zh, search as zhSearch } from './zh' +import { zh } from './zh' export default defineConfig({ - title: 'VitePress', - - lastUpdated: true, - cleanUrls: true, - - markdown: { - math: true, - codeTransformers: [ - // We use `[!!code` in demo to prevent transformation, here we revert it back. - { - postprocess(code) { - return code.replace(/\[\!\!code/g, '[!code') - } - } - ] - }, - - sitemap: { - hostname: 'https://vitepress.dev', - transformItems(items) { - return items.filter((item) => !item.url.includes('migration')) - } - }, - - /* prettier-ignore */ - head: [ - ['link', { rel: 'icon', type: 'image/svg+xml', href: '/vitepress-logo-mini.svg' }], - ['link', { rel: 'icon', type: 'image/png', href: '/vitepress-logo-mini.png' }], - ['meta', { name: 'theme-color', content: '#5f67ee' }], - ['meta', { name: 'og:type', content: 'website' }], - ['meta', { name: 'og:locale', content: 'en' }], - ['meta', { name: 'og:site_name', content: 'VitePress' }], - ['meta', { name: 'og:image', content: 'https://vitepress.dev/vitepress-og.jpg' }], - ['script', { src: 'https://cdn.usefathom.com/script.js', 'data-site': 'AZBRSFGG', 'data-spa': 'auto', defer: '' }] - ], - - themeConfig: { - logo: { src: '/vitepress-logo-mini.svg', width: 24, height: 24 }, - - socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } - ], - - search: { - provider: 'algolia', - options: { - appId: '8J64VVRP8K', - apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', - indexName: 'vitepress', - locales: { ...zhSearch } - } - }, - - carbonAds: { code: 'CEBDT27Y', placement: 'vuejsorg' } - }, - + ...shared, locales: { root: { label: 'English', ...en }, zh: { label: '简体中文', ...zh } diff --git a/docs/.vitepress/config/shared.ts b/docs/.vitepress/config/shared.ts new file mode 100644 index 00000000..a99b7702 --- /dev/null +++ b/docs/.vitepress/config/shared.ts @@ -0,0 +1,60 @@ +import { defineConfig } from 'vitepress' +import { search as zhSearch } from './zh' + +export const shared = defineConfig({ + title: 'VitePress', + + lastUpdated: true, + cleanUrls: true, + + markdown: { + math: true, + codeTransformers: [ + // We use `[!!code` in demo to prevent transformation, here we revert it back. + { + postprocess(code) { + return code.replace(/\[\!\!code/g, '[!code') + } + } + ] + }, + + sitemap: { + hostname: 'https://vitepress.dev', + transformItems(items) { + return items.filter((item) => !item.url.includes('migration')) + } + }, + + /* prettier-ignore */ + head: [ + ['link', { rel: 'icon', type: 'image/svg+xml', href: '/vitepress-logo-mini.svg' }], + ['link', { rel: 'icon', type: 'image/png', href: '/vitepress-logo-mini.png' }], + ['meta', { name: 'theme-color', content: '#5f67ee' }], + ['meta', { name: 'og:type', content: 'website' }], + ['meta', { name: 'og:locale', content: 'en' }], + ['meta', { name: 'og:site_name', content: 'VitePress' }], + ['meta', { name: 'og:image', content: 'https://vitepress.dev/vitepress-og.jpg' }], + ['script', { src: 'https://cdn.usefathom.com/script.js', 'data-site': 'AZBRSFGG', 'data-spa': 'auto', defer: '' }] + ], + + themeConfig: { + logo: { src: '/vitepress-logo-mini.svg', width: 24, height: 24 }, + + socialLinks: [ + { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + ], + + search: { + provider: 'algolia', + options: { + appId: '8J64VVRP8K', + apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', + indexName: 'vitepress', + locales: { ...zhSearch } + } + }, + + carbonAds: { code: 'CEBDT27Y', placement: 'vuejsorg' } + } +}) diff --git a/src/client/app/router.ts b/src/client/app/router.ts index a1397018..00c98531 100644 --- a/src/client/app/router.ts +++ b/src/client/app/router.ts @@ -1,9 +1,9 @@ -import { reactive, inject, markRaw, nextTick, readonly } from 'vue' import type { Component, InjectionKey } from 'vue' +import { inject, markRaw, nextTick, reactive, readonly } from 'vue' +import type { Awaitable, PageData, PageDataPayload } from '../shared' import { notFoundPageData, treatAsHtml } from '../shared' -import type { PageData, PageDataPayload, Awaitable } from '../shared' -import { inBrowser, withBase } from './utils' import { siteDataRef } from './data' +import { getScrollOffset, inBrowser, withBase } from './utils' export interface Route { path: string @@ -261,26 +261,6 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } if (target) { - let scrollOffset = siteDataRef.value.scrollOffset - let offset = 0 - let padding = 24 - if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { - padding = scrollOffset.padding - scrollOffset = scrollOffset.selector - } - if (typeof scrollOffset === 'number') { - offset = scrollOffset - } else if (typeof scrollOffset === 'string') { - offset = tryOffsetSelector(scrollOffset, padding) - } else if (Array.isArray(scrollOffset)) { - for (const selector of scrollOffset) { - const res = tryOffsetSelector(selector, padding) - if (res) { - offset = res - break - } - } - } const targetPadding = parseInt( window.getComputedStyle(target).paddingTop, 10 @@ -288,7 +268,7 @@ export function scrollTo(el: Element, hash: string, smooth = false) { const targetTop = window.scrollY + target.getBoundingClientRect().top - - offset + + getScrollOffset() + targetPadding function scrollToTarget() { // only smooth scroll if distance is smaller than screen height. @@ -300,14 +280,6 @@ export function scrollTo(el: Element, hash: string, smooth = false) { } } -function tryOffsetSelector(selector: string, padding: number): number { - const el = document.querySelector(selector) - if (!el) return 0 - const bot = el.getBoundingClientRect().bottom - if (bot < 0) return 0 - return bot + padding -} - function handleHMR(route: Route): void { // update route.data on HMR updates of active page if (import.meta.hot) { diff --git a/src/client/app/utils.ts b/src/client/app/utils.ts index 5028483c..dfa5cffc 100644 --- a/src/client/app/utils.ts +++ b/src/client/app/utils.ts @@ -107,3 +107,36 @@ export function defineClientComponent( } } } + +export function getScrollOffset() { + let scrollOffset = siteDataRef.value.scrollOffset + let offset = 0 + let padding = 24 + if (typeof scrollOffset === 'object' && 'padding' in scrollOffset) { + padding = scrollOffset.padding + scrollOffset = scrollOffset.selector + } + if (typeof scrollOffset === 'number') { + offset = scrollOffset + } else if (typeof scrollOffset === 'string') { + offset = tryOffsetSelector(scrollOffset, padding) + } else if (Array.isArray(scrollOffset)) { + for (const selector of scrollOffset) { + const res = tryOffsetSelector(selector, padding) + if (res) { + offset = res + break + } + } + } + + return offset +} + +function tryOffsetSelector(selector: string, padding: number): number { + const el = document.querySelector(selector) + if (!el) return 0 + const bot = el.getBoundingClientRect().bottom + if (bot < 0) return 0 + return bot + padding +} diff --git a/src/client/index.ts b/src/client/index.ts index 072adba3..5fde6c5d 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -20,7 +20,8 @@ export { inBrowser, onContentUpdated, defineClientComponent, - withBase + withBase, + getScrollOffset } from './app/utils' // components diff --git a/src/client/theme-default/composables/outline.ts b/src/client/theme-default/composables/outline.ts index 8ec4f3e5..e097a2b7 100644 --- a/src/client/theme-default/composables/outline.ts +++ b/src/client/theme-default/composables/outline.ts @@ -1,8 +1,9 @@ +import { getScrollOffset } from 'vitepress' import type { DefaultTheme } from 'vitepress/theme' import { onMounted, onUnmounted, onUpdated, type Ref } from 'vue' import type { Header } from '../../shared' -import { useAside } from './aside' import { throttleAndDebounce } from '../support/utils' +import { useAside } from './aside' // cached list of anchor elements from resolveHeaders const resolvedHeaders: { element: HTMLHeadElement; link: string }[] = [] @@ -179,7 +180,7 @@ export function useActiveAnchor( // find the last header above the top of viewport let activeLink: string | null = null for (const { link, top } of headers) { - if (top > scrollY + offsetDocTop) { + if (top > scrollY + offsetDocTop + getScrollOffset()) { break } activeLink = link From 3f6ca6a37461b5cbe5a0201799e5b11b8b8c860d Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 14:22:24 +0530 Subject: [PATCH 09/15] fix(theme): remove extra offset --- src/client/theme-default/composables/outline.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/client/theme-default/composables/outline.ts b/src/client/theme-default/composables/outline.ts index e097a2b7..ff9eca27 100644 --- a/src/client/theme-default/composables/outline.ts +++ b/src/client/theme-default/composables/outline.ts @@ -137,14 +137,6 @@ export function useActiveAnchor( return } - // pixel offset, start of main content - const offsetDocTop = (() => { - const container = - document.querySelector('#VPContent .VPDoc')?.firstElementChild - if (container) return getAbsoluteTop(container as HTMLElement) - else return 78 - })() - const scrollY = window.scrollY const innerHeight = window.innerHeight const offsetHeight = document.body.offsetHeight @@ -180,7 +172,7 @@ export function useActiveAnchor( // find the last header above the top of viewport let activeLink: string | null = null for (const { link, top } of headers) { - if (top > scrollY + offsetDocTop + getScrollOffset()) { + if (top > scrollY + getScrollOffset() + 4) { break } activeLink = link From 240a0d5a08c272f5bcaeeb7d9260da3eacbc8816 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 14:27:23 +0530 Subject: [PATCH 10/15] release: v1.0.0-rc.39 --- CHANGELOG.md | 10 ++-------- package.json | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc108276..a89b2515 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,9 @@ -# [1.0.0-rc.38](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.37...v1.0.0-rc.38) (2024-01-16) - -### Reverts - -- Revert "fix(theme): misaligned outline indicator" ([4020b41](https://github.com/vuejs/vitepress/commit/4020b419de88a1e4d037e63536df58f4268baf59)) - -# [1.0.0-rc.37](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2024-01-15) +# [1.0.0-rc.39](https://github.com/vuejs/vitepress/compare/v1.0.0-rc.38...v1.0.0-rc.39) (2024-01-16) ### Bug Fixes +- **theme:** misaligned outline indicator ([#3458](https://github.com/vuejs/vitepress/issues/3458)) ([0ce5ece](https://github.com/vuejs/vitepress/commit/0ce5ece35687bdad7a65d61432419cfe3961a329)) - **theme:** enter key behavior conflict with IME in search box ([#3454](https://github.com/vuejs/vitepress/issues/3454)) ([cd8ee6f](https://github.com/vuejs/vitepress/commit/cd8ee6fb32d8135e78c5827a36b79efad509042c)) -- **theme:** misaligned outline indicator ([910b212](https://github.com/vuejs/vitepress/commit/910b2125bb9971b5b974084f668fb0d2cb5e54ae)), closes [#3449](https://github.com/vuejs/vitepress/issues/3449) - **theme:** use`--vp-c-tip-` CSS variable for badge/block colors with type`tip` ([#3434](https://github.com/vuejs/vitepress/issues/3434)) ([78abf47](https://github.com/vuejs/vitepress/commit/78abf47b8b563d66db9d481a98bbdefac95cc84c)) ### Features diff --git a/package.json b/package.json index bd9ac198..0ca8f6cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vitepress", - "version": "1.0.0-rc.38", + "version": "1.0.0-rc.39", "description": "Vite & Vue powered static site generator", "type": "module", "packageManager": "pnpm@8.14.1", From f815e768b22c8c3f755b2a32ad08534225cce081 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:28:06 +0530 Subject: [PATCH 11/15] chore: switch to custom lunaria build --- docs/lunaria.config.json | 6 +- docs/package.json | 2 +- pnpm-lock.yaml | 585 ++------------------------------------- 3 files changed, 27 insertions(+), 566 deletions(-) diff --git a/docs/lunaria.config.json b/docs/lunaria.config.json index 1329b1fb..0a4c5077 100644 --- a/docs/lunaria.config.json +++ b/docs/lunaria.config.json @@ -7,11 +7,13 @@ "files": [ { "location": ".vitepress/config/{en,zh}.ts", - "pattern": ".vitepress/config/@lang.ts" + "pattern": ".vitepress/config/@lang.ts", + "type": "universal" }, { "location": "**/*.md", - "pattern": "@lang/@path" + "pattern": "@lang/@path", + "type": "universal" } ], "defaultLocale": { diff --git a/docs/package.json b/docs/package.json index 2d6f6a57..119d8def 100644 --- a/docs/package.json +++ b/docs/package.json @@ -10,7 +10,7 @@ "lunaria:open": "open-cli .vitepress/dist/_translations/index.html" }, "devDependencies": { - "@lunariajs/core": "^0.0.25", + "@lunariajs/core": "npm:@brc-dd/lunaria-core@latest", "markdown-it-mathjax3": "^4.3.2", "open-cli": "^8.0.0", "vitepress": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bef66ef..2848340f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -307,8 +307,8 @@ importers: docs: devDependencies: '@lunariajs/core': - specifier: ^0.0.25 - version: 0.0.25(supports-color@9.4.0) + specifier: npm:@brc-dd/lunaria-core@latest + version: /@brc-dd/lunaria-core@0.0.25-dev.7838358(supports-color@9.4.0) markdown-it-mathjax3: specifier: ^4.3.2 version: 4.3.2 @@ -502,6 +502,26 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@brc-dd/lunaria-core@0.0.25-dev.7838358(supports-color@9.4.0): + resolution: {integrity: sha512-hzERgK/7KGMe2Y++j2mn2M+C/LK5Ck7e83LId0vA/2VV6sX+nhQRXOOYWeGXSFvtKchgk3xw7VvX+m8QjKwHWw==} + engines: {node: '>=18.17.0'} + hasBin: true + dependencies: + '@clack/core': 0.3.3 + fast-glob: 3.3.2 + jiti: 1.21.0 + micromatch: 4.0.5 + path-to-regexp: 6.2.1 + picocolors: 1.0.0 + simple-git: 3.22.0(supports-color@9.4.0) + ufo: 1.3.2 + ultramatter: 0.0.4 + zod: 3.22.4 + zod-validation-error: 2.1.0(zod@3.22.4) + transitivePeerDependencies: + - supports-color + dev: true + /@clack/core@0.3.3: resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} dependencies: @@ -794,65 +814,6 @@ packages: resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} dev: true - /@lit-labs/ssr-client@1.1.6: - resolution: {integrity: sha512-MHOHSDGmlum66PP2a6ATLHHwTFvYl+s7R4NYBp8E1NqHDA5UEuEIA1o/E4NoDinc3Ow56yz9Cvh89DvFDif5Pg==} - dependencies: - '@lit/reactive-element': 2.0.3 - lit: 3.1.1 - lit-html: 3.1.1 - dev: true - - /@lit-labs/ssr-dom-shim@1.1.2: - resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==} - dev: true - - /@lit-labs/ssr@3.2.1: - resolution: {integrity: sha512-y8LHFdRFYLXJ44kddCjeaKM/NVqcz1Z0TQHic7Siawxr07d4YZKYtghqnX1bbe2Oa8+qFW7NKFv54CIB7BzrZQ==} - engines: {node: '>=13.9.0'} - dependencies: - '@lit-labs/ssr-client': 1.1.6 - '@lit-labs/ssr-dom-shim': 1.1.2 - '@lit/reactive-element': 2.0.3 - '@parse5/tools': 0.3.0 - '@types/node': 16.18.71 - enhanced-resolve: 5.15.0 - lit: 3.1.1 - lit-element: 4.0.3 - lit-html: 3.1.1 - node-fetch: 3.3.2 - parse5: 7.1.2 - dev: true - - /@lit/reactive-element@2.0.3: - resolution: {integrity: sha512-e067EuTNNgOHm1tZcc0Ia7TCzD/9ZpoPegHKgesrGK6pSDRGkGDAQbYuQclqLPIoJ9eC8Kb9mYtGryWcM5AywA==} - dependencies: - '@lit-labs/ssr-dom-shim': 1.1.2 - dev: true - - /@lunariajs/core@0.0.25(supports-color@9.4.0): - resolution: {integrity: sha512-rQY4qIQqmL2fanBTcmItaiTp++YDluX4QM7yv2Owmc3LCZiXRFBEUq8kjIXjtowpkb+ejraGq8wBcyHhaFlKug==} - engines: {node: '>=18.17.0'} - hasBin: true - dependencies: - '@lit-labs/ssr': 3.2.1 - fast-glob: 3.3.2 - jiti: 1.21.0 - lit: 3.1.1 - micromatch: 4.0.5 - path-to-regexp: 6.2.1 - picocolors: 1.0.0 - redent: 4.0.0 - rehype: 13.0.1 - rehype-format: 5.0.0 - simple-git: 3.22.0(supports-color@9.4.0) - ufo: 1.3.2 - ultramatter: 0.0.4 - zod: 3.22.4 - zod-validation-error: 2.1.0(zod@3.22.4) - transitivePeerDependencies: - - supports-color - dev: true - /@mdit-vue/plugin-component@2.0.0: resolution: {integrity: sha512-cTRxlocav/+mfgDcp0P2z/gWuWBez+iNuN4D+b74LpX4AR6UAx2ZvWtCrUZ8VXrO4eCt1/G0YC/Af7mpIb3aoQ==} dependencies: @@ -937,12 +898,6 @@ packages: fastq: 1.16.0 dev: true - /@parse5/tools@0.3.0: - resolution: {integrity: sha512-zxRyTHkqb7WQMV8kTNBKWb1BeOFUKXBXTBWuxg9H9hfvQB3IwP6Iw2U75Ia5eyRxPNltmY7E8YAlz6zWwUnjKg==} - dependencies: - parse5: 7.1.2 - dev: true - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1225,12 +1180,6 @@ packages: '@types/node': 20.11.2 dev: true - /@types/hast@3.0.3: - resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} - dependencies: - '@types/unist': 3.0.2 - dev: true - /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true @@ -1290,12 +1239,6 @@ packages: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} - dependencies: - '@types/unist': 3.0.2 - dev: true - /@types/mdurl@1.0.5: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} @@ -1321,10 +1264,6 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true - /@types/node@16.18.71: - resolution: {integrity: sha512-ARO+458bNJQeNEFuPyT6W+q9ULotmsQzhV3XABsFSxEvRMUYENcBsNAHWYPlahU+UHa5gCVwyKT1Z3f1Wwr26Q==} - dev: true - /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true @@ -1388,22 +1327,10 @@ packages: resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} dev: true - /@types/trusted-types@2.0.7: - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: true - - /@types/unist@3.0.2: - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - dev: true - /@types/web-bluetooth@0.0.20: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: false - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.14): resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1807,10 +1734,6 @@ packages: - debug dev: true - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: true - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -1874,10 +1797,6 @@ packages: set-function-length: 1.2.0 dev: true - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: true - /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -1905,14 +1824,6 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: true - - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: true - /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: @@ -2009,10 +1920,6 @@ packages: delayed-stream: 1.0.0 dev: true - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: true - /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -2249,11 +2156,6 @@ packages: engines: {node: '>=12'} dev: true - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: true - /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true @@ -2336,17 +2238,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true - - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dependencies: - dequal: 2.0.3 - dev: true - /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2409,14 +2300,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true @@ -2588,10 +2471,6 @@ packages: is-extendable: 0.1.1 dev: true - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -2609,14 +2488,6 @@ packages: reusify: 1.0.4 dev: true - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.2 - dev: true - /file-type@18.7.0: resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} engines: {node: '>=14.16'} @@ -2687,13 +2558,6 @@ packages: mime-types: 2.1.35 dev: true - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - /fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -2907,134 +2771,6 @@ packages: function-bind: 1.1.2 dev: true - /hast-util-embedded@3.0.0: - resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} - dependencies: - '@types/hast': 3.0.3 - hast-util-is-element: 3.0.0 - dev: true - - /hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - dependencies: - '@types/hast': 3.0.3 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.1 - vfile-message: 4.0.2 - dev: true - - /hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - dependencies: - '@types/hast': 3.0.3 - '@types/unist': 3.0.2 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.4.0 - vfile: 6.0.1 - vfile-location: 5.0.2 - web-namespaces: 2.0.1 - dev: true - - /hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - dependencies: - '@types/hast': 3.0.3 - dev: true - - /hast-util-is-body-ok-link@3.0.0: - resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} - dependencies: - '@types/hast': 3.0.3 - dev: true - - /hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - dependencies: - '@types/hast': 3.0.3 - dev: true - - /hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - dependencies: - '@types/hast': 3.0.3 - dev: true - - /hast-util-phrasing@3.0.1: - resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - dependencies: - '@types/hast': 3.0.3 - hast-util-embedded: 3.0.0 - hast-util-has-property: 3.0.0 - hast-util-is-body-ok-link: 3.0.0 - hast-util-is-element: 3.0.0 - dev: true - - /hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} - dependencies: - '@types/hast': 3.0.3 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - parse5: 7.1.2 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: true - - /hast-util-to-html@9.0.0: - resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==} - dependencies: - '@types/hast': 3.0.3 - '@types/unist': 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.1 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - dev: true - - /hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - dependencies: - '@types/hast': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - dev: true - - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - dependencies: - '@types/hast': 3.0.3 - dev: true - - /hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - dependencies: - '@types/hast': 3.0.3 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - dev: true - /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -3051,14 +2787,6 @@ packages: lru-cache: 10.1.0 dev: true - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: true - - /html-whitespace-sensitive-tag-names@3.0.0: - resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} - dev: true - /htmlparser2@5.0.1: resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} dependencies: @@ -3086,11 +2814,6 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -3248,11 +2971,6 @@ packages: engines: {node: '>=8'} dev: true - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: true - /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: @@ -3475,28 +3193,6 @@ packages: wrap-ansi: 9.0.0 dev: true - /lit-element@4.0.3: - resolution: {integrity: sha512-2vhidmC7gGLfnVx41P8UZpzyS0Fb8wYhS5RCm16cMW3oERO0Khd3EsKwtRpOnttuByI5rURjT2dfoA7NlInCNw==} - dependencies: - '@lit-labs/ssr-dom-shim': 1.1.2 - '@lit/reactive-element': 2.0.3 - lit-html: 3.1.1 - dev: true - - /lit-html@3.1.1: - resolution: {integrity: sha512-x/EwfGk2D/f4odSFM40hcGumzqoKv0/SUh6fBO+1Ragez81APrcAMPo1jIrCDd9Sn+Z4CT867HWKViByvkDZUA==} - dependencies: - '@types/trusted-types': 2.0.7 - dev: true - - /lit@3.1.1: - resolution: {integrity: sha512-hF1y4K58+Gqrz+aAPS0DNBwPqPrg6P04DuWK52eMkt/SM9Qe9keWLcFgRcEKOLuDlRZlDsDbNL37Vr7ew1VCuw==} - dependencies: - '@lit/reactive-element': 2.0.3 - lit-element: 4.0.3 - lit-html: 3.1.1 - dev: true - /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} @@ -3647,20 +3343,6 @@ packages: speech-rule-engine: 4.0.7 dev: true - /mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - dependencies: - '@types/hast': 3.0.3 - '@types/mdast': 4.0.3 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - dev: true - /mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: true @@ -3692,33 +3374,6 @@ packages: resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} dev: true - /micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - dev: true - - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: true - - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - dependencies: - micromark-util-character: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - dev: true - - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: true - - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: true - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -3755,11 +3410,6 @@ packages: engines: {node: '>=12'} dev: true - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3847,11 +3497,6 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3864,15 +3509,6 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -4062,12 +3698,6 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - dependencies: - entities: 4.5.0 - dev: true - /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true @@ -4235,10 +3865,6 @@ packages: sisteransi: 1.0.5 dev: true - /property-information@6.4.0: - resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} - dev: true - /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true @@ -4312,14 +3938,6 @@ packages: picomatch: 2.3.1 dev: true - /redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - dev: true - /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -4334,54 +3952,6 @@ packages: engines: {node: '>=6'} dev: true - /rehype-format@5.0.0: - resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} - dependencies: - '@types/hast': 3.0.3 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-phrasing: 3.0.1 - hast-util-whitespace: 3.0.0 - html-whitespace-sensitive-tag-names: 3.0.0 - rehype-minify-whitespace: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: true - - /rehype-minify-whitespace@6.0.0: - resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} - dependencies: - '@types/hast': 3.0.3 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-whitespace: 3.0.0 - unist-util-is: 6.0.0 - dev: true - - /rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - dependencies: - '@types/hast': 3.0.3 - hast-util-from-html: 2.0.1 - unified: 11.0.4 - dev: true - - /rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - dependencies: - '@types/hast': 3.0.3 - hast-util-to-html: 9.0.0 - unified: 11.0.4 - dev: true - - /rehype@13.0.1: - resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} - dependencies: - '@types/hast': 3.0.3 - rehype-parse: 9.0.0 - rehype-stringify: 10.0.0 - unified: 11.0.4 - dev: true - /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true @@ -4701,10 +4271,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: true - /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: @@ -4830,13 +4396,6 @@ packages: safe-buffer: 5.2.1 dev: true - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4866,13 +4425,6 @@ packages: engines: {node: '>=12'} dev: true - /strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: @@ -4908,11 +4460,6 @@ packages: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} dev: false - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - /temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} @@ -4986,14 +4533,6 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: true - - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: true - /trouter@3.2.1: resolution: {integrity: sha512-oY3CmIiEYOe1YMEzh++I67lrNOUldtCeuLL0vRPydvQLHZpSJ03B5dgDFlpFsiriMq6e//NDjjopjUzXOztHow==} engines: {node: '>=6'} @@ -5105,18 +4644,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - dependencies: - '@types/unist': 3.0.2 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 6.0.1 - dev: true - /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -5124,39 +4651,6 @@ packages: crypto-random-string: 4.0.0 dev: true - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - dependencies: - '@types/unist': 3.0.2 - dev: true - - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - dependencies: - '@types/unist': 3.0.2 - dev: true - - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - dependencies: - '@types/unist': 3.0.2 - dev: true - - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - dev: true - - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - dev: true - /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -5183,28 +4677,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 - dev: true - - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - dev: true - - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - dev: true - /vite-node@1.2.0(@types/node@20.11.2)(supports-color@9.4.0): resolution: {integrity: sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5382,10 +4854,6 @@ packages: - debug dev: true - /web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: true - /web-resource-inliner@6.0.1: resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} engines: {node: '>=10.0.0'} @@ -5400,11 +4868,6 @@ packages: - encoding dev: true - /web-streams-polyfill@3.3.2: - resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} - engines: {node: '>= 8'} - dev: true - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true @@ -5531,7 +4994,3 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: true - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: true From 9878e56d379cfc7650be26e7071a047db7d2c433 Mon Sep 17 00:00:00 2001 From: Xavi Lee Date: Tue, 16 Jan 2024 23:09:54 +0800 Subject: [PATCH 12/15] docs(zh): sync translations (#3459) Co-authored-by: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> --- docs/zh/guide/markdown.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/docs/zh/guide/markdown.md b/docs/zh/guide/markdown.md index 327a233a..f289317c 100644 --- a/docs/zh/guide/markdown.md +++ b/docs/zh/guide/markdown.md @@ -377,7 +377,7 @@ export default { // Highlighted } ``` -也可以使用 `// [!code hl]` 注释实现行高亮。 +也可以使用 `// [!code highlight]` 注释实现行高亮。 **输入** @@ -386,7 +386,7 @@ export default { // Highlighted export default { data () { return { - msg: 'Highlighted!' // [!code hl] + msg: 'Highlighted!' // [!!code highlight] } } } @@ -399,7 +399,7 @@ export default { export default { data() { return { - msg: 'Highlighted!' // [!code hl] + msg: 'Highlighted!' // [!code highlight] } } } @@ -413,14 +413,12 @@ export default { **输入** -`!code` 后面只需要一个空格,为了展示原始的代码而不被实际渲染,这里有两个空格: - ```` ```js export default { data () { return { - msg: 'Focused!' // [!code focus] + msg: 'Focused!' // [!!code focus] } } } @@ -445,15 +443,13 @@ export default { **输入** -`!code` 后面只需要一个空格,为了展示原始的代码而不被实际渲染,这里有两个空格。 - ```` ```js export default { data () { return { - msg: 'Removed' // [!code --] - msg: 'Added' // [!code ++] + msg: 'Removed' // [!!code --] + msg: 'Added' // [!!code ++] } } } @@ -479,15 +475,13 @@ export default { **输入** -`!code` 后面只需要一个空格,为了展示原始的代码而不被实际渲染,这里有两个空格。 - ```` ```js export default { data () { return { - msg: 'Error', // [!code error] - msg: 'Warning' // [!code warning] + msg: 'Error', // [!!code error] + msg: 'Warning' // [!!code warning] } } } From c22f5d983f3e5d5c4f0ed0683a93ece564487c13 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Wed, 17 Jan 2024 21:09:12 +0530 Subject: [PATCH 13/15] feat: support specifying custom extensions to escape routing (#3466) --- src/shared/shared.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/shared/shared.ts b/src/shared/shared.ts index 6f2b4f70..bf36fdbb 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -175,18 +175,20 @@ export function slash(p: string): string { return p.replace(/\\/g, '/') } +const extraExts = + (typeof process === 'object' && process.env.VITE_EXTRA_EXTENSIONS) || + (import.meta as any).env?.VITE_EXTRA_EXTENSIONS || + '' + // md, html? are intentionally omitted, see treatAsHtml const KNOWN_EXTENSIONS = new Set( ( - '3g2,3gp,7z,aac,abw,ai,aif,aifc,aiff,apng,arc,asf,asr,asx,au,avi,avif,axs,' + - 'azw,bin,bmp,bz,bz2,c,cda,cer,class,crl,crt,csh,css,csv,dcr,der,dll,doc,docx,' + - 'eot,eps,epub,exe,flac,gif,gtar,gz,gzip,ico,ics,ief,jar,jfif,jpe,jpeg,jpg,' + - 'js,json,jsonld,latex,m3u,m4a,man,mdb,mht,mhtml,mid,midi,mjs,mov,mp2,mp3,mp4,' + - 'mpa,mpe,mpeg,mpg,mpkg,mpp,odp,ods,odt,oga,ogg,ogv,ogx,opus,otf,p10,p12,p7b,' + - 'p7c,p7m,p7r,p7s,pbm,pdf,pfx,php,pjp,pjpeg,png,ppt,pptx,ps,pub,qt,rar,roff,' + - 'rtf,rtx,ser,sh,spc,svg,swf,t,tar,tcl,tex,texi,texinfo,tgz,tif,tiff,tr,ts,' + - 'tsv,ttf,txt,ua,viv,vivo,vsd,vtt,wav,weba,webm,webp,woff,woff2,xbm,xhtml,' + - 'xls,xlsx,xml,xul,yaml,yml,zip,conf' + '3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,' + + 'eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,' + + 'mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,' + + 'p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,' + + 'tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip' + + (extraExts && typeof extraExts === 'string' ? ',' + extraExts : '') ).split(',') ) From d529ed49756841f055024c559d09875501bc6d76 Mon Sep 17 00:00:00 2001 From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:22:22 +0000 Subject: [PATCH 14/15] fix(theme): hover color for code links inside custom containers (#3467) --- .../styles/components/custom-block.css | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/client/theme-default/styles/components/custom-block.css b/src/client/theme-default/styles/components/custom-block.css index e40b37e5..f4527868 100644 --- a/src/client/theme-default/styles/components/custom-block.css +++ b/src/client/theme-default/styles/components/custom-block.css @@ -18,7 +18,8 @@ color: var(--vp-c-brand-1); } -.custom-block.info a:hover { +.custom-block.info a:hover, +.custom-block.info a:hover > code { color: var(--vp-c-brand-2); } @@ -37,7 +38,8 @@ color: var(--vp-c-tip-1); } -.custom-block.tip a:hover { +.custom-block.tip a:hover, +.custom-block.tip a:hover > code { color: var(--vp-c-tip-2); } @@ -56,7 +58,8 @@ color: var(--vp-c-warning-1); } -.custom-block.warning a:hover { +.custom-block.warning a:hover, +.custom-block.warning a:hover > code { color: var(--vp-c-warning-2); } @@ -75,7 +78,8 @@ color: var(--vp-c-danger-1); } -.custom-block.danger a:hover { +.custom-block.danger a:hover, +.custom-block.danger a:hover > code { color: var(--vp-c-danger-2); } @@ -93,7 +97,8 @@ color: var(--vp-c-brand-1); } -.custom-block.details a:hover { +.custom-block.details a:hover, +.custom-block.details a:hover > code { color: var(--vp-c-brand-2); } From a1fb363a8b6ea2cbf34f8e687aef8bd18ae8ea7c Mon Sep 17 00:00:00 2001 From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:43:55 +0000 Subject: [PATCH 15/15] docs: GitHub Pages supports clean URLs (#3468) --- docs/guide/routing.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guide/routing.md b/docs/guide/routing.md index 641807e4..945e63c0 100644 --- a/docs/guide/routing.md +++ b/docs/guide/routing.md @@ -129,9 +129,9 @@ To serve clean URLs with VitePress, server-side support is required. By default, VitePress resolves inbound links to URLs ending with `.html`. However, some users may prefer "Clean URLs" without the `.html` extension - for example, `example.com/path` instead of `example.com/path.html`. -Some servers or hosting platforms (for example Netlify or Vercel) provide the ability to map a URL like `/foo` to `/foo.html` if it exists, without a redirect: +Some servers or hosting platforms (for example Netlify, Vercel, GitHub Pages) provide the ability to map a URL like `/foo` to `/foo.html` if it exists, without a redirect: -- Netlify supports this by default. +- Netlify and GitHub Pages support this by default. - Vercel requires enabling the [`cleanUrls` option in `vercel.json`](https://vercel.com/docs/concepts/projects/project-configuration#cleanurls). If this feature is available to you, you can then also enable VitePress' own [`cleanUrls`](../reference/site-config#cleanurls) config option so that: @@ -139,7 +139,7 @@ If this feature is available to you, you can then also enable VitePress' own [`c - Inbound links between pages are generated without the `.html` extension. - If current path ends with `.html`, the router will perform a client-side redirect to the extension-less path. -If, however, you cannot configure your server with such support (e.g. GitHub pages), you will have to manually resort to the following directory structure: +If, however, you cannot configure your server with such support, you will have to manually resort to the following directory structure: ``` .