mirror of
https://github.com/XiaoDaiGua-Ray/ray-template.git
synced 2025-05-21 20:32:44 +08:00
version: v4.9.7
This commit is contained in:
parent
f9473114e7
commit
11cbf8bca3
29
CHANGELOG.md
29
CHANGELOG.md
@ -1,5 +1,34 @@
|
|||||||
# CHANGE LOG
|
# CHANGE LOG
|
||||||
|
|
||||||
|
## 4.9.7
|
||||||
|
|
||||||
|
从该版本开始,默认关闭了 `cdn` 构建生产环境;因为国内厂商真心不给力。
|
||||||
|
|
||||||
|
## Feats
|
||||||
|
|
||||||
|
- 更新 `vue` 版本至 `3.5.12`
|
||||||
|
- 更新 `@vueuse/core` 版本至 `11.1.0`
|
||||||
|
- 更新 `naive-ui` 版本至 `2.40.1`
|
||||||
|
- 更新 `MenuTag` 一些东西,移除了无用的 `ref` 注册,简化了代码;现在允许出现 `rootPath` 标签的关闭按钮了
|
||||||
|
- `useElementFullscreen` 新增 `currentWindowSize` 返回项,获取当前的窗口尺寸
|
||||||
|
- `RCollapseGrid` 组件默认开启 `bordered`
|
||||||
|
- `RCollapseGrid onUpdateValue` 方法更名为 `onUpdateOpen`
|
||||||
|
- `RTable` 组件默认开启 `wrapperBordered`
|
||||||
|
- `RTable` 组件默认开启 `bordered`
|
||||||
|
- 新增 `clearSigningCallback` 方法
|
||||||
|
- `vite.custom.config` 新增 `cdn` 配置项,是否启用 `cdn` 构建项目
|
||||||
|
- 配置 `cdn` 为 `false`,因为国内厂商更新资源速度有点慢,导致预览失败
|
||||||
|
- `Layout` 层注入 `--window-width`, `--window-height` `css var` 属性
|
||||||
|
- 稳定 `Layout` 层的 `css var` 属性
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
- 修复 `MenuTag` 鼠标移入并且加右键菜单操作时,会导致关闭按钮图标消失的问题
|
||||||
|
- 修复 `useElementFullscreen` 方法在窗口尺寸更新时,全屏元素失败的问题
|
||||||
|
- 修复 `MenuTag` 注入 `MENU_TAG_DATA` 错误的问题
|
||||||
|
- 修复 `Layout Content` 默认高度获取失败问题
|
||||||
|
- 修复 `RCollapseGrid` 组件自定义 `collapse` 插槽折叠失败的问题
|
||||||
|
|
||||||
## 4.9.6
|
## 4.9.6
|
||||||
|
|
||||||
由于 `cdn` 厂商更新 `cdn` 资源太慢的缘故,所以目前 `vue` 的版本只有 `3.5.3` 会导致构建线上生产环境报错的问题。
|
由于 `cdn` 厂商更新 `cdn` 资源太慢的缘故,所以目前 `vue` 的版本只有 `3.5.3` 会导致构建线上生产环境报错的问题。
|
||||||
|
12
package.json
12
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ray-template",
|
"name": "ray-template",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "4.9.6",
|
"version": "4.9.7",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.0.0 || >=20.0.0",
|
"node": "^18.0.0 || >=20.0.0",
|
||||||
@ -33,7 +33,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vueuse/core": "^10.9.0",
|
"@vueuse/core": "^11.1.0",
|
||||||
"axios": "^1.7.5",
|
"axios": "^1.7.5",
|
||||||
"clipboard": "^2.0.11",
|
"clipboard": "^2.0.11",
|
||||||
"currency.js": "^2.0.4",
|
"currency.js": "^2.0.4",
|
||||||
@ -44,11 +44,11 @@
|
|||||||
"jsbarcode": "3.11.6",
|
"jsbarcode": "3.11.6",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"mockjs": "1.1.0",
|
"mockjs": "1.1.0",
|
||||||
"naive-ui": "^2.39.0",
|
"naive-ui": "^2.40.1",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.2.4",
|
||||||
"pinia-plugin-persistedstate": "^4.0.1",
|
"pinia-plugin-persistedstate": "^4.1.1",
|
||||||
"print-js": "^1.6.0",
|
"print-js": "^1.6.0",
|
||||||
"vue": "^3.5.8",
|
"vue": "^3.5.12",
|
||||||
"vue-demi": "0.14.6",
|
"vue-demi": "0.14.6",
|
||||||
"vue-hooks-plus": "2.2.1",
|
"vue-hooks-plus": "2.2.1",
|
||||||
"vue-i18n": "^9.13.1",
|
"vue-i18n": "^9.13.1",
|
||||||
|
458
pnpm-lock.yaml
generated
458
pnpm-lock.yaml
generated
@ -6,8 +6,8 @@ settings:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vueuse/core':
|
'@vueuse/core':
|
||||||
specifier: ^10.9.0
|
specifier: ^11.1.0
|
||||||
version: 10.9.0(vue@3.5.8)
|
version: 11.1.0(vue@3.5.12)
|
||||||
axios:
|
axios:
|
||||||
specifier: ^1.7.5
|
specifier: ^1.7.5
|
||||||
version: 1.7.5
|
version: 1.7.5
|
||||||
@ -39,32 +39,32 @@ dependencies:
|
|||||||
specifier: 1.1.0
|
specifier: 1.1.0
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
naive-ui:
|
naive-ui:
|
||||||
specifier: ^2.39.0
|
specifier: ^2.40.1
|
||||||
version: 2.39.0(vue@3.5.8)
|
version: 2.40.1(vue@3.5.12)
|
||||||
pinia:
|
pinia:
|
||||||
specifier: ^2.1.7
|
specifier: ^2.2.4
|
||||||
version: 2.1.7(typescript@5.2.2)(vue@3.5.8)
|
version: 2.2.4(typescript@5.2.2)(vue@3.5.12)
|
||||||
pinia-plugin-persistedstate:
|
pinia-plugin-persistedstate:
|
||||||
specifier: ^4.0.1
|
specifier: ^4.1.1
|
||||||
version: 4.0.1(pinia@2.1.7)
|
version: 4.1.1(pinia@2.2.4)
|
||||||
print-js:
|
print-js:
|
||||||
specifier: ^1.6.0
|
specifier: ^1.6.0
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.5.8
|
specifier: ^3.5.12
|
||||||
version: 3.5.8(typescript@5.2.2)
|
version: 3.5.12(typescript@5.2.2)
|
||||||
vue-demi:
|
vue-demi:
|
||||||
specifier: 0.14.6
|
specifier: 0.14.6
|
||||||
version: 0.14.6(vue@3.5.8)
|
version: 0.14.6(vue@3.5.12)
|
||||||
vue-hooks-plus:
|
vue-hooks-plus:
|
||||||
specifier: 2.2.1
|
specifier: 2.2.1
|
||||||
version: 2.2.1(vue@3.5.8)
|
version: 2.2.1(vue@3.5.12)
|
||||||
vue-i18n:
|
vue-i18n:
|
||||||
specifier: ^9.13.1
|
specifier: ^9.13.1
|
||||||
version: 9.13.1(vue@3.5.8)
|
version: 9.13.1(vue@3.5.12)
|
||||||
vue-router:
|
vue-router:
|
||||||
specifier: ^4.3.2
|
specifier: ^4.3.2
|
||||||
version: 4.3.2(vue@3.5.8)
|
version: 4.3.2(vue@3.5.12)
|
||||||
vue3-next-qrcode:
|
vue3-next-qrcode:
|
||||||
specifier: 2.0.10
|
specifier: 2.0.10
|
||||||
version: 2.0.10(typescript@5.2.2)
|
version: 2.0.10(typescript@5.2.2)
|
||||||
@ -105,10 +105,10 @@ devDependencies:
|
|||||||
version: 6.21.0(eslint@8.57.0)(typescript@5.2.2)
|
version: 6.21.0(eslint@8.57.0)(typescript@5.2.2)
|
||||||
'@vitejs/plugin-vue':
|
'@vitejs/plugin-vue':
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.1.0(vite@5.4.3)(vue@3.5.8)
|
version: 5.1.0(vite@5.4.3)(vue@3.5.12)
|
||||||
'@vitejs/plugin-vue-jsx':
|
'@vitejs/plugin-vue-jsx':
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.0(vite@5.4.3)(vue@3.5.8)
|
version: 4.0.0(vite@5.4.3)(vue@3.5.12)
|
||||||
'@vitest/ui':
|
'@vitest/ui':
|
||||||
specifier: 1.4.0
|
specifier: 1.4.0
|
||||||
version: 1.4.0(vitest@1.5.2)
|
version: 1.4.0(vitest@1.5.2)
|
||||||
@ -120,7 +120,7 @@ devDependencies:
|
|||||||
version: 12.0.0(eslint-plugin-vue@9.25.0)(eslint@8.57.0)(typescript@5.2.2)
|
version: 12.0.0(eslint-plugin-vue@9.25.0)(eslint@8.57.0)(typescript@5.2.2)
|
||||||
'@vue/test-utils':
|
'@vue/test-utils':
|
||||||
specifier: 2.4.3
|
specifier: 2.4.3
|
||||||
version: 2.4.3(vue@3.5.8)
|
version: 2.4.3(vue@3.5.12)
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: ^10.4.16
|
specifier: ^10.4.16
|
||||||
version: 10.4.16(postcss@8.4.38)
|
version: 10.4.16(postcss@8.4.38)
|
||||||
@ -174,10 +174,10 @@ devDependencies:
|
|||||||
version: 5.2.2
|
version: 5.2.2
|
||||||
unplugin-auto-import:
|
unplugin-auto-import:
|
||||||
specifier: ^0.18.2
|
specifier: ^0.18.2
|
||||||
version: 0.18.2(@vueuse/core@10.9.0)
|
version: 0.18.2(@vueuse/core@11.1.0)
|
||||||
unplugin-vue-components:
|
unplugin-vue-components:
|
||||||
specifier: ^0.27.4
|
specifier: ^0.27.4
|
||||||
version: 0.27.4(vue@3.5.8)
|
version: 0.27.4(vue@3.5.12)
|
||||||
vite:
|
vite:
|
||||||
specifier: ^5.4.3
|
specifier: ^5.4.3
|
||||||
version: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
version: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
||||||
@ -386,7 +386,7 @@ packages:
|
|||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/traverse': 7.24.8
|
'@babel/traverse': 7.24.8
|
||||||
'@babel/types': 7.24.9
|
'@babel/types': 7.25.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -442,7 +442,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
|
resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.9
|
'@babel/types': 7.25.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-plugin-utils@7.24.8:
|
/@babel/helper-plugin-utils@7.24.8:
|
||||||
@ -478,7 +478,7 @@ packages:
|
|||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/traverse': 7.24.8
|
'@babel/traverse': 7.24.8
|
||||||
'@babel/types': 7.24.9
|
'@babel/types': 7.25.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -589,13 +589,6 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@babel/runtime@7.24.5:
|
|
||||||
resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
|
|
||||||
engines: {node: '>=6.9.0'}
|
|
||||||
dependencies:
|
|
||||||
regenerator-runtime: 0.14.1
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@babel/standalone@7.25.6:
|
/@babel/standalone@7.25.6:
|
||||||
resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==}
|
resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
@ -843,12 +836,12 @@ packages:
|
|||||||
css-render: 0.15.14
|
css-render: 0.15.14
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@css-render/vue3-ssr@0.15.14(vue@3.5.8):
|
/@css-render/vue3-ssr@0.15.14(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==}
|
resolution: {integrity: sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.11
|
vue: ^3.0.11
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@emotion/hash@0.8.0:
|
/@emotion/hash@0.8.0:
|
||||||
@ -1359,7 +1352,7 @@ packages:
|
|||||||
jsonc-eslint-parser: 2.4.0
|
jsonc-eslint-parser: 2.4.0
|
||||||
mlly: 1.6.1
|
mlly: 1.6.1
|
||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.0
|
||||||
vue-i18n: 9.13.1(vue@3.5.8)
|
vue-i18n: 9.13.1(vue@3.5.12)
|
||||||
yaml-eslint-parser: 1.2.2
|
yaml-eslint-parser: 1.2.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@ -1408,7 +1401,7 @@ packages:
|
|||||||
picocolors: 1.0.1
|
picocolors: 1.0.1
|
||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.0
|
||||||
unplugin: 1.10.1
|
unplugin: 1.10.1
|
||||||
vue-i18n: 9.13.1(vue@3.5.8)
|
vue-i18n: 9.13.1(vue@3.5.12)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -1487,11 +1480,11 @@ packages:
|
|||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.17.1
|
fastq: 1.17.1
|
||||||
|
|
||||||
/@nuxt/kit@3.13.1:
|
/@nuxt/kit@3.13.2:
|
||||||
resolution: {integrity: sha512-FkUL349lp/3nVfTIyws4UDJ3d2jyv5Pk1DC1HQUCOkSloYYMdbRcQAUcb4fe2TCLNWvHM+FhU8jnzGTzjALZYA==}
|
resolution: {integrity: sha512-KvRw21zU//wdz25IeE1E5m/aFSzhJloBRAQtv+evcFeZvuroIxpIQuUqhbzuwznaUwpiWbmwlcsp5uOWmi4vwA==}
|
||||||
engines: {node: ^14.18.0 || >=16.10.0}
|
engines: {node: ^14.18.0 || >=16.10.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nuxt/schema': 3.13.1
|
'@nuxt/schema': 3.13.2
|
||||||
c12: 1.11.2
|
c12: 1.11.2
|
||||||
consola: 3.2.3
|
consola: 3.2.3
|
||||||
defu: 6.1.4
|
defu: 6.1.4
|
||||||
@ -1509,7 +1502,7 @@ packages:
|
|||||||
semver: 7.6.3
|
semver: 7.6.3
|
||||||
ufo: 1.5.4
|
ufo: 1.5.4
|
||||||
unctx: 2.3.1
|
unctx: 2.3.1
|
||||||
unimport: 3.11.1
|
unimport: 3.13.1
|
||||||
untyped: 1.4.2
|
untyped: 1.4.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- magicast
|
- magicast
|
||||||
@ -1518,8 +1511,8 @@ packages:
|
|||||||
- webpack-sources
|
- webpack-sources
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@nuxt/schema@3.13.1:
|
/@nuxt/schema@3.13.2:
|
||||||
resolution: {integrity: sha512-ishbhzVGspjshG9AG0hYnKYY6LWXzCtua7OXV7C/DQ2yA7rRcy1xHpzKZUDbIRyxCHHCAcBd8jfHEUmEuhEPrA==}
|
resolution: {integrity: sha512-CCZgpm+MkqtOMDEgF9SWgGPBXlQ01hV/6+2reDEpJuqFPGzV8HYKPBcIFvn7/z5ahtgutHLzjP71Na+hYcqSpw==}
|
||||||
engines: {node: ^14.18.0 || >=16.10.0}
|
engines: {node: ^14.18.0 || >=16.10.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
compatx: 0.1.8
|
compatx: 0.1.8
|
||||||
@ -1532,7 +1525,7 @@ packages:
|
|||||||
std-env: 3.7.0
|
std-env: 3.7.0
|
||||||
ufo: 1.5.4
|
ufo: 1.5.4
|
||||||
uncrypto: 0.1.3
|
uncrypto: 0.1.3
|
||||||
unimport: 3.11.1
|
unimport: 3.13.1
|
||||||
untyped: 1.4.2
|
untyped: 1.4.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
@ -1586,6 +1579,21 @@ packages:
|
|||||||
'@types/estree': 1.0.5
|
'@types/estree': 1.0.5
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@rollup/pluginutils@5.1.2:
|
||||||
|
resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
picomatch: 2.3.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@rollup/rollup-android-arm-eabi@4.20.0:
|
/@rollup/rollup-android-arm-eabi@4.20.0:
|
||||||
resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
|
resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
|
||||||
@ -1980,7 +1988,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitejs/plugin-vue-jsx@4.0.0(vite@5.4.3)(vue@3.5.8):
|
/@vitejs/plugin-vue-jsx@4.0.0(vite@5.4.3)(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-A+6wL2AdQhDsLsDnY+2v4rRDI1HLJGIMc97a8FURO9tqKsH5QvjWrzsa5DH3NlZsM742W2wODl2fF+bfcTWtXw==}
|
resolution: {integrity: sha512-A+6wL2AdQhDsLsDnY+2v4rRDI1HLJGIMc97a8FURO9tqKsH5QvjWrzsa5DH3NlZsM742W2wODl2fF+bfcTWtXw==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1991,12 +1999,12 @@ packages:
|
|||||||
'@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.7)
|
'@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.7)
|
||||||
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7)
|
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7)
|
||||||
vite: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
vite: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitejs/plugin-vue@5.1.0(vite@5.4.3)(vue@3.5.8):
|
/@vitejs/plugin-vue@5.1.0(vite@5.4.3)(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==}
|
resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -2004,7 +2012,7 @@ packages:
|
|||||||
vue: ^3.2.25
|
vue: ^3.2.25
|
||||||
dependencies:
|
dependencies:
|
||||||
vite: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
vite: 5.4.3(@types/node@20.5.1)(sass@1.71.1)
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitest/expect@1.5.2:
|
/@vitest/expect@1.5.2:
|
||||||
@ -2127,7 +2135,7 @@ packages:
|
|||||||
'@babel/helper-module-imports': 7.22.15
|
'@babel/helper-module-imports': 7.22.15
|
||||||
'@babel/helper-plugin-utils': 7.24.8
|
'@babel/helper-plugin-utils': 7.24.8
|
||||||
'@babel/parser': 7.24.8
|
'@babel/parser': 7.24.8
|
||||||
'@vue/compiler-sfc': 3.4.36
|
'@vue/compiler-sfc': 3.5.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-core@3.4.21:
|
/@vue/compiler-core@3.4.21:
|
||||||
@ -2150,21 +2158,21 @@ packages:
|
|||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-core@3.4.36:
|
/@vue/compiler-core@3.5.11:
|
||||||
resolution: {integrity: sha512-qBkndgpwFKdupmOPoiS10i7oFdN7a+4UNDlezD0GlQ1kuA1pNrscg9g12HnB5E8hrWSuEftRsbJhL1HI2zpJhg==}
|
resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.25.3
|
'@babel/parser': 7.25.3
|
||||||
'@vue/shared': 3.4.36
|
'@vue/shared': 3.5.11
|
||||||
entities: 5.0.0
|
entities: 4.5.0
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-core@3.5.8:
|
/@vue/compiler-core@3.5.12:
|
||||||
resolution: {integrity: sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==}
|
resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.25.3
|
'@babel/parser': 7.25.3
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
entities: 4.5.0
|
entities: 4.5.0
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
@ -2183,18 +2191,18 @@ packages:
|
|||||||
'@vue/shared': 3.4.27
|
'@vue/shared': 3.4.27
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-dom@3.4.36:
|
/@vue/compiler-dom@3.5.11:
|
||||||
resolution: {integrity: sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg==}
|
resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-core': 3.4.36
|
'@vue/compiler-core': 3.5.11
|
||||||
'@vue/shared': 3.4.36
|
'@vue/shared': 3.5.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-dom@3.5.8:
|
/@vue/compiler-dom@3.5.12:
|
||||||
resolution: {integrity: sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==}
|
resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-core': 3.5.8
|
'@vue/compiler-core': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
|
|
||||||
/@vue/compiler-sfc@3.4.21:
|
/@vue/compiler-sfc@3.4.21:
|
||||||
resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==}
|
resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==}
|
||||||
@ -2224,28 +2232,28 @@ packages:
|
|||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-sfc@3.4.36:
|
/@vue/compiler-sfc@3.5.11:
|
||||||
resolution: {integrity: sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw==}
|
resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.25.3
|
'@babel/parser': 7.25.3
|
||||||
'@vue/compiler-core': 3.4.36
|
'@vue/compiler-core': 3.5.11
|
||||||
'@vue/compiler-dom': 3.4.36
|
'@vue/compiler-dom': 3.5.11
|
||||||
'@vue/compiler-ssr': 3.4.36
|
'@vue/compiler-ssr': 3.5.11
|
||||||
'@vue/shared': 3.4.36
|
'@vue/shared': 3.5.11
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
magic-string: 0.30.11
|
magic-string: 0.30.11
|
||||||
postcss: 8.4.40
|
postcss: 8.4.47
|
||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-sfc@3.5.8:
|
/@vue/compiler-sfc@3.5.12:
|
||||||
resolution: {integrity: sha512-taYpngQtSysrvO9GULaOSwcG5q821zCoIQBtQQSx7Uf7DxpR6CIHR90toPr9QfDD2mqHQPCSgoWBvJu0yV9zjg==}
|
resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.25.3
|
'@babel/parser': 7.25.3
|
||||||
'@vue/compiler-core': 3.5.8
|
'@vue/compiler-core': 3.5.12
|
||||||
'@vue/compiler-dom': 3.5.8
|
'@vue/compiler-dom': 3.5.12
|
||||||
'@vue/compiler-ssr': 3.5.8
|
'@vue/compiler-ssr': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
magic-string: 0.30.11
|
magic-string: 0.30.11
|
||||||
postcss: 8.4.47
|
postcss: 8.4.47
|
||||||
@ -2265,18 +2273,18 @@ packages:
|
|||||||
'@vue/shared': 3.4.27
|
'@vue/shared': 3.4.27
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-ssr@3.4.36:
|
/@vue/compiler-ssr@3.5.11:
|
||||||
resolution: {integrity: sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng==}
|
resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.4.36
|
'@vue/compiler-dom': 3.5.11
|
||||||
'@vue/shared': 3.4.36
|
'@vue/shared': 3.5.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/compiler-ssr@3.5.8:
|
/@vue/compiler-ssr@3.5.12:
|
||||||
resolution: {integrity: sha512-W96PtryNsNG9u0ZnN5Q5j27Z/feGrFV6zy9q5tzJVyJaLiwYxvC0ek4IXClZygyhjm+XKM7WD9pdKi/wIRVC/Q==}
|
resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.5.8
|
'@vue/compiler-dom': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
|
|
||||||
/@vue/devtools-api@6.6.1:
|
/@vue/devtools-api@6.6.1:
|
||||||
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
|
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
|
||||||
@ -2329,8 +2337,8 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-core': 2.2.0-alpha.8
|
'@volar/language-core': 2.2.0-alpha.8
|
||||||
'@vue/compiler-dom': 3.4.36
|
'@vue/compiler-dom': 3.5.11
|
||||||
'@vue/shared': 3.4.36
|
'@vue/shared': 3.5.11
|
||||||
computeds: 0.0.1
|
computeds: 0.0.1
|
||||||
minimatch: 9.0.5
|
minimatch: 9.0.5
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
@ -2338,33 +2346,33 @@ packages:
|
|||||||
vue-template-compiler: 2.7.16
|
vue-template-compiler: 2.7.16
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/reactivity@3.5.8:
|
/@vue/reactivity@3.5.12:
|
||||||
resolution: {integrity: sha512-mlgUyFHLCUZcAYkqvzYnlBRCh0t5ZQfLYit7nukn1GR96gc48Bp4B7OIcSfVSvlG1k3BPfD+p22gi1t2n9tsXg==}
|
resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
|
|
||||||
/@vue/runtime-core@3.5.8:
|
/@vue/runtime-core@3.5.12:
|
||||||
resolution: {integrity: sha512-fJuPelh64agZ8vKkZgp5iCkPaEqFJsYzxLk9vSC0X3G8ppknclNDr61gDc45yBGTaN5Xqc1qZWU3/NoaBMHcjQ==}
|
resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/reactivity': 3.5.8
|
'@vue/reactivity': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
|
|
||||||
/@vue/runtime-dom@3.5.8:
|
/@vue/runtime-dom@3.5.12:
|
||||||
resolution: {integrity: sha512-DpAUz+PKjTZPUOB6zJgkxVI3GuYc2iWZiNeeHQUw53kdrparSTG6HeXUrYDjaam8dVsCdvQxDz6ZWxnyjccUjQ==}
|
resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/reactivity': 3.5.8
|
'@vue/reactivity': 3.5.12
|
||||||
'@vue/runtime-core': 3.5.8
|
'@vue/runtime-core': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
csstype: 3.1.3
|
csstype: 3.1.3
|
||||||
|
|
||||||
/@vue/server-renderer@3.5.8(vue@3.5.8):
|
/@vue/server-renderer@3.5.12(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-7AmC9/mEeV9mmXNVyUIm1a1AjUhyeeGNbkLh39J00E7iPeGks8OGRB5blJiMmvqSh8SkaS7jkLWSpXtxUCeagA==}
|
resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: 3.5.8
|
vue: 3.5.12
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-ssr': 3.5.8
|
'@vue/compiler-ssr': 3.5.12
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
|
|
||||||
/@vue/shared@3.4.21:
|
/@vue/shared@3.4.21:
|
||||||
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
|
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
|
||||||
@ -2374,14 +2382,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==}
|
resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/shared@3.4.36:
|
/@vue/shared@3.5.11:
|
||||||
resolution: {integrity: sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA==}
|
resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/shared@3.5.8:
|
/@vue/shared@3.5.12:
|
||||||
resolution: {integrity: sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A==}
|
resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
|
||||||
|
|
||||||
/@vue/test-utils@2.4.3(vue@3.5.8):
|
/@vue/test-utils@2.4.3(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==}
|
resolution: {integrity: sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@vue/server-renderer': ^3.0.1
|
'@vue/server-renderer': ^3.0.1
|
||||||
@ -2391,28 +2399,28 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
js-beautify: 1.14.11
|
js-beautify: 1.14.11
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
vue-component-type-helpers: 1.8.26
|
vue-component-type-helpers: 1.8.26
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vueuse/core@10.9.0(vue@3.5.8):
|
/@vueuse/core@11.1.0(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
|
resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/web-bluetooth': 0.0.20
|
'@types/web-bluetooth': 0.0.20
|
||||||
'@vueuse/metadata': 10.9.0
|
'@vueuse/metadata': 11.1.0
|
||||||
'@vueuse/shared': 10.9.0(vue@3.5.8)
|
'@vueuse/shared': 11.1.0(vue@3.5.12)
|
||||||
vue-demi: 0.14.7(vue@3.5.8)
|
vue-demi: 0.14.10(vue@3.5.12)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
/@vueuse/metadata@10.9.0:
|
/@vueuse/metadata@11.1.0:
|
||||||
resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==}
|
resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==}
|
||||||
|
|
||||||
/@vueuse/shared@10.9.0(vue@3.5.8):
|
/@vueuse/shared@11.1.0(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
|
resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
vue-demi: 0.14.7(vue@3.5.8)
|
vue-demi: 0.14.10(vue@3.5.12)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
- vue
|
- vue
|
||||||
@ -3458,19 +3466,16 @@ packages:
|
|||||||
is-data-view: 1.0.1
|
is-data-view: 1.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/date-fns-tz@2.0.1(date-fns@2.30.0):
|
/date-fns-tz@3.1.3(date-fns@3.6.0):
|
||||||
resolution: {integrity: sha512-fJCG3Pwx8HUoLhkepdsP7Z5RsucUi+ZBOxyM5d0ZZ6c4SdYustq0VMmOu6Wf7bli+yS/Jwp91TOCqn9jMcVrUA==}
|
resolution: {integrity: sha512-ZfbMu+nbzW0mEzC8VZrLiSWvUIaI3aRHeq33mTe7Y38UctKukgqPR4nTDwcwS4d64Gf8GghnVsroBuMY3eiTeA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
date-fns: 2.x
|
date-fns: ^3.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
date-fns: 2.30.0
|
date-fns: 3.6.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/date-fns@2.30.0:
|
/date-fns@3.6.0:
|
||||||
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
|
resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
|
||||||
engines: {node: '>=0.11'}
|
|
||||||
dependencies:
|
|
||||||
'@babel/runtime': 7.24.5
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/dayjs@1.11.10:
|
/dayjs@1.11.10:
|
||||||
@ -3566,8 +3571,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/deep-pick-omit@1.2.0:
|
/deep-pick-omit@1.2.1:
|
||||||
resolution: {integrity: sha512-2CGvfTM2c+IP/MhdRZMpaHhTc6zIlgz3tQXJ/VGAkc7mjMrjqSU28qiI63yEcy+fcYfd/K+NNJcGRzap4M4bqw==}
|
resolution: {integrity: sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/deepmerge@1.3.2:
|
/deepmerge@1.3.2:
|
||||||
@ -3842,7 +3847,7 @@ packages:
|
|||||||
'@one-ini/wasm': 0.1.1
|
'@one-ini/wasm': 0.1.1
|
||||||
commander: 10.0.1
|
commander: 10.0.1
|
||||||
minimatch: 9.0.1
|
minimatch: 9.0.1
|
||||||
semver: 7.6.2
|
semver: 7.6.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ejs@3.1.9:
|
/ejs@3.1.9:
|
||||||
@ -3889,11 +3894,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||||
engines: {node: '>=0.12'}
|
engines: {node: '>=0.12'}
|
||||||
|
|
||||||
/entities@5.0.0:
|
|
||||||
resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==}
|
|
||||||
engines: {node: '>=0.12'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/error-ex@1.3.2:
|
/error-ex@1.3.2:
|
||||||
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
|
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4893,7 +4893,7 @@ packages:
|
|||||||
array-union: 2.1.0
|
array-union: 2.1.0
|
||||||
dir-glob: 3.0.1
|
dir-glob: 3.0.1
|
||||||
fast-glob: 3.3.2
|
fast-glob: 3.3.2
|
||||||
ignore: 5.3.1
|
ignore: 5.3.2
|
||||||
merge2: 1.4.1
|
merge2: 1.4.1
|
||||||
slash: 3.0.0
|
slash: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
@ -5618,7 +5618,7 @@ packages:
|
|||||||
acorn: 8.11.3
|
acorn: 8.11.3
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
espree: 9.6.1
|
espree: 9.6.1
|
||||||
semver: 7.6.2
|
semver: 7.6.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/jsonfile@6.1.0:
|
/jsonfile@6.1.0:
|
||||||
@ -6140,31 +6140,31 @@ packages:
|
|||||||
minimatch: 3.1.2
|
minimatch: 3.1.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/naive-ui@2.39.0(vue@3.5.8):
|
/naive-ui@2.40.1(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-5oUJzRG+rtLSH8eRU+fJvVYiQids2BxF9jp+fwGoAqHOptEINrBlgBu9uy+95RHE5FLJ7Q/z41o+qkoGnUrKxQ==}
|
resolution: {integrity: sha512-3NkL+vLRQZKQxCHXa+7xiD6oM74OrQELaehDkGYRYpr6kjT+JJB+Z7h+5LC70gn8VkbgCAETv0+uRWF+6MLlgQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.0
|
vue: ^3.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@css-render/plugin-bem': 0.15.14(css-render@0.15.14)
|
'@css-render/plugin-bem': 0.15.14(css-render@0.15.14)
|
||||||
'@css-render/vue3-ssr': 0.15.14(vue@3.5.8)
|
'@css-render/vue3-ssr': 0.15.14(vue@3.5.12)
|
||||||
'@types/katex': 0.16.7
|
'@types/katex': 0.16.7
|
||||||
'@types/lodash': 4.17.6
|
'@types/lodash': 4.17.6
|
||||||
'@types/lodash-es': 4.17.12
|
'@types/lodash-es': 4.17.12
|
||||||
async-validator: 4.2.5
|
async-validator: 4.2.5
|
||||||
css-render: 0.15.14
|
css-render: 0.15.14
|
||||||
csstype: 3.1.3
|
csstype: 3.1.3
|
||||||
date-fns: 2.30.0
|
date-fns: 3.6.0
|
||||||
date-fns-tz: 2.0.1(date-fns@2.30.0)
|
date-fns-tz: 3.1.3(date-fns@3.6.0)
|
||||||
evtd: 0.2.4
|
evtd: 0.2.4
|
||||||
highlight.js: 11.9.0
|
highlight.js: 11.9.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
lodash-es: 4.17.21
|
lodash-es: 4.17.21
|
||||||
seemly: 0.3.8
|
seemly: 0.3.8
|
||||||
treemate: 0.3.11
|
treemate: 0.3.11
|
||||||
vdirs: 0.1.8(vue@3.5.8)
|
vdirs: 0.1.8(vue@3.5.12)
|
||||||
vooks: 0.2.12(vue@3.5.8)
|
vooks: 0.2.12(vue@3.5.12)
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
vueuc: 0.4.58(vue@3.5.8)
|
vueuc: 0.4.64(vue@3.5.12)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/nanoid@3.3.7:
|
/nanoid@3.3.7:
|
||||||
@ -6225,7 +6225,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
hosted-git-info: 4.1.0
|
hosted-git-info: 4.1.0
|
||||||
is-core-module: 2.13.1
|
is-core-module: 2.13.1
|
||||||
semver: 7.6.2
|
semver: 7.6.3
|
||||||
validate-npm-package-license: 3.0.4
|
validate-npm-package-license: 3.0.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@ -6543,8 +6543,8 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/pinia-plugin-persistedstate@4.0.1(pinia@2.1.7):
|
/pinia-plugin-persistedstate@4.1.1(pinia@2.2.4):
|
||||||
resolution: {integrity: sha512-Gs2nhKUi6Rwhhc8PH9wvEAxfz4iZeJ/36qQv2ieYs94+zMozbGtMLIR4p9Aoim3c/PKf8J9orOz9n+f0ZF9CdA==}
|
resolution: {integrity: sha512-fUiUsbfBetGUZzX28z+ImAZw7FDXzwRrk+fN+ljF5OhQMhsSYfYeUzI9FLLtpjekYbfFHWvJiECkLI60RIuiPA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@pinia/nuxt': '>=0.5.0'
|
'@pinia/nuxt': '>=0.5.0'
|
||||||
pinia: '>=2.0.0'
|
pinia: '>=2.0.0'
|
||||||
@ -6554,11 +6554,11 @@ packages:
|
|||||||
pinia:
|
pinia:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nuxt/kit': 3.13.1
|
'@nuxt/kit': 3.13.2
|
||||||
deep-pick-omit: 1.2.0
|
deep-pick-omit: 1.2.1
|
||||||
defu: 6.1.4
|
defu: 6.1.4
|
||||||
destr: 2.0.3
|
destr: 2.0.3
|
||||||
pinia: 2.1.7(typescript@5.2.2)(vue@3.5.8)
|
pinia: 2.2.4(typescript@5.2.2)(vue@3.5.12)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- magicast
|
- magicast
|
||||||
- rollup
|
- rollup
|
||||||
@ -6566,8 +6566,8 @@ packages:
|
|||||||
- webpack-sources
|
- webpack-sources
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/pinia@2.1.7(typescript@5.2.2)(vue@3.5.8):
|
/pinia@2.2.4(typescript@5.2.2)(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
|
resolution: {integrity: sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@vue/composition-api': ^1.4.0
|
'@vue/composition-api': ^1.4.0
|
||||||
typescript: '>=4.4.4'
|
typescript: '>=4.4.4'
|
||||||
@ -6578,10 +6578,10 @@ packages:
|
|||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.6.1
|
'@vue/devtools-api': 6.6.3
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
vue-demi: 0.14.6(vue@3.5.8)
|
vue-demi: 0.14.10(vue@3.5.12)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/pkg-types@1.2.0:
|
/pkg-types@1.2.0:
|
||||||
@ -6652,15 +6652,6 @@ packages:
|
|||||||
source-map-js: 1.2.0
|
source-map-js: 1.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss@8.4.40:
|
|
||||||
resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
|
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
|
||||||
dependencies:
|
|
||||||
nanoid: 3.3.7
|
|
||||||
picocolors: 1.0.1
|
|
||||||
source-map-js: 1.2.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/postcss@8.4.45:
|
/postcss@8.4.45:
|
||||||
resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==}
|
resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
@ -6852,10 +6843,6 @@ packages:
|
|||||||
strip-indent: 3.0.0
|
strip-indent: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/regenerator-runtime@0.14.1:
|
|
||||||
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/regex-not@1.0.2:
|
/regex-not@1.0.2:
|
||||||
resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
|
resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -7117,12 +7104,6 @@ packages:
|
|||||||
lru-cache: 6.0.0
|
lru-cache: 6.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/semver@7.6.2:
|
|
||||||
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
|
|
||||||
engines: {node: '>=10'}
|
|
||||||
hasBin: true
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/semver@7.6.3:
|
/semver@7.6.3:
|
||||||
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
|
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@ -7960,6 +7941,28 @@ packages:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- webpack-sources
|
- webpack-sources
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/unimport@3.13.1:
|
||||||
|
resolution: {integrity: sha512-nNrVzcs93yrZQOW77qnyOVHtb68LegvhYFwxFMfuuWScmwQmyVCG/NBuN8tYsaGzgQUVYv34E/af+Cc9u4og4A==}
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.1.2
|
||||||
|
acorn: 8.12.1
|
||||||
|
escape-string-regexp: 5.0.0
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
fast-glob: 3.3.2
|
||||||
|
local-pkg: 0.5.0
|
||||||
|
magic-string: 0.30.11
|
||||||
|
mlly: 1.7.1
|
||||||
|
pathe: 1.1.2
|
||||||
|
pkg-types: 1.2.0
|
||||||
|
scule: 1.3.0
|
||||||
|
strip-literal: 2.1.0
|
||||||
|
unplugin: 1.14.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- rollup
|
||||||
|
- webpack-sources
|
||||||
|
dev: false
|
||||||
|
|
||||||
/union-value@1.0.1:
|
/union-value@1.0.1:
|
||||||
resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
|
resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
|
||||||
@ -7981,7 +7984,7 @@ packages:
|
|||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/unplugin-auto-import@0.18.2(@vueuse/core@10.9.0):
|
/unplugin-auto-import@0.18.2(@vueuse/core@11.1.0):
|
||||||
resolution: {integrity: sha512-Dwb3rAic75harVBrVjwiq6H24PT+nBq2dpxV5BH8NNI6sDFaTytvP+iyo4xy7prQbR3r5K6nMs4f5Wp9PE4g8A==}
|
resolution: {integrity: sha512-Dwb3rAic75harVBrVjwiq6H24PT+nBq2dpxV5BH8NNI6sDFaTytvP+iyo4xy7prQbR3r5K6nMs4f5Wp9PE4g8A==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -7995,7 +7998,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@antfu/utils': 0.7.10
|
'@antfu/utils': 0.7.10
|
||||||
'@rollup/pluginutils': 5.1.0
|
'@rollup/pluginutils': 5.1.0
|
||||||
'@vueuse/core': 10.9.0(vue@3.5.8)
|
'@vueuse/core': 11.1.0(vue@3.5.12)
|
||||||
fast-glob: 3.3.2
|
fast-glob: 3.3.2
|
||||||
local-pkg: 0.5.0
|
local-pkg: 0.5.0
|
||||||
magic-string: 0.30.11
|
magic-string: 0.30.11
|
||||||
@ -8007,7 +8010,7 @@ packages:
|
|||||||
- webpack-sources
|
- webpack-sources
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/unplugin-vue-components@0.27.4(vue@3.5.8):
|
/unplugin-vue-components@0.27.4(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-1XVl5iXG7P1UrOMnaj2ogYa5YTq8aoh5jwDPQhemwO/OrXW+lPQKDXd1hMz15qxQPxgb/XXlbgo3HQ2rLEbmXQ==}
|
resolution: {integrity: sha512-1XVl5iXG7P1UrOMnaj2ogYa5YTq8aoh5jwDPQhemwO/OrXW+lPQKDXd1hMz15qxQPxgb/XXlbgo3HQ2rLEbmXQ==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -8030,7 +8033,7 @@ packages:
|
|||||||
minimatch: 9.0.5
|
minimatch: 9.0.5
|
||||||
mlly: 1.7.1
|
mlly: 1.7.1
|
||||||
unplugin: 1.13.1
|
unplugin: 1.13.1
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -8059,6 +8062,19 @@ packages:
|
|||||||
acorn: 8.12.1
|
acorn: 8.12.1
|
||||||
webpack-virtual-modules: 0.6.2
|
webpack-virtual-modules: 0.6.2
|
||||||
|
|
||||||
|
/unplugin@1.14.1:
|
||||||
|
resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
webpack-sources: ^3
|
||||||
|
peerDependenciesMeta:
|
||||||
|
webpack-sources:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
acorn: 8.12.1
|
||||||
|
webpack-virtual-modules: 0.6.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/unset-value@1.0.0:
|
/unset-value@1.0.0:
|
||||||
resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
|
resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -8145,13 +8161,13 @@ packages:
|
|||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vdirs@0.1.8(vue@3.5.8):
|
/vdirs@0.1.8(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
|
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.11
|
vue: ^3.0.11
|
||||||
dependencies:
|
dependencies:
|
||||||
evtd: 0.2.4
|
evtd: 0.2.4
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vite-bundle-analyzer@0.9.4:
|
/vite-bundle-analyzer@0.9.4:
|
||||||
@ -8429,20 +8445,34 @@ packages:
|
|||||||
- terser
|
- terser
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vooks@0.2.12(vue@3.5.8):
|
/vooks@0.2.12(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
|
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.0
|
vue: ^3.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
evtd: 0.2.4
|
evtd: 0.2.4
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-component-type-helpers@1.8.26:
|
/vue-component-type-helpers@1.8.26:
|
||||||
resolution: {integrity: sha512-CIwb7s8cqUuPpHDk+0DY8EJ/x8tzdzqw8ycX8hhw1GnbngTgSsIceHAqrrLjmv8zXi+j5XaiqYRQMw8sKyyjkw==}
|
resolution: {integrity: sha512-CIwb7s8cqUuPpHDk+0DY8EJ/x8tzdzqw8ycX8hhw1GnbngTgSsIceHAqrrLjmv8zXi+j5XaiqYRQMw8sKyyjkw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vue-demi@0.14.6(vue@3.5.8):
|
/vue-demi@0.14.10(vue@3.5.12):
|
||||||
|
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
hasBin: true
|
||||||
|
requiresBuild: true
|
||||||
|
peerDependencies:
|
||||||
|
'@vue/composition-api': ^1.0.0-rc.1
|
||||||
|
vue: ^3.0.0-0 || ^2.6.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@vue/composition-api':
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
|
|
||||||
|
/vue-demi@0.14.6(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
|
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@ -8454,23 +8484,9 @@ packages:
|
|||||||
'@vue/composition-api':
|
'@vue/composition-api':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-demi@0.14.7(vue@3.5.8):
|
|
||||||
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
peerDependencies:
|
|
||||||
'@vue/composition-api': ^1.0.0-rc.1
|
|
||||||
vue: ^3.0.0-0 || ^2.6.0
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@vue/composition-api':
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
|
||||||
|
|
||||||
/vue-eslint-parser@9.3.2(eslint@8.57.0):
|
/vue-eslint-parser@9.3.2(eslint@8.57.0):
|
||||||
resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==}
|
resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==}
|
||||||
engines: {node: ^14.17.0 || >=16.0.0}
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
@ -8507,7 +8523,7 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vue-hooks-plus@2.2.1(vue@3.5.8):
|
/vue-hooks-plus@2.2.1(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-YfZ+xwzeoTXpuXrCwu4zOe2kmc3hcOxD3eY9eoc5r+T8grCMQl25li0W9o8uY1/UA75sgLcE6B7KfKd2e3OURg==}
|
resolution: {integrity: sha512-YfZ+xwzeoTXpuXrCwu4zOe2kmc3hcOxD3eY9eoc5r+T8grCMQl25li0W9o8uY1/UA75sgLcE6B7KfKd2e3OURg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.25
|
vue: ^3.2.25
|
||||||
@ -8519,10 +8535,10 @@ packages:
|
|||||||
qs: 6.12.1
|
qs: 6.12.1
|
||||||
query-string: 7.1.3
|
query-string: 7.1.3
|
||||||
screenfull: 5.2.0
|
screenfull: 5.2.0
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-i18n@9.13.1(vue@3.5.8):
|
/vue-i18n@9.13.1(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==}
|
resolution: {integrity: sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==}
|
||||||
engines: {node: '>= 16'}
|
engines: {node: '>= 16'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -8531,15 +8547,15 @@ packages:
|
|||||||
'@intlify/core-base': 9.13.1
|
'@intlify/core-base': 9.13.1
|
||||||
'@intlify/shared': 9.13.1
|
'@intlify/shared': 9.13.1
|
||||||
'@vue/devtools-api': 6.6.1
|
'@vue/devtools-api': 6.6.1
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
|
|
||||||
/vue-router@4.3.2(vue@3.5.8):
|
/vue-router@4.3.2(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==}
|
resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.6.1
|
'@vue/devtools-api': 6.6.1
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-template-compiler@2.7.16:
|
/vue-template-compiler@2.7.16:
|
||||||
@ -8565,39 +8581,39 @@ packages:
|
|||||||
resolution: {integrity: sha512-YwdQ1YjbHzcUsA7Vj5ziQLoX7oQZGWDZNaAadLu7EZzV9UU8Dd2IXAxGobF7dIHamgz5mPiOgH1Xb3qO8bCGDA==}
|
resolution: {integrity: sha512-YwdQ1YjbHzcUsA7Vj5ziQLoX7oQZGWDZNaAadLu7EZzV9UU8Dd2IXAxGobF7dIHamgz5mPiOgH1Xb3qO8bCGDA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
js-binary-schema-parser: 2.0.3
|
js-binary-schema-parser: 2.0.3
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- typescript
|
- typescript
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue@3.5.8(typescript@5.2.2):
|
/vue@3.5.12(typescript@5.2.2):
|
||||||
resolution: {integrity: sha512-hvuvuCy51nP/1fSRvrrIqTLSvrSyz2Pq+KQ8S8SXCxTWVE0nMaOnSDnSOxV1eYmGfvK7mqiwvd1C59CEEz7dAQ==}
|
resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '*'
|
typescript: '*'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-dom': 3.5.8
|
'@vue/compiler-dom': 3.5.12
|
||||||
'@vue/compiler-sfc': 3.5.8
|
'@vue/compiler-sfc': 3.5.12
|
||||||
'@vue/runtime-dom': 3.5.8
|
'@vue/runtime-dom': 3.5.12
|
||||||
'@vue/server-renderer': 3.5.8(vue@3.5.8)
|
'@vue/server-renderer': 3.5.12(vue@3.5.12)
|
||||||
'@vue/shared': 3.5.8
|
'@vue/shared': 3.5.12
|
||||||
typescript: 5.2.2
|
typescript: 5.2.2
|
||||||
|
|
||||||
/vueuc@0.4.58(vue@3.5.8):
|
/vueuc@0.4.64(vue@3.5.12):
|
||||||
resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==}
|
resolution: {integrity: sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.11
|
vue: ^3.0.11
|
||||||
dependencies:
|
dependencies:
|
||||||
'@css-render/vue3-ssr': 0.15.14(vue@3.5.8)
|
'@css-render/vue3-ssr': 0.15.14(vue@3.5.12)
|
||||||
'@juggle/resize-observer': 3.4.0
|
'@juggle/resize-observer': 3.4.0
|
||||||
css-render: 0.15.14
|
css-render: 0.15.14
|
||||||
evtd: 0.2.4
|
evtd: 0.2.4
|
||||||
seemly: 0.3.8
|
seemly: 0.3.8
|
||||||
vdirs: 0.1.8(vue@3.5.8)
|
vdirs: 0.1.8(vue@3.5.12)
|
||||||
vooks: 0.2.12(vue@3.5.8)
|
vooks: 0.2.12(vue@3.5.12)
|
||||||
vue: 3.5.8(typescript@5.2.2)
|
vue: 3.5.12(typescript@5.2.2)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/webidl-conversions@7.0.0:
|
/webidl-conversions@7.0.0:
|
||||||
|
@ -43,29 +43,27 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const collapseClick = () => {
|
const collapseClick = () => {
|
||||||
const { onUpdateValue, 'onUpdate:value': _onUpdateValue } = props
|
const { onUpdateOpen, 'onUpdate:open': _onUpdateOpen } = props
|
||||||
|
|
||||||
modelCollapsed.value = !modelCollapsed.value
|
modelCollapsed.value = !modelCollapsed.value
|
||||||
|
|
||||||
if (onUpdateValue) {
|
if (onUpdateOpen) {
|
||||||
call(onUpdateValue, modelCollapsed.value)
|
call(onUpdateOpen, modelCollapsed.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_onUpdateValue) {
|
if (_onUpdateOpen) {
|
||||||
call(_onUpdateValue, modelCollapsed.value)
|
call(_onUpdateOpen, modelCollapsed.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const CollapseIcon = () => (
|
const CollapseIcon = (collapse: boolean) => (
|
||||||
<div class="collapse-icon" onClick={collapseClick.bind(this)}>
|
<div class="collapse-icon" onClick={collapseClick.bind(this)}>
|
||||||
<span>
|
<span>
|
||||||
{modelCollapsed.value
|
{collapse ? props.collapseToggleText[0] : props.collapseToggleText[1]}
|
||||||
? props.collapseToggleText[0]
|
|
||||||
: props.collapseToggleText[1]}
|
|
||||||
</span>
|
</span>
|
||||||
<RIcon
|
<RIcon
|
||||||
customClassName={`collapse-icon--arrow ${
|
customClassName={`collapse-icon--arrow ${
|
||||||
modelCollapsed.value ? '' : 'collapse-icon--arrow__expanded'
|
collapse ? '' : 'collapse-icon--arrow__expanded'
|
||||||
}`}
|
}`}
|
||||||
name="expanded"
|
name="expanded"
|
||||||
size="14"
|
size="14"
|
||||||
@ -73,6 +71,10 @@ export default defineComponent({
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
watchEffect(() => {
|
||||||
|
modelCollapsed.value = !props.open
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
modelCollapsed,
|
modelCollapsed,
|
||||||
collapseClick,
|
collapseClick,
|
||||||
@ -108,7 +110,9 @@ export default defineComponent({
|
|||||||
<NGridItem suffix class="ray-collapse-grid__suffix--btn">
|
<NGridItem suffix class="ray-collapse-grid__suffix--btn">
|
||||||
<NFlex justify="end" align="center">
|
<NFlex justify="end" align="center">
|
||||||
{action?.()}
|
{action?.()}
|
||||||
{collapse ? collapse(modelCollapsed) : CollapseIcon()}
|
{collapse
|
||||||
|
? collapse(modelCollapsed)
|
||||||
|
: CollapseIcon(modelCollapsed)}
|
||||||
</NFlex>
|
</NFlex>
|
||||||
</NGridItem>
|
</NGridItem>
|
||||||
</NGrid>
|
</NGrid>
|
||||||
|
@ -48,13 +48,13 @@ const props = {
|
|||||||
* 默认 `false`
|
* 默认 `false`
|
||||||
*/
|
*/
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: true,
|
||||||
},
|
},
|
||||||
onUpdateValue: {
|
onUpdateOpen: {
|
||||||
type: [Function, Array] as PropType<MaybeArray<(bool: boolean) => void>>,
|
type: [Function, Array] as PropType<MaybeArray<(bool: boolean) => void>>,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
'onUpdate:value': {
|
'onUpdate:open': {
|
||||||
type: [Function, Array] as PropType<MaybeArray<(bool: boolean) => void>>,
|
type: [Function, Array] as PropType<MaybeArray<(bool: boolean) => void>>,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
@ -149,11 +149,22 @@ const props = {
|
|||||||
*
|
*
|
||||||
* 与表格边框为两个不同配置项。
|
* 与表格边框为两个不同配置项。
|
||||||
*
|
*
|
||||||
* @default false
|
* @default true
|
||||||
*/
|
*/
|
||||||
wrapperBordered: {
|
wrapperBordered: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: true,
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* 表格边框。
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
bordered: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -53,7 +53,8 @@ export const useMaximize = () => {
|
|||||||
*
|
*
|
||||||
* @param full 是否网页全屏内容区域
|
* @param full 是否网页全屏内容区域
|
||||||
*
|
*
|
||||||
* 该方法仅针对于 LayoutContent 区域,并且依赖全局属性 layoutContentMaximize
|
* @description
|
||||||
|
* 该方法仅针对于 LayoutContent 区域,并且依赖全局属性 layoutContentMaximize。
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* maximize(true, { MaximizeOptions }) 全屏内容区域
|
* maximize(true, { MaximizeOptions }) 全屏内容区域
|
||||||
|
@ -1,15 +1,4 @@
|
|||||||
/**
|
import { unrefElement, effectDispose, isValueType, setStyle } from '@/utils'
|
||||||
*
|
|
||||||
* @author Ray <https://github.com/XiaoDaiGua-Ray>
|
|
||||||
*
|
|
||||||
* @date 2023-12-04
|
|
||||||
*
|
|
||||||
* @workspace ray-template
|
|
||||||
*
|
|
||||||
* @remark 今天也是元气满满撸代码的一天
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { unrefElement, effectDispose, isValueType } from '@/utils'
|
|
||||||
import { useWindowSize } from '@vueuse/core'
|
import { useWindowSize } from '@vueuse/core'
|
||||||
|
|
||||||
import type { BasicTarget } from '@/types'
|
import type { BasicTarget } from '@/types'
|
||||||
@ -18,41 +7,56 @@ import type { CSSProperties } from 'vue'
|
|||||||
export interface UseElementFullscreenOptions {
|
export interface UseElementFullscreenOptions {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 进入全屏前的回调
|
* @description
|
||||||
|
* 进入全屏前的回调。
|
||||||
|
*
|
||||||
|
* @default undefined
|
||||||
*/
|
*/
|
||||||
beforeEnter?: () => void
|
beforeEnter?: () => void
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 进入全屏后的回调
|
* @description
|
||||||
|
* 进入全屏后的回调。
|
||||||
|
*
|
||||||
|
* @default undefined
|
||||||
*/
|
*/
|
||||||
enter?: () => void
|
enter?: () => void
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 退出全屏前的回调
|
* @description
|
||||||
|
* 退出全屏前的回调。
|
||||||
|
*
|
||||||
|
* @default undefined
|
||||||
*/
|
*/
|
||||||
beforeExit?: () => void
|
beforeExit?: () => void
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 退出全屏后的回调
|
* @description
|
||||||
|
* 退出全屏后的回调。
|
||||||
|
*
|
||||||
|
* @default undefined
|
||||||
*/
|
*/
|
||||||
exit?: () => void
|
exit?: () => void
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 全屏时的 z-index
|
* @description
|
||||||
|
* 全屏时的 z-index。
|
||||||
*
|
*
|
||||||
* @default 999
|
* @default 999
|
||||||
*/
|
*/
|
||||||
zIndex?: number
|
zIndex?: number
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 全屏时的背景色
|
* @description
|
||||||
|
* 全屏时的背景色。
|
||||||
*
|
*
|
||||||
* @default null
|
* @default null
|
||||||
*/
|
*/
|
||||||
backgroundColor?: string
|
backgroundColor?: string
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 手动设定 transition 过度效果
|
* @description
|
||||||
|
* 手动设定 transition 过度效果。
|
||||||
*
|
*
|
||||||
* @default 'width 0.3s var(--r-bezier), height 0.3s var(--r-bezier)'
|
* @default 'width 0.3s var(--r-bezier), height 0.3s var(--r-bezier)'
|
||||||
*/
|
*/
|
||||||
@ -70,10 +74,11 @@ const styleElement = document.createElement('style')
|
|||||||
* @param target target dom
|
* @param target target dom
|
||||||
* @param options useElementFullscreen options
|
* @param options useElementFullscreen options
|
||||||
*
|
*
|
||||||
* 使元素全屏,但是不调用浏览器的全屏 API,仅使用纯 css 实现
|
* @description
|
||||||
* 该方法具有入侵性,并且会在元素上覆盖 transition 样式
|
* 使元素全屏,但是不调用浏览器的全屏 API,仅使用纯 css 实现。
|
||||||
|
* 该方法具有入侵性,并且会在元素上覆盖 transition 样式。
|
||||||
*
|
*
|
||||||
* 该方法虽然能够实现全屏,但是会覆盖元素的一些基本样式,因此需要注意管理元素的一些基本样式,例如:position、z-index、transition、transform、width、height
|
* 该方法虽然能够实现全屏,但是会覆盖元素的一些基本样式,因此需要注意管理元素的一些基本样式,例如:position、z-index、transition、transform、width、height。
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* <template>
|
* <template>
|
||||||
@ -102,6 +107,13 @@ export const useElementFullscreen = (
|
|||||||
transition = 'all 0.3s var(--r-bezier)',
|
transition = 'all 0.3s var(--r-bezier)',
|
||||||
} = options ?? {}
|
} = options ?? {}
|
||||||
let isSetup = false
|
let isSetup = false
|
||||||
|
const catchBoundingClientRect: {
|
||||||
|
x: number | null
|
||||||
|
y: number | null
|
||||||
|
} = {
|
||||||
|
x: null,
|
||||||
|
y: null,
|
||||||
|
}
|
||||||
|
|
||||||
const updateStyle = () => {
|
const updateStyle = () => {
|
||||||
const element = unrefElement(target) as HTMLElement | null
|
const element = unrefElement(target) as HTMLElement | null
|
||||||
@ -111,20 +123,38 @@ export const useElementFullscreen = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const { left, top } = element.getBoundingClientRect()
|
const { left, top } = element.getBoundingClientRect()
|
||||||
|
|
||||||
|
if (
|
||||||
|
catchBoundingClientRect.x === null &&
|
||||||
|
catchBoundingClientRect.y === null
|
||||||
|
) {
|
||||||
|
catchBoundingClientRect.x = -left
|
||||||
|
catchBoundingClientRect.y = -top
|
||||||
|
}
|
||||||
|
|
||||||
|
setStyle(document.body, {
|
||||||
|
'--element-fullscreen-z-index':
|
||||||
|
isValueType<null>(zIndex, 'Null') ||
|
||||||
|
isValueType<undefined>(zIndex, 'Undefined')
|
||||||
|
? currentZIndex
|
||||||
|
: zIndex,
|
||||||
|
'--element-fullscreen-transition': transition,
|
||||||
|
'--element-fullscreen-background-color': backgroundColor,
|
||||||
|
'--element-fullscreen-width': `${width.value}px`,
|
||||||
|
'--element-fullscreen-height': `${height.value}px`,
|
||||||
|
'--element-fullscreen-transform-x': `${catchBoundingClientRect.x}px`,
|
||||||
|
'--element-fullscreen-transform-y': `${catchBoundingClientRect.y}px`,
|
||||||
|
})
|
||||||
|
|
||||||
const cssContent = `
|
const cssContent = `
|
||||||
[${ID_TAG}] {
|
[${ID_TAG}] {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
width: ${width.value}px !important;
|
width: var(--element-fullscreen-width) !important;
|
||||||
height: ${height.value}px !important;
|
height: var(--element-fullscreen-height) !important;
|
||||||
transform: translate(-${left}px, -${top}px) !important;
|
transform: translate(var(--element-fullscreen-transform-x), var(--element-fullscreen-transform-y)) !important;
|
||||||
transition: ${transition};
|
transition: var(--element-fullscreen-transition);
|
||||||
z-index: ${
|
z-index: var(--element-fullscreen-z-index) !important;
|
||||||
isValueType<null>(zIndex, 'Null') ||
|
background-color: var(--element-fullscreen-background-color);
|
||||||
isValueType<undefined>(zIndex, 'Undefined')
|
|
||||||
? currentZIndex
|
|
||||||
: zIndex
|
|
||||||
} !important;
|
|
||||||
background-color: ${backgroundColor ?? null};
|
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
@ -206,6 +236,10 @@ export const useElementFullscreen = (
|
|||||||
enter,
|
enter,
|
||||||
exit,
|
exit,
|
||||||
toggleFullscreen,
|
toggleFullscreen,
|
||||||
|
currentWindowSize: {
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
* @description
|
||||||
* 操作说明:
|
* 操作说明:
|
||||||
* - 关闭全部: 关闭所有标签页,并且重定向至根页面 rootRoute.path
|
* - 关闭全部: 关闭所有标签页,并且重定向至根页面 rootRoute.path
|
||||||
* - 关闭右侧: 关闭右侧所有标签,如果选中标签页与当前激活页不一致并且激活页在右侧,则会重定向至当前选中标签页
|
* - 关闭右侧: 关闭右侧所有标签,如果选中标签页与当前激活页不一致并且激活页在右侧,则会重定向至当前选中标签页
|
||||||
@ -18,15 +19,15 @@
|
|||||||
* - 关闭其他: 关闭其他所有标签,如果选中标签页与当前激活页不一致并且激活页在其中,则会重定向至当前选中标签页
|
* - 关闭其他: 关闭其他所有标签,如果选中标签页与当前激活页不一致并且激活页在其中,则会重定向至当前选中标签页
|
||||||
* - 关闭所有: 关闭所有标签页,并且重定向至 root page
|
* - 关闭所有: 关闭所有标签页,并且重定向至 root page
|
||||||
*
|
*
|
||||||
* root path 标签不可被关闭,所以不会显示关闭按钮
|
* root path 标签不可被关闭。
|
||||||
* 页面刷新后,仅会保留刷新前激活 key 的 tag 标签
|
* 页面刷新后,仅会保留刷新前激活 key 的 tag 标签。
|
||||||
*
|
*
|
||||||
* 注入 MENU_TAG_DATA 属性,用于动态更新 MenuTag 标签所在的位置
|
* 注入 MENU_TAG_DATA 属性,用于动态更新 MenuTag 标签所在的位置。
|
||||||
*
|
*
|
||||||
* 该模板中引入了 Root Path 概念,在 MenuTag 中除了关闭左右侧标签操作能主动移除 Root Tag 之外其余的操作都不允许
|
* 该模板中引入了 Root Path 概念,在 MenuTag 中除了关闭左右侧标签操作能主动移除 Root Tag 之外其余的操作都不允许。
|
||||||
*
|
*
|
||||||
* outsideClick 方法优先级不如 contextmenu 事件高,所以可能会出现重复右键菜单时,闪烁问题
|
* outsideClick 方法优先级不如 contextmenu 事件高,所以可能会出现重复右键菜单时,闪烁问题;
|
||||||
* 虽然使用 throttle 方法进行优化,但是该问题本质并没有解决
|
* 虽然使用 throttle 方法进行优化,但是该问题本质并没有解决。
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import './index.scss'
|
import './index.scss'
|
||||||
@ -49,6 +50,7 @@ import { hasClass, uuid, queryElements } from '@/utils'
|
|||||||
import { useMaximize, useSpinning, useAppRoot, useSiderBar } from '@/hooks'
|
import { useMaximize, useSpinning, useAppRoot, useSiderBar } from '@/hooks'
|
||||||
import { throttle } from 'lodash-es'
|
import { throttle } from 'lodash-es'
|
||||||
import { getVariableToRefs } from '@/global-variable'
|
import { getVariableToRefs } from '@/global-variable'
|
||||||
|
import { useTemplateRef } from 'vue'
|
||||||
|
|
||||||
import type { ScrollbarInst } from 'naive-ui'
|
import type { ScrollbarInst } from 'naive-ui'
|
||||||
import type { MenuTagOptions, AppMenuOption } from '@/types'
|
import type { MenuTagOptions, AppMenuOption } from '@/types'
|
||||||
@ -56,12 +58,11 @@ import type { MenuTagOptions, AppMenuOption } from '@/types'
|
|||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'AppMenuTag',
|
name: 'AppMenuTag',
|
||||||
setup(_, { expose }) {
|
setup(_, { expose }) {
|
||||||
const scrollRef = ref<ScrollbarInst | null>(null)
|
const scrollRef = useTemplateRef<ScrollbarInst | null>('scrollRef')
|
||||||
|
|
||||||
const { getMenuKey, getMenuTagOptions } = useMenuGetters()
|
const { getMenuKey, getMenuTagOptions } = useMenuGetters()
|
||||||
const { changeMenuModelValue } = useMenuActions()
|
const { changeMenuModelValue } = useMenuActions()
|
||||||
const { getRootPath } = useAppRoot()
|
const { getRootPath } = useAppRoot()
|
||||||
const { maximize } = useMaximize()
|
const { maximize, isLayoutContentMaximized } = useMaximize()
|
||||||
const { reload } = useSpinning()
|
const { reload } = useSpinning()
|
||||||
const {
|
const {
|
||||||
close,
|
close,
|
||||||
@ -72,18 +73,20 @@ export default defineComponent({
|
|||||||
checkCloseLeft,
|
checkCloseLeft,
|
||||||
checkCloseRight,
|
checkCloseRight,
|
||||||
} = useSiderBar()
|
} = useSiderBar()
|
||||||
|
// 哪些下拉框允许禁用
|
||||||
const canDisabledOptions = [
|
const canDisabledOptions = [
|
||||||
'closeAll',
|
'closeAll',
|
||||||
'closeRight',
|
'closeRight',
|
||||||
'closeLeft',
|
'closeLeft',
|
||||||
'closeOther',
|
'closeOther',
|
||||||
'closeCurrentPage',
|
'closeCurrentPage',
|
||||||
] // 哪些下拉框允许禁用
|
]
|
||||||
let currentContextmenuIndex = Infinity // 当前右键标签页索引位置
|
// 当前右键标签页索引位置
|
||||||
|
let currentContextmenuIndex = Infinity
|
||||||
const iconConfig = {
|
const iconConfig = {
|
||||||
size: 16,
|
size: 16,
|
||||||
}
|
}
|
||||||
|
// 下拉菜单
|
||||||
const moreOptions = ref([
|
const moreOptions = ref([
|
||||||
{
|
{
|
||||||
label: '刷新页面',
|
label: '刷新页面',
|
||||||
@ -124,8 +127,9 @@ export default defineComponent({
|
|||||||
icon: () => <RIcon name="resize_h" size={iconConfig.size} />,
|
icon: () => <RIcon name="resize_h" size={iconConfig.size} />,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
},
|
},
|
||||||
]) // 下拉菜单
|
])
|
||||||
const uuidScrollBar = uuid(16) // scroll bar uuid
|
// scroll bar uuid
|
||||||
|
const uuidScrollBar = uuid(16)
|
||||||
const actionMap = {
|
const actionMap = {
|
||||||
closeCurrentPage: () => {
|
closeCurrentPage: () => {
|
||||||
getMenuKey.value !== getRootPath.value && close(currentContextmenuIndex)
|
getMenuKey.value !== getRootPath.value && close(currentContextmenuIndex)
|
||||||
@ -146,53 +150,47 @@ export default defineComponent({
|
|||||||
$closeOther(currentContextmenuIndex)
|
$closeOther(currentContextmenuIndex)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
/** 右键菜单 */
|
// 右键菜单
|
||||||
const actionState = reactive({
|
const actionState = reactive({
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
actionDropdownShow: false,
|
actionDropdownShow: false,
|
||||||
})
|
})
|
||||||
const MENU_TAG_DATA = 'menu_tag_data' // 注入 tag 前缀
|
// 注入 tag 前缀
|
||||||
|
const MENU_TAG_DATA = 'menu_tag_data'
|
||||||
const globalMainLayoutLoad = getVariableToRefs('globalMainLayoutLoad')
|
const globalMainLayoutLoad = getVariableToRefs('globalMainLayoutLoad')
|
||||||
const naiveScrollbarContainerClass = 'n-scrollbar-container' // naive scrollbar 容器 class
|
// naive scrollbar 容器 class
|
||||||
|
const naiveScrollbarContainerClass = 'n-scrollbar-container'
|
||||||
|
// 缓存上一次的菜单 key
|
||||||
|
let catchMenuKey = getMenuKey.value
|
||||||
|
|
||||||
/**
|
// 关闭当前菜单标签,如果只有一个标签,则不允许关闭
|
||||||
*
|
|
||||||
* @param idx 索引
|
|
||||||
*
|
|
||||||
* @remark 关闭 `tag` 菜单, 如果仅有一个则不能关闭
|
|
||||||
*/
|
|
||||||
const closeCurrentMenuTag = (idx: number) => {
|
const closeCurrentMenuTag = (idx: number) => {
|
||||||
close(idx)
|
close(idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 动态设置右键菜单的禁用项
|
||||||
const setMoreOptionsDisabled = (
|
const setMoreOptionsDisabled = (
|
||||||
key: (typeof moreOptions.value)[number]['key'],
|
key: (typeof moreOptions.value)[number]['key'],
|
||||||
disabled: boolean,
|
disabled: boolean,
|
||||||
) => {
|
) => {
|
||||||
moreOptions.value.forEach((curr) => {
|
for (const curr of moreOptions.value) {
|
||||||
if (curr.key === key) {
|
if (curr.key === key) {
|
||||||
curr.disabled = disabled
|
curr.disabled = disabled
|
||||||
|
|
||||||
return
|
break
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 菜单标签点击更新当前菜单激活项
|
||||||
*
|
|
||||||
* @param option 当前菜单值
|
|
||||||
*/
|
|
||||||
const menuTagClick = (option: AppMenuOption) => {
|
const menuTagClick = (option: AppMenuOption) => {
|
||||||
actionState.actionDropdownShow = false
|
actionState.actionDropdownShow = false
|
||||||
|
|
||||||
changeMenuModelValue(option.fullPath, option)
|
changeMenuModelValue(option.fullPath, option)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 获取滚动条容器
|
||||||
*
|
|
||||||
* 获取滚动条容器
|
|
||||||
*/
|
|
||||||
const getScrollElement = () => {
|
const getScrollElement = () => {
|
||||||
const scroll = document.getElementById(uuidScrollBar) // 获取滚动条容器
|
const scroll = document.getElementById(uuidScrollBar) // 获取滚动条容器
|
||||||
|
|
||||||
@ -208,25 +206,15 @@ export default defineComponent({
|
|||||||
|
|
||||||
return findElement
|
return findElement
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 手动滚动容器
|
||||||
*
|
|
||||||
* @param type 滚动方向
|
|
||||||
*
|
|
||||||
* 手动滚动容器
|
|
||||||
*/
|
|
||||||
const scrollX = (type: 'left' | 'right') => {
|
const scrollX = (type: 'left' | 'right') => {
|
||||||
const el = getScrollElement()
|
const el = getScrollElement()
|
||||||
|
|
||||||
if (el) {
|
if (el) {
|
||||||
/**
|
// 找到实际横向滚动元素(class:n-scrollbar-container)
|
||||||
*
|
// 获取 scrollLeft 属性后, 用于左右滚动边界值进行处理
|
||||||
* 找到实际横向滚动元素(class: n-scrollbar-container)
|
|
||||||
* 获取 scrollLeft 属性后, 用于左右滚动边界值进行处理
|
|
||||||
*/
|
|
||||||
const scrollX = el!.scrollLeft || 0
|
const scrollX = el!.scrollLeft || 0
|
||||||
const rolling =
|
const rolling =
|
||||||
type === 'left' ? Math.max(0, scrollX - 200) : scrollX + 200
|
type === 'left' ? Math.max(0, scrollX - 200) : scrollX + 200
|
||||||
@ -238,23 +226,17 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 更多操作操作栏 */
|
// 更多操作操作栏
|
||||||
const actionDropdownSelect = (key: string | number) => {
|
const actionDropdownSelect = (key: string | number) => {
|
||||||
actionState.actionDropdownShow = false
|
actionState.actionDropdownShow = false
|
||||||
|
|
||||||
const fn = actionMap[key as keyof typeof actionMap]
|
const fn = actionMap[key as keyof typeof actionMap]
|
||||||
|
|
||||||
if (fn) {
|
fn?.()
|
||||||
fn()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 右键点击标签页
|
||||||
*
|
// 缓存当前点击标签页索引值(用于关闭左或者右侧标签页操作)
|
||||||
* 右键点击标签页
|
|
||||||
*
|
|
||||||
* 缓存当前点击标签页索引值(用于关闭左或者右侧标签页操作)
|
|
||||||
*/
|
|
||||||
const menuTagContextMenu = (idx: number, e: MouseEvent) => {
|
const menuTagContextMenu = (idx: number, e: MouseEvent) => {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
|
|
||||||
@ -268,10 +250,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 动态设置某些项禁用
|
||||||
*
|
|
||||||
* 动态设置某些项禁用
|
|
||||||
*/
|
|
||||||
const setDisabledAccordionToIndex = () => {
|
const setDisabledAccordionToIndex = () => {
|
||||||
const { closeable } =
|
const { closeable } =
|
||||||
getMenuTagOptions.value[currentContextmenuIndex] ??
|
getMenuTagOptions.value[currentContextmenuIndex] ??
|
||||||
@ -291,12 +270,8 @@ export default defineComponent({
|
|||||||
: setMoreOptionsDisabled('closeLeft', true)
|
: setMoreOptionsDisabled('closeLeft', true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 如果通过更多按钮触发关闭事件,则根据当前标签所在索引值为 currentContextmenuIndex
|
||||||
*
|
// 并且动态设置是否可操作状态
|
||||||
* 如果通过更多按钮触发关闭事件, 则根据当前标签所在索引值为 currentContextmenuIndex
|
|
||||||
*
|
|
||||||
* 并且动态设置是否可操作状态
|
|
||||||
*/
|
|
||||||
const setCurrentContextmenuIndex = () => {
|
const setCurrentContextmenuIndex = () => {
|
||||||
const index = getMenuTagOptions.value.findIndex(
|
const index = getMenuTagOptions.value.findIndex(
|
||||||
(curr) => curr.fullPath === getMenuKey.value,
|
(curr) => curr.fullPath === getMenuKey.value,
|
||||||
@ -307,7 +282,7 @@ export default defineComponent({
|
|||||||
setDisabledAccordionToIndex()
|
setDisabledAccordionToIndex()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 仅有 getMenuTagOptions 长度大于 1 并且非 root path 时, 才激活关闭按钮 */
|
// 仅有 getMenuTagOptions 长度大于 1 并且非 root path 时,才激活关闭按钮
|
||||||
const menuTagMouseenter = (option: MenuTagOptions) => {
|
const menuTagMouseenter = (option: MenuTagOptions) => {
|
||||||
if (
|
if (
|
||||||
getMenuTagOptions.value.length > 1 &&
|
getMenuTagOptions.value.length > 1 &&
|
||||||
@ -317,18 +292,14 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 移出 MenuTag 时, 判断是否为当前已激活 key */
|
// 移出 MenuTag 时,判断是否为当前已激活 key
|
||||||
const menuTagMouseleave = (option: MenuTagOptions) => {
|
const menuTagMouseleave = (option: MenuTagOptions) => {
|
||||||
if (option.fullPath !== getMenuKey.value) {
|
if (option.fullPath !== getMenuKey.value) {
|
||||||
option.closeable = false
|
option.closeable = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// 每当新的页面打开后,将滚动条横向滚到至底部,使用 nextTick 避免元素未渲染挂载至页面
|
||||||
*
|
|
||||||
* 每当新的页面打开后, 将滚动条横向滚到至底部
|
|
||||||
* 使用 nextTick 避免元素未渲染挂载至页面
|
|
||||||
*/
|
|
||||||
const updateScrollBarPosition = () => {
|
const updateScrollBarPosition = () => {
|
||||||
const el = getScrollElement()
|
const el = getScrollElement()
|
||||||
|
|
||||||
@ -342,7 +313,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 动态更新 menu tag 所在位置 */
|
// 动态更新 menu tag 所在位置
|
||||||
const positionMenuTag = () => {
|
const positionMenuTag = () => {
|
||||||
nextTick().then(() => {
|
nextTick().then(() => {
|
||||||
const tags = queryElements<HTMLElement>(
|
const tags = queryElements<HTMLElement>(
|
||||||
@ -362,7 +333,11 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 如果有且只有一个标签页时, 禁止全部关闭操作 */
|
// 最大化内容区域按钮点击
|
||||||
|
const maximizeBtnClick = () => {
|
||||||
|
maximize(true)
|
||||||
|
}
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => getMenuTagOptions.value,
|
() => getMenuTagOptions.value,
|
||||||
(ndata, odata) => {
|
(ndata, odata) => {
|
||||||
@ -391,16 +366,18 @@ export default defineComponent({
|
|||||||
immediate: true,
|
immediate: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
/** 动态设置关闭按钮是否可操作 */
|
watchEffect(() => {
|
||||||
watch(
|
if (actionState.actionDropdownShow) {
|
||||||
() => actionState.actionDropdownShow,
|
|
||||||
(ndata) => {
|
|
||||||
// 使用节流函数,避免右键菜单闪烁问题
|
// 使用节流函数,避免右键菜单闪烁问题
|
||||||
if (ndata) {
|
throttle(setDisabledAccordionToIndex, 300)?.()
|
||||||
throttle(setDisabledAccordionToIndex, 100)?.()
|
}
|
||||||
}
|
|
||||||
},
|
if (catchMenuKey !== getMenuKey.value) {
|
||||||
)
|
catchMenuKey = getMenuKey.value
|
||||||
|
|
||||||
|
positionMenuTag()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
expose({})
|
expose({})
|
||||||
|
|
||||||
@ -425,22 +402,21 @@ export default defineComponent({
|
|||||||
height: 22,
|
height: 22,
|
||||||
},
|
},
|
||||||
maximize,
|
maximize,
|
||||||
getRootPath,
|
|
||||||
reload,
|
reload,
|
||||||
globalMainLayoutLoad,
|
globalMainLayoutLoad,
|
||||||
|
maximizeBtnClick,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
iconConfig,
|
iconConfig,
|
||||||
getRootPath,
|
|
||||||
uuidScrollBar,
|
uuidScrollBar,
|
||||||
getMenuTagOptions,
|
getMenuTagOptions,
|
||||||
MENU_TAG_DATA,
|
MENU_TAG_DATA,
|
||||||
globalMainLayoutLoad,
|
globalMainLayoutLoad,
|
||||||
} = this
|
} = this
|
||||||
const {
|
const {
|
||||||
maximize,
|
maximizeBtnClick,
|
||||||
closeCurrentMenuTag,
|
closeCurrentMenuTag,
|
||||||
scrollX,
|
scrollX,
|
||||||
$t,
|
$t,
|
||||||
@ -496,7 +472,6 @@ export default defineComponent({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<NFlex
|
<NFlex
|
||||||
ref="menuTagSpaceRef"
|
|
||||||
class="menu-tag-wrapper"
|
class="menu-tag-wrapper"
|
||||||
wrap={false}
|
wrap={false}
|
||||||
align="center"
|
align="center"
|
||||||
@ -516,7 +491,7 @@ export default defineComponent({
|
|||||||
onContextmenu: menuTagContextMenu.bind(this, idx),
|
onContextmenu: menuTagContextMenu.bind(this, idx),
|
||||||
onMouseenter: menuTagMouseenter.bind(this, curr),
|
onMouseenter: menuTagMouseenter.bind(this, curr),
|
||||||
onMouseleave: menuTagMouseleave.bind(this, curr),
|
onMouseleave: menuTagMouseleave.bind(this, curr),
|
||||||
[MENU_TAG_DATA]: curr.path,
|
[MENU_TAG_DATA]: curr.fullPath,
|
||||||
}}
|
}}
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
@ -535,29 +510,14 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
{(curr.closeable || getMenuTagOptions.length === 1) &&
|
<NIcon
|
||||||
curr.fullPath !== getRootPath ? (
|
class="menu-tag__btn-icon"
|
||||||
<NIcon
|
{...{
|
||||||
class="menu-tag__btn-icon"
|
onMousedown: closeCurrentMenuTag.bind(this, idx),
|
||||||
{...{
|
}}
|
||||||
onMousedown: closeCurrentMenuTag.bind(
|
>
|
||||||
this,
|
<RIcon name="close" size="14" />
|
||||||
idx,
|
</NIcon>
|
||||||
),
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<RIcon name="close" size="14" />
|
|
||||||
</NIcon>
|
|
||||||
) : (
|
|
||||||
// 默认使用一个空 NIcon 占位,避免不能正确的触发动画
|
|
||||||
<NIcon
|
|
||||||
class={[
|
|
||||||
curr.fullPath !== getRootPath
|
|
||||||
? 'menu-tag__btn-icon'
|
|
||||||
: 'menu-tag__btn-icon--hidden',
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
@ -584,9 +544,7 @@ export default defineComponent({
|
|||||||
width={iconConfig.width}
|
width={iconConfig.width}
|
||||||
height={iconConfig.height}
|
height={iconConfig.height}
|
||||||
customClassName="menu-tag__right-setting"
|
customClassName="menu-tag__right-setting"
|
||||||
onClick={() => {
|
onClick={maximizeBtnClick}
|
||||||
maximize(true)
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
<RIcon
|
<RIcon
|
||||||
name="reload"
|
name="reload"
|
||||||
|
@ -1,15 +1,4 @@
|
|||||||
/**
|
import { useElementBounding, useWindowSize } from '@vueuse/core'
|
||||||
*
|
|
||||||
* @author Ray <https://github.com/XiaoDaiGua-Ray>
|
|
||||||
*
|
|
||||||
* @date 2023-06-02
|
|
||||||
*
|
|
||||||
* @workspace ray-template
|
|
||||||
*
|
|
||||||
* @remark 今天也是元气满满撸代码的一天
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { useElementBounding } from '@vueuse/core'
|
|
||||||
|
|
||||||
import type { Ref } from 'vue'
|
import type { Ref } from 'vue'
|
||||||
|
|
||||||
@ -29,10 +18,14 @@ export const layoutCssVars = (
|
|||||||
const siderBar = useElementBounding(element[0])
|
const siderBar = useElementBounding(element[0])
|
||||||
const menuTag = useElementBounding(element[1])
|
const menuTag = useElementBounding(element[1])
|
||||||
const footer = useElementBounding(element[2])
|
const footer = useElementBounding(element[2])
|
||||||
|
const { height, width } = useWindowSize()
|
||||||
|
|
||||||
return computed(() => {
|
return computed(() => {
|
||||||
return {
|
return {
|
||||||
'--layout-content-height': `calc(100% - ${siderBar.height.value}px - ${menuTag.height.value}px - ${footer.height.value}px)`,
|
'--window-width': `${width.value}px`,
|
||||||
|
'--window-height': `${height.value}px`,
|
||||||
|
'--layout-content-height': `calc(${height.value}px - ${siderBar.height.value}px - ${menuTag.height.value}px - ${footer.height.value}px)`,
|
||||||
|
'--layout-content-width': `${siderBar.width.value}px`,
|
||||||
'--layout-siderbar-height': `${siderBar.height.value}px`,
|
'--layout-siderbar-height': `${siderBar.height.value}px`,
|
||||||
'--layout-menutag-height': `${menuTag.height.value}px`,
|
'--layout-menutag-height': `${menuTag.height.value}px`,
|
||||||
'--layout-footer-height': `${footer.height.value}px`,
|
'--layout-footer-height': `${footer.height.value}px`,
|
||||||
|
@ -27,10 +27,11 @@ export const useSigningGetters = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useSigningActions = () => {
|
export const useSigningActions = () => {
|
||||||
const { signing, logout } = piniaSigningStore()
|
const { signing, logout, clearSigningCallback } = piniaSigningStore()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
signing,
|
signing,
|
||||||
logout,
|
logout,
|
||||||
|
clearSigningCallback,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,6 +308,15 @@ export const piniaMenuStore = defineStore(
|
|||||||
// 直接使用完整 url,检查是否在 routes 中
|
// 直接使用完整 url,检查是否在 routes 中
|
||||||
const findMenuOption = getRoutes().find((curr) => curr.path === routePath)
|
const findMenuOption = getRoutes().find((curr) => curr.path === routePath)
|
||||||
|
|
||||||
|
// 避免匹配根页面路由
|
||||||
|
if (
|
||||||
|
findMenuOption?.path === '/' ||
|
||||||
|
!findMenuOption?.path ||
|
||||||
|
findMenuOption?.path === '/login'
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (findMenuOption) {
|
if (findMenuOption) {
|
||||||
// 使用 pick 提取仅需要的字段,避免 vue 抛错空引用,导致性能损耗
|
// 使用 pick 提取仅需要的字段,避免 vue 抛错空引用,导致性能损耗
|
||||||
const pickOption = pick(
|
const pickOption = pick(
|
||||||
|
@ -75,30 +75,58 @@ export const piniaSigningStore = defineStore(
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 退出登陆并且清空缓存数据
|
* @param toSigning 是否需要退出登录,并且重定向至登录页
|
||||||
* 延迟 300ms 后强制刷新当前系统
|
*
|
||||||
|
* @description
|
||||||
|
* 清除所有登录缓存信息。
|
||||||
|
* 如果 toSigning 传递 true 则会重定向至登录页。
|
||||||
*/
|
*/
|
||||||
const logout = () => {
|
const clearSigningCallback = (toSigning: boolean) => {
|
||||||
const { closeAll } = useSiderBar()
|
const { closeAll } = useSiderBar()
|
||||||
const { appPiniaMenuStore, appPiniaSigningStore } = APP_CATCH_KEY
|
const {
|
||||||
|
appPiniaMenuStore,
|
||||||
|
appPiniaSigningStore,
|
||||||
|
token,
|
||||||
|
signing,
|
||||||
|
appMenuKey,
|
||||||
|
} = APP_CATCH_KEY
|
||||||
|
|
||||||
// 提示信息
|
// 提示信息
|
||||||
window.$message.info('账号退出中...')
|
window.$message.info('账号退出中...')
|
||||||
// 移除所有 sessionStorage 缓存
|
// 移除所有 sessionStorage 缓存
|
||||||
removeStorage('__all_sessionStorage__', 'sessionStorage')
|
removeStorage('__all_sessionStorage__', 'sessionStorage')
|
||||||
// 移除指定 localStorage 缓存
|
// 移除指定 localStorage 缓存
|
||||||
removeStorage(appPiniaMenuStore, 'localStorage')
|
|
||||||
removeStorage(appPiniaSigningStore, 'localStorage')
|
removeStorage(appPiniaSigningStore, 'localStorage')
|
||||||
|
removeStorage(appPiniaMenuStore, 'localStorage')
|
||||||
|
removeStorage(token, 'localStorage')
|
||||||
|
removeStorage(signing, 'localStorage')
|
||||||
|
removeStorage(appMenuKey, 'localStorage')
|
||||||
// 关闭所有侧边栏标签
|
// 关闭所有侧边栏标签
|
||||||
closeAll()
|
closeAll()
|
||||||
// 延迟 300ms 后强制刷新当前系统
|
|
||||||
setTimeout(() => window.location.reload())
|
if (toSigning) {
|
||||||
|
window.location.replace('#/')
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
window.location.reload()
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 退出登陆并且清空缓存数据
|
||||||
|
* 延迟 300ms 后强制刷新当前系统
|
||||||
|
*/
|
||||||
|
const logout = () => {
|
||||||
|
clearSigningCallback(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
signing,
|
signing,
|
||||||
logout,
|
logout,
|
||||||
|
clearSigningCallback,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -40,6 +40,7 @@ export interface AppPrimaryColor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface Config {
|
export interface Config {
|
||||||
|
cdn: boolean
|
||||||
server: ServerOptions
|
server: ServerOptions
|
||||||
buildOptions: (mode: string) => BuildOptions
|
buildOptions: (mode: string) => BuildOptions
|
||||||
alias: AliasOptions
|
alias: AliasOptions
|
||||||
|
@ -49,11 +49,13 @@ import type { AppConfigExport } from '@/types'
|
|||||||
import type { BuildOptions } from 'vite'
|
import type { BuildOptions } from 'vite'
|
||||||
|
|
||||||
const config: AppConfigExport = {
|
const config: AppConfigExport = {
|
||||||
/** 公共基础路径配置, 如果为空则会默认以 '/' 填充 */
|
// 是否启用 cdn 构建项目
|
||||||
|
cdn: false,
|
||||||
|
// 公共基础路径配置, 如果为空则会默认以 '/' 填充
|
||||||
base: '/ray-template/',
|
base: '/ray-template/',
|
||||||
/** 配置首屏加载信息 */
|
// 配置首屏加载信息
|
||||||
preloadingConfig: PRE_LOADING_CONFIG,
|
preloadingConfig: PRE_LOADING_CONFIG,
|
||||||
/** 默认主题色(不可省略, 必填), 也用于 ejs 注入 */
|
// 默认主题色(不可省略,必填),也用于 ejs 注入
|
||||||
appPrimaryColor: APP_THEME.appPrimaryColor,
|
appPrimaryColor: APP_THEME.appPrimaryColor,
|
||||||
sideBarLogo: SIDE_BAR_LOGO_DEFAULT,
|
sideBarLogo: SIDE_BAR_LOGO_DEFAULT,
|
||||||
/**
|
/**
|
||||||
@ -79,10 +81,7 @@ const config: AppConfigExport = {
|
|||||||
* 浏览器标题
|
* 浏览器标题
|
||||||
*/
|
*/
|
||||||
title: htmlTitlePlugin(PRE_LOADING_CONFIG.title || 'Ray Template'),
|
title: htmlTitlePlugin(PRE_LOADING_CONFIG.title || 'Ray Template'),
|
||||||
/**
|
// 配置 HMR 特定选项(端口、主机、路径和协议)
|
||||||
*
|
|
||||||
* 配置 HMR 特定选项(端口、主机、路径和协议)
|
|
||||||
*/
|
|
||||||
server: {
|
server: {
|
||||||
host: '0.0.0.0',
|
host: '0.0.0.0',
|
||||||
port: 9527,
|
port: 9527,
|
||||||
@ -100,10 +99,7 @@ const config: AppConfigExport = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
/**
|
// 打包相关配置
|
||||||
*
|
|
||||||
* 打包相关配置
|
|
||||||
*/
|
|
||||||
buildOptions: (mode: string): BuildOptions => {
|
buildOptions: (mode: string): BuildOptions => {
|
||||||
const productionBuildOptions = {
|
const productionBuildOptions = {
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
|
@ -55,74 +55,78 @@ function onlyReportOptions(mode: string): PluginOption[] {
|
|||||||
|
|
||||||
// 仅适用于构建模式(任何构建模式:preview、build、report...)
|
// 仅适用于构建模式(任何构建模式:preview、build、report...)
|
||||||
function onlyBuildOptions(mode: string): PluginOption[] {
|
function onlyBuildOptions(mode: string): PluginOption[] {
|
||||||
|
const { cdn } = config
|
||||||
|
|
||||||
return [
|
return [
|
||||||
viteCDNPlugin({
|
viteCDNPlugin({
|
||||||
// modules 顺序 vue, vue-demi 必须保持当前顺序加载,否则会出现加载错误问题
|
// modules 顺序 vue, vue-demi 必须保持当前顺序加载,否则会出现加载错误问题
|
||||||
resolve: cdnResolve(),
|
resolve: cdnResolve(),
|
||||||
modules: [
|
modules: cdn
|
||||||
{
|
? [
|
||||||
name: 'vue',
|
{
|
||||||
global: 'Vue',
|
name: 'vue',
|
||||||
relativeModule: 'vue.global.min.js',
|
global: 'Vue',
|
||||||
},
|
relativeModule: 'vue.global.min.js',
|
||||||
{
|
},
|
||||||
name: 'vue-demi',
|
{
|
||||||
global: 'VueDemi',
|
name: 'vue-demi',
|
||||||
relativeModule: 'index.iife.min.js',
|
global: 'VueDemi',
|
||||||
},
|
relativeModule: 'index.iife.min.js',
|
||||||
{
|
},
|
||||||
name: 'naive-ui',
|
{
|
||||||
global: 'naive',
|
name: 'naive-ui',
|
||||||
relativeModule: 'index.prod.js',
|
global: 'naive',
|
||||||
},
|
relativeModule: 'index.prod.js',
|
||||||
{
|
},
|
||||||
name: 'pinia',
|
{
|
||||||
global: 'Pinia',
|
name: 'pinia',
|
||||||
relativeModule: 'pinia.iife.min.js',
|
global: 'Pinia',
|
||||||
},
|
relativeModule: 'pinia.iife.min.js',
|
||||||
{
|
},
|
||||||
name: 'vue-router',
|
{
|
||||||
global: 'VueRouter',
|
name: 'vue-router',
|
||||||
relativeModule: 'vue-router.global.min.js',
|
global: 'VueRouter',
|
||||||
},
|
relativeModule: 'vue-router.global.min.js',
|
||||||
{
|
},
|
||||||
name: 'vue-i18n',
|
{
|
||||||
global: 'VueI18n',
|
name: 'vue-i18n',
|
||||||
relativeModule: 'vue-i18n.global.min.js',
|
global: 'VueI18n',
|
||||||
},
|
relativeModule: 'vue-i18n.global.min.js',
|
||||||
{
|
},
|
||||||
name: 'echarts',
|
{
|
||||||
global: 'echarts',
|
name: 'echarts',
|
||||||
relativeModule: 'echarts.min.js',
|
global: 'echarts',
|
||||||
},
|
relativeModule: 'echarts.min.js',
|
||||||
{
|
},
|
||||||
name: 'axios',
|
{
|
||||||
global: 'axios',
|
name: 'axios',
|
||||||
relativeModule: 'axios.min.js',
|
global: 'axios',
|
||||||
},
|
relativeModule: 'axios.min.js',
|
||||||
{
|
},
|
||||||
name: 'jsbarcode',
|
{
|
||||||
global: 'JsBarcode',
|
name: 'jsbarcode',
|
||||||
relativeModule: 'JsBarcode.all.min.js',
|
global: 'JsBarcode',
|
||||||
},
|
relativeModule: 'JsBarcode.all.min.js',
|
||||||
{
|
},
|
||||||
name: 'dayjs',
|
{
|
||||||
global: 'dayjs',
|
name: 'dayjs',
|
||||||
relativeModule: 'dayjs.min.js',
|
global: 'dayjs',
|
||||||
},
|
relativeModule: 'dayjs.min.js',
|
||||||
{
|
},
|
||||||
name: 'dom-to-image',
|
{
|
||||||
global: 'domtoimage',
|
name: 'dom-to-image',
|
||||||
relativeModule: 'dom-to-image.min.js',
|
global: 'domtoimage',
|
||||||
},
|
relativeModule: 'dom-to-image.min.js',
|
||||||
{
|
},
|
||||||
// 如果需要修改版本,需要同时修改 index.html 中对应的 css
|
{
|
||||||
// 可以全局搜索 https://lib.baomitu.com/print-js/1.6.0/print.min.css
|
// 如果需要修改版本,需要同时修改 index.html 中对应的 css
|
||||||
name: 'print-js',
|
// 可以全局搜索 https://lib.baomitu.com/print-js/1.6.0/print.min.css
|
||||||
global: 'printJS',
|
name: 'print-js',
|
||||||
relativeModule: 'print.min.js',
|
global: 'printJS',
|
||||||
},
|
relativeModule: 'print.min.js',
|
||||||
],
|
},
|
||||||
|
]
|
||||||
|
: [],
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user