From 0e5f89fa1004e48d499fe752008e26bac3a55bca Mon Sep 17 00:00:00 2001 From: azzumed <76779534+azzumed@users.noreply.github.com> Date: Wed, 28 May 2025 20:42:26 +0300 Subject: [PATCH 01/22] docs: fix hook name to composition version (#3237) --- src/api/composition-api-lifecycle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/composition-api-lifecycle.md b/src/api/composition-api-lifecycle.md index d274fa8bb..035c0741c 100644 --- a/src/api/composition-api-lifecycle.md +++ b/src/api/composition-api-lifecycle.md @@ -210,7 +210,7 @@ Registers a hook to be called when an error propagating from a descendant compon In production, the 3rd argument (`info`) will be a shortened code instead of the full information string. You can find the code to string mapping in the [Production Error Code Reference](/error-reference/#runtime-errors). ::: - You can modify component state in `errorCaptured()` to display an error state to the user. However, it is important that the error state should not render the original content that caused the error; otherwise the component will be thrown into an infinite render loop. + You can modify component state in `onErrorCaptured()` to display an error state to the user. However, it is important that the error state should not render the original content that caused the error; otherwise the component will be thrown into an infinite render loop. The hook can return `false` to stop the error from propagating further. See error propagation details below. From 0b6356439afff5daa2c873f339f6c5ae37d60abe Mon Sep 17 00:00:00 2001 From: Per Harald Borgen Date: Thu, 29 May 2025 01:33:42 +0200 Subject: [PATCH 02/22] Add Scrimba links and refactor VueSchoolLink to a more reusable component (#3240) Add Scrimba component and links --- .vitepress/theme/components/ScrimbaLink.vue | 59 +++++++++++++++++++++ src/guide/components/v-model.md | 4 ++ src/guide/essentials/component-basics.md | 4 ++ src/guide/essentials/template-syntax.md | 4 ++ src/guide/quick-start.md | 2 + src/guide/typescript/composition-api.md | 4 ++ 6 files changed, 77 insertions(+) create mode 100644 .vitepress/theme/components/ScrimbaLink.vue diff --git a/.vitepress/theme/components/ScrimbaLink.vue b/.vitepress/theme/components/ScrimbaLink.vue new file mode 100644 index 000000000..5dc1b93c0 --- /dev/null +++ b/.vitepress/theme/components/ScrimbaLink.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/guide/components/v-model.md b/src/guide/components/v-model.md index 9be18aba9..2fb134135 100644 --- a/src/guide/components/v-model.md +++ b/src/guide/components/v-model.md @@ -1,5 +1,9 @@ # Component v-model {#component-v-model} + + Watch an interactive video lesson on Scrimba + + ## Basic Usage {#basic-usage} `v-model` can be used on a component to implement a two-way binding. diff --git a/src/guide/essentials/component-basics.md b/src/guide/essentials/component-basics.md index 651a5f8d9..3bc43e557 100644 --- a/src/guide/essentials/component-basics.md +++ b/src/guide/essentials/component-basics.md @@ -1,5 +1,9 @@ # Components Basics {#components-basics} + + Watch an interactive video lesson on Scrimba + + Components allow us to split the UI into independent and reusable pieces, and think about each piece in isolation. It's common for an app to be organized into a tree of nested components: ![Component Tree](./images/components.png) diff --git a/src/guide/essentials/template-syntax.md b/src/guide/essentials/template-syntax.md index cf20d14e5..8a42bff4d 100644 --- a/src/guide/essentials/template-syntax.md +++ b/src/guide/essentials/template-syntax.md @@ -1,5 +1,9 @@ # Template Syntax {#template-syntax} + + Watch an interactive video lesson on Scrimba + + Vue uses an HTML-based template syntax that allows you to declaratively bind the rendered DOM to the underlying component instance's data. All Vue templates are syntactically valid HTML that can be parsed by spec-compliant browsers and HTML parsers. Under the hood, Vue compiles the templates into highly-optimized JavaScript code. Combined with the reactivity system, Vue can intelligently figure out the minimal number of components to re-render and apply the minimal amount of DOM manipulations when the app state changes. diff --git a/src/guide/quick-start.md b/src/guide/quick-start.md index f711eee36..72d596ce9 100644 --- a/src/guide/quick-start.md +++ b/src/guide/quick-start.md @@ -16,6 +16,8 @@ import { VTCodeGroup, VTCodeGroupTab } from '@vue/theme' - 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). +- To get a walkthrough of the recommended setup, watch this interactive [Scrimba](http://scrimba.com/links/vue-quickstart) tutorial that shows you how to run, edit, and deploy your first Vue app. + ## Creating a Vue Application {#creating-a-vue-application} :::tip Prerequisites diff --git a/src/guide/typescript/composition-api.md b/src/guide/typescript/composition-api.md index 2368dc0f7..79c020e5c 100644 --- a/src/guide/typescript/composition-api.md +++ b/src/guide/typescript/composition-api.md @@ -1,5 +1,9 @@ # TypeScript with Composition API {#typescript-with-composition-api} + + Watch an interactive video lesson on Scrimba + + > This page assumes you've already read the overview on [Using Vue with TypeScript](./overview). ## Typing Component Props {#typing-component-props} From 54d0d235ba1cff658d3370372125fd9a6f88df57 Mon Sep 17 00:00:00 2001 From: Per Harald Borgen Date: Thu, 29 May 2025 09:14:04 +0200 Subject: [PATCH 03/22] Register ScrimbaLink component and change color on play button (#3242) register ScrimbaLink component and change color on play button --- .vitepress/theme/components/ScrimbaLink.vue | 2 +- .vitepress/theme/index.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.vitepress/theme/components/ScrimbaLink.vue b/.vitepress/theme/components/ScrimbaLink.vue index 5dc1b93c0..1fb602161 100644 --- a/.vitepress/theme/components/ScrimbaLink.vue +++ b/.vitepress/theme/components/ScrimbaLink.vue @@ -42,7 +42,7 @@ export default { top: calc(50% - 15px); left: -4px; border-radius: 50%; - background-color: #2B2B2B; /* Scrimba's dark color */ + background-color: #73abfe; } .scrimba a:after { content: ''; diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index 9ea1fb93f..15f9fcff0 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -10,6 +10,7 @@ import { } from './components/preferences' import SponsorsAside from './components/SponsorsAside.vue' import VueSchoolLink from './components/VueSchoolLink.vue' +import ScrimbaLink from './components/ScrimbaLink.vue' import Banner from './components/Banner.vue' // import TextAd from './components/TextAd.vue' @@ -28,6 +29,7 @@ export default Object.assign({}, VPTheme, { app.provide('prefer-sfc', preferSFC) app.provide('filter-headers', filterHeadersByPreference) app.component('VueSchoolLink', VueSchoolLink) + app.component('ScrimbaLink', ScrimbaLink) // app.component('TextAd', TextAd) } }) From fcee6236c1e2c3ecf0cc85945eb1db120f43af10 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 29 May 2025 15:15:19 +0800 Subject: [PATCH 04/22] vueconf us banner offline --- .../inlined-scripts/restorePreference.js | 4 +- .vitepress/theme/components/Banner.vue | 92 +++---------------- .vitepress/theme/index.ts | 4 +- 3 files changed, 17 insertions(+), 83 deletions(-) diff --git a/.vitepress/inlined-scripts/restorePreference.js b/.vitepress/inlined-scripts/restorePreference.js index d4aab6093..5e18b50ff 100644 --- a/.vitepress/inlined-scripts/restorePreference.js +++ b/.vitepress/inlined-scripts/restorePreference.js @@ -8,6 +8,6 @@ restore('vue-docs-prefer-composition', 'prefer-composition', true) restore('vue-docs-prefer-sfc', 'prefer-sfc', true) - window.__VUE_BANNER_ID__ = 'vueconf2025' - restore(`vue-docs-banner-${__VUE_BANNER_ID__}`, 'banner-dismissed') + // window.__VUE_BANNER_ID__ = '' + // restore(`vue-docs-banner-${__VUE_BANNER_ID__}`, 'banner-dismissed') })() diff --git a/.vitepress/theme/components/Banner.vue b/.vitepress/theme/components/Banner.vue index a41d08221..6730fcd48 100644 --- a/.vitepress/theme/components/Banner.vue +++ b/.vitepress/theme/components/Banner.vue @@ -22,31 +22,16 @@ function dismiss() { @@ -65,12 +50,12 @@ html:not(.banner-dismissed) { font-weight: 600; color: #fff; background-color: var(--vt-c-green); - background: #0f172a; - display: flex; - justify-content: center; - align-items: center; - - + background: linear-gradient( + 90deg, + rgba(66, 184, 131, 1) 0%, + rgba(39, 179, 137, 1) 19%, + rgba(100, 126, 255, 1) 100% + ); } .banner-dismissed .banner { @@ -85,7 +70,7 @@ button { position: absolute; right: 0; top: 0; - padding: 10px 10px; + padding: 5px; } .close { @@ -94,61 +79,10 @@ button { fill: #fff; transform: rotate(45deg); } - -.vt-banner-text { - color: #fff; - font-size: 16px; -} - -.vt-text-primary { - color: #75c05e; -} - -.vt-primary-action { - background: #75c05e; - color: #121c1a; - padding: 8px 15px; - border-radius: 5px; - font-size: 14px; - text-decoration: none; - margin: 0 10px; - font-weight: bold; -} - -.vt-primary-action:hover { - text-decoration: none; - background: #c4d141; -} - -@media (max-width: 1280px) { - .banner .vt-banner-text { - font-size: 14px; - } - - -} - -@media (max-width: 780px) { - .vt-tagline { - display: none; - } - .vt-primary-action { - margin: 0 10px; - padding: 5px 5px; - } - - .vt-time-now { - display: none; - } -} - -@media (max-width: 560px) { - - .vt-place { +/* +@media (max-width: 720px) { + a > span { display: none; } - .vt-date { - display: none; - } -} +} */ diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts index 15f9fcff0..e2d8379a6 100644 --- a/.vitepress/theme/index.ts +++ b/.vitepress/theme/index.ts @@ -11,14 +11,14 @@ import { import SponsorsAside from './components/SponsorsAside.vue' import VueSchoolLink from './components/VueSchoolLink.vue' import ScrimbaLink from './components/ScrimbaLink.vue' -import Banner from './components/Banner.vue' +// import Banner from './components/Banner.vue' // import TextAd from './components/TextAd.vue' export default Object.assign({}, VPTheme, { Layout: () => { // @ts-ignore return h(VPTheme.Layout, null, { - banner: () => h(Banner), + // banner: () => h(Banner), 'sidebar-top': () => h(PreferenceSwitch), 'sidebar-bottom': () => h(SecurityUpdateBtn), 'aside-mid': () => h(SponsorsAside) From 4e0fa3e29102ef5bb6d96d1334452b503985bce0 Mon Sep 17 00:00:00 2001 From: Zhong Date: Tue, 10 Jun 2025 18:50:33 +0800 Subject: [PATCH 05/22] docs(computed): correct parameter positions in the computed example (#3244) Co-authored-by: it-evan --- src/guide/essentials/computed.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/guide/essentials/computed.md b/src/guide/essentials/computed.md index a8f0532ab..47a46da76 100644 --- a/src/guide/essentials/computed.md +++ b/src/guide/essentials/computed.md @@ -263,8 +263,15 @@ Now when you run `fullName.value = 'John Doe'`, the setter will be invoked and ` - Only supported in 3.4+ +

+In case you need it, you can get the previous value returned by the computed property accessing +the second argument of the getter: +

+ +

In case you need it, you can get the previous value returned by the computed property accessing the first argument of the getter: +

@@ -326,7 +333,7 @@ export default { }, computed: { alwaysSmall: { - get(previous) { + get(_, previous) { if (this.count <= 3) { return this.count } From ef5373469541ad01aedbc91ab491e32e96c3a635 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 12:50:42 +0200 Subject: [PATCH 06/22] chore(deps): bump vue from 3.5.13 to 3.5.16 (#3243) Bumps [vue](https://github.com/vuejs/core) from 3.5.13 to 3.5.16. - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.13...v3.5.16) --- updated-dependencies: - dependency-name: vue dependency-version: 3.5.16 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 221 ++++++++++++++++++++++++++----------------------- 1 file changed, 118 insertions(+), 103 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 113334ece..be099a8cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 4.5.1 '@vue/theme': specifier: ^2.3.0 - version: 2.3.0(@algolia/client-search@5.20.0)(search-insights@2.17.2)(vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.1)(search-insights@2.17.2)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3)) + version: 2.3.0(@algolia/client-search@5.20.0)(search-insights@2.17.2)(vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.4)(search-insights@2.17.2)(typescript@5.6.3))(vue@3.5.16(typescript@5.6.3)) dynamics.js: specifier: ^1.1.5 version: 1.1.5 @@ -22,10 +22,10 @@ importers: version: 3.12.5 vitepress: specifier: ^1.4.3 - version: 1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.1)(search-insights@2.17.2)(typescript@5.6.3) + version: 1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.4)(search-insights@2.17.2)(typescript@5.6.3) vue: specifier: ^3.5.12 - version: 3.5.13(typescript@5.6.3) + version: 3.5.16(typescript@5.6.3) devDependencies: '@types/body-scroll-lock': specifier: ^3.1.2 @@ -185,21 +185,21 @@ packages: '@algolia/transporter@4.24.0': resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + '@babel/parser@7.27.3': + resolution: {integrity: sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + '@babel/types@7.27.3': + resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} '@docsearch/css@3.6.2': @@ -566,20 +566,20 @@ packages: '@vue/compiler-core@3.5.12': resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + '@vue/compiler-core@3.5.16': + resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==} '@vue/compiler-dom@3.5.12': resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-dom@3.5.16': + resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==} - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + '@vue/compiler-sfc@3.5.16': + resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==} - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.16': + resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -601,22 +601,22 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/reactivity@3.5.16': + resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==} '@vue/repl@4.5.1': resolution: {integrity: sha512-YYXvFue2GOrZ6EWnoA8yQVKzdCIn45+tpwJHzMof1uwrgyYAVY9ynxCsDYeAuWcpaAeylg/nybhFuqiFy2uvYA==} - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + '@vue/runtime-core@3.5.16': + resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==} - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + '@vue/runtime-dom@3.5.16': + resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==} - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + '@vue/server-renderer@3.5.16': + resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==} peerDependencies: - vue: 3.5.13 + vue: 3.5.16 '@vue/shared@3.5.12': resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} @@ -624,6 +624,9 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.16': + resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} + '@vue/theme@2.3.0': resolution: {integrity: sha512-eKd4ipY6i6P2XD2iRVgbxs936g7pesEY2AgNX24C/sjzcmCnm48J7uV8xKXI2du2qfA89/r5QQp7bqZVf2Tekw==} peerDependencies: @@ -816,8 +819,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} @@ -861,6 +864,11 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -885,6 +893,10 @@ packages: resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + preact@10.24.2: resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} @@ -957,10 +969,6 @@ packages: tiny-decode@0.1.3: resolution: {integrity: sha512-1z+tXaZpPUyREOfjKDQj5lR6HfD6Pa4NF7pb/9ep7sP4+X5WF76bGdJktWCY1Rm+aMR46vJ75VAL/oAptpD1AA==} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -1059,8 +1067,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + vue@3.5.16: + resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1281,19 +1289,18 @@ snapshots: '@algolia/logger-common': 4.24.0 '@algolia/requester-common': 4.24.0 - '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.25.8': + '@babel/parser@7.27.3': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.27.3 - '@babel/types@7.25.8': + '@babel/types@7.27.3': dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 '@docsearch/css@3.6.2': {} @@ -1548,10 +1555,10 @@ snapshots: '@ungap/structured-clone@1.2.1': {} - '@vitejs/plugin-vue@5.2.1(vite@5.4.14(@types/node@22.7.5))(vue@3.5.13(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.1(vite@5.4.14(@types/node@22.7.5))(vue@3.5.16(typescript@5.6.3))': dependencies: vite: 5.4.14(@types/node@22.7.5) - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) '@volar/language-core@2.4.6': dependencies: @@ -1567,16 +1574,16 @@ snapshots: '@vue/compiler-core@3.5.12': dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.27.3 '@vue/shared': 3.5.12 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.16': dependencies: - '@babel/parser': 7.25.8 - '@vue/shared': 3.5.13 + '@babel/parser': 7.27.3 + '@vue/shared': 3.5.16 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -1586,27 +1593,27 @@ snapshots: '@vue/compiler-core': 3.5.12 '@vue/shared': 3.5.12 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-dom@3.5.16': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.16 + '@vue/shared': 3.5.16 - '@vue/compiler-sfc@3.5.13': + '@vue/compiler-sfc@3.5.16': dependencies: - '@babel/parser': 7.25.8 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 + '@babel/parser': 7.27.3 + '@vue/compiler-core': 3.5.16 + '@vue/compiler-dom': 3.5.16 + '@vue/compiler-ssr': 3.5.16 + '@vue/shared': 3.5.16 estree-walker: 2.0.2 - magic-string: 0.30.12 - postcss: 8.5.1 + magic-string: 0.30.17 + postcss: 8.5.4 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.13': + '@vue/compiler-ssr@3.5.16': dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.16 + '@vue/shared': 3.5.16 '@vue/compiler-vue2@2.7.16': dependencies: @@ -1644,43 +1651,45 @@ snapshots: optionalDependencies: typescript: 5.6.3 - '@vue/reactivity@3.5.13': + '@vue/reactivity@3.5.16': dependencies: - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.16 '@vue/repl@4.5.1': {} - '@vue/runtime-core@3.5.13': + '@vue/runtime-core@3.5.16': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.16 + '@vue/shared': 3.5.16 - '@vue/runtime-dom@3.5.13': + '@vue/runtime-dom@3.5.16': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.16 + '@vue/runtime-core': 3.5.16 + '@vue/shared': 3.5.16 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.6.3))': + '@vue/server-renderer@3.5.16(vue@3.5.16(typescript@5.6.3))': dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.6.3) + '@vue/compiler-ssr': 3.5.16 + '@vue/shared': 3.5.16 + vue: 3.5.16(typescript@5.6.3) '@vue/shared@3.5.12': {} '@vue/shared@3.5.13': {} - '@vue/theme@2.3.0(@algolia/client-search@5.20.0)(search-insights@2.17.2)(vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.1)(search-insights@2.17.2)(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3))': + '@vue/shared@3.5.16': {} + + '@vue/theme@2.3.0(@algolia/client-search@5.20.0)(search-insights@2.17.2)(vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.4)(search-insights@2.17.2)(typescript@5.6.3))(vue@3.5.16(typescript@5.6.3))': dependencies: '@docsearch/css': 3.6.2 '@docsearch/js': 3.6.2(@algolia/client-search@5.20.0)(search-insights@2.17.2) - '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.6.3)) + '@vueuse/core': 10.11.1(vue@3.5.16(typescript@5.6.3)) body-scroll-lock: 4.0.0-beta.0 normalize.css: 8.0.1 tiny-decode: 0.1.3 - vitepress: 1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.1)(search-insights@2.17.2)(typescript@5.6.3) + vitepress: 1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.4)(search-insights@2.17.2)(typescript@5.6.3) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -1690,12 +1699,12 @@ snapshots: - search-insights - vue - '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.6.3))': + '@vueuse/core@10.11.1(vue@3.5.16(typescript@5.6.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.6.3)) + '@vueuse/shared': 10.11.1(vue@3.5.16(typescript@5.6.3)) + vue-demi: 0.14.10(vue@3.5.16(typescript@5.6.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1705,7 +1714,7 @@ snapshots: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 12.5.0 '@vueuse/shared': 12.5.0(typescript@5.6.3) - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -1713,7 +1722,7 @@ snapshots: dependencies: '@vueuse/core': 12.5.0(typescript@5.6.3) '@vueuse/shared': 12.5.0(typescript@5.6.3) - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) optionalDependencies: focus-trap: 7.6.4 transitivePeerDependencies: @@ -1723,16 +1732,16 @@ snapshots: '@vueuse/metadata@12.5.0': {} - '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.6.3))': + '@vueuse/shared@10.11.1(vue@3.5.16(typescript@5.6.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.6.3)) + vue-demi: 0.14.10(vue@3.5.16(typescript@5.6.3)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/shared@12.5.0(typescript@5.6.3)': dependencies: - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) transitivePeerDependencies: - typescript @@ -1899,7 +1908,7 @@ snapshots: kind-of@6.0.3: {} - magic-string@0.30.12: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -1950,6 +1959,8 @@ snapshots: muggle-string@0.4.1: {} + nanoid@3.3.11: {} + nanoid@3.3.8: {} normalize.css@8.0.1: {} @@ -1972,6 +1983,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + preact@10.24.2: {} preact@10.25.4: {} @@ -2061,8 +2078,6 @@ snapshots: dependencies: entities: 4.5.0 - to-fast-properties@2.0.0: {} - trim-lines@3.0.1: {} typescript@5.6.3: {} @@ -2118,7 +2133,7 @@ snapshots: minimatch: 10.0.1 picocolors: 1.1.1 - vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.1)(search-insights@2.17.2)(typescript@5.6.3): + vitepress@1.6.3(@algolia/client-search@5.20.0)(@types/node@22.7.5)(postcss@8.5.4)(search-insights@2.17.2)(typescript@5.6.3): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.20.0)(search-insights@2.17.2) @@ -2127,7 +2142,7 @@ snapshots: '@shikijs/transformers': 2.1.0 '@shikijs/types': 2.1.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.1(vite@5.4.14(@types/node@22.7.5))(vue@3.5.13(typescript@5.6.3)) + '@vitejs/plugin-vue': 5.2.1(vite@5.4.14(@types/node@22.7.5))(vue@3.5.16(typescript@5.6.3)) '@vue/devtools-api': 7.7.0 '@vue/shared': 3.5.13 '@vueuse/core': 12.5.0(typescript@5.6.3) @@ -2137,9 +2152,9 @@ snapshots: minisearch: 7.1.1 shiki: 2.1.0 vite: 5.4.14(@types/node@22.7.5) - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) optionalDependencies: - postcss: 8.5.1 + postcss: 8.5.4 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -2169,9 +2184,9 @@ snapshots: vscode-uri@3.0.8: {} - vue-demi@0.14.10(vue@3.5.13(typescript@5.6.3)): + vue-demi@0.14.10(vue@3.5.16(typescript@5.6.3)): dependencies: - vue: 3.5.13(typescript@5.6.3) + vue: 3.5.16(typescript@5.6.3) vue-tsc@2.1.6(typescript@5.6.3): dependencies: @@ -2180,13 +2195,13 @@ snapshots: semver: 7.6.3 typescript: 5.6.3 - vue@3.5.13(typescript@5.6.3): + vue@3.5.16(typescript@5.6.3): dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.6.3)) - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.16 + '@vue/compiler-sfc': 3.5.16 + '@vue/runtime-dom': 3.5.16 + '@vue/server-renderer': 3.5.16(vue@3.5.16(typescript@5.6.3)) + '@vue/shared': 3.5.16 optionalDependencies: typescript: 5.6.3 From c80de28a4af9030e4d0342bb68a33c18fc16b907 Mon Sep 17 00:00:00 2001 From: Manson Date: Tue, 10 Jun 2025 18:52:46 +0800 Subject: [PATCH 07/22] docs(animation): add MAX_SAFE_INTEGER warning for large input edge case (#3231) docs(animation): add note about Number.MAX_SAFE_INTEGER for large input edge case --- src/guide/extras/animation.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/guide/extras/animation.md b/src/guide/extras/animation.md index b70c55810..7d5faa9f0 100644 --- a/src/guide/extras/animation.md +++ b/src/guide/extras/animation.md @@ -160,6 +160,8 @@ const tweened = reactive({ number: 0 }) +// Note: For inputs greater than Number.MAX_SAFE_INTEGER (9007199254740991), +// the result may be inaccurate due to limitations in JavaScript number precision. watch(number, (n) => { gsap.to(tweened, { duration: 0.5, number: Number(n) || 0 }) }) @@ -183,6 +185,8 @@ export default { tweened: 0 } }, + // Note: For inputs greater than Number.MAX_SAFE_INTEGER (9007199254740991), + // the result may be inaccurate due to limitations in JavaScript number precision. watch: { number(n) { gsap.to(this, { duration: 0.5, tweened: Number(n) || 0 }) From dbbb83310bf3881a3ac5598a4846049d02de9cc0 Mon Sep 17 00:00:00 2001 From: abeer0 <47961062+iiio2@users.noreply.github.com> Date: Thu, 26 Jun 2025 19:14:22 +0600 Subject: [PATCH 08/22] docs: provide comma (#3254) --- src/guide/essentials/forms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guide/essentials/forms.md b/src/guide/essentials/forms.md index dc45fb16e..c91142910 100644 --- a/src/guide/essentials/forms.md +++ b/src/guide/essentials/forms.md @@ -74,7 +74,7 @@ In addition, `v-model` can be used on inputs of different types, `