From 49af61a339223ec6344045eb140b418a286acc64 Mon Sep 17 00:00:00 2001 From: XiaoDaiGua-Ray <443547225@qq.com> Date: Sat, 9 Aug 2025 19:04:29 +0800 Subject: [PATCH] version: v5.2.2 --- .vscode/settings.json | 2 + CHANGELOG.md | 20 + package.json | 10 +- pnpm-lock.yaml | 834 ++++++++++++------ src/components/base/RForm/src/Form.tsx | 57 +- .../base/RForm/src/hooks/useForm.ts | 115 ++- src/components/base/RForm/src/props.ts | 69 +- .../base/RTransitionComponent/src/index.vue | 5 +- src/components/pro/RCollapse/Collapse.tsx | 40 +- src/main.ts | 1 + src/types/modules/helper.ts | 2 +- src/views/demo/form/index.tsx | 182 ++-- uno.config.ts | 5 + unplugin/.eslintrc-auto-import.json | 3 +- unplugin/auto-imports.d.ts | 1 + vite.plugin.config.ts | 2 + 16 files changed, 959 insertions(+), 389 deletions(-) create mode 100644 uno.config.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 96ade396..76f7342c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,6 +22,7 @@ "cSpell.words": [ "baomitu", "bezier", + "Cascader", "Clickoutside", "codabar", "commitmsg", @@ -44,6 +45,7 @@ "siderbar", "snapline", "stylelint", + "unocss", "WUJIE", "zlevel" ] diff --git a/CHANGELOG.md b/CHANGELOG.md index c4d5b24a..51306aa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +## 5.2.2 + +## Feats + +- `RForm` 组件相关 + - 新增 `submitWhenEnter` 配置项,允许在按下回车键时自动触发表单的校验,如果校验成功则会自动触发 `onFinish` 事件 + - 新增 `onFinish` 配置项,允许在表单校验成功后自动触发的事件 + - 新增 `autocomplete` 配置项,允许配置表单的自动完成功能,默认配置为 `off` + - 新增 `loading` 配置项,允许配置表单的加载状态 + - 新增 `loadingDescription` 配置项,允许配置表单的加载状态的描述 +- `useForm` 相关 + - 新增 `validateTargetField` 方法,允许验证指定表单项的规则 + - 初始化方法现在支持传入函数,允许动态获取表单的初始化值与规则 + - `formModel` 方法现在会默认联合 `Recordable` 类型,获取初始化类型中未获取到的类型时,默认推到为 `any` 类型 + - 新增了 `formConditionRef` 属性,现在可以在内部解构获取一个 `ref` 包裹的响应式初始化表单对象值 + - 新增了 `updateFormCondition` 方法,允许更新表单的值,该方法会覆盖初始化值 +- 更新依赖为主流版本 +- 新增 `unocss` 原子化样式库,但是不推荐全量使用,仅作为一些简单的样式片段使用,否则在调试的时候将会是灾难 + > 新增 `unocss` 后,在使用 `ProTable` 组件的流体高度最外层父元素配置时,可以便捷的配置 `h-full` 即可。 + ## 5.2.1 ## Feats diff --git a/package.json b/package.json index 2d1c42ff..05806781 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ray-template", "private": false, - "version": "5.2.1", + "version": "5.2.2", "type": "module", "engines": { "node": "^18.0.0 || ^20.0.0 || >=22.0.0", @@ -48,8 +48,8 @@ "lodash-es": "^4.17.21", "mockjs": "1.1.0", "naive-ui": "^2.42.0", - "pinia": "^3.0.1", - "pinia-plugin-persistedstate": "^4.2.0", + "pinia": "^3.0.3", + "pinia-plugin-persistedstate": "^4.4.1", "print-js": "^1.6.0", "vue": "^3.5.17", "vue-demi": "0.14.10", @@ -59,8 +59,6 @@ "vue3-next-qrcode": "3.0.2" }, "devDependencies": { - "@amap/amap-jsapi-types": "0.0.15", - "@ant-design/icons-vue": "7.0.1", "@commitlint/cli": "19.7.1", "@commitlint/config-conventional": "19.7.1", "@eslint/js": "9.28.0", @@ -70,7 +68,6 @@ "@types/jsbarcode": "3.11.4", "@types/lodash-es": "4.17.12", "@types/mockjs": "1.0.10", - "@types/three": "0.171.0", "@typescript-eslint/eslint-plugin": "8.24.0", "@typescript-eslint/parser": "8.24.0", "@vitejs/plugin-vue": "5.2.3", @@ -96,6 +93,7 @@ "sass": "1.86.3", "svg-sprite-loader": "6.0.11", "typescript": "5.8.3", + "unocss": "66.3.3", "unplugin-auto-import": "19.1.2", "unplugin-vue-components": "0.28.0", "vite": "6.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38cb5ec6..4239f7d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,11 +54,11 @@ importers: specifier: ^2.42.0 version: 2.42.0(vue@3.5.17(typescript@5.8.3)) pinia: - specifier: ^3.0.1 - version: 3.0.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + specifier: ^3.0.3 + version: 3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) pinia-plugin-persistedstate: - specifier: ^4.2.0 - version: 4.2.0(pinia@3.0.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)))(rollup@4.40.0) + specifier: ^4.4.1 + version: 4.4.1(@nuxt/kit@3.15.0(rollup@4.40.0))(pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))) print-js: specifier: ^1.6.0 version: 1.6.0 @@ -81,12 +81,6 @@ importers: specifier: 3.0.2 version: 3.0.2(vue@3.5.17(typescript@5.8.3)) devDependencies: - '@amap/amap-jsapi-types': - specifier: 0.0.15 - version: 0.0.15 - '@ant-design/icons-vue': - specifier: 7.0.1 - version: 7.0.1(vue@3.5.17(typescript@5.8.3)) '@commitlint/cli': specifier: 19.7.1 version: 19.7.1(@types/node@22.15.3)(typescript@5.8.3) @@ -114,9 +108,6 @@ importers: '@types/mockjs': specifier: 1.0.10 version: 1.0.10 - '@types/three': - specifier: 0.171.0 - version: 0.171.0 '@typescript-eslint/eslint-plugin': specifier: 8.24.0 version: 8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.8.3) @@ -192,6 +183,9 @@ importers: typescript: specifier: 5.8.3 version: 5.8.3 + unocss: + specifier: 66.3.3 + version: 66.3.3(postcss@8.5.4)(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3)) unplugin-auto-import: specifier: 19.1.2 version: 19.1.2(@nuxt/kit@3.15.0(rollup@4.40.0))(@vueuse/core@13.1.0(vue@3.5.17(typescript@5.8.3))) @@ -237,27 +231,19 @@ importers: packages: - '@amap/amap-jsapi-types@0.0.15': - resolution: {integrity: sha512-oqyRqHpVDZh5bUe2mAJh41ZsziSj0eUzwcfIbiaBNB0eiTJnZNhKsTdk77VOklOjwuwNfsblpKW9LjmWNpeQ7A==} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@ant-design/colors@6.0.0': - resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} - - '@ant-design/icons-svg@4.4.2': - resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} - - '@ant-design/icons-vue@7.0.1': - resolution: {integrity: sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==} - peerDependencies: - vue: '>=3.0.3' + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@antv/hierarchy@0.6.14': resolution: {integrity: sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==} @@ -273,10 +259,6 @@ packages: resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.2': - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} @@ -285,10 +267,6 @@ packages: resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.0': - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} - engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} @@ -313,10 +291,6 @@ packages: resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.9': - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} @@ -425,10 +399,6 @@ packages: resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.0': - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} @@ -470,8 +440,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/standalone@7.26.6': - resolution: {integrity: sha512-h1mkoNFYCqDkS+vTLGzsQYvp1v1qbuugk4lOtb/oyjArZ+EtreAaxcSYg3rSIzWZRQOjx4iqGe7A8NRYIMSTTw==} + '@babel/standalone@7.27.0': + resolution: {integrity: sha512-UxFDpi+BuSz6Q1X73P3ZSM1CB7Nbbqys+7COi/tdouRuaqRsJ6GAzUyxTswbqItHSItVY3frQdd+paBHHGEk9g==} engines: {node: '>=6.9.0'} '@babel/template@7.24.7': @@ -510,10 +480,6 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.5': - resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.3': resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} @@ -597,10 +563,6 @@ packages: peerDependencies: vue: ^3.0.11 - '@ctrl/tinycolor@3.6.1': - resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} - engines: {node: '>=10'} - '@emotion/hash@0.8.0': resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} @@ -957,6 +919,12 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@interactjs/types@1.10.27': resolution: {integrity: sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==} @@ -1155,6 +1123,10 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@quansync/fs@0.1.3': + resolution: {integrity: sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==} + engines: {node: '>=20.0.0'} + '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -1297,9 +1269,6 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@tweenjs/tween.js@23.1.3': - resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} - '@types/conventional-commits-parser@5.0.1': resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} @@ -1354,21 +1323,12 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/stats.js@0.17.3': - resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} - '@types/svgo@2.6.4': resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - '@types/three@0.171.0': - resolution: {integrity: sha512-oLuT1SAsT+CUg/wxUTFHo0K3NtJLnx9sJhZWQJp/0uXqFpzSk1hRHmvWvpaAWSfvx2db0lVKZ5/wV0I0isD2mQ==} - '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@types/webxr@0.5.20': - resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==} - '@typescript-eslint/eslint-plugin@8.18.2': resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1463,6 +1423,92 @@ packages: resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unocss/astro@66.3.3': + resolution: {integrity: sha512-q26EfadSMmEXZpWDKsJF9anBCfhYDmWljVpDZ2Wo8K48IbZMUXrWfiAiUc6ijE/A/rADfHk8bp3a3GE01t3I9A==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@66.3.3': + resolution: {integrity: sha512-U0HoDcwi/DetqP5zDT3dfxG94pC3TI0PfxmpdTfPY7xEylIdLbV89fb70CvJVysDSQJIuw6TYwqS1ZlHoYNKTA==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@66.3.3': + resolution: {integrity: sha512-D/UxnAmkabapqWU4tF85dWWhNfCUyNutWmd4AD2VsQRZOykufJedLV74r3Z3XhoPJn4IGr3BKZm5/rflf5viDg==} + engines: {node: '>=14'} + + '@unocss/core@66.3.3': + resolution: {integrity: sha512-6WFLd92TJelVQARtCGaF+EgEoHKIVe43gkGXVoWILu0HUDRWdhv+cpcyX0RTJV22Y976AxeneU7/zmhAh+CXNg==} + + '@unocss/extractor-arbitrary-variants@66.3.3': + resolution: {integrity: sha512-TXzjH6FcITQ8V2x7ETHgVOlAHf3ll/ysxL+W4fMROm8jP/o7jvsg36tRfOwU0sDGo/qoCPux82ix9e6/JW0oqQ==} + + '@unocss/inspector@66.3.3': + resolution: {integrity: sha512-NsK1WRWez2Mzk4+ophtBdXel8nGaPkIDa9lYSFMdKLF/1jNW23txeEL8CsD6/CK8K0BsR11rhLKhUrzyrjfBSQ==} + + '@unocss/postcss@66.3.3': + resolution: {integrity: sha512-VKq+BtfPIZbLeAeZFprtKZJAyFBOqA8qpQm+vmWBiBia70JzkwfF2SMNIHiGt022yRo9ZmjnI9uRTxSzqXUsUQ==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@66.3.3': + resolution: {integrity: sha512-22+0Cqqu09q+xHfZ3Wk8Coxe5m6PmpgWz4U5xrEC8056UfG3Q1KEqoCxy2wySJIq8SqxQ30Nlll7oMa31B8Krw==} + + '@unocss/preset-icons@66.3.3': + resolution: {integrity: sha512-Bmhiev05BN/horlgnyZ8gzQWZKd7oVpUBWD66X7U/dgkLdO6B5GIIsdO5Fi7JLeMDmyXm6vlYk0YQhiTbx8l9w==} + + '@unocss/preset-mini@66.3.3': + resolution: {integrity: sha512-pz8rgvHRYS/6fsZNtG7iArLzwANnLy5GkHY/lbuqkWhO2S2Nf7kpJCbR/uV/XeuFsLnYcZW3NLOmelfvZvJamA==} + + '@unocss/preset-tagify@66.3.3': + resolution: {integrity: sha512-L1Ez7Y4uBaW+wiv1BOQygpfhseSt3EZ53jqkl7fxl1EKVsJy6SuZgJxlXEHUYp9xYdSp6EHq2CfL8UevaR+loA==} + + '@unocss/preset-typography@66.3.3': + resolution: {integrity: sha512-aQXiGCObvWD9grfUpm0d5nzN+Cpvag0rHP39UjUKb0xSTzY09VzwDrua4kWVO5wJLNK6/L70osyhEgmC3qToxA==} + + '@unocss/preset-uno@66.3.3': + resolution: {integrity: sha512-Tiho4LidpuMHrB19GHTU6XrL0A5eFELHk9ebQ/3WeTy+K/9a6Hn5zsHJe5UCtOsEcUdKB33oZx0hXUp93hb/YQ==} + + '@unocss/preset-web-fonts@66.3.3': + resolution: {integrity: sha512-ysKZeC7TXxRiqnNL9GxZFGMKFAHXrcaqozPaEOIJ40dvzbJt8IMLyFndZkcFMcgDCV0pFh/y37mGxxxARO9+pQ==} + + '@unocss/preset-wind3@66.3.3': + resolution: {integrity: sha512-iXmjvPqvmPTo4z7epQDqHxzlGRsbLJEgfETqTrRJeagvFG7Gs+ajS8cQhbf6wL01dSRHjvhVXi3MsIvqfHHXOw==} + + '@unocss/preset-wind4@66.3.3': + resolution: {integrity: sha512-JSJTXVJel6kX+u4Ktt6JGnukYWYhKxmjgORTwclUpokRHgEoD+xsh0Rz4YGJ1fWSnzNslNQhWP9yDRByVPHWwA==} + + '@unocss/preset-wind@66.3.3': + resolution: {integrity: sha512-3Mxl/TDPcv8nNKdFe3WKdlXE6de+lCaaizEH86BILW3ZeyPU9aKzWcZIoxohla0a6zMxDQ2+Gf+7EwaOvpqo7Q==} + + '@unocss/reset@66.3.3': + resolution: {integrity: sha512-VIeR/mIcCL89/1uA1KM1QCYca4aeIGqEHMTJL1nCD4v+7wk6XhNXhsp5gMIHo+V804SUSmATWaeHTiKpiFu7AQ==} + + '@unocss/rule-utils@66.3.3': + resolution: {integrity: sha512-QKgVGV5nRRnK44/reUKFLAc5UGyl98vz3hrfk8JI8pVza58vmQWTdAB2rIpNJ5a5j+EkWfDOUlGQaOrIeYGLdg==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@66.3.3': + resolution: {integrity: sha512-ENNYFk5wrI4jlxn0tWGeR9QGxflAfZue3X2ABg0KSVOiYyIOsrHqtdoiLYkuCA9idRlBZPQxePJKcPWt1r/tYA==} + + '@unocss/transformer-compile-class@66.3.3': + resolution: {integrity: sha512-VTEFuwp3iajGWyEFwmO5LRvOjgZM1TK+4rX5Q79xyTAPkLAKgOa03Ne8+kU8oG0TQEa4mXVw6ul9McM7UBJh1w==} + + '@unocss/transformer-directives@66.3.3': + resolution: {integrity: sha512-11T7fmYk/XZcqFDn4qiIvs04mJhUtAoha5Y99bVE+L3byWa6BT4jb5aSAKk+24q5aynwgB++4RgfQxarj69WTw==} + + '@unocss/transformer-variant-group@66.3.3': + resolution: {integrity: sha512-uhK81pbJfXJFYaXxOoIFVEG8/Kx1iaAkTwRB6c+WNUfl9GiKyYQcrI7bETgCPPbg230Z68jVICBgBATeLJ31vQ==} + + '@unocss/vite@66.3.3': + resolution: {integrity: sha512-uu3smeEW6q36ri6vydRx2GiTGF5O/J80Fr4GLmLiwfpt2YnPHraO7XHVR5/mwG2Oz5Kov0uGvxVsdgxZABKRgw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + '@vitejs/plugin-vue-jsx@4.1.2': resolution: {integrity: sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1657,9 +1703,6 @@ packages: peerDependencies: vue: ^3.5.0 - '@webgpu/types@0.1.52': - resolution: {integrity: sha512-eI883Nlag2hGIkhXxAnq8s4APpqXWuPL3Gbn2ghiU12UjLvfCbVqHK4XfXl3eLRTatqcMmeK7jws7IwWsGfbzw==} - '@xn-sakina/rml-darwin-arm64@2.3.0': resolution: {integrity: sha512-3CxaA3NRBo6pd9i6Ih5FL+3qmCrYt4nlc1dAw+VhvyUImkSt1tt9WVvm955i2YJVEjQydgsE+U1xhxKJnFa8Hg==} engines: {node: '>=14'} @@ -1916,8 +1959,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - c12@2.0.1: - resolution: {integrity: sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==} + c12@2.0.4: + resolution: {integrity: sha512-3DbbhnFt0fKJHxU4tEUPmD1ahWE4PWPMomqfYsTJdrhpmEnRKJi3qSC4rO5U6E6zN1+pjBY7+z8fUmNRMaVKLw==} peerDependencies: magicast: ^0.3.5 peerDependenciesMeta: @@ -2097,8 +2140,8 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} conventional-changelog-angular@7.0.0: @@ -2186,6 +2229,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -2339,8 +2386,8 @@ packages: deps-regex@0.2.0: resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} @@ -2396,14 +2443,17 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2813,8 +2863,8 @@ packages: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} hasBin: true git-raw-commits@4.0.0: @@ -2858,12 +2908,16 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globals@16.0.0: resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} engines: {node: '>=18'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} good-listener@1.2.2: @@ -2879,6 +2933,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + happy-dom@17.1.0: resolution: {integrity: sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==} engines: {node: '>=18.0.0'} @@ -3274,6 +3332,9 @@ packages: knitwork@1.2.0: resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3302,10 +3363,6 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} - local-pkg@1.0.0: - resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} - engines: {node: '>=14'} - local-pkg@1.1.1: resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} engines: {node: '>=14'} @@ -3395,6 +3452,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3417,9 +3477,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - meshoptimizer@0.18.1: - resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} - micromatch@3.1.0: resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} engines: {node: '>=0.10.0'} @@ -3571,8 +3628,8 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -3600,8 +3657,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.3.12: - resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -3625,8 +3682,14 @@ packages: resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} engines: {node: '>=0.10.0'} - ohash@1.1.4: - resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@1.1.6: + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3666,6 +3729,9 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3715,9 +3781,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} pathe@0.2.0: resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} @@ -3754,19 +3820,22 @@ packages: engines: {node: '>=0.10'} hasBin: true - pinia-plugin-persistedstate@4.2.0: - resolution: {integrity: sha512-3buhA7ac+ssbOIx3VRCC8oHkoFwhDM9oHRCjo7nj+O8WUqnW+jRqh7eYT5eS/DNa3H28zp3dYf/nd/Vc8zj8eQ==} + pinia-plugin-persistedstate@4.4.1: + resolution: {integrity: sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==} peerDependencies: - '@pinia/nuxt': '>=0.9.0' - pinia: '>=2.3.0' + '@nuxt/kit': '>=3.0.0' + '@pinia/nuxt': '>=0.10.0' + pinia: '>=3.0.0' peerDependenciesMeta: + '@nuxt/kit': + optional: true '@pinia/nuxt': optional: true pinia: optional: true - pinia@3.0.1: - resolution: {integrity: sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==} + pinia@3.0.3: + resolution: {integrity: sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==} peerDependencies: typescript: '>=4.4.4' vue: ^2.7.0 || ^3.5.11 @@ -3870,6 +3939,9 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.8: resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==} @@ -4077,6 +4149,10 @@ packages: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -4154,6 +4230,9 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -4271,6 +4350,9 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} @@ -4279,6 +4361,10 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -4375,6 +4461,12 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + unconfig@7.3.2: + resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -4394,6 +4486,10 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unidecode@0.1.8: resolution: {integrity: sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==} engines: {node: '>= 0.4.12'} @@ -4413,6 +4509,18 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unocss@66.3.3: + resolution: {integrity: sha512-HSB+K4/EbouwYmxpPU52cg0exua7PUr2IAJZBV3iai6tPdMcJ0c8jXaw7G+2L+ffruVFTcS0e2kE4OrR8BKDLg==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 66.3.3 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -4463,10 +4571,6 @@ packages: resolution: {integrity: sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ==} engines: {node: '>=18.12.0'} - unplugin@2.1.2: - resolution: {integrity: sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==} - engines: {node: '>=18.12.0'} - unplugin@2.3.2: resolution: {integrity: sha512-3n7YA46rROb3zSj8fFxtxC/PqoyvYQ0llwz9wtUPUutr9ig09C8gGo5CWCwHrUzlqC1LLR43kxp5vEIyH1ac1w==} engines: {node: '>=18.12.0'} @@ -4701,6 +4805,11 @@ packages: peerDependencies: eslint: '>=6.0.0' + vue-flow-layout@0.1.1: + resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} + peerDependencies: + vue: ^3.4.37 + vue-hooks-plus@2.4.0: resolution: {integrity: sha512-qr82k2QUydREZ9FaWIgYYYqSMTf+v7zIH/f6l2WAo7k2pT+t0VDMz86PlGWA0YimeZn6zf75/mRw/A+xM8Fs4g==} peerDependencies: @@ -4862,27 +4971,20 @@ packages: snapshots: - '@amap/amap-jsapi-types@0.0.15': {} - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@ant-design/colors@6.0.0': + '@antfu/install-pkg@1.1.0': dependencies: - '@ctrl/tinycolor': 3.6.1 - - '@ant-design/icons-svg@4.4.2': {} - - '@ant-design/icons-vue@7.0.1(vue@3.5.17(typescript@5.8.3))': - dependencies: - '@ant-design/colors': 6.0.0 - '@ant-design/icons-svg': 4.4.2 - vue: 3.5.17(typescript@5.8.3) + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 '@antfu/utils@0.7.10': {} + '@antfu/utils@8.1.1': {} + '@antv/hierarchy@0.6.14': {} '@babel/code-frame@7.24.7': @@ -4898,8 +5000,6 @@ snapshots: '@babel/compat-data@7.24.7': {} - '@babel/compat-data@7.26.2': {} - '@babel/compat-data@7.26.8': {} '@babel/core@7.24.1': @@ -4922,26 +5022,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.26.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.26.10': dependencies: '@ampproject/remapping': 2.3.0 @@ -4997,14 +5077,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.9': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.0': dependencies: '@babel/compat-data': 7.26.8 @@ -5071,15 +5143,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -5143,11 +5206,6 @@ snapshots: '@babel/template': 7.24.7 '@babel/types': 7.25.2 - '@babel/helpers@7.26.0': - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - '@babel/helpers@7.27.0': dependencies: '@babel/template': 7.27.0 @@ -5193,7 +5251,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/standalone@7.26.6': {} + '@babel/standalone@7.27.0': + optional: true '@babel/template@7.24.7': dependencies: @@ -5268,11 +5327,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.26.5': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.3': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -5396,8 +5450,6 @@ snapshots: dependencies: vue: 3.5.17(typescript@5.8.3) - '@ctrl/tinycolor@3.6.1': {} - '@emotion/hash@0.8.0': {} '@esbuild/aix-ppc64@0.21.5': @@ -5607,6 +5659,21 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + '@interactjs/types@1.10.27': {} '@intlify/bundle-utils@8.0.0(vue-i18n@9.13.1(vue@3.5.17(typescript@5.8.3)))': @@ -5728,22 +5795,22 @@ snapshots: '@nuxt/kit@3.15.0(rollup@4.40.0)': dependencies: '@nuxt/schema': 3.15.0(rollup@4.40.0) - c12: 2.0.1 - consola: 3.4.0 + c12: 2.0.4 + consola: 3.4.2 defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 + destr: 2.0.5 + globby: 14.1.0 ignore: 7.0.3 jiti: 2.4.2 klona: 2.0.6 knitwork: 1.2.0 mlly: 1.7.4 - ohash: 1.1.4 + ohash: 1.1.6 pathe: 1.1.2 pkg-types: 1.3.1 scule: 1.3.0 semver: 7.7.1 - ufo: 1.5.4 + ufo: 1.6.1 unctx: 2.4.1 unimport: 3.14.6(rollup@4.40.0) untyped: 1.5.2 @@ -5751,19 +5818,20 @@ snapshots: - magicast - rollup - supports-color + optional: true '@nuxt/schema@3.15.0(rollup@4.40.0)': dependencies: - c12: 2.0.1 + c12: 2.0.4 compatx: 0.1.8 - consola: 3.4.0 + consola: 3.4.2 defu: 6.1.4 hookable: 5.5.3 pathe: 1.1.2 pkg-types: 1.3.1 scule: 1.3.0 - std-env: 3.8.0 - ufo: 1.5.4 + std-env: 3.9.0 + ufo: 1.6.1 uncrypto: 0.1.3 unimport: 3.14.6(rollup@4.40.0) untyped: 1.5.2 @@ -5771,6 +5839,7 @@ snapshots: - magicast - rollup - supports-color + optional: true '@one-ini/wasm@0.1.1': {} @@ -5844,6 +5913,10 @@ snapshots: '@polka/url@1.0.0-next.28': {} + '@quansync/fs@0.1.3': + dependencies: + quansync: 0.2.10 + '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 @@ -5933,14 +6006,13 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true - '@sindresorhus/merge-streams@2.3.0': {} + '@sindresorhus/merge-streams@2.3.0': + optional: true '@sphinxxxx/color-conversion@2.2.2': {} '@trysound/sax@0.2.0': {} - '@tweenjs/tween.js@23.1.3': {} - '@types/conventional-commits-parser@5.0.1': dependencies: '@types/node': 22.15.3 @@ -5992,25 +6064,12 @@ snapshots: '@types/parse-json@4.0.2': {} - '@types/stats.js@0.17.3': {} - '@types/svgo@2.6.4': dependencies: '@types/node': 22.5.5 - '@types/three@0.171.0': - dependencies: - '@tweenjs/tween.js': 23.1.3 - '@types/stats.js': 0.17.3 - '@types/webxr': 0.5.20 - '@webgpu/types': 0.1.52 - fflate: 0.8.2 - meshoptimizer: 0.18.1 - '@types/web-bluetooth@0.0.21': {} - '@types/webxr@0.5.20': {} - '@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -6165,6 +6224,158 @@ snapshots: '@typescript-eslint/types': 8.24.0 eslint-visitor-keys: 4.2.0 + '@unocss/astro@66.3.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/reset': 66.3.3 + '@unocss/vite': 66.3.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3)) + optionalDependencies: + vite: 6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1) + transitivePeerDependencies: + - vue + + '@unocss/cli@66.3.3': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.3.3 + '@unocss/core': 66.3.3 + '@unocss/preset-uno': 66.3.3 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.17 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.14 + unplugin-utils: 0.2.4 + + '@unocss/config@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + unconfig: 7.3.2 + + '@unocss/core@66.3.3': {} + + '@unocss/extractor-arbitrary-variants@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/inspector@66.3.3(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/rule-utils': 66.3.3 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.1 + vue-flow-layout: 0.1.1(vue@3.5.17(typescript@5.8.3)) + transitivePeerDependencies: + - vue + + '@unocss/postcss@66.3.3(postcss@8.5.4)': + dependencies: + '@unocss/config': 66.3.3 + '@unocss/core': 66.3.3 + '@unocss/rule-utils': 66.3.3 + css-tree: 3.1.0 + postcss: 8.5.4 + tinyglobby: 0.2.14 + + '@unocss/preset-attributify@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/preset-icons@66.3.3': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 66.3.3 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/extractor-arbitrary-variants': 66.3.3 + '@unocss/rule-utils': 66.3.3 + + '@unocss/preset-tagify@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/preset-typography@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/preset-mini': 66.3.3 + '@unocss/rule-utils': 66.3.3 + + '@unocss/preset-uno@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/preset-wind3': 66.3.3 + + '@unocss/preset-web-fonts@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + ofetch: 1.4.1 + + '@unocss/preset-wind3@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/preset-mini': 66.3.3 + '@unocss/rule-utils': 66.3.3 + + '@unocss/preset-wind4@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/extractor-arbitrary-variants': 66.3.3 + '@unocss/rule-utils': 66.3.3 + + '@unocss/preset-wind@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/preset-wind3': 66.3.3 + + '@unocss/reset@66.3.3': {} + + '@unocss/rule-utils@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + magic-string: 0.30.17 + + '@unocss/transformer-attributify-jsx@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/transformer-compile-class@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/transformer-directives@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + '@unocss/rule-utils': 66.3.3 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@66.3.3': + dependencies: + '@unocss/core': 66.3.3 + + '@unocss/vite@66.3.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.3.3 + '@unocss/core': 66.3.3 + '@unocss/inspector': 66.3.3(vue@3.5.17(typescript@5.8.3)) + chokidar: 3.6.0 + magic-string: 0.30.17 + pathe: 2.0.3 + tinyglobby: 0.2.14 + unplugin-utils: 0.2.4 + vite: 6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1) + transitivePeerDependencies: + - vue + '@vitejs/plugin-vue-jsx@4.1.2(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3))': dependencies: '@babel/core': 7.26.10 @@ -6473,8 +6684,6 @@ snapshots: dependencies: vue: 3.5.17(typescript@5.8.3) - '@webgpu/types@0.1.52': {} - '@xn-sakina/rml-darwin-arm64@2.3.0': optional: true @@ -6690,20 +6899,21 @@ snapshots: bytes@3.1.2: {} - c12@2.0.1: + c12@2.0.4: dependencies: chokidar: 4.0.3 confbox: 0.1.8 defu: 6.1.4 - dotenv: 16.4.7 - giget: 1.2.3 + dotenv: 16.5.0 + giget: 1.2.5 jiti: 2.4.2 mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 + ohash: 2.0.11 + pathe: 2.0.3 perfect-debounce: 1.0.0 pkg-types: 1.3.1 rc9: 2.1.2 + optional: true cac@6.7.14: {} @@ -6791,11 +7001,13 @@ snapshots: dependencies: readdirp: 4.1.1 - chownr@2.0.0: {} + chownr@2.0.0: + optional: true citty@0.1.6: dependencies: - consola: 3.4.0 + consola: 3.4.2 + optional: true class-utils@0.3.6: dependencies: @@ -6879,7 +7091,8 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - compatx@0.1.8: {} + compatx@0.1.8: + optional: true component-emitter@1.3.1: {} @@ -6896,7 +7109,7 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - consola@3.4.0: {} + consola@3.4.2: {} conventional-changelog-angular@7.0.0: dependencies: @@ -7005,6 +7218,11 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.1.0: {} cssesc@3.0.0: {} @@ -7125,7 +7343,7 @@ snapshots: deps-regex@0.2.0: {} - destr@2.0.3: {} + destr@2.0.5: {} detect-file@1.0.0: {} @@ -7193,7 +7411,8 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv@16.4.7: {} + dotenv@16.5.0: + optional: true dunder-proto@1.0.1: dependencies: @@ -7201,6 +7420,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} echarts@5.6.0: @@ -7655,6 +7876,7 @@ snapshots: fs-minipass@2.1.0: dependencies: minipass: 3.3.6 + optional: true fsevents@2.3.3: optional: true @@ -7702,16 +7924,16 @@ snapshots: get-value@2.0.6: {} - giget@1.2.3: + giget@1.2.5: dependencies: citty: 0.1.6 - consola: 3.4.0 + consola: 3.4.2 defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.12 - ohash: 1.1.4 - pathe: 1.1.2 + node-fetch-native: 1.6.6 + nypm: 0.5.4 + pathe: 2.0.3 tar: 6.2.1 + optional: true git-raw-commits@4.0.0: dependencies: @@ -7762,16 +7984,19 @@ snapshots: globals@14.0.0: {} + globals@15.15.0: {} + globals@16.0.0: {} - globby@14.0.2: + globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 + ignore: 7.0.3 + path-type: 6.0.0 slash: 5.1.0 - unicorn-magic: 0.1.0 + unicorn-magic: 0.3.0 + optional: true good-listener@1.2.2: dependencies: @@ -7783,6 +8008,10 @@ snapshots: graphemer@1.4.0: {} + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + happy-dom@17.1.0: dependencies: webidl-conversions: 7.0.0 @@ -7872,7 +8101,8 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.3: {} + ignore@7.0.3: + optional: true image-size@0.5.5: {} @@ -8103,9 +8333,13 @@ snapshots: kind-of@6.0.3: {} - klona@2.0.6: {} + klona@2.0.6: + optional: true - knitwork@1.2.0: {} + knitwork@1.2.0: + optional: true + + kolorist@1.8.0: {} levn@0.4.1: dependencies: @@ -8151,11 +8385,6 @@ snapshots: mlly: 1.7.3 pkg-types: 1.2.1 - local-pkg@1.0.0: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - local-pkg@1.1.1: dependencies: mlly: 1.7.4 @@ -8234,6 +8463,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.12.2: {} + media-typer@0.3.0: {} medium-editor@5.23.3: {} @@ -8248,8 +8479,6 @@ snapshots: merge2@1.4.1: {} - meshoptimizer@0.18.1: {} - micromatch@3.1.0: dependencies: arr-diff: 4.0.0 @@ -8313,8 +8542,10 @@ snapshots: minipass@3.3.6: dependencies: yallist: 4.0.0 + optional: true - minipass@5.0.0: {} + minipass@5.0.0: + optional: true minipass@7.1.2: {} @@ -8322,6 +8553,7 @@ snapshots: dependencies: minipass: 3.3.6 yallist: 4.0.0 + optional: true mitt@1.1.2: {} @@ -8332,7 +8564,8 @@ snapshots: for-in: 1.0.2 is-extendable: 1.0.1 - mkdirp@1.0.4: {} + mkdirp@1.0.4: + optional: true mlly@1.7.1: dependencies: @@ -8437,7 +8670,7 @@ snapshots: node-addon-api@7.1.1: optional: true - node-fetch-native@1.6.4: {} + node-fetch-native@1.6.6: {} node-releases@2.0.18: {} @@ -8459,14 +8692,15 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.3.12: + nypm@0.5.4: dependencies: citty: 0.1.6 - consola: 3.4.0 - execa: 8.0.1 - pathe: 1.1.2 + consola: 3.4.2 + pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.5.4 + tinyexec: 0.3.2 + ufo: 1.6.1 + optional: true object-assign@4.1.1: {} @@ -8486,7 +8720,17 @@ snapshots: dependencies: isobject: 3.0.1 - ohash@1.1.4: {} + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.6 + ufo: 1.6.1 + + ohash@1.1.6: + optional: true + + ohash@2.0.11: + optional: true once@1.4.0: dependencies: @@ -8534,6 +8778,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@1.3.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -8570,7 +8816,8 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} + path-type@6.0.0: + optional: true pathe@0.2.0: {} @@ -8592,20 +8839,16 @@ snapshots: pidtree@0.6.0: {} - pinia-plugin-persistedstate@4.2.0(pinia@3.0.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)))(rollup@4.40.0): + pinia-plugin-persistedstate@4.4.1(@nuxt/kit@3.15.0(rollup@4.40.0))(pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))): dependencies: - '@nuxt/kit': 3.15.0(rollup@4.40.0) deep-pick-omit: 1.2.1 defu: 6.1.4 - destr: 2.0.3 + destr: 2.0.5 optionalDependencies: - pinia: 3.0.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) - transitivePeerDependencies: - - magicast - - rollup - - supports-color + '@nuxt/kit': 3.15.0(rollup@4.40.0) + pinia: 3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) - pinia@3.0.1(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): + pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): dependencies: '@vue/devtools-api': 7.7.5 vue: 3.5.17(typescript@5.8.3) @@ -8721,6 +8964,8 @@ snapshots: dependencies: side-channel: 1.1.0 + quansync@0.2.10: {} + quansync@0.2.8: {} query-string@4.3.4: @@ -8742,7 +8987,8 @@ snapshots: rc9@2.1.2: dependencies: defu: 6.1.4 - destr: 2.0.3 + destr: 2.0.5 + optional: true readable-stream@3.6.2: dependencies: @@ -8942,7 +9188,14 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 - slash@5.1.0: {} + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + slash@5.1.0: + optional: true slice-ansi@5.0.0: dependencies: @@ -9016,6 +9269,9 @@ snapshots: std-env@3.8.0: {} + std-env@3.9.0: + optional: true + strict-uri-encode@1.1.0: {} string-argv@0.3.2: {} @@ -9061,6 +9317,7 @@ snapshots: strip-literal@2.1.1: dependencies: js-tokens: 9.0.1 + optional: true strip-literal@3.0.0: dependencies: @@ -9158,6 +9415,7 @@ snapshots: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + optional: true text-extensions@2.4.0: {} @@ -9169,6 +9427,8 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.10: dependencies: fdir: 6.4.2(picomatch@4.0.2) @@ -9179,6 +9439,11 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + tinypool@1.0.2: {} tinyrainbow@1.2.0: {} @@ -9254,14 +9519,25 @@ snapshots: ufo@1.5.4: {} - uncrypto@0.1.3: {} + ufo@1.6.1: {} + + unconfig@7.3.2: + dependencies: + '@quansync/fs': 0.1.3 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.8 + + uncrypto@0.1.3: + optional: true unctx@2.4.1: dependencies: acorn: 8.14.1 estree-walker: 3.0.3 magic-string: 0.30.17 - unplugin: 2.1.2 + unplugin: 2.3.2 + optional: true undici-types@5.26.5: {} @@ -9271,6 +9547,9 @@ snapshots: unicorn-magic@0.1.0: {} + unicorn-magic@0.3.0: + optional: true + unidecode@0.1.8: {} unimport@3.14.6(rollup@4.40.0): @@ -9280,10 +9559,10 @@ snapshots: escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.3 - local-pkg: 1.0.0 + local-pkg: 1.1.1 magic-string: 0.30.17 mlly: 1.7.4 - pathe: 2.0.1 + pathe: 2.0.3 picomatch: 4.0.2 pkg-types: 1.3.1 scule: 1.3.0 @@ -9291,6 +9570,7 @@ snapshots: unplugin: 1.16.1 transitivePeerDependencies: - rollup + optional: true unimport@4.2.0: dependencies: @@ -9318,6 +9598,34 @@ snapshots: universalify@2.0.1: {} + unocss@66.3.3(postcss@8.5.4)(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3)): + dependencies: + '@unocss/astro': 66.3.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3)) + '@unocss/cli': 66.3.3 + '@unocss/core': 66.3.3 + '@unocss/postcss': 66.3.3(postcss@8.5.4) + '@unocss/preset-attributify': 66.3.3 + '@unocss/preset-icons': 66.3.3 + '@unocss/preset-mini': 66.3.3 + '@unocss/preset-tagify': 66.3.3 + '@unocss/preset-typography': 66.3.3 + '@unocss/preset-uno': 66.3.3 + '@unocss/preset-web-fonts': 66.3.3 + '@unocss/preset-wind': 66.3.3 + '@unocss/preset-wind3': 66.3.3 + '@unocss/preset-wind4': 66.3.3 + '@unocss/transformer-attributify-jsx': 66.3.3 + '@unocss/transformer-compile-class': 66.3.3 + '@unocss/transformer-directives': 66.3.3 + '@unocss/transformer-variant-group': 66.3.3 + '@unocss/vite': 66.3.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1))(vue@3.5.17(typescript@5.8.3)) + optionalDependencies: + vite: 6.3.5(@types/node@22.15.3)(jiti@2.4.2)(sass@1.86.3)(yaml@2.7.1) + transitivePeerDependencies: + - postcss + - supports-color + - vue + unpipe@1.0.0: {} unplugin-auto-import@19.1.2(@nuxt/kit@3.15.0(rollup@4.40.0))(@vueuse/core@13.1.0(vue@3.5.17(typescript@5.8.3))): @@ -9368,17 +9676,13 @@ snapshots: dependencies: acorn: 8.14.1 webpack-virtual-modules: 0.6.2 + optional: true unplugin@2.1.0: dependencies: acorn: 8.14.1 webpack-virtual-modules: 0.6.2 - unplugin@2.1.2: - dependencies: - acorn: 8.14.1 - webpack-virtual-modules: 0.6.2 - unplugin@2.3.2: dependencies: acorn: 8.14.1 @@ -9392,9 +9696,9 @@ snapshots: untyped@1.5.2: dependencies: - '@babel/core': 7.26.0 - '@babel/standalone': 7.26.6 - '@babel/types': 7.26.5 + '@babel/core': 7.26.10 + '@babel/standalone': 7.27.0 + '@babel/types': 7.27.3 citty: 0.1.6 defu: 6.1.4 jiti: 2.4.2 @@ -9402,6 +9706,7 @@ snapshots: scule: 1.3.0 transitivePeerDependencies: - supports-color + optional: true update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: @@ -9639,6 +9944,10 @@ snapshots: transitivePeerDependencies: - supports-color + vue-flow-layout@0.1.1(vue@3.5.17(typescript@5.8.3)): + dependencies: + vue: 3.5.17(typescript@5.8.3) + vue-hooks-plus@2.4.0(vue@3.5.17(typescript@5.8.3)): dependencies: '@types/js-cookie': 3.0.6 @@ -9744,7 +10053,8 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} + yallist@4.0.0: + optional: true yaml-eslint-parser@1.2.2: dependencies: diff --git a/src/components/base/RForm/src/Form.tsx b/src/components/base/RForm/src/Form.tsx index 15682c48..bc89a402 100644 --- a/src/components/base/RForm/src/Form.tsx +++ b/src/components/base/RForm/src/Form.tsx @@ -1,17 +1,41 @@ -import { NForm } from 'naive-ui' +import { NForm, NSpin } from 'naive-ui' import props from './props' -import { call } from '@/utils' +import { call, unrefElement } from '@/utils' import { useTemplateRef } from 'vue' +import { useEventListener } from '@vueuse/core' import type { RFormInst } from './types' -import type { FormProps } from 'naive-ui' +import type { ShallowRef } from 'vue' export default defineComponent({ name: 'RForm', props, setup(props, { expose }) { const formRef = useTemplateRef('formRef') + const currentSubmitFn = computed(() => props.onFinish ?? Promise.resolve) + + const bindKeydownListener = (e: KeyboardEvent) => { + const keyCode = e.code + + if (keyCode === 'Enter') { + e.stopPropagation() + e.preventDefault() + + formRef.value?.validate().then(currentSubmitFn.value) + } + } + + if (props.submitWhenEnter) { + useEventListener( + formRef as unknown as ShallowRef, + 'keydown', + bindKeydownListener, + { + capture: true, + }, + ) + } onMounted(() => { // 主动调用 register 方法,满足 useForm 方法正常调用 @@ -20,6 +44,16 @@ export default defineComponent({ if (onRegister && formRef.value) { call(onRegister, formRef.value) } + + if (formRef.value) { + const formElement = unrefElement( + formRef.value as unknown as HTMLFormElement, + ) + + if (formElement) { + formElement.autocomplete = props.autocomplete + } + } }) expose() @@ -30,13 +64,22 @@ export default defineComponent({ }, render() { const { $attrs, $props, $slots } = this + const { loading, loadingDescription, ...restProps } = $props return ( - - {{ - ...$slots, + + > + + {{ + ...$slots, + }} + + ) }, }) diff --git a/src/components/base/RForm/src/hooks/useForm.ts b/src/components/base/RForm/src/hooks/useForm.ts index 031c7d0f..349ab321 100644 --- a/src/components/base/RForm/src/hooks/useForm.ts +++ b/src/components/base/RForm/src/hooks/useForm.ts @@ -40,10 +40,11 @@ const useForm = < T extends Recordable = Recordable, R extends RFormRules = RFormRules, >( - model?: T, - rules?: R, + model?: T | (() => T), + rules?: R | (() => R), ) => { const formRef = shallowRef() + const formModelRef = ref() const register = (inst: RFormInst) => { if (inst) { @@ -61,6 +62,15 @@ const useForm = < return formRef.value } + // 初始化 formModelRef 的值,根据 model 的类型进行初始化 + const initialFormModel = () => { + if (typeof model === 'function') { + formModelRef.value = model() ?? ({} as T) + } else { + formModelRef.value = cloneDeep(model) ?? ({} as T) + } + } + /** * * @description @@ -91,6 +101,9 @@ const useForm = < * 该方法可以实现重置表单的需求,因为在 vue 的设计理念中,表单的值绑定是直接绑定在每个组件上, * 而不是利用 Form 表单机制,所以需要这么去做表单的初始化操作维护机制。 * + * 在 5.2.2 版本中,新增了 formConditionRef 属性,现在可以解构获取一个 ref 包裹的响应式初始化表单对象值; + * 这样就可以直接在 hook 中调用一个响应式的表单对象值。 + * * @example * * interface FormModel { @@ -109,7 +122,13 @@ const useForm = < * formModelRef.value = formModel() * } */ - const formModel = () => cloneDeep(model) || ({} as T) + const formModel = (): T & Recordable => { + if (typeof model === 'function') { + return model() + } + + return cloneDeep(model) || ({} as T) + } /** * @@ -118,12 +137,17 @@ const useForm = < * * 调用该方法时,需要确保初始化 useForm 方法的时候传入了 rules,否则可能有意想不到的问题发生。 */ - const formRules = () => cloneDeep(rules) || ({} as R) + const formRules = () => { + if (typeof rules === 'function') { + return rules() + } + + return cloneDeep(rules) || ({} as R) + } /** * - * @param values 需要重置的表单值 - * @param extraValues 额外的表单值,当你需要初始化额外的表单值的时候,可以传入该参数 + * @param values 需要重置的表单值,该参数会覆盖初始化值 * * @warning * 请注意初始化值的问题,如果设置初始化值为 undefined, @@ -137,14 +161,80 @@ const useForm = < * 所以,最佳的实践应该是初始化 useForm 方法的时候,就应该确定好初始化值。 * 然后,在需要重置表单的时候,直接调用该方法即可。 */ - const reset = ( - values: Values & Recordable, - extraValues?: Recordable, - ) => { - Object.assign(values ?? {}, formModel(), extraValues) + const reset = (values?: Values & Recordable) => { + formModelRef.value = Object.assign( + formModelRef.value as T, + formModel(), + values, + ) restoreValidation() } + /** + * + * @param key 需要验证的表单项的 key + * + * @see https://www.naiveui.com/zh-CN/dark/components/form#partially-apply-rules.vue + * + * @description + * 验证表单项的规则。 + * + * 注意,该方法想要正常运转,需要在定义 rules 时定义唯一 key; + * 否则,该逻辑执行会失败。 + * + * @example + * const [register, { validateTargetField }] = useForm( + * { + * name: null, + * }, + * { + * name: { + * required: true, + * message: 'name is required', + * trigger: ['blur', 'change'], + * type: 'string', + * key: 'name', + * }, + * }, + * ) + * + * validateTargetField('name') + */ + const validateTargetField = (key: string) => { + if (!key || typeof key !== 'string') { + throw new Error( + `[useForm-validateTargetField]: except key is string, but got ${typeof key}.`, + ) + } + + return validate(void 0, (rules) => { + return rules?.key === key + }) + } + + /** + * + * @description + * 更新表单的值,该方法会覆盖初始化值。 + * 推荐在表单组件中使用该方法,而不是直接修改表单的值,符合函数式的理念。 + * + * @example + * const [register, { updateFormCondition }] = useForm( + * { + * name: null, + * }, + * ) + * + * updateFormCondition({ + * name: 'John', + * }) + */ + const updateFormCondition = (values: T & Recordable) => { + formModelRef.value = Object.assign(formModelRef.value as T, values) + } + + initialFormModel() + return [ register, { @@ -154,6 +244,9 @@ const useForm = < formModel, formRules, reset, + validateTargetField, + formConditionRef: formModelRef as Ref, + updateFormCondition, }, ] as const } diff --git a/src/components/base/RForm/src/props.ts b/src/components/base/RForm/src/props.ts index ec1d5065..3749bfb4 100644 --- a/src/components/base/RForm/src/props.ts +++ b/src/components/base/RForm/src/props.ts @@ -1,10 +1,75 @@ import { formProps } from 'naive-ui' +import { omit } from 'lodash-es' -import type { MaybeArray } from '@/types' +import type { MaybeArray, AnyFC } from '@/types' import type { RFormInst } from './types' const props = { - ...formProps, + ...omit(formProps, ['onSubmit']), + /** + * + * @description + * 表单的加载状态。 + * + * @default false + */ + loading: { + type: Boolean, + default: false, + }, + /** + * + * @description + * 表单的加载状态的描述。 + * + * @default undefined + */ + loadingDescription: { + type: String, + default: void 0, + }, + /** + * + * @description + * 表单的自动完成功能。 + * + * @default 'off' + */ + autocomplete: { + type: String as PropType, + default: 'off', + }, + /** + * + * @description + * 是否在按下回车键时自动触发表单的校验,如果校验成功则会自动触发 onFinish 事件。 + * 该功能需要结合 onFinish 属性使用。 + * + * 注意,该属性不支持响应式更新,只依赖于初始化传入的值; + * 因为该方法特性的原因,做响应式的更新意义不大。 + * + * 并且该属性启用后,会自动的拦截 Enter 键的默认行为; + * 例如 NSelect, NInput 等官方自带组件的默认快捷键功能,都会被阻止; + * 但是不得不这么做,以避免一些奇奇怪怪的问题。 + * + * @default false + */ + submitWhenEnter: { + type: Boolean, + default: false, + }, + /** + * + * @description + * 表单校验成功后自动触发的事件,该事件的触发时机为 submitWhenEnter 属性为 true 时,按下回车键触发。 + * 该功能需要结合 submitWhenEnter 属性使用。 + * + * @default null + */ + onFinish: { + type: Function as PropType, + default: null, + }, /** * * @description diff --git a/src/components/base/RTransitionComponent/src/index.vue b/src/components/base/RTransitionComponent/src/index.vue index 071e9fb2..ede53fbe 100644 --- a/src/components/base/RTransitionComponent/src/index.vue +++ b/src/components/base/RTransitionComponent/src/index.vue @@ -31,8 +31,9 @@ import type { TransitionProps } from './types' /** * - * 使用宏编译模式时,可以使用 defineOptions 声明组件选项 - * 常用方法即是声明该组件的 name inheritAttrs 等属性 + * @description + * 使用宏编译模式时,可以使用 defineOptions 声明组件选项。 + * 常用方法即是声明该组件的 name inheritAttrs 等属性。 */ defineOptions({ name: 'RTransitionComponent', diff --git a/src/components/pro/RCollapse/Collapse.tsx b/src/components/pro/RCollapse/Collapse.tsx index bdd32718..c4e5a7c0 100644 --- a/src/components/pro/RCollapse/Collapse.tsx +++ b/src/components/pro/RCollapse/Collapse.tsx @@ -5,6 +5,26 @@ import collapseGridProps from '../../base/RCollapseGrid/src/props' import type { GridProps } from 'naive-ui' +export const collapseProps = Object.assign({}, formProps, { + ...collapseGridProps, + open: { + type: Boolean, + default: true, + }, + cols: { + type: [Number, String] as PropType, + default: '4 xs:1 s:2 m:2 l:4 xl:4 2xl:6', + }, + bordered: { + type: Boolean, + default: true, + }, + responsive: { + type: String as PropType, + default: 'screen', + }, +}) + /** * * @description @@ -13,25 +33,7 @@ import type { GridProps } from 'naive-ui' */ export default defineComponent({ name: 'RCollapse', - props: Object.assign({}, formProps, { - ...collapseGridProps, - open: { - type: Boolean, - default: true, - }, - cols: { - type: [Number, String] as PropType, - default: '4 xs:1 s:2 m:2 l:4 xl:4 2xl:6', - }, - bordered: { - type: Boolean, - default: true, - }, - responsive: { - type: String as PropType, - default: 'screen', - }, - }), + props: collapseProps, render() { const { $slots, $props } = this const { labelPlacement, showFeedback, ...rest } = $props diff --git a/src/main.ts b/src/main.ts index bca86b8a..5ae0a040 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,6 +5,7 @@ import './app-components/provider/provider.scss' // 初始化 provider 包注入 import 'vue3-next-qrcode/es/style.css' // vue3-next-qrcode 样式 import 'virtual:svg-icons-register' // vite-plugin-svg-icons 脚本,启用 svg 雪碧图 +import 'virtual:uno.css' import { setupRouter } from './router' import { setupStore } from './store' diff --git a/src/types/modules/helper.ts b/src/types/modules/helper.ts index e51ed519..ea427570 100644 --- a/src/types/modules/helper.ts +++ b/src/types/modules/helper.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -type RecordKey = string | number | symbol +export type RecordKey = string | number | symbol /** * diff --git a/src/views/demo/form/index.tsx b/src/views/demo/form/index.tsx index c0063163..176f7a51 100644 --- a/src/views/demo/form/index.tsx +++ b/src/views/demo/form/index.tsx @@ -10,9 +10,12 @@ import { NRadio, NRadioGroup, NCard, + NText, + NSwitch, } from 'naive-ui' import { useForm } from '@/components' +import { useHookPlusRequest } from '@/axios' interface FormModel { name: string | null @@ -29,12 +32,12 @@ export default defineComponent({ const [ register, { - getFormInstance, validate, restoreValidation, - formModel, formRules, reset, + validateTargetField, + formConditionRef, }, ] = useForm( { @@ -71,101 +74,124 @@ export default defineComponent({ }, ) - /** - * - * @description - * 如果只是简单的数据,可以在初始化 useForm 的时候直接传入第一个参数; - * 然后使用 formModel 方法获取到初始化 model 数据。 - * - * 当然,在 vue 中,推荐使用该方法进行表单值的初始化操作; - * 因为,可以在你需要的时候实现便捷的一键初始化表单需求。 - */ - const condition = ref(formModel()) + const formLoading = ref(false) - /** - * - * @param key 需要校验的字段。 - * - * @see https://www.naiveui.com/zh-CN/dark/components/form#partially-apply-rules.vue - * - * @description - * 执行部分的校验规则。 - */ - const onlyValidateSection = (key: string) => { - validate(void 0, (rules) => { - return rules?.key === key - }) - } + const { run: runHookPlusRequest } = useHookPlusRequest( + () => { + return new Promise((resolve, reject) => { + validate() + .then(() => { + formLoading.value = true + + setTimeout(() => { + window.$message.success('校验成功') + resolve(true) + }, 500) + }) + .catch(reject) + .finally(() => { + formLoading.value = false + }) + }) + }, + { + manual: true, + }, + ) return { register, - condition, + formConditionRef, restoreValidation, validate, formRules, - onlyValidateSection, + validateTargetField, reset, + formLoading, + runHookPlusRequest, } }, render() { - const { condition } = this + const { formConditionRef } = this const { register, restoreValidation, - validate, formRules, - onlyValidateSection, + validateTargetField, reset, + runHookPlusRequest, } = this return ( - - - - - - - - - - - - - - - - - - - - - - - - reset(this.condition)}> - 重置表单为初始状态 - - - 移除校验状态 - - onlyValidateSection('name')} - > - 仅校验姓名字段 - - validate()}> - 校验 - - 重置 - - - - + ( + + useForm 表单校验 + + + )} + > + {{ + default: () => ( + { + window.$message.success('表单提交成功') + }} + loading={this.formLoading} + > + + + + + + + + + + + + + + + + + + + + + + reset()}> + 重置表单为初始状态 + + + 移除校验状态 + + validateTargetField('name')} + > + 仅校验姓名字段 + + + 校验 + + + + + + ), + 'header-extra': () => '输入表单的时候,试试按下 Enter 键', + }} ) }, diff --git a/uno.config.ts b/uno.config.ts new file mode 100644 index 00000000..843f395e --- /dev/null +++ b/uno.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'unocss' + +export default defineConfig({ + safelist: ['w-full', 'h-full'], +}) diff --git a/unplugin/.eslintrc-auto-import.json b/unplugin/.eslintrc-auto-import.json index c4546572..5c1377c6 100644 --- a/unplugin/.eslintrc-auto-import.json +++ b/unplugin/.eslintrc-auto-import.json @@ -88,6 +88,7 @@ "useModel": true, "useTemplateRef": true, "Slot": true, - "Slots": true + "Slots": true, + "NFormItem": true } } diff --git a/unplugin/auto-imports.d.ts b/unplugin/auto-imports.d.ts index aa080114..cb53bc36 100644 --- a/unplugin/auto-imports.d.ts +++ b/unplugin/auto-imports.d.ts @@ -7,6 +7,7 @@ export {} declare global { const EffectScope: typeof import('vue')['EffectScope'] + const NFormItem: typeof import('naive-ui')['NFormItem'] const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] const computed: typeof import('vue')['computed'] const createApp: typeof import('vue')['createApp'] diff --git a/vite.plugin.config.ts b/vite.plugin.config.ts index b0f9dc6e..30759f3b 100644 --- a/vite.plugin.config.ts +++ b/vite.plugin.config.ts @@ -13,6 +13,7 @@ import viteEslint from 'vite-plugin-eslint' import mockDevServerPlugin from 'vite-plugin-mock-dev-server' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import unpluginViteComponents from 'unplugin-vue-components/vite' +import unoCSS from 'unocss/vite' import { cdn as viteCDNPlugin } from 'vite-plugin-cdn2' import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' @@ -212,6 +213,7 @@ function baseOptions(mode: string): PluginOption[] { inject: 'body-last', customDomId: '__svg__icons__dom__', }), + unoCSS(), ] }