From f0b1574baa4eef29f7c676d04d18634b19a071ad Mon Sep 17 00:00:00 2001 From: Goff <71051032+goffxnca@users.noreply.github.com> Date: Mon, 14 Feb 2022 22:27:50 +0700 Subject: [PATCH 0001/1136] re-positioning icon try_it_in_playground (#1523) --- .vitepress/theme/styles/inline-demo.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.vitepress/theme/styles/inline-demo.css b/.vitepress/theme/styles/inline-demo.css index 621857594a..d13ba90dd0 100644 --- a/.vitepress/theme/styles/inline-demo.css +++ b/.vitepress/theme/styles/inline-demo.css @@ -1,5 +1,6 @@ -.vt-doc a[href^="https://sfc.vuejs.org/"]:before { - content: "▶"; +.vt-doc a[href^="https://sfc.vuejs.org/"]:before +{ + content: '▶'; width: 20px; height: 20px; display: inline-block; @@ -11,8 +12,8 @@ border: 2px solid var(--vt-c-green); margin-right: 8px; margin-left: 4px; - line-height: 16px; - padding-left: 4px; + line-height: 15px; + padding-left: 4.5px; font-size: 11px; } From 98a0eef55889d4c362f15d56a9eda549c7d04fd6 Mon Sep 17 00:00:00 2001 From: CruderKat <71131016+BirajMainali@users.noreply.github.com> Date: Mon, 14 Feb 2022 21:19:41 +0545 Subject: [PATCH 0002/1136] fix : typo (#1534) --- src/guide/scaling-up/sfc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guide/scaling-up/sfc.md b/src/guide/scaling-up/sfc.md index 09ca7855e8..c9ee373a67 100644 --- a/src/guide/scaling-up/sfc.md +++ b/src/guide/scaling-up/sfc.md @@ -74,7 +74,7 @@ In actual projects, we typically integrate the SFC compiler with a build tool su Some users coming from a traditional web development background may have the concern that SFCs are mixing different concerns in the same place - which HTML/CSS/JS were supposed to separate! -To answer this question, it is important for us to agree that **separation of concerns is not equal to separation of file types.** The ultimate goal of engineering principles is to improve maintainability of codebases. Separation of concerns, when applied dogmatically as separation of file types, does not help us reach that goal in the context of increasingly complex frontend applications. +To answer this question, it is important for us to agree that **separation of concerns is not equal to the separation of file types.** The ultimate goal of engineering principles is to improve the maintainability of codebases. Separation of concerns, when applied dogmatically as separation of file types, does not help us reach that goal in the context of increasingly complex frontend applications. In modern UI development, we have found that instead of dividing the codebase into three huge layers that interweave with one another, it makes much more sense to divide them into loosely-coupled components and compose them. Inside a component, its template, logic, and styles are inherently coupled, and collocating them actually makes the component more cohesive and maintainable. From 028fff7d30a7dbcb4cf1d2c5a35382bf43d55e23 Mon Sep 17 00:00:00 2001 From: Yussif Mohammed Date: Mon, 14 Feb 2022 16:11:09 +0000 Subject: [PATCH 0003/1136] Update quick-start.md (#1544) Updated "npm init vue@latest" prompt options --- src/guide/quick-start.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/guide/quick-start.md b/src/guide/quick-start.md index 35c5feaede..a6545752d5 100644 --- a/src/guide/quick-start.md +++ b/src/guide/quick-start.md @@ -33,7 +33,10 @@ This command will install and execute [create-vue](https://github.com/vuejs/crea Add JSX Support? No / Yes Add Vue Router for Single Page Application development? No / Yes Add Pinia for state management? No / Yes - Add Cypress for testing? No / Yes + Add Vitest for Unit testing? No / Yes + Add Cypress for both Unit and End-to-End testing? No / Yes + Add ESLint for code quality? No / Yes + Add Prettier for code formating? No / Yes Scaffolding project in ./<your-project-name>... Done. From 38d8292e74ea27d22dc58056a0a4cb171b664075 Mon Sep 17 00:00:00 2001 From: Jess Date: Mon, 14 Feb 2022 11:12:18 -0500 Subject: [PATCH 0004/1136] chore: fixing type errors with core members json (#1529) --- src/about/team/Member.ts | 3 ++- src/about/team/members-core.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/about/team/Member.ts b/src/about/team/Member.ts index 71f7b3888c..f124977e25 100644 --- a/src/about/team/Member.ts +++ b/src/about/team/Member.ts @@ -9,7 +9,8 @@ export interface Member { languages: string[] website?: Link socials: Socials - sponsor?: string + sponsor?: boolean | string + reposPersonal?: string[] } export interface Link { diff --git a/src/about/team/members-core.json b/src/about/team/members-core.json index 03d577461b..07f6f1077e 100644 --- a/src/about/team/members-core.json +++ b/src/about/team/members-core.json @@ -179,7 +179,7 @@ "name": "Rahul Kadyan", "title": "Software Engineer", "company": "Grammarly", - "companyList": "https://grammarly.com/", + "companyLink": "https://grammarly.com/", "projects": [ { "label": "vuejs/core", From 1fe88c4535cbbf64ca1c86c5d1524820ca373532 Mon Sep 17 00:00:00 2001 From: wxsm Date: Tue, 15 Feb 2022 13:23:15 +0800 Subject: [PATCH 0005/1136] Update registration.md (#1547) --- src/guide/components/registration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guide/components/registration.md b/src/guide/components/registration.md index 4cdbc90cb8..11f311d47e 100644 --- a/src/guide/components/registration.md +++ b/src/guide/components/registration.md @@ -49,7 +49,7 @@ Globally registered components can be used in the template of any component with ``` -This even applies to all subcomponents, meaning all three of these components will also be available _inside each other_. +This evenly applies to all subcomponents, meaning all three of these components will also be available _inside each other_. ## Local Registration From 4429b73a16dfa80b3a970e2bba0e17b4aefd3555 Mon Sep 17 00:00:00 2001 From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Tue, 15 Feb 2022 05:23:49 +0000 Subject: [PATCH 0006/1136] Migrate changes from master to main (#1545) --- src/api/built-in-special-attributes.md | 2 +- src/api/sfc-spec.md | 2 +- src/ecosystem/themes/themes.json | 4 ++-- src/guide/essentials/forms.md | 4 +++- src/guide/extras/web-components.md | 4 ++-- src/guide/scaling-up/sfc.md | 2 +- src/guide/scaling-up/tooling.md | 2 ++ src/guide/typescript/overview.md | 2 +- src/style-guide/rules-use-with-caution.md | 2 +- 9 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/api/built-in-special-attributes.md b/src/api/built-in-special-attributes.md index 7863ac5276..aa03745105 100644 --- a/src/api/built-in-special-attributes.md +++ b/src/api/built-in-special-attributes.md @@ -4,7 +4,7 @@ The `key` special attribute is primarily used as a hint for Vue's virtual DOM algorithm to identify vnodes when diffing the new list of nodes against the old list. -- **Expects:** `number | string` +- **Expects:** `number | string | symbol` - **Details** diff --git a/src/api/sfc-spec.md b/src/api/sfc-spec.md index a9990719a9..5747228c28 100644 --- a/src/api/sfc-spec.md +++ b/src/api/sfc-spec.md @@ -36,7 +36,7 @@ export default { ### ` @@ -265,6 +265,9 @@ html:not(.dark) .accent, font-size: 16px; margin: 18px 0 30px; } + #special-sponsor span { + margin: 0; + } #special-sponsor img { display: block; margin: 2px auto 1px; From f54aab387042460e8e24c1ff9a82d5fe8ac6b656 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 17 Aug 2022 17:57:32 +0800 Subject: [PATCH 0258/1136] upgrade to vitepress v1 --- package.json | 5 +- pnpm-lock.yaml | 388 ++++++++++++++++++++++------------ src/examples/index.md | 2 +- src/guide/introduction.md | 2 +- src/index.md | 2 +- src/sponsor/index.md | 2 +- src/tutorial/TutorialRepl.vue | 2 +- src/tutorial/index.md | 2 +- src/tutorial/tutorial.data.ts | 2 +- tsconfig.json | 2 +- 10 files changed, 259 insertions(+), 150 deletions(-) diff --git a/package.json b/package.json index 70649648fd..2ee73ef632 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,13 @@ "@vue/theme": "^1.0.4", "dynamics.js": "^1.1.5", "gsap": "^3.9.0", - "vitepress": "^0.22.4", + "vitepress": "1.0.0-alpha.8", "vue": "^3.2.37" }, "devDependencies": { "@types/markdown-it": "^12.2.3", - "@types/node": "^16.9.1" + "@types/node": "^16.9.1", + "terser": "^5.14.2" }, "pnpm": { "peerDependencyRules": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4b92cbc55..bbd9ece6ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,8 @@ specifiers: '@vue/theme': ^1.0.4 dynamics.js: ^1.1.5 gsap: ^3.9.0 - vitepress: ^0.22.4 + terser: ^5.14.2 + vitepress: 1.0.0-alpha.8 vue: ^3.2.37 dependencies: @@ -15,40 +16,22 @@ dependencies: '@vue/theme': 1.0.4_vue@3.2.37 dynamics.js: 1.1.5 gsap: 3.9.0 - vitepress: 0.22.4 + vitepress: 1.0.0-alpha.8_terser@5.14.2 vue: 3.2.37 devDependencies: '@types/markdown-it': 12.2.3 '@types/node': 16.10.3 + terser: 5.14.2 packages: - /@algolia/autocomplete-core/1.5.2: - resolution: {integrity: sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==} - dependencies: - '@algolia/autocomplete-shared': 1.5.2 - dev: false - /@algolia/autocomplete-core/1.7.1: resolution: {integrity: sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg==} dependencies: '@algolia/autocomplete-shared': 1.7.1 dev: false - /@algolia/autocomplete-preset-algolia/1.5.2_algoliasearch@4.10.5: - resolution: {integrity: sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==} - peerDependencies: - '@algolia/client-search': ^4.9.1 - algoliasearch: ^4.9.1 - peerDependenciesMeta: - '@algolia/client-search': - optional: true - dependencies: - '@algolia/autocomplete-shared': 1.5.2 - algoliasearch: 4.10.5 - dev: false - /@algolia/autocomplete-preset-algolia/1.7.1_algoliasearch@4.10.5: resolution: {integrity: sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==} peerDependencies: @@ -62,10 +45,6 @@ packages: algoliasearch: 4.10.5 dev: false - /@algolia/autocomplete-shared/1.5.2: - resolution: {integrity: sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==} - dev: false - /@algolia/autocomplete-shared/1.7.1: resolution: {integrity: sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg==} dev: false @@ -181,18 +160,18 @@ packages: to-fast-properties: 2.0.0 dev: false - /@docsearch/css/3.0.0: - resolution: {integrity: sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==} - dev: false - /@docsearch/css/3.1.1: resolution: {integrity: sha512-utLgg7E1agqQeqCJn05DWC7XXMk4tMUUnL7MZupcknRu2OzGN13qwey2qA/0NAKkVBGugiWtON0+rlU0QIPojg==} dev: false - /@docsearch/js/3.0.0: - resolution: {integrity: sha512-j3tUJWlgW3slYqzGB8fm7y05kh2qqrIK1dZOXHeMUm/5gdKE85fiz/ltfCPMDFb/MXF+bLZChJXSMzqY0Ck30Q==} + /@docsearch/css/3.2.1: + resolution: {integrity: sha512-gaP6TxxwQC+K8D6TRx5WULUWKrcbzECOPA2KCVMuI+6C7dNiGUk5yXXzVhc5sld79XKYLnO9DRTI4mjXDYkh+g==} + dev: false + + /@docsearch/js/3.1.1: + resolution: {integrity: sha512-bt7l2aKRoSnLUuX+s4LVQ1a7AF2c9myiZNv5uvQCePG5tpvVGpwrnMwqVXOUJn9q6FwVVhOrQMO/t+QmnnAEUw==} dependencies: - '@docsearch/react': 3.0.0 + '@docsearch/react': 3.1.1 preact: 10.5.14 transitivePeerDependencies: - '@algolia/client-search' @@ -201,10 +180,10 @@ packages: - react-dom dev: false - /@docsearch/js/3.1.1: - resolution: {integrity: sha512-bt7l2aKRoSnLUuX+s4LVQ1a7AF2c9myiZNv5uvQCePG5tpvVGpwrnMwqVXOUJn9q6FwVVhOrQMO/t+QmnnAEUw==} + /@docsearch/js/3.2.1: + resolution: {integrity: sha512-H1PekEtSeS0msetR2YGGey2w7jQ2wAKfGODJvQTygSwMgUZ+2DHpzUgeDyEBIXRIfaBcoQneqrzsljM62pm6Xg==} dependencies: - '@docsearch/react': 3.1.1 + '@docsearch/react': 3.2.1 preact: 10.5.14 transitivePeerDependencies: - '@algolia/client-search' @@ -213,12 +192,12 @@ packages: - react-dom dev: false - /@docsearch/react/3.0.0: - resolution: {integrity: sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg==} + /@docsearch/react/3.1.1: + resolution: {integrity: sha512-cfoql4qvtsVRqBMYxhlGNpvyy/KlCoPqjIsJSZYqYf9AplZncKjLBTcwBu6RXFMVCe30cIFljniI4OjqAU67pQ==} peerDependencies: - '@types/react': '>= 16.8.0 < 18.0.0' - react: '>= 16.8.0 < 18.0.0' - react-dom: '>= 16.8.0 < 18.0.0' + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' peerDependenciesMeta: '@types/react': optional: true @@ -227,16 +206,16 @@ packages: react-dom: optional: true dependencies: - '@algolia/autocomplete-core': 1.5.2 - '@algolia/autocomplete-preset-algolia': 1.5.2_algoliasearch@4.10.5 - '@docsearch/css': 3.0.0 + '@algolia/autocomplete-core': 1.7.1 + '@algolia/autocomplete-preset-algolia': 1.7.1_algoliasearch@4.10.5 + '@docsearch/css': 3.1.1 algoliasearch: 4.10.5 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docsearch/react/3.1.1: - resolution: {integrity: sha512-cfoql4qvtsVRqBMYxhlGNpvyy/KlCoPqjIsJSZYqYf9AplZncKjLBTcwBu6RXFMVCe30cIFljniI4OjqAU67pQ==} + /@docsearch/react/3.2.1: + resolution: {integrity: sha512-EzTQ/y82s14IQC5XVestiK/kFFMe2aagoYFuTAIfIb/e+4FU7kSMKonRtLwsCiLQHmjvNQq+HO+33giJ5YVtaQ==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -251,12 +230,52 @@ packages: dependencies: '@algolia/autocomplete-core': 1.7.1 '@algolia/autocomplete-preset-algolia': 1.7.1_algoliasearch@4.10.5 - '@docsearch/css': 3.1.1 + '@docsearch/css': 3.2.1 algoliasearch: 4.10.5 transitivePeerDependencies: - '@algolia/client-search' dev: false + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.15 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.15 + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + /@types/linkify-it/3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true @@ -276,14 +295,18 @@ packages: resolution: {integrity: sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==} dev: true - /@vitejs/plugin-vue/2.3.2_vite@2.9.8+vue@3.2.37: - resolution: {integrity: sha512-umyypfSHS4kQLdYAnJHhaASq7FRzNCdvcRoQ3uYGNk1/M4a+hXUd7ysN7BLhCrWH6uBokyCkFeUAaFDzSaaSrQ==} - engines: {node: '>=12.0.0'} + /@types/web-bluetooth/0.0.15: + resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} + dev: false + + /@vitejs/plugin-vue/3.0.3_vite@3.0.8+vue@3.2.37: + resolution: {integrity: sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^2.5.10 + vite: ^3.0.0 vue: ^3.2.25 dependencies: - vite: 2.9.8 + vite: 3.0.8_terser@5.14.2 vue: 3.2.37 dev: false @@ -325,6 +348,10 @@ packages: '@vue/shared': 3.2.37 dev: false + /@vue/devtools-api/6.2.1: + resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==} + dev: false + /@vue/reactivity-transform/3.2.37: resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: @@ -412,6 +439,22 @@ packages: vue-demi: 0.12.1_vue@3.2.37 dev: false + /@vueuse/core/9.1.0_vue@3.2.37: + resolution: {integrity: sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==} + dependencies: + '@types/web-bluetooth': 0.0.15 + '@vueuse/metadata': 9.1.0 + '@vueuse/shared': 9.1.0_vue@3.2.37 + vue-demi: 0.12.1_vue@3.2.37 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata/9.1.0: + resolution: {integrity: sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==} + dev: false + /@vueuse/shared/7.4.0_vue@3.2.37: resolution: {integrity: sha512-x5Jn6jUB8gS1mGnVCoNWFEpAoDkm2QwtacZTUgKMn0Ow8tlUBKIfGVOt4vn9qZB10froED/ARHEj79WKLXRieA==} peerDependencies: @@ -427,6 +470,20 @@ packages: vue-demi: 0.12.1_vue@3.2.37 dev: false + /@vueuse/shared/9.1.0_vue@3.2.37: + resolution: {integrity: sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==} + dependencies: + vue-demi: 0.12.1_vue@3.2.37 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + /algoliasearch/4.10.5: resolution: {integrity: sha512-KmH2XkiN+8FxhND4nWFbQDkIoU6g2OjfeU9kIv4Lb+EiOOs3Gpp7jvd+JnatsCisAZsnWQdjd7zVlW7I/85QvQ==} dependencies: @@ -450,6 +507,16 @@ packages: resolution: {integrity: sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==} dev: false + /body-scroll-lock/4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + dev: false + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /csstype/2.6.18: resolution: {integrity: sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==} dev: false @@ -458,8 +525,8 @@ packages: resolution: {integrity: sha1-uQvcM2Bc7+ZSuEFucB95v27vzjI=} dev: false - /esbuild-android-64/0.14.38: - resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==} + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -467,8 +534,8 @@ packages: dev: false optional: true - /esbuild-android-arm64/0.14.38: - resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==} + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -476,8 +543,8 @@ packages: dev: false optional: true - /esbuild-darwin-64/0.14.38: - resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==} + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -485,8 +552,8 @@ packages: dev: false optional: true - /esbuild-darwin-arm64/0.14.38: - resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==} + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -494,8 +561,8 @@ packages: dev: false optional: true - /esbuild-freebsd-64/0.14.38: - resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==} + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -503,8 +570,8 @@ packages: dev: false optional: true - /esbuild-freebsd-arm64/0.14.38: - resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==} + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -512,8 +579,8 @@ packages: dev: false optional: true - /esbuild-linux-32/0.14.38: - resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==} + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -521,8 +588,8 @@ packages: dev: false optional: true - /esbuild-linux-64/0.14.38: - resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==} + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -530,8 +597,8 @@ packages: dev: false optional: true - /esbuild-linux-arm/0.14.38: - resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==} + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -539,8 +606,8 @@ packages: dev: false optional: true - /esbuild-linux-arm64/0.14.38: - resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==} + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -548,8 +615,8 @@ packages: dev: false optional: true - /esbuild-linux-mips64le/0.14.38: - resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==} + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -557,8 +624,8 @@ packages: dev: false optional: true - /esbuild-linux-ppc64le/0.14.38: - resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==} + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -566,8 +633,8 @@ packages: dev: false optional: true - /esbuild-linux-riscv64/0.14.38: - resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==} + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -575,8 +642,8 @@ packages: dev: false optional: true - /esbuild-linux-s390x/0.14.38: - resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==} + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -584,8 +651,8 @@ packages: dev: false optional: true - /esbuild-netbsd-64/0.14.38: - resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==} + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -593,8 +660,8 @@ packages: dev: false optional: true - /esbuild-openbsd-64/0.14.38: - resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==} + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -602,8 +669,8 @@ packages: dev: false optional: true - /esbuild-sunos-64/0.14.38: - resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==} + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -611,8 +678,8 @@ packages: dev: false optional: true - /esbuild-windows-32/0.14.38: - resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==} + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -620,8 +687,8 @@ packages: dev: false optional: true - /esbuild-windows-64/0.14.38: - resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==} + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -629,8 +696,8 @@ packages: dev: false optional: true - /esbuild-windows-arm64/0.14.38: - resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==} + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -638,32 +705,33 @@ packages: dev: false optional: true - /esbuild/0.14.38: - resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==} + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.38 - esbuild-android-arm64: 0.14.38 - esbuild-darwin-64: 0.14.38 - esbuild-darwin-arm64: 0.14.38 - esbuild-freebsd-64: 0.14.38 - esbuild-freebsd-arm64: 0.14.38 - esbuild-linux-32: 0.14.38 - esbuild-linux-64: 0.14.38 - esbuild-linux-arm: 0.14.38 - esbuild-linux-arm64: 0.14.38 - esbuild-linux-mips64le: 0.14.38 - esbuild-linux-ppc64le: 0.14.38 - esbuild-linux-riscv64: 0.14.38 - esbuild-linux-s390x: 0.14.38 - esbuild-netbsd-64: 0.14.38 - esbuild-openbsd-64: 0.14.38 - esbuild-sunos-64: 0.14.38 - esbuild-windows-32: 0.14.38 - esbuild-windows-64: 0.14.38 - esbuild-windows-arm64: 0.14.38 + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 dev: false /estree-walker/2.0.2: @@ -693,8 +761,8 @@ packages: function-bind: 1.1.1 dev: false - /is-core-module/2.8.1: - resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: false @@ -736,31 +804,44 @@ packages: source-map-js: 1.0.2 dev: false - /preact/10.5.14: - resolution: {integrity: sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==} + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: false - /prismjs/1.25.0: - resolution: {integrity: sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==} + /preact/10.5.14: + resolution: {integrity: sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==} dev: false - /resolve/1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.8.1 + is-core-module: 2.10.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: false - /rollup/2.60.2: - resolution: {integrity: sha512-1Bgjpq61sPjgoZzuiDSGvbI1tD91giZABgjCQBKM5aYLnzjq52GoDuWVwT/cm/MCxCMPU8gqQvkj8doQ5C8Oqw==} + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: false + /shiki/0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + dependencies: + jsonc-parser: 3.0.0 + vscode-oniguruma: 1.6.1 + vscode-textmate: 6.0.0 + dev: false + /shiki/0.9.15: resolution: {integrity: sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==} dependencies: @@ -774,10 +855,15 @@ packages: engines: {node: '>=0.10.0'} dev: false + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -788,19 +874,30 @@ packages: engines: {node: '>= 0.4'} dev: false + /terser/5.14.2: + resolution: {integrity: sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.0 + commander: 2.20.3 + source-map-support: 0.5.21 + /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: false - /vite/2.9.8: - resolution: {integrity: sha512-zsBGwn5UT3YS0NLSJ7hnR54+vUKfgzMUh/Z9CxF1YKEBVIe213+63jrFLmZphgGI5zXwQCSmqIdbPuE8NJywPw==} - engines: {node: '>=12.2.0'} + /vite/3.0.8_terser@5.14.2: + resolution: {integrity: sha512-AOZ4eN7mrkJiOLuw8IA7piS4IdOQyQCA81GxGsAQvAZzMRi9ZwGB3TOaYsj4uLAWK46T5L4AfQ6InNGlxX30IQ==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: less: '*' sass: '*' stylus: '*' + terser: ^5.4.0 peerDependenciesMeta: less: optional: true @@ -808,34 +905,41 @@ packages: optional: true stylus: optional: true + terser: + optional: true dependencies: - esbuild: 0.14.38 - postcss: 8.4.13 - resolve: 1.22.0 - rollup: 2.60.2 + esbuild: 0.14.54 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.3 + terser: 5.14.2 optionalDependencies: fsevents: 2.3.2 dev: false - /vitepress/0.22.4: - resolution: {integrity: sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==} - engines: {node: '>=14.0.0'} + /vitepress/1.0.0-alpha.8_terser@5.14.2: + resolution: {integrity: sha512-kTRN5DCagvMqr9OjylSV9/waGg0IHrxL0hBVuJoz7ykleZq2qR02n5CaiFq5QrSB/VRBGqiVsFQzet9vJsXS8g==} hasBin: true dependencies: - '@docsearch/css': 3.0.0 - '@docsearch/js': 3.0.0 - '@vitejs/plugin-vue': 2.3.2_vite@2.9.8+vue@3.2.37 - prismjs: 1.25.0 - vite: 2.9.8 + '@docsearch/css': 3.2.1 + '@docsearch/js': 3.2.1 + '@vitejs/plugin-vue': 3.0.3_vite@3.0.8+vue@3.2.37 + '@vue/devtools-api': 6.2.1 + '@vueuse/core': 9.1.0_vue@3.2.37 + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.11.1 + vite: 3.0.8_terser@5.14.2 vue: 3.2.37 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' + - '@vue/composition-api' - less - react - react-dom - sass - stylus + - terser dev: false /vscode-oniguruma/1.6.1: @@ -846,6 +950,10 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: false + /vscode-textmate/6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + dev: false + /vue-demi/0.12.1_vue@3.2.37: resolution: {integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==} engines: {node: '>=12'} diff --git a/src/examples/index.md b/src/examples/index.md index 0b3fcfc854..6dc407ddd3 100644 --- a/src/examples/index.md +++ b/src/examples/index.md @@ -8,7 +8,7 @@ returnToTop: false diff --git a/src/sponsor/index.md b/src/sponsor/index.md index 52042ea32e..1b71fcf7b1 100644 --- a/src/sponsor/index.md +++ b/src/sponsor/index.md @@ -7,7 +7,7 @@ vuejobs: false --- # Become a Vue.js Sponsor diff --git a/src/tutorial/TutorialRepl.vue b/src/tutorial/TutorialRepl.vue index e524e625b6..a0ee736822 100644 --- a/src/tutorial/TutorialRepl.vue +++ b/src/tutorial/TutorialRepl.vue @@ -8,7 +8,7 @@ import { onHashChange } from '../examples/utils' import '@vue/repl/style.css' -import PreferenceSwitch from '/@theme/components/PreferenceSwitch.vue' +import PreferenceSwitch from '@theme/components/PreferenceSwitch.vue' import { VTFlyout, VTIconChevronLeft, diff --git a/src/tutorial/index.md b/src/tutorial/index.md index e705f2cdb0..3d25daf7e3 100644 --- a/src/tutorial/index.md +++ b/src/tutorial/index.md @@ -9,7 +9,7 @@ returnToTop: false diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index 525fa44d26..dead8883b0 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -18,8 +18,7 @@ export default Object.assign({}, VPTheme, { return h(VPTheme.Layout, null, { // banner: () => h(Banner), 'sidebar-top': () => h(PreferenceSwitch), - 'aside-mid': () => h(SponsorsAside), - 'aside-bottom': () => h(VueJobs) + 'aside-mid': () => h(SponsorsAside) }) }, enhanceApp({ app }: { app: App }) { @@ -27,5 +26,6 @@ export default Object.assign({}, VPTheme, { app.provide('prefer-sfc', preferSFC) app.provide('filter-headers', filterHeadersByPreference) app.component('VueSchoolLink', VueSchoolLink) + app.component('VueJobs', VueJobs) } }) diff --git a/src/sponsor/index.md b/src/sponsor/index.md index 1b71fcf7b1..ed73d6ead7 100644 --- a/src/sponsor/index.md +++ b/src/sponsor/index.md @@ -3,7 +3,6 @@ sidebar: false ads: false editLink: false sponsors: false -vuejobs: false --- ``` -Note if you want to use this technique in TypeScript files instead of Vue SFCs, you need to enable Volar's [Takeover Mode](./overview.html#takeover-mode). +Note if you want to use this technique in TypeScript files instead of Vue SFCs, you need to enable Volar's [Takeover Mode](./overview.html#volar-takeover-mode). From c94694b1070828fd7455c04437979a8e73a8483a Mon Sep 17 00:00:00 2001 From: de-oz <101826623+de-oz@users.noreply.github.com> Date: Mon, 29 Aug 2022 08:48:56 +0300 Subject: [PATCH 0272/1136] Add missing possessive apostrophes (#1940) --- src/guide/essentials/event-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guide/essentials/event-handling.md b/src/guide/essentials/event-handling.md index 4779f6bbe9..dc2bcab5fd 100644 --- a/src/guide/essentials/event-handling.md +++ b/src/guide/essentials/event-handling.md @@ -251,7 +251,7 @@ To address this problem, Vue provides **event modifiers** for `v-on`. Recall tha ``` ::: tip -Order matters when using modifiers because the relevant code is generated in the same order. Therefore using `@click.prevent.self` will prevent **clicks default action on the element itself and its children** while `@click.self.prevent` will only prevent clicks default action on the element itself. +Order matters when using modifiers because the relevant code is generated in the same order. Therefore using `@click.prevent.self` will prevent **click's default action on the element itself and its children**, while `@click.self.prevent` will only prevent click's default action on the element itself. ::: The `.capture`, `.once`, and `.passive` modifiers mirror the [options of the native `addEventListener` method](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#options): From eea4c3aa20db8395980e59d3bab20ba04344d447 Mon Sep 17 00:00:00 2001 From: Yuxuan Lin Date: Mon, 29 Aug 2022 23:42:21 +0800 Subject: [PATCH 0273/1136] docs: refine internal links (#1943) --- src/guide/best-practices/performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guide/best-practices/performance.md b/src/guide/best-practices/performance.md index 84868a16fe..1bac8f9b75 100644 --- a/src/guide/best-practices/performance.md +++ b/src/guide/best-practices/performance.md @@ -41,7 +41,7 @@ There are many framework-agnostic aspects for optimizing page load performance - ### Choosing the Right Architecture -If your use case is sensitive to page load performance, avoid shipping it as a pure client-side SPA. You want your server to be directly sending HTML containing the content the users want to see. Pure client-side rendering suffers from slow time-to-content. This can be mitigated with [Server-Side Rendering (SSR)](https://vuejs.org/guide/extras/ways-of-using-vue.html#fullstack-ssr) or [Static Site Generation (SSG)](https://vuejs.org/guide/extras/ways-of-using-vue.html#jamstack-ssg). Check out the [SSR Guide](/guide/scaling-up/ssr.html) to learn about performing SSR with Vue. If your app doesn't have rich interactivity requirements, you can also use a traditional backend server to render the HTML and enhance it with Vue on the client. +If your use case is sensitive to page load performance, avoid shipping it as a pure client-side SPA. You want your server to be directly sending HTML containing the content the users want to see. Pure client-side rendering suffers from slow time-to-content. This can be mitigated with [Server-Side Rendering (SSR)](/guide/extras/ways-of-using-vue.html#fullstack-ssr) or [Static Site Generation (SSG)](/guide/extras/ways-of-using-vue.html#jamstack-ssg). Check out the [SSR Guide](/guide/scaling-up/ssr.html) to learn about performing SSR with Vue. If your app doesn't have rich interactivity requirements, you can also use a traditional backend server to render the HTML and enhance it with Vue on the client. If your main application has to be an SPA, but has marketing pages (landing, about, blog), ship them separately! Your marketing pages should ideally be deployed as static HTML with minimal JS, by using SSG. From 814a9b338f8555b3d23edadaf1f260d2e32fee07 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 30 Aug 2022 18:21:25 +0800 Subject: [PATCH 0274/1136] adapt vitepress alpha.12 --- .vitepress/config.ts | 3 +- .vitepress/headerMdPlugin.ts | 50 ++-- .vitepress/jobsMdPlugin.ts | 5 +- .vitepress/theme/components/preferences.ts | 4 +- package.json | 6 +- pnpm-lock.yaml | 264 ++++++++------------- 6 files changed, 136 insertions(+), 196 deletions(-) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 59982b6fe8..12f097aa86 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -639,8 +639,7 @@ export default defineConfigWithTheme({ markdown: { config(md) { - md.use(headerPlugin) - .use(jobsPlugin) + md.use(headerPlugin).use(jobsPlugin) } }, diff --git a/.vitepress/headerMdPlugin.ts b/.vitepress/headerMdPlugin.ts index 677b9c8063..2a0db53481 100644 --- a/.vitepress/headerMdPlugin.ts +++ b/.vitepress/headerMdPlugin.ts @@ -11,39 +11,47 @@ */ import MarkdownIt from 'markdown-it' -import { MarkdownRenderer } from 'vitepress' +import { Header } from 'vitepress' -declare module 'vitepress' { - interface Header { - compositionOnly?: boolean - optionsOnly?: boolean - } +export interface AugmentedHeader extends Header { + compositionOnly?: boolean + optionsOnly?: boolean } export const headerPlugin = (md: MarkdownIt) => { - const originalOpen = md.renderer.rules.heading_open! - md.renderer.rules.heading_open = (tokens, i, ...rest) => { + md.renderer.rules.heading_open = (tokens, i, options, env, self) => { for (const child of tokens[i + 1].children!) { if (child.type === 'text' && child.content.endsWith('*')) { child.content = child.content.replace(/\s*\*+$/, '') } } - return originalOpen.call(null, tokens, i, ...rest) + return self.renderToken(tokens, i, options) + } + + const render = md.render + md.render = (content, env) => { + const res = render(content, env) + + if (env && env.headers) { + processHeaders(env.headers) + } + + return res } +} - md.renderer.rules.heading_close = (tokens, i, options, _env, self) => { - const headers = (md as MarkdownRenderer).__data?.headers - if (headers) { - const last = headers[headers.length - 1] - if (last.title.endsWith('*')) { - if (last.title.endsWith('**')) { - last.compositionOnly = true - } else { - last.optionsOnly = true - } - last.title = last.title.replace(/\s*\*+$/, '') +function processHeaders(headers: AugmentedHeader[]) { + for (const h of headers) { + if (h.title.endsWith('*')) { + if (h.title.endsWith('**')) { + h.compositionOnly = true + } else { + h.optionsOnly = true } + h.title = h.title.replace(/\s*\*+$/, '') + } + if (h.children) { + processHeaders(h.children) } - return self.renderToken(tokens, i, options) } } diff --git a/.vitepress/jobsMdPlugin.ts b/.vitepress/jobsMdPlugin.ts index 903466fb20..1c48085234 100644 --- a/.vitepress/jobsMdPlugin.ts +++ b/.vitepress/jobsMdPlugin.ts @@ -1,5 +1,4 @@ import MarkdownIt from 'markdown-it' -import { MarkdownRenderer } from 'vitepress'; const excludedPages = [ 'guide/introduction.md', @@ -23,8 +22,8 @@ const excludedPages = [ ] export const jobsPlugin = (md: MarkdownIt) => { - md.renderer.rules.heading_close = (tokens, i, options, _env, self) => { - const relativePath = (md as MarkdownRenderer).__relativePath + md.renderer.rules.heading_close = (tokens, i, options, env, self) => { + const relativePath = env.relativePath const renderedContent = self.renderToken(tokens, i, options) return excludedPages.includes(relativePath) diff --git a/.vitepress/theme/components/preferences.ts b/.vitepress/theme/components/preferences.ts index d8facdb77e..e67279e9d9 100644 --- a/.vitepress/theme/components/preferences.ts +++ b/.vitepress/theme/components/preferences.ts @@ -1,5 +1,5 @@ -import { Header } from 'vitepress' import { ref } from 'vue' +import { AugmentedHeader } from '../../headerMdPlugin' const hasStorage = typeof localStorage !== 'undefined' const get = (key: string, defaultValue = false): boolean => @@ -13,6 +13,6 @@ export const preferComposition = ref(get(preferCompositionKey)) export const preferSFCKey = 'vue-docs-prefer-sfc' export const preferSFC = ref(get(preferSFCKey, true)) -export function filterHeadersByPreference(h: Header) { +export function filterHeadersByPreference(h: AugmentedHeader) { return preferComposition.value ? !h.optionsOnly : !h.compositionOnly } diff --git a/package.json b/package.json index 2ee73ef632..b57d6e2d50 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ }, "dependencies": { "@vue/repl": "^1.2.4", - "@vue/theme": "^1.0.4", + "@vue/theme": "^1.2.1", "dynamics.js": "^1.1.5", "gsap": "^3.9.0", - "vitepress": "1.0.0-alpha.8", - "vue": "^3.2.37" + "vitepress": "^1.0.0-alpha.12", + "vue": "^3.2.38" }, "devDependencies": { "@types/markdown-it": "^12.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbd9ece6ee..c3b85345ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,20 +4,20 @@ specifiers: '@types/markdown-it': ^12.2.3 '@types/node': ^16.9.1 '@vue/repl': ^1.2.4 - '@vue/theme': ^1.0.4 + '@vue/theme': ^1.2.1 dynamics.js: ^1.1.5 gsap: ^3.9.0 terser: ^5.14.2 - vitepress: 1.0.0-alpha.8 - vue: ^3.2.37 + vitepress: ^1.0.0-alpha.12 + vue: ^3.2.38 dependencies: - '@vue/repl': 1.2.4_vue@3.2.37 - '@vue/theme': 1.0.4_vue@3.2.37 + '@vue/repl': 1.2.4_vue@3.2.38 + '@vue/theme': 1.2.1_vue@3.2.38 dynamics.js: 1.1.5 gsap: 3.9.0 - vitepress: 1.0.0-alpha.8_terser@5.14.2 - vue: 3.2.37 + vitepress: 1.0.0-alpha.12_terser@5.14.2 + vue: 3.2.38 devDependencies: '@types/markdown-it': 12.2.3 @@ -160,26 +160,10 @@ packages: to-fast-properties: 2.0.0 dev: false - /@docsearch/css/3.1.1: - resolution: {integrity: sha512-utLgg7E1agqQeqCJn05DWC7XXMk4tMUUnL7MZupcknRu2OzGN13qwey2qA/0NAKkVBGugiWtON0+rlU0QIPojg==} - dev: false - /@docsearch/css/3.2.1: resolution: {integrity: sha512-gaP6TxxwQC+K8D6TRx5WULUWKrcbzECOPA2KCVMuI+6C7dNiGUk5yXXzVhc5sld79XKYLnO9DRTI4mjXDYkh+g==} dev: false - /@docsearch/js/3.1.1: - resolution: {integrity: sha512-bt7l2aKRoSnLUuX+s4LVQ1a7AF2c9myiZNv5uvQCePG5tpvVGpwrnMwqVXOUJn9q6FwVVhOrQMO/t+QmnnAEUw==} - dependencies: - '@docsearch/react': 3.1.1 - preact: 10.5.14 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - dev: false - /@docsearch/js/3.2.1: resolution: {integrity: sha512-H1PekEtSeS0msetR2YGGey2w7jQ2wAKfGODJvQTygSwMgUZ+2DHpzUgeDyEBIXRIfaBcoQneqrzsljM62pm6Xg==} dependencies: @@ -192,28 +176,6 @@ packages: - react-dom dev: false - /@docsearch/react/3.1.1: - resolution: {integrity: sha512-cfoql4qvtsVRqBMYxhlGNpvyy/KlCoPqjIsJSZYqYf9AplZncKjLBTcwBu6RXFMVCe30cIFljniI4OjqAU67pQ==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.7.1 - '@algolia/autocomplete-preset-algolia': 1.7.1_algoliasearch@4.10.5 - '@docsearch/css': 3.1.1 - algoliasearch: 4.10.5 - transitivePeerDependencies: - - '@algolia/client-search' - dev: false - /@docsearch/react/3.2.1: resolution: {integrity: sha512-EzTQ/y82s14IQC5XVestiK/kFFMe2aagoYFuTAIfIb/e+4FU7kSMKonRtLwsCiLQHmjvNQq+HO+33giJ5YVtaQ==} peerDependencies: @@ -299,7 +261,7 @@ packages: resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} dev: false - /@vitejs/plugin-vue/3.0.3_vite@3.0.8+vue@3.2.37: + /@vitejs/plugin-vue/3.0.3_vite@3.0.8+vue@3.2.38: resolution: {integrity: sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -307,113 +269,112 @@ packages: vue: ^3.2.25 dependencies: vite: 3.0.8_terser@5.14.2 - vue: 3.2.37 + vue: 3.2.38 dev: false - /@vue/compiler-core/3.2.37: - resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} + /@vue/compiler-core/3.2.38: + resolution: {integrity: sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==} dependencies: '@babel/parser': 7.16.4 - '@vue/shared': 3.2.37 + '@vue/shared': 3.2.38 estree-walker: 2.0.2 source-map: 0.6.1 dev: false - /@vue/compiler-dom/3.2.37: - resolution: {integrity: sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==} + /@vue/compiler-dom/3.2.38: + resolution: {integrity: sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==} dependencies: - '@vue/compiler-core': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/compiler-core': 3.2.38 + '@vue/shared': 3.2.38 dev: false - /@vue/compiler-sfc/3.2.37: - resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==} + /@vue/compiler-sfc/3.2.38: + resolution: {integrity: sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==} dependencies: '@babel/parser': 7.16.4 - '@vue/compiler-core': 3.2.37 - '@vue/compiler-dom': 3.2.37 - '@vue/compiler-ssr': 3.2.37 - '@vue/reactivity-transform': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/compiler-core': 3.2.38 + '@vue/compiler-dom': 3.2.38 + '@vue/compiler-ssr': 3.2.38 + '@vue/reactivity-transform': 3.2.38 + '@vue/shared': 3.2.38 estree-walker: 2.0.2 magic-string: 0.25.7 - postcss: 8.4.13 + postcss: 8.4.16 source-map: 0.6.1 dev: false - /@vue/compiler-ssr/3.2.37: - resolution: {integrity: sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==} + /@vue/compiler-ssr/3.2.38: + resolution: {integrity: sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==} dependencies: - '@vue/compiler-dom': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/compiler-dom': 3.2.38 + '@vue/shared': 3.2.38 dev: false /@vue/devtools-api/6.2.1: resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==} dev: false - /@vue/reactivity-transform/3.2.37: - resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} + /@vue/reactivity-transform/3.2.38: + resolution: {integrity: sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==} dependencies: '@babel/parser': 7.16.4 - '@vue/compiler-core': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/compiler-core': 3.2.38 + '@vue/shared': 3.2.38 estree-walker: 2.0.2 magic-string: 0.25.7 dev: false - /@vue/reactivity/3.2.37: - resolution: {integrity: sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==} + /@vue/reactivity/3.2.38: + resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} dependencies: - '@vue/shared': 3.2.37 + '@vue/shared': 3.2.38 dev: false - /@vue/repl/1.2.4_vue@3.2.37: + /@vue/repl/1.2.4_vue@3.2.38: resolution: {integrity: sha512-qmM4eIFQoz85gmHzBzcDwL0Tq3o1SBtT/HXvq6z6Co42AruKQFqle6LHo/XV9DJA+sPxHAQyBkuMXmokQ4vGsg==} peerDependencies: vue: ^3.2.13 dependencies: - vue: 3.2.37 + vue: 3.2.38 dev: false - /@vue/runtime-core/3.2.37: - resolution: {integrity: sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==} + /@vue/runtime-core/3.2.38: + resolution: {integrity: sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==} dependencies: - '@vue/reactivity': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/reactivity': 3.2.38 + '@vue/shared': 3.2.38 dev: false - /@vue/runtime-dom/3.2.37: - resolution: {integrity: sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==} + /@vue/runtime-dom/3.2.38: + resolution: {integrity: sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==} dependencies: - '@vue/runtime-core': 3.2.37 - '@vue/shared': 3.2.37 + '@vue/runtime-core': 3.2.38 + '@vue/shared': 3.2.38 csstype: 2.6.18 dev: false - /@vue/server-renderer/3.2.37_vue@3.2.37: - resolution: {integrity: sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==} + /@vue/server-renderer/3.2.38_vue@3.2.38: + resolution: {integrity: sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==} peerDependencies: - vue: 3.2.37 + vue: 3.2.38 dependencies: - '@vue/compiler-ssr': 3.2.37 - '@vue/shared': 3.2.37 - vue: 3.2.37 + '@vue/compiler-ssr': 3.2.38 + '@vue/shared': 3.2.38 + vue: 3.2.38 dev: false - /@vue/shared/3.2.37: - resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} + /@vue/shared/3.2.38: + resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} dev: false - /@vue/theme/1.0.4_vue@3.2.37: - resolution: {integrity: sha512-vJGwN2TbDCwjL4FnRdpUm4Ly/fmnPFpZmdURrvMznm6P9ZTKHpGSzQ8A/yYt4JTjkhyyCg1VsTIJipskWEoUDQ==} + /@vue/theme/1.2.1_vue@3.2.38: + resolution: {integrity: sha512-YnJASh1zvCiwhFCwAmG1FV/MnBhgecwa28A4AGmhKIZlggwKvBXRwVWNhLdOHI9B8jjzItNobVaNAqNoPwiXlA==} dependencies: - '@docsearch/css': 3.1.1 - '@docsearch/js': 3.1.1 - '@vueuse/core': 7.4.0_vue@3.2.37 + '@docsearch/css': 3.2.1 + '@docsearch/js': 3.2.1 + '@vueuse/core': 9.1.1_vue@3.2.38 body-scroll-lock: 3.1.5 normalize.css: 8.0.1 - shiki: 0.9.15 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -423,29 +384,25 @@ packages: - vue dev: false - /@vueuse/core/7.4.0_vue@3.2.37: - resolution: {integrity: sha512-CgYouxjXOE63gMn3l9cOsgzPTEAk3yoncsSmJUxXAi/to25rCPVWB/39jXTPhWZboR43EDDMWoEhHaSoMzaldg==} - peerDependencies: - '@vue/composition-api': ^1.1.0 - vue: ^2.6.0 || ^3.2.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - vue: - optional: true + /@vueuse/core/9.1.0_vue@3.2.38: + resolution: {integrity: sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==} dependencies: - '@vueuse/shared': 7.4.0_vue@3.2.37 - vue: 3.2.37 - vue-demi: 0.12.1_vue@3.2.37 + '@types/web-bluetooth': 0.0.15 + '@vueuse/metadata': 9.1.0 + '@vueuse/shared': 9.1.0_vue@3.2.38 + vue-demi: 0.12.1_vue@3.2.38 + transitivePeerDependencies: + - '@vue/composition-api' + - vue dev: false - /@vueuse/core/9.1.0_vue@3.2.37: - resolution: {integrity: sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==} + /@vueuse/core/9.1.1_vue@3.2.38: + resolution: {integrity: sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==} dependencies: '@types/web-bluetooth': 0.0.15 - '@vueuse/metadata': 9.1.0 - '@vueuse/shared': 9.1.0_vue@3.2.37 - vue-demi: 0.12.1_vue@3.2.37 + '@vueuse/metadata': 9.1.1 + '@vueuse/shared': 9.1.1_vue@3.2.38 + vue-demi: 0.12.1_vue@3.2.38 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -455,25 +412,23 @@ packages: resolution: {integrity: sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==} dev: false - /@vueuse/shared/7.4.0_vue@3.2.37: - resolution: {integrity: sha512-x5Jn6jUB8gS1mGnVCoNWFEpAoDkm2QwtacZTUgKMn0Ow8tlUBKIfGVOt4vn9qZB10froED/ARHEj79WKLXRieA==} - peerDependencies: - '@vue/composition-api': ^1.1.0 - vue: ^2.6.0 || ^3.2.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - vue: - optional: true - dependencies: - vue: 3.2.37 - vue-demi: 0.12.1_vue@3.2.37 + /@vueuse/metadata/9.1.1: + resolution: {integrity: sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==} dev: false - /@vueuse/shared/9.1.0_vue@3.2.37: + /@vueuse/shared/9.1.0_vue@3.2.38: resolution: {integrity: sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==} dependencies: - vue-demi: 0.12.1_vue@3.2.37 + vue-demi: 0.12.1_vue@3.2.38 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/shared/9.1.1_vue@3.2.38: + resolution: {integrity: sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==} + dependencies: + vue-demi: 0.12.1_vue@3.2.38 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -795,15 +750,6 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: false - /postcss/8.4.13: - resolution: {integrity: sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - /postcss/8.4.16: resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} engines: {node: ^10 || ^12 || >=14} @@ -842,14 +788,6 @@ packages: vscode-textmate: 6.0.0 dev: false - /shiki/0.9.15: - resolution: {integrity: sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==} - dependencies: - jsonc-parser: 3.0.0 - vscode-oniguruma: 1.6.1 - vscode-textmate: 5.2.0 - dev: false - /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -917,19 +855,19 @@ packages: fsevents: 2.3.2 dev: false - /vitepress/1.0.0-alpha.8_terser@5.14.2: - resolution: {integrity: sha512-kTRN5DCagvMqr9OjylSV9/waGg0IHrxL0hBVuJoz7ykleZq2qR02n5CaiFq5QrSB/VRBGqiVsFQzet9vJsXS8g==} + /vitepress/1.0.0-alpha.12_terser@5.14.2: + resolution: {integrity: sha512-++e7p9oxqk7RKz2fMNtrOAWmZSWVPozDuOG1owwntPRincC8/pIhPkJ9ojNHcHCHBylszJBsjkRqbseurZ7vCg==} hasBin: true dependencies: '@docsearch/css': 3.2.1 '@docsearch/js': 3.2.1 - '@vitejs/plugin-vue': 3.0.3_vite@3.0.8+vue@3.2.37 + '@vitejs/plugin-vue': 3.0.3_vite@3.0.8+vue@3.2.38 '@vue/devtools-api': 6.2.1 - '@vueuse/core': 9.1.0_vue@3.2.37 + '@vueuse/core': 9.1.0_vue@3.2.38 body-scroll-lock: 4.0.0-beta.0 shiki: 0.11.1 vite: 3.0.8_terser@5.14.2 - vue: 3.2.37 + vue: 3.2.38 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -946,15 +884,11 @@ packages: resolution: {integrity: sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==} dev: false - /vscode-textmate/5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: false - /vscode-textmate/6.0.0: resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} dev: false - /vue-demi/0.12.1_vue@3.2.37: + /vue-demi/0.12.1_vue@3.2.38: resolution: {integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==} engines: {node: '>=12'} hasBin: true @@ -966,15 +900,15 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.2.37 + vue: 3.2.38 dev: false - /vue/3.2.37: - resolution: {integrity: sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==} + /vue/3.2.38: + resolution: {integrity: sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==} dependencies: - '@vue/compiler-dom': 3.2.37 - '@vue/compiler-sfc': 3.2.37 - '@vue/runtime-dom': 3.2.37 - '@vue/server-renderer': 3.2.37_vue@3.2.37 - '@vue/shared': 3.2.37 + '@vue/compiler-dom': 3.2.38 + '@vue/compiler-sfc': 3.2.38 + '@vue/runtime-dom': 3.2.38 + '@vue/server-renderer': 3.2.38_vue@3.2.38 + '@vue/shared': 3.2.38 dev: false From 169347a6bf623701a2c3f5e3149bc6c61a9eda36 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 30 Aug 2022 19:25:52 +0800 Subject: [PATCH 0275/1136] fix tutorial highlighting --- package.json | 4 ++-- pnpm-lock.yaml | 43 ++++++++--------------------------- src/tutorial/TutorialRepl.vue | 3 ++- src/tutorial/tutorial.data.ts | 6 +---- 4 files changed, 14 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index b57d6e2d50..2848715c48 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,10 @@ }, "dependencies": { "@vue/repl": "^1.2.4", - "@vue/theme": "^1.2.1", + "@vue/theme": "^1.2.2", "dynamics.js": "^1.1.5", "gsap": "^3.9.0", - "vitepress": "^1.0.0-alpha.12", + "vitepress": "^1.0.0-alpha.13", "vue": "^3.2.38" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3b85345ff..a61c5883ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,19 +4,19 @@ specifiers: '@types/markdown-it': ^12.2.3 '@types/node': ^16.9.1 '@vue/repl': ^1.2.4 - '@vue/theme': ^1.2.1 + '@vue/theme': ^1.2.2 dynamics.js: ^1.1.5 gsap: ^3.9.0 terser: ^5.14.2 - vitepress: ^1.0.0-alpha.12 + vitepress: ^1.0.0-alpha.13 vue: ^3.2.38 dependencies: '@vue/repl': 1.2.4_vue@3.2.38 - '@vue/theme': 1.2.1_vue@3.2.38 + '@vue/theme': 1.2.2_vue@3.2.38 dynamics.js: 1.1.5 gsap: 3.9.0 - vitepress: 1.0.0-alpha.12_terser@5.14.2 + vitepress: 1.0.0-alpha.13_terser@5.14.2 vue: 3.2.38 devDependencies: @@ -367,8 +367,8 @@ packages: resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} dev: false - /@vue/theme/1.2.1_vue@3.2.38: - resolution: {integrity: sha512-YnJASh1zvCiwhFCwAmG1FV/MnBhgecwa28A4AGmhKIZlggwKvBXRwVWNhLdOHI9B8jjzItNobVaNAqNoPwiXlA==} + /@vue/theme/1.2.2_vue@3.2.38: + resolution: {integrity: sha512-Unj1mVLOMxw094+zpKjjdnoHRDN0ZV7UutBFoGHhvrmEBfwzcwo/0JT/v0gDczd5hjleqKnHbeQxrnF1VadkXQ==} dependencies: '@docsearch/css': 3.2.1 '@docsearch/js': 3.2.1 @@ -384,18 +384,6 @@ packages: - vue dev: false - /@vueuse/core/9.1.0_vue@3.2.38: - resolution: {integrity: sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==} - dependencies: - '@types/web-bluetooth': 0.0.15 - '@vueuse/metadata': 9.1.0 - '@vueuse/shared': 9.1.0_vue@3.2.38 - vue-demi: 0.12.1_vue@3.2.38 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /@vueuse/core/9.1.1_vue@3.2.38: resolution: {integrity: sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==} dependencies: @@ -408,23 +396,10 @@ packages: - vue dev: false - /@vueuse/metadata/9.1.0: - resolution: {integrity: sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==} - dev: false - /@vueuse/metadata/9.1.1: resolution: {integrity: sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==} dev: false - /@vueuse/shared/9.1.0_vue@3.2.38: - resolution: {integrity: sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==} - dependencies: - vue-demi: 0.12.1_vue@3.2.38 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /@vueuse/shared/9.1.1_vue@3.2.38: resolution: {integrity: sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==} dependencies: @@ -855,15 +830,15 @@ packages: fsevents: 2.3.2 dev: false - /vitepress/1.0.0-alpha.12_terser@5.14.2: - resolution: {integrity: sha512-++e7p9oxqk7RKz2fMNtrOAWmZSWVPozDuOG1owwntPRincC8/pIhPkJ9ojNHcHCHBylszJBsjkRqbseurZ7vCg==} + /vitepress/1.0.0-alpha.13_terser@5.14.2: + resolution: {integrity: sha512-gCbKb+6o0g5wHt2yyqBPk7FcvrB+MfwGtg1JMS5p99GTQR87l3b7symCl8o1ecv7MDXwJ2mPB8ZrYNLnQAJxLQ==} hasBin: true dependencies: '@docsearch/css': 3.2.1 '@docsearch/js': 3.2.1 '@vitejs/plugin-vue': 3.0.3_vite@3.0.8+vue@3.2.38 '@vue/devtools-api': 6.2.1 - '@vueuse/core': 9.1.0_vue@3.2.38 + '@vueuse/core': 9.1.1_vue@3.2.38 body-scroll-lock: 4.0.0-beta.0 shiki: 0.11.1 vite: 3.0.8_terser@5.14.2 diff --git a/src/tutorial/TutorialRepl.vue b/src/tutorial/TutorialRepl.vue index a0ee736822..ede2a6e364 100644 --- a/src/tutorial/TutorialRepl.vue +++ b/src/tutorial/TutorialRepl.vue @@ -13,7 +13,8 @@ import { VTFlyout, VTIconChevronLeft, VTIconChevronRight, - VTLink + VTLink, + useCopyCode } from '@vue/theme' const store = new ReplStore({ diff --git a/src/tutorial/tutorial.data.ts b/src/tutorial/tutorial.data.ts index 0dc294bd10..ca11af66d2 100644 --- a/src/tutorial/tutorial.data.ts +++ b/src/tutorial/tutorial.data.ts @@ -1,17 +1,13 @@ import path from 'path' import { createMarkdownRenderer } from 'vitepress' import { readExamples, ExampleData } from '../examples/examples.data' -import createHighlighter from '@vue/theme/highlight' export declare const data: Record export default { watch: './src/**', async load() { - const md = await createMarkdownRenderer(process.cwd(), { - // @ts-ignore - highlight: await createHighlighter() - }, '/') + const md = await createMarkdownRenderer(process.cwd(), undefined, '/') const files = readExamples(path.resolve(__dirname, './src')) for (const step in files) { const stepFiles = files[step] From 94f483e4ac4111b1b1f9e20c2f5af6bb1b8b16b3 Mon Sep 17 00:00:00 2001 From: de-oz <101826623+de-oz@users.noreply.github.com> Date: Tue, 30 Aug 2022 15:40:34 +0300 Subject: [PATCH 0276/1136] Fix grammar mistake (#1945) --- src/api/options-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/options-state.md b/src/api/options-state.md index 203adfceb4..2b3bfe3d11 100644 --- a/src/api/options-state.md +++ b/src/api/options-state.md @@ -23,7 +23,7 @@ A function that returns the initial reactive state for the component instance. Properties that start with `_` or `$` will **not** be proxied on the component instance because they may conflict with Vue's internal properties and API methods. You will have to access them as `this.$data._property`. - It is **not** recommend to return objects with their own stateful behavior like browser API objects and prototype properties. The returned object should ideally be a plain object that only represents the state of the component. + It is **not** recommended to return objects with their own stateful behavior like browser API objects and prototype properties. The returned object should ideally be a plain object that only represents the state of the component. - **Example** From b372b41c8d082b3826f895879187f8d2c67ed227 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 1 Sep 2022 09:27:30 +0800 Subject: [PATCH 0277/1136] adjust special sponsor display --- .vitepress/theme/components/Home.vue | 41 +++++++++++++++++----------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/.vitepress/theme/components/Home.vue b/.vitepress/theme/components/Home.vue index 03a768e552..6233b2707f 100644 --- a/.vitepress/theme/components/Home.vue +++ b/.vitepress/theme/components/Home.vue @@ -1,9 +1,9 @@ @@ -44,7 +49,7 @@ html:not(.banner-dismissed) { left: 0; right: 0; height: var(--vt-banner-height); - line-height: var(--vt-banner-height); + line-height: 0; text-align: center; font-size: 12px; font-weight: 600; @@ -59,4 +64,23 @@ html:not(.banner-dismissed) { a { text-decoration: underline; } + +.banner-vuejsconf { + background: linear-gradient(90deg, #fff 50%, var(--vt-c-green) 50%); +} + +.banner-vuejsconf a { + display: inline-block; + margin: 0 auto; +} + +.banner-vuejsconf .close-btn { + top: 26%; + right: 10px; + z-index: 99; + position: absolute; + border-radius: 50%; + background-color: var(--vt-c-brand-dark); + padding: 8px; +} diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index dead8883b0..171dd6a6ae 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -10,13 +10,13 @@ import { import SponsorsAside from './components/SponsorsAside.vue' import VueJobs from './components/VueJobs.vue' import VueSchoolLink from './components/VueSchoolLink.vue' -// import Banner from './components/Banner.vue' +import Banner from './components/Banner.vue' export default Object.assign({}, VPTheme, { Layout: () => { // @ts-ignore return h(VPTheme.Layout, null, { - // banner: () => h(Banner), + banner: () => h(Banner), 'sidebar-top': () => h(PreferenceSwitch), 'aside-mid': () => h(SponsorsAside) }) diff --git a/src/public/images/vuejsde-conf/close.svg b/src/public/images/vuejsde-conf/close.svg new file mode 100644 index 0000000000..0e2f31fcd4 --- /dev/null +++ b/src/public/images/vuejsde-conf/close.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/public/images/vuejsde-conf/vuejsdeconf_banner_large_general.png b/src/public/images/vuejsde-conf/vuejsdeconf_banner_large_general.png new file mode 100644 index 0000000000000000000000000000000000000000..b31a71a47a850224dcef2e61a1ff67457d308e4b GIT binary patch literal 23834 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 literal 0 HcmV?d00001 diff --git a/src/public/images/vuejsde-conf/vuejsdeconf_banner_medium_general.png b/src/public/images/vuejsde-conf/vuejsdeconf_banner_medium_general.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7f1f41c9c48b01ba2959441586a5388cad82a5 GIT binary patch literal 20446 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 literal 0 HcmV?d00001 From 2019035796a19986451276b7fbe3d8bc492a8964 Mon Sep 17 00:00:00 2001 From: Jinjiang Date: Tue, 6 Sep 2022 21:45:50 +0800 Subject: [PATCH 0280/1136] fix: partner shuffling bug in prod mode (#1949) * fix: partner shuffling bug in prod mode * Update PartnerList.vue --- src/partners/components/PartnerList.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/partners/components/PartnerList.vue b/src/partners/components/PartnerList.vue index 76e6cdd4ba..8edf7c6c35 100644 --- a/src/partners/components/PartnerList.vue +++ b/src/partners/components/PartnerList.vue @@ -45,7 +45,10 @@ function shuffle(array: Array) { From 40b220ec2688ca368078c5dc431d7831fbf65334 Mon Sep 17 00:00:00 2001 From: de-oz <101826623+de-oz@users.noreply.github.com> Date: Thu, 8 Sep 2022 15:35:02 +0300 Subject: [PATCH 0281/1136] Fix spelling of an expression (#1952) --- src/guide/introduction.md | 2 +- src/guide/reusability/composables.md | 2 +- src/tutorial/src/step-1/description.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/guide/introduction.md b/src/guide/introduction.md index 891bb9a541..6dc736a7e4 100644 --- a/src/guide/introduction.md +++ b/src/guide/introduction.md @@ -87,7 +87,7 @@ Vue is a framework and ecosystem that covers most of the common features needed If you find these concepts intimidating, don't worry! The tutorial and guide only require basic HTML and JavaScript knowledge, and you should be able to follow along without being an expert in any of these. -If you are an experienced developer interested in how to best integrate Vue into your stack, or you are curious about what these terms mean, we discuss them in more details in [Ways of Using Vue](/guide/extras/ways-of-using-vue). +If you are an experienced developer interested in how to best integrate Vue into your stack, or you are curious about what these terms mean, we discuss them in more detail in [Ways of Using Vue](/guide/extras/ways-of-using-vue). Despite the flexibility, the core knowledge about how Vue works is shared across all these use cases. Even if you are just a beginner now, the knowledge gained along the way will stay useful as you grow to tackle more ambitious goals in the future. If you are a veteran, you can pick the optimal way to leverage Vue based on the problems you are trying to solve, while retaining the same productivity. This is why we call Vue "The Progressive Framework": it's a framework that can grow with you and adapt to your needs. diff --git a/src/guide/reusability/composables.md b/src/guide/reusability/composables.md index 501e801479..7cc249ebbf 100644 --- a/src/guide/reusability/composables.md +++ b/src/guide/reusability/composables.md @@ -353,7 +353,7 @@ The recommendation is to use composables when reusing pure logic, and use compon ### vs. React Hooks -If you have experience with React, you may notice that this looks very similar to custom React hooks. Composition API was in part inspired by React hooks, and Vue composables are indeed similar to React hooks in terms of logic composition capabilities. However, Vue composables are based on Vue's fine-grained reactivity system, which is fundamentally different from React hooks' execution model. This is discussed in more details in the [Composition API FAQ](/guide/extras/composition-api-faq#comparison-with-react-hooks). +If you have experience with React, you may notice that this looks very similar to custom React hooks. Composition API was in part inspired by React hooks, and Vue composables are indeed similar to React hooks in terms of logic composition capabilities. However, Vue composables are based on Vue's fine-grained reactivity system, which is fundamentally different from React hooks' execution model. This is discussed in more detail in the [Composition API FAQ](/guide/extras/composition-api-faq#comparison-with-react-hooks). ## Further Reading diff --git a/src/tutorial/src/step-1/description.md b/src/tutorial/src/step-1/description.md index c5347517ff..47249a2ff1 100644 --- a/src/tutorial/src/step-1/description.md +++ b/src/tutorial/src/step-1/description.md @@ -2,7 +2,7 @@ Welcome to the Vue tutorial! -The goal of this tutorial is to quickly give you an experience of what it feels like to work with Vue, right in the browser. It does not aim to be comprehensive, and you don't need to understand everything before moving on. However, after you complete it, make sure to also read the Guide which covers each topic in more details. +The goal of this tutorial is to quickly give you an experience of what it feels like to work with Vue, right in the browser. It does not aim to be comprehensive, and you don't need to understand everything before moving on. However, after you complete it, make sure to also read the Guide which covers each topic in more detail. ## Prerequisites From fea572ef3512f6fc19aad8aa65c668d4cecd109c Mon Sep 17 00:00:00 2001 From: wxsm Date: Fri, 9 Sep 2022 08:28:28 +0800 Subject: [PATCH 0282/1136] fix special sponsor layout problem on zh-cn doc. (#1951) image ref: https://github.com/vuejs-translations/docs-zh-cn/pull/536 --- .vitepress/theme/components/Home.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vitepress/theme/components/Home.vue b/.vitepress/theme/components/Home.vue index 72636eb647..5ff8c48608 100644 --- a/.vitepress/theme/components/Home.vue +++ b/.vitepress/theme/components/Home.vue @@ -52,7 +52,7 @@ onMounted(async () => { - {{ description }} + {{ description }} @@ -179,6 +179,7 @@ html:not(.dark) .accent, border-bottom: 1px solid var(--vt-c-divider-light); padding: 12px 24px; display: flex; + align-items: center; } #special-sponsor span { From b392b068fb893e3ac6079710fe34decbde7a3be3 Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Fri, 9 Sep 2022 02:48:32 +0200 Subject: [PATCH 0283/1136] Added `withDefaults` to Composition API TypeScript page (#1942) * fix: added withDefaults to Composition API TS * Update src/guide/typescript/composition-api.md Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> * fix: removed `experimental` badge Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> --- src/guide/typescript/composition-api.md | 26 ++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/guide/typescript/composition-api.md b/src/guide/typescript/composition-api.md index 824648b012..205a58ff58 100644 --- a/src/guide/typescript/composition-api.md +++ b/src/guide/typescript/composition-api.md @@ -79,20 +79,36 @@ defineProps() This is because Vue components are compiled in isolation and the compiler currently does not crawl imported files in order to analyze the source type. This limitation could be removed in a future release. -### Props Default Values +### Props Default Values -When using type-based declaration, we lose the ability to declare default values for the props. This can be resolved by the currently experimental [Reactivity Transform](/guide/extras/reactivity-transform.html): +When using type-based declaration, we lose the ability to declare default values for the props. This can be resolved by the `withDefaults` compiler macro: + +```ts +export interface Props { + msg?: string + labels?: string[] +} + +const props = withDefaults(defineProps(), { + msg: 'hello', + labels: () => ['one', 'two'] +}) +``` + +This will be compiled to equivalent runtime props `default` options. In addition, the `withDefaults` helper provides type checks for the default values, and ensures the returned `props` type has the optional flags removed for properties that do have default values declared. + +Alternatively, you can use the currently experimental [Reactivity Transform](/guide/extras/reactivity-transform.html): ```vue ``` From 6400d164f4b02d52080707e32e9a4152c7960ba5 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 13 Sep 2022 17:16:29 +0800 Subject: [PATCH 0284/1136] rewrite quick start close #1820, close #1921 --- src/guide/quick-start.md | 92 ++++++++++++++++++++++++++++++---------- 1 file changed, 69 insertions(+), 23 deletions(-) diff --git a/src/guide/quick-start.md b/src/guide/quick-start.md index fc12b04992..cb6cbaff20 100644 --- a/src/guide/quick-start.md +++ b/src/guide/quick-start.md @@ -4,25 +4,25 @@ footer: false # Quick Start -Depending on your use case and preference, you can use Vue with or without a build step. +## Try Vue Online -## With Build Tools +- To quickly get a taste of Vue, you can try it directly in our [Playground](https://sfc.vuejs.org/#eNo9j01qAzEMha+iapMWOjbdDm6gu96gG2/cjJJM8B+2nBaGuXvlpBMwtj4/JL234EfO6toIRzT1UObMexvpN6fCMNHRNc+w2AgwOXbPL/caoBC3EjcCCPU0wu6TvE/wlYqfnnZ3ae2PXHKMfiwQYArZOyYhAHN+2y9LnwLrarTQ7XeOuTFch5Am8u8WRbcoktGPbnzFOXS3Q3BZXWqKkuRmy/4L1eK4GbUoUTtbPDPnOmpdj4ee/1JVKictlSot8hxIUQ3Dd0k/lYoMtrglwfUPkXdoJg==). -A build setup allows us to use Vue [Single-File Components](/guide/scaling-up/sfc) (SFCs). The official Vue build setup is based on [Vite](https://vitejs.dev), a frontend build tool that is modern, lightweight and extremely fast. +- If you prefer a plain HTML setup without any build steps, you can use this [JSFiddle](https://jsfiddle.net/yyx990803/2ke1ab0z/) as your starting point. -### Online +- If you are already familiar with Node.js and the concept of build tools, you can also try a complete build setup right within your browser on [StackBlitz](https://vite.new/vue). -You can try Vue with SFCs online on [StackBlitz](https://vite.new/vue). StackBlitz runs the Vite-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine. - -### Local +## Creating a Vue Application :::tip Pre-requisites - Familiarity with the command line -- Install [Node.js](https://nodejs.org/) version 15.0 or higher +- Install [Node.js](https://nodejs.org/) version 16.0 or higher ::: -To create a build-tool-enabled Vue project on your machine, run the following command in your command line (without the `>` sign): +In this section we will introduce how to scaffold a Vue [Single Page Application](http://localhost:5173/guide/extras/ways-of-using-vue.html#single-page-application-spa) on your local machine. The created project will be using a build setup based on [Vite](https://vitejs.dev), and allows us to use Vue [Single-File Components](/guide/scaling-up/sfc) (SFCs). + +Make sure you have an up-to-date version of [Node.js](https://nodejs.org/) installed, then run the following command in your command line (without the `>` sign):
> npm init vue@latest
@@ -64,12 +64,24 @@ This will create a production-ready build of your app in the project's `./dist` [Next Steps >](#next-steps) -## Without Build Tools +## Using Vue from CDN + +You can use Vue directly from a CDN via a script tag: + +```html + +``` + +Here we are using [unpkg](https://unpkg.com/), but you can also use any CDN that serves npm packages, for example [jsdelivr](https://www.jsdelivr.com/package/npm/vue) or [cdnjs](https://cdnjs.com/libraries/vue). Of course, you can also download this file and serve it yourself. + +When using Vue from a CDN, there is no "build step" involved. This makes the setup a lot simpler, and is suitable for enhancing static HTML or integrating with a backend framework. However, you won't be able to use the Single-File Component (SFC) syntax. + +### Using the Global Build -To get started with Vue without a build step, simply copy the following code into an HTML file and open it in your browser: +The above link is loading the *global build* of Vue, where all top-level APIs are exposed as properties on the global `Vue` object. Here is a full example using the global build: ```html - +
{{ message }}
@@ -86,15 +98,43 @@ To get started with Vue without a build step, simply copy the following code int ``` -The above example uses the global build of Vue where all APIs are exposed under the global `Vue` variable. For example, to also use the `ref` API, you can do: +[JSFiddle demo](https://jsfiddle.net/yyx990803/nw1xg8Lj/) + +### Using the ES Module Build + +Throughout the rest of the documentation, we will be primarily using [ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) syntax. Most modern browsers now support ES modules natively, so we can use Vue from a CDN via native ES modules like this: + +```html{3,4} +
{{ message }}
+ + +``` + +Notice that we are using ` ``` -Notice how we can import directly from `'vue'` in our code - this is made possible by the ` diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index 171dd6a6ae..dead8883b0 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -10,13 +10,13 @@ import { import SponsorsAside from './components/SponsorsAside.vue' import VueJobs from './components/VueJobs.vue' import VueSchoolLink from './components/VueSchoolLink.vue' -import Banner from './components/Banner.vue' +// import Banner from './components/Banner.vue' export default Object.assign({}, VPTheme, { Layout: () => { // @ts-ignore return h(VPTheme.Layout, null, { - banner: () => h(Banner), + // banner: () => h(Banner), 'sidebar-top': () => h(PreferenceSwitch), 'aside-mid': () => h(SponsorsAside) }) From 7257fdc069fdc086d1b67c222a6eb33741d3bcde Mon Sep 17 00:00:00 2001 From: de-oz <101826623+de-oz@users.noreply.github.com> Date: Fri, 16 Sep 2022 17:56:44 +0300 Subject: [PATCH 0287/1136] Fix spelling and grammar (#1962) --- src/guide/quick-start.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/guide/quick-start.md b/src/guide/quick-start.md index 828e78e38d..183059fe99 100644 --- a/src/guide/quick-start.md +++ b/src/guide/quick-start.md @@ -14,13 +14,13 @@ footer: false ## Creating a Vue Application -:::tip Pre-requisites +:::tip Prerequisites - Familiarity with the command line - Install [Node.js](https://nodejs.org/) version 16.0 or higher ::: -In this section we will introduce how to scaffold a Vue [Single Page Application](/guide/extras/ways-of-using-vue.html#single-page-application-spa) on your local machine. The created project will be using a build setup based on [Vite](https://vitejs.dev), and allows us to use Vue [Single-File Components](/guide/scaling-up/sfc) (SFCs). +In this section we will introduce how to scaffold a Vue [Single Page Application](/guide/extras/ways-of-using-vue.html#single-page-application-spa) on your local machine. The created project will be using a build setup based on [Vite](https://vitejs.dev), and allow us to use Vue [Single-File Components](/guide/scaling-up/sfc) (SFCs). Make sure you have an up-to-date version of [Node.js](https://nodejs.org/) installed, then run the following command in your command line (without the `>` sign): From f25e283bae1a46da9923646bc6e9b4aeaaeb7b2b Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Sun, 18 Sep 2022 17:44:36 +0200 Subject: [PATCH 0288/1136] fix: fixed tutorial step 8 template Close #1960 --- src/tutorial/src/step-8/App/template.html | 2 +- src/tutorial/src/step-8/_hint/App/template.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tutorial/src/step-8/App/template.html b/src/tutorial/src/step-8/App/template.html index e924c12e6a..30f1499524 100644 --- a/src/tutorial/src/step-8/App/template.html +++ b/src/tutorial/src/step-8/App/template.html @@ -1,5 +1,5 @@
- +
    diff --git a/src/tutorial/src/step-8/_hint/App/template.html b/src/tutorial/src/step-8/_hint/App/template.html index e5c15992ce..780b778b9a 100644 --- a/src/tutorial/src/step-8/_hint/App/template.html +++ b/src/tutorial/src/step-8/_hint/App/template.html @@ -1,5 +1,5 @@
    - +
      From 480c95a8bc2ce63a65ad3c377e9b4b97fb7173de Mon Sep 17 00:00:00 2001 From: Neil Richter Date: Mon, 19 Sep 2022 02:40:39 -0400 Subject: [PATCH 0289/1136] docs: document mixing named and default slots (#1946) * docs: document mixing named and default slots https://github.com/vuejs/core/issues/6549 * chore: update component example, and section * docs: move section to named scoped slots * Update src/guide/components/slots.md Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> * Update src/guide/components/slots.md Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> * Update src/guide/components/slots.md Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> * Update src/guide/components/slots.md Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> Co-authored-by: skirtle <65301168+skirtles-code@users.noreply.github.com> --- src/guide/components/slots.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/guide/components/slots.md b/src/guide/components/slots.md index 8e8d8442de..d5284c027f 100644 --- a/src/guide/components/slots.md +++ b/src/guide/components/slots.md @@ -412,6 +412,38 @@ Passing props to a named slot: Note the `name` of a slot won't be included in the props because it is reserved - so the resulting `headerProps` would be `{ message: 'hello' }`. +If you are mixing named slots with the default scoped slot, you need to use an explicit `