diff --git a/code/ai-demo/.idea/compiler.xml b/code/ai-demo/.idea/compiler.xml index 335cf780..65cb3c4b 100644 --- a/code/ai-demo/.idea/compiler.xml +++ b/code/ai-demo/.idea/compiler.xml @@ -6,7 +6,6 @@ - diff --git a/code/ai-demo/.idea/vcs.xml b/code/ai-demo/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/code/ai-demo/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/code/ai-demo/.idea/workspace.xml b/code/ai-demo/.idea/workspace.xml index 9bd5c983..e7eeeb17 100644 --- a/code/ai-demo/.idea/workspace.xml +++ b/code/ai-demo/.idea/workspace.xml @@ -21,9 +21,9 @@ - + { + "associatedIndex": 0 +} @@ -34,6 +34,7 @@ "Application.Main.executor": "Run", "ModuleVcsDetector.initialDetectionPerformed": "true", "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.git.unshallow": "true", "git-widget-placeholder": "master", "kotlin-language-version-configured": "true", "onboarding.tips.debug.path": "D:/workspace/code/ai-demo/src/main/java/org/example/Main.java", diff --git a/code/container-ocr/ocr-vue/.browserslistrc b/code/container-ocr/ocr-vue/.browserslistrc new file mode 100644 index 00000000..2acc7773 --- /dev/null +++ b/code/container-ocr/ocr-vue/.browserslistrc @@ -0,0 +1,6 @@ +Chrome >= 49 +Firefox >= 45 +Safari >= 10 +Edge >= 15 +iOS >= 9 +Android >= 4.4 \ No newline at end of file diff --git a/code/container-ocr/ocr-vue/.env b/code/container-ocr/ocr-vue/.env new file mode 100644 index 00000000..09b1fe99 --- /dev/null +++ b/code/container-ocr/ocr-vue/.env @@ -0,0 +1,13 @@ +# Application +# 应用名称(用于标题、日志等) +PUBLIC_APP_NAME=g3hy2026 + +# Server +# 应用部署基础路径(路由和静态资源 base) +PUBLIC_SERVER_PATH=/g3hy2026/ +# 本地开发服务器端口 +PUBLIC_SERVER_PORT=3000 + +# API +# 后端 API 基础地址 +PUBLIC_API_BASE_URL=http://127.0.0.1:8084/api \ No newline at end of file diff --git a/code/container-ocr/ocr-vue/.gitignore b/code/container-ocr/ocr-vue/.gitignore new file mode 100644 index 00000000..8b7e5021 --- /dev/null +++ b/code/container-ocr/ocr-vue/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/code/container-ocr/ocr-vue/.vscode/extensions.json b/code/container-ocr/ocr-vue/.vscode/extensions.json new file mode 100644 index 00000000..a7cea0b0 --- /dev/null +++ b/code/container-ocr/ocr-vue/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/code/container-ocr/ocr-vue/.vscode/settings.json b/code/container-ocr/ocr-vue/.vscode/settings.json new file mode 100644 index 00000000..d0debe09 --- /dev/null +++ b/code/container-ocr/ocr-vue/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "editor.cursorSmoothCaretAnimation": "on", + "oxc.fmt.configPath": ".oxfmtrc.json", + "editor.defaultFormatter": "oxc.oxc-vscode", + "editor.formatOnSave": true, + "[javascript]": { + "editor.defaultFormatter": "oxc.oxc-vscode", + "editor.formatOnSave": true + }, + "[typescript]": { + "editor.defaultFormatter": "oxc.oxc-vscode", + "editor.formatOnSave": true + } +} diff --git a/code/container-ocr/ocr-vue/.vscode/vue3.code-snippets b/code/container-ocr/ocr-vue/.vscode/vue3.code-snippets new file mode 100644 index 00000000..d65dbb81 --- /dev/null +++ b/code/container-ocr/ocr-vue/.vscode/vue3.code-snippets @@ -0,0 +1,20 @@ +{ + "Print Vue3 SFC": { + "scope": "vue", + "prefix": "v3", + "body": [ + "", + "", + "", + " ", + "", + "", + "", + ], + "description": "生成 Vue3 SFC 文件(无注释)", + }, +} diff --git a/code/container-ocr/ocr-vue/README.md b/code/container-ocr/ocr-vue/README.md new file mode 100644 index 00000000..84d85101 --- /dev/null +++ b/code/container-ocr/ocr-vue/README.md @@ -0,0 +1,36 @@ +# Rsbuild project + +## Setup + +Install the dependencies: + +```bash +pnpm install +``` + +## Get started + +Start the dev server, and the app will be available at [http://localhost:3000](http://localhost:3000). + +```bash +pnpm run dev +``` + +Build the app for production: + +```bash +pnpm run build +``` + +Preview the production build locally: + +```bash +pnpm run preview +``` + +## Learn more + +To learn more about Rsbuild, check out the following resources: + +- [Rsbuild documentation](https://rsbuild.rs) - explore Rsbuild features and APIs. +- [Rsbuild GitHub repository](https://github.com/web-infra-dev/rsbuild) - your feedback and contributions are welcome! diff --git a/code/container-ocr/ocr-vue/components.d.ts b/code/container-ocr/ocr-vue/components.d.ts new file mode 100644 index 00000000..70f122a6 --- /dev/null +++ b/code/container-ocr/ocr-vue/components.d.ts @@ -0,0 +1,45 @@ +/* eslint-disable */ +// @ts-nocheck +// biome-ignore lint: disable +// oxlint-disable +// ------ +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 + +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + ElButton: typeof import('element-plus/es')['ElButton'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSplitter: typeof import('element-plus/es')['ElSplitter'] + ElSplitterPanel: typeof import('element-plus/es')['ElSplitterPanel'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElText: typeof import('element-plus/es')['ElText'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + G3Column: typeof import('./src/components/g3-table/g3-column.vue')['default'] + G3EditTable: typeof import('./src/components/g3-table/G3EditTable.vue')['default'] + G3Grid: typeof import('./src/components/g3-grid/g3-grid.vue')['default'] + G3GridGroup: typeof import('./src/components/g3-grid/g3-grid-group.vue')['default'] + G3GridItem: typeof import('./src/components/g3-grid/g3-grid-item.vue')['default'] + G3Icon: typeof import('./src/components/g3-icon/index.vue')['default'] + G3RecursiveColumn: typeof import('./src/components/g3-table/G3RecursiveColumn.vue')['default'] + G3Select: typeof import('./src/components/g3-select/index.vue')['default'] + G3TableView: typeof import('./src/components/g3-table/g3-table-view.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + } +} diff --git a/code/container-ocr/ocr-vue/index.html b/code/container-ocr/ocr-vue/index.html new file mode 100644 index 00000000..f80595ed --- /dev/null +++ b/code/container-ocr/ocr-vue/index.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/code/container-ocr/ocr-vue/jsconfig.json b/code/container-ocr/ocr-vue/jsconfig.json new file mode 100644 index 00000000..2c8ee2bb --- /dev/null +++ b/code/container-ocr/ocr-vue/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + } +} diff --git a/code/container-ocr/ocr-vue/package.json b/code/container-ocr/ocr-vue/package.json new file mode 100644 index 00000000..5f45d7ab --- /dev/null +++ b/code/container-ocr/ocr-vue/package.json @@ -0,0 +1,42 @@ +{ + "name": "rsbuild-project", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "build": "rsbuild build", + "dev": "rsbuild dev --open", + "preview": "rsbuild preview" + }, + "dependencies": { + "@iconify/vue": "^5.0.0", + "axios": "^1.13.6", + "element-plus": "^2.13.3", + "lodash": "^4.17.23", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^3.0.4", + "pinia-plugin-persistedstate": "^4.7.1", + "unplugin-auto-import": "^21.0.0", + "unplugin-vue-components": "^31.0.0", + "uuid": "^13.0.0", + "vue": "^3.5.26", + "vue-router": "^5.0.3", + "vue3-puzzle-vcode": "^1.1.7", + "vxe-pc-ui": "4.13.0", + "vxe-table": "4.17.49", + "xe-utils": "3.9.1" + }, + "devDependencies": { + "@iconify/json": "^2.2.446", + "@rsbuild/core": "^1.7.1", + "@rsbuild/plugin-babel": "^1.1.2", + "@rsbuild/plugin-check-syntax": "^1.6.1", + "@rsbuild/plugin-sass": "^1.5.1", + "@rsbuild/plugin-vue": "^1.2.2", + "@rsbuild/plugin-vue-jsx": "^1.1.2", + "oxfmt": "^0.40.0", + "resize-observer-polyfill": "^1.5.1", + "unplugin-icons": "^23.0.1" + } +} diff --git a/code/container-ocr/ocr-vue/pnpm-lock.yaml b/code/container-ocr/ocr-vue/pnpm-lock.yaml new file mode 100644 index 00000000..602877a3 --- /dev/null +++ b/code/container-ocr/ocr-vue/pnpm-lock.yaml @@ -0,0 +1,2979 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@iconify/vue': + specifier: ^5.0.0 + version: 5.0.0(vue@3.5.30) + axios: + specifier: ^1.13.6 + version: 1.13.6 + element-plus: + specifier: ^2.13.3 + version: 2.13.5(vue@3.5.30) + lodash: + specifier: ^4.17.23 + version: 4.17.23 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^3.0.4 + version: 3.0.4(vue@3.5.30) + pinia-plugin-persistedstate: + specifier: ^4.7.1 + version: 4.7.1(pinia@3.0.4(vue@3.5.30)) + unplugin-auto-import: + specifier: ^21.0.0 + version: 21.0.0(@vueuse/core@12.0.0) + unplugin-vue-components: + specifier: ^31.0.0 + version: 31.0.0(vue@3.5.30) + uuid: + specifier: ^13.0.0 + version: 13.0.0 + vue: + specifier: ^3.5.26 + version: 3.5.30 + vue-router: + specifier: ^5.0.3 + version: 5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(vue@3.5.30))(vue@3.5.30) + vue3-puzzle-vcode: + specifier: ^1.1.7 + version: 1.1.7 + vxe-pc-ui: + specifier: 4.13.0 + version: 4.13.0(vue@3.5.30) + vxe-table: + specifier: 4.17.49 + version: 4.17.49(vue@3.5.30) + xe-utils: + specifier: 3.9.1 + version: 3.9.1 + devDependencies: + '@iconify/json': + specifier: ^2.2.446 + version: 2.2.449 + '@rsbuild/core': + specifier: ^1.7.1 + version: 1.7.3 + '@rsbuild/plugin-babel': + specifier: ^1.1.2 + version: 1.1.2(@rsbuild/core@1.7.3) + '@rsbuild/plugin-check-syntax': + specifier: ^1.6.1 + version: 1.6.1(@rsbuild/core@1.7.3) + '@rsbuild/plugin-sass': + specifier: ^1.5.1 + version: 1.5.1(@rsbuild/core@1.7.3) + '@rsbuild/plugin-vue': + specifier: ^1.2.2 + version: 1.2.7(@rsbuild/core@1.7.3)(@rspack/core@1.7.8(@swc/helpers@0.5.19))(@vue/compiler-sfc@3.5.30)(vue@3.5.30) + '@rsbuild/plugin-vue-jsx': + specifier: ^1.1.2 + version: 1.1.2(@babel/core@7.29.0)(@rsbuild/core@1.7.3) + oxfmt: + specifier: ^0.40.0 + version: 0.40.0 + resize-observer-polyfill: + specifier: ^1.5.1 + version: 1.5.1 + unplugin-icons: + specifier: ^23.0.1 + version: 23.0.1(@vue/compiler-sfc@3.5.30) + +packages: + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@bufbuild/protobuf@2.11.0': + resolution: {integrity: sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==} + + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + engines: {node: '>=14'} + + '@element-plus/icons-vue@2.3.2': + resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==} + peerDependencies: + vue: ^3.2.0 + + '@emnapi/core@1.9.0': + resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} + + '@emnapi/runtime@1.9.0': + resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + + '@floating-ui/dom@1.7.6': + resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + + '@iconify/json@2.2.449': + resolution: {integrity: sha512-23uDJsjBeUXqK66dchHDN/YulLeXxUDvAKLwYVKzL0UDT7A9UyHtHPwcOUNf0rbA452ZQMVqk8jsyDtg+xcheg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + + '@iconify/vue@5.0.0': + resolution: {integrity: sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==} + peerDependencies: + vue: '>=3' + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@module-federation/error-codes@0.22.0': + resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} + + '@module-federation/runtime-core@0.22.0': + resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} + + '@module-federation/runtime-tools@0.22.0': + resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} + + '@module-federation/runtime@0.22.0': + resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} + + '@module-federation/sdk@0.22.0': + resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} + + '@module-federation/webpack-bundler-runtime@0.22.0': + resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} + + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + + '@oxfmt/binding-android-arm-eabi@0.40.0': + resolution: {integrity: sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.40.0': + resolution: {integrity: sha512-/mbS9UUP/5Vbl2D6osIdcYiP0oie63LKMoTyGj5hyMCK/SFkl3EhtyRAfdjPvuvHC0SXdW6ePaTKkBSq1SNcIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.40.0': + resolution: {integrity: sha512-wRt8fRdfLiEhnRMBonlIbKrJWixoEmn6KCjKE9PElnrSDSXETGZfPb8ee+nQNTobXkCVvVLytp2o0obAsxl78Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.40.0': + resolution: {integrity: sha512-fzowhqbOE/NRy+AE5ob0+Y4X243WbWzDb00W+pKwD7d9tOqsAFbtWUwIyqqCoCLxj791m2xXIEeLH/3uz7zCCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.40.0': + resolution: {integrity: sha512-agZ9ITaqdBjcerRRFEHB8s0OyVcQW8F9ZxsszjxzeSthQ4fcN2MuOtQFWec1ed8/lDa50jSLHVE2/xPmTgtCfQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.40.0': + resolution: {integrity: sha512-ZM2oQ47p28TP1DVIp7HL1QoMUgqlBFHey0ksHct7tMXoU5BqjNvPWw7888azzMt25lnyPODVuye1wvNbvVUFOA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.40.0': + resolution: {integrity: sha512-RBFPAxRAIsMisKM47Oe6Lwdv6agZYLz02CUhVCD1sOv5ajAcRMrnwCFBPWwGXpazToW2mjnZxFos8TuFjTU15A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.40.0': + resolution: {integrity: sha512-Nb2XbQ+wV3W2jSIihXdPj7k83eOxeSgYP3N/SRXvQ6ZYPIk6Q86qEh5Gl/7OitX3bQoQrESqm1yMLvZV8/J7dA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-arm64-musl@0.40.0': + resolution: {integrity: sha512-tGmWhLD/0YMotCdfezlT6tC/MJG/wKpo4vnQ3Cq+4eBk/BwNv7EmkD0VkD5F/dYkT3b8FNU01X2e8vvJuWoM1w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-ppc64-gnu@0.40.0': + resolution: {integrity: sha512-rVbFyM3e7YhkVnp0IVYjaSHfrBWcTRWb60LEcdNAJcE2mbhTpbqKufx0FrhWfoxOrW/+7UJonAOShoFFLigDqQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-gnu@0.40.0': + resolution: {integrity: sha512-3ZqBw14JtWeEoLiioJcXSJz8RQyPE+3jLARnYM1HdPzZG4vk+Ua8CUupt2+d+vSAvMyaQBTN2dZK+kbBS/j5mA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-musl@0.40.0': + resolution: {integrity: sha512-JJ4PPSdcbGBjPvb+O7xYm2FmAsKCyuEMYhqatBAHMp/6TA6rVlf9Z/sYPa4/3Bommb+8nndm15SPFRHEPU5qFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-s390x-gnu@0.40.0': + resolution: {integrity: sha512-Kp0zNJoX9Ik77wUya2tpBY3W9f40VUoMQLWVaob5SgCrblH/t2xr/9B2bWHfs0WCefuGmqXcB+t0Lq77sbBmZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxfmt/binding-linux-x64-gnu@0.40.0': + resolution: {integrity: sha512-7YTCNzleWTaQTqNGUNQ66qVjpoV6DjbCOea+RnpMBly2bpzrI/uu7Rr+2zcgRfNxyjXaFTVQKaRKjqVdeUfeVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-linux-x64-musl@0.40.0': + resolution: {integrity: sha512-hWnSzJ0oegeOwfOEeejYXfBqmnRGHusgtHfCPzmvJvHTwy1s3Neo59UKc1CmpE3zxvrCzJoVHos0rr97GHMNPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-openharmony-arm64@0.40.0': + resolution: {integrity: sha512-28sJC1lR4qtBJGzSRRbPnSW3GxU2+4YyQFE6rCmsUYqZ5XYH8jg0/w+CvEzQ8TuAQz5zLkcA25nFQGwoU0PT3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.40.0': + resolution: {integrity: sha512-cDkRnyT0dqwF5oIX1Cv59HKCeZQFbWWdUpXa3uvnHFT2iwYSSZspkhgjXjU6iDp5pFPaAEAe9FIbMoTgkTmKPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.40.0': + resolution: {integrity: sha512-7rPemBJjqm5Gkv6ZRCPvK8lE6AqQ/2z31DRdWazyx2ZvaSgL7QGofHXHNouRpPvNsT9yxRNQJgigsWkc+0qg4w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.40.0': + resolution: {integrity: sha512-/Zmj0yTYSvmha6TG1QnoLqVT7ZMRDqXvFXXBQpIjteEwx9qvUYMBH2xbiOFhDeMUJkGwC3D6fdKsFtaqUvkwNA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@rsbuild/core@1.7.3': + resolution: {integrity: sha512-kI1oQvCXbQYxUvQPnDLdjSX4gFsbrFNpuUj6jXEJ7IcJ74Q+n4oeFj74/8tKerhxhe0L90m/ZQfzLeN5ORGA9w==} + engines: {node: '>=18.12.0'} + hasBin: true + + '@rsbuild/plugin-babel@1.1.2': + resolution: {integrity: sha512-qIZzosQlkj7VyFz8mmz1vAKDFlk79xrIvCRYzROqNwQHDXep+gd91nCnUPJdRPHrktzN8Yqa190CPTii3rON6w==} + peerDependencies: + '@rsbuild/core': ^1.0.0 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rsbuild/plugin-check-syntax@1.6.1': + resolution: {integrity: sha512-26xtEYN0QjZYoyt0lWnvIztBWjEZJvcfw7MN4f5B4SpNggmnF7F7aNPrgkY3EccXVFx1VGQBhnCkBV//OoS07Q==} + peerDependencies: + '@rsbuild/core': ^1.0.0 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rsbuild/plugin-sass@1.5.1': + resolution: {integrity: sha512-rwou4KvDerqvAI0hstjlwF9jgzxPaSOr0PkwtEPjTnQcR5mK6AXZICpUBJbHGgjlAM0aTegKf5IYl/ENvaAQrQ==} + peerDependencies: + '@rsbuild/core': ^1.3.0 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rsbuild/plugin-vue-jsx@1.1.2': + resolution: {integrity: sha512-HhoHyIXX2LNzmoLjCb3ZKu0JTySUt8Ryc/iuEs4mZV1W+a64F1GGJJzzZ08eIFu0VgEF7cQwlj3nE1CSo+u1Nw==} + peerDependencies: + '@rsbuild/core': ^1.0.0 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rsbuild/plugin-vue@1.2.7': + resolution: {integrity: sha512-epDSChyeR4U+gwq2vfTARV9hbfrmdFTdmhBWIcv7MFyckn3yxJhweJVwdx14Wf3d8s1p4XZzDpqmphDyvX443Q==} + peerDependencies: + '@rsbuild/core': ^1.0.0 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rspack/binding-darwin-arm64@1.7.8': + resolution: {integrity: sha512-KS6SRc+4VYRdX1cKr1j1HEuMNyEzt7onBS0rkenaiCRRYF0z4WNZNyZqRiuxgM3qZ3TISF7gdmgJQyd4ZB43ig==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.7.8': + resolution: {integrity: sha512-uyXSDKLg2CtqIJrsJDlCqQH80YIPsCUiTToJ59cXAG3v4eke0Qbiv6d/+pV0h/mc0u4inAaSkr5dD18zkMIghw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.7.8': + resolution: {integrity: sha512-dD6gSHA18Uj0eqc1FCwwQ5IO5mIckrpYN4H4kPk9Pjau+1mxWvC4y5Lryz1Z8P/Rh1lnQ/wwGE0XL9nd80+LqQ==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.7.8': + resolution: {integrity: sha512-m+uBi9mEVGkZ02PPOAYN2BSmmvc00XGa6v9CjV8qLpolpUXQIMzDNG+i1fD5SHp8LO+XWsZJOHypMsT0MzGTGw==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.7.8': + resolution: {integrity: sha512-IAPp2L3yS33MAEkcGn/I1gO+a+WExJHXz2ZlRlL2oFCUGpYi2ZQHyAcJ3o2tJqkXmdqsTiN+OjEVMd/RcLa24g==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.7.8': + resolution: {integrity: sha512-do/QNzb4GWdXCsipblDcroqRDR3BFcbyzpZpAw/3j9ajvEqsOKpdHZpILT2NZX/VahhjqfqB3k0kJVt3uK7UYQ==} + cpu: [x64] + os: [linux] + + '@rspack/binding-wasm32-wasi@1.7.8': + resolution: {integrity: sha512-mHtgYTpdhx01i0XNKFYBZyCjtv9YUe/sDfpD1QK4FytPFB+1VpYnmZiaJIMM77VpNsjxGAqWhmUYxi2P6jWifw==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@1.7.8': + resolution: {integrity: sha512-Mkxg86F7kIT4pM9XvE/1LAGjK5NOQi/GJxKyyiKbUAeKM8XBUizVeNuvKR0avf2V5IDAIRXiH1SX8SpujMJteA==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.7.8': + resolution: {integrity: sha512-VmTOZ/X7M85lKFNwb2qJpCRzr4SgO42vucq/X7Uz1oSoTPAf8UUMNdi7BPnu+D4lgy6l8PwV804ZyHO3gGsvPA==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.7.8': + resolution: {integrity: sha512-BK0I4HAwp/yQLnmdJpUtGHcht3x11e9fZwyaiMzznznFc+Oypbf+FS5h+aBgpb53QnNkPpdG7MfAPoKItOcU8A==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.7.8': + resolution: {integrity: sha512-P4fbrQx5hRhAiC8TBTEMCTnNawrIzJLjWwAgrTwRxjgenpjNvimEkQBtSGrXOY+c+MV5Q74P+9wPvVWLKzRkQQ==} + + '@rspack/core@1.7.8': + resolution: {integrity: sha512-kT6yYo8xjKoDfM7iB8N9AmN9DJIlrs7UmQDbpTu1N4zaZocN1/t2fIAWOKjr5+3eJlZQR2twKZhDVHNLbLPjOw==} + engines: {node: '>=18.12.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/lite-tapable@1.1.0': + resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} + + '@swc/helpers@0.5.19': + resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==} + + '@sxzz/popperjs-es@2.11.8': + resolution: {integrity: sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@vue-macros/common@3.1.2': + resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} + + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} + + '@vue/compiler-sfc@3.5.30': + resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} + + '@vue/compiler-ssr@3.5.30': + resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} + + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + + '@vue/devtools-api@8.1.0': + resolution: {integrity: sha512-O44X57jjkLKbLEc4OgL/6fEPOOanRJU8kYpCE8qfKlV96RQZcdzrcLI5mxMuVRUeXhHKIHGhCpHacyCk0HyO4w==} + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-kit@8.1.0': + resolution: {integrity: sha512-/NZlS4WtGIB54DA/z10gzk+n/V7zaqSzYZOVlg2CfdnpIKdB61bd7JDIMxf/zrtX41zod8E2/bbEBoW/d7x70Q==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/devtools-shared@8.1.0': + resolution: {integrity: sha512-h8uCb4Qs8UT8VdTT5yjY6tOJ//qH7EpxToixR0xqejR55t5OdISIg7AJ7eBkhBs8iu1qG5gY3QQNN1DF1EelAA==} + + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} + + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} + + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} + + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} + peerDependencies: + vue: 3.5.30 + + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} + + '@vueuse/core@12.0.0': + resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==} + + '@vueuse/metadata@12.0.0': + resolution: {integrity: sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==} + + '@vueuse/shared@12.0.0': + resolution: {integrity: sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==} + + '@vxe-ui/core@4.4.3': + resolution: {integrity: sha512-IIwi5+h7Yopq3Ps+JtlSmggUQZg3wvzuad2xuWGR9sNzR/r0qlWKfax7qimrM2UNpVhSF1jI+3Z9+3yg+HPYTw==} + peerDependencies: + vue: ^3.2.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + + ast-walker-scope@0.8.3: + resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} + engines: {node: '>=20.19.0'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + + babel-plugin-vue-jsx-hmr@1.0.0: + resolution: {integrity: sha512-XRq+XTD4bub6HkavELMhihvLX2++JkSBAxRXlqQK32b+Tb0S9PEqxrDSMpOEZ1iGyOaJZj9Y0uU/FzICdyL9MA==} + + baseline-browser-mapping@2.10.8: + resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + browserslist-to-es-version@1.4.1: + resolution: {integrity: sha512-1bYCrck5Qh5HUy7P+iDuK39v757/ry5PnQo20vf4sHGeUrYKL2N2OF05U9ARSGt06TpFDQiTv9MT+eitYgWWxA==} + hasBin: true + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001778: + resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorjs.io@0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom-zindex@1.0.6: + resolution: {integrity: sha512-FKWIhiU96bi3xpP9ewRMgANsoVmMUBnMnmpCT6dPMZOunVYJQmJhSRruoI0XSPoHeIif3kyEuiHbFrOJwEJaEA==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.313: + resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==} + + element-plus@2.13.5: + resolution: {integrity: sha512-dmY24fhSREfZN/PuUt0YZigMso7wWzl+B5o+YKNN15kQIn/0hzamsPU+ebj9SES0IbUqsLX1wkrzYmzU8VrVOQ==} + peerDependencies: + vue: ^3.3.0 + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + oxfmt@0.40.0: + resolution: {integrity: sha512-g0C3I7xUj4b4DcagevM9kgH6+pUHytikxUcn3/VUkvzTNaaXBeyZqb7IBsHwojeXm4mTBEC/aBjBTMVUkZwWUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pinia-plugin-persistedstate@4.7.1: + resolution: {integrity: sha512-WHOqh2esDlR3eAaknPbqXrkkj0D24h8shrDPqysgCFR6ghqP/fpFfJmMPJp0gETHsvrh9YNNg6dQfo2OEtDnIQ==} + peerDependencies: + '@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.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + reduce-configs@1.1.1: + resolution: {integrity: sha512-EYtsVGAQarE8daT54cnaY1PIknF2VB78ug6Zre2rs36EsJfC40EG6hmTU2A2P1ZuXnKAt2KI0fzOGHcX7wzdPw==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rspack-vue-loader@17.5.0: + resolution: {integrity: sha512-hJrL2+jytfTs6ORHBOKTh5lU7BVZvmv7afELuQfyEpGC1ll7MKj1BxlgAIbhd6pZwoEwfdH79Lewtwe4VOlfCQ==} + peerDependencies: + '@rspack/core': ^1.0.0 || ^2.0.0-0 + '@vue/compiler-sfc': '*' + vue: '*' + peerDependenciesMeta: + '@rspack/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue: + optional: true + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + sass-embedded-all-unknown@1.98.0: + resolution: {integrity: sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA==} + cpu: ['!arm', '!arm64', '!riscv64', '!x64'] + + sass-embedded-android-arm64@1.98.0: + resolution: {integrity: sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.98.0: + resolution: {integrity: sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + + sass-embedded-android-riscv64@1.98.0: + resolution: {integrity: sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.98.0: + resolution: {integrity: sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.98.0: + resolution: {integrity: sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.98.0: + resolution: {integrity: sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.98.0: + resolution: {integrity: sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-arm@1.98.0: + resolution: {integrity: sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-arm64@1.98.0: + resolution: {integrity: sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.98.0: + resolution: {integrity: sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-riscv64@1.98.0: + resolution: {integrity: sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-musl-x64@1.98.0: + resolution: {integrity: sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-linux-riscv64@1.98.0: + resolution: {integrity: sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-x64@1.98.0: + resolution: {integrity: sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-unknown-all@1.98.0: + resolution: {integrity: sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ==} + os: ['!android', '!darwin', '!linux', '!win32'] + + sass-embedded-win32-arm64@1.98.0: + resolution: {integrity: sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + + sass-embedded-win32-x64@1.98.0: + resolution: {integrity: sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + + sass-embedded@1.98.0: + resolution: {integrity: sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==} + engines: {node: '>=16.0.0'} + hasBin: true + + sass@1.98.0: + resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + engines: {node: '>=14.0.0'} + hasBin: true + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + sync-child-process@1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + + sync-message-port@1.2.0: + resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==} + engines: {node: '>=16.0.0'} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + unimport@5.7.0: + resolution: {integrity: sha512-njnL6sp8lEA8QQbZrt+52p/g4X0rw3bnGGmUcJnt1jeG8+iiqO779aGz0PirCtydAIVcuTBRlJ52F0u46z309Q==} + engines: {node: '>=18.12.0'} + + unplugin-auto-import@21.0.0: + resolution: {integrity: sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^4.0.0 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-icons@23.0.1: + resolution: {integrity: sha512-rv0XEJepajKzDLvRUWASM8K+8+/CCfZn2jtogXqg6RIp7kpatRc/aFrVJn8ANQA09e++lPEEv9yX8cC9enc+QQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + svelte: + optional: true + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + unplugin-vue-components@31.0.0: + resolution: {integrity: sha512-4ULwfTZTLuWJ7+S9P7TrcStYLsSRkk6vy2jt/WTfgUEUb0nW9//xxmrfhyHUEVpZ2UKRRwfRb8Yy15PDbVZf+Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^3.2.2 || ^4.0.0 + vue: ^3.0.0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} + + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} + hasBin: true + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + vue-router@5.0.3: + resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} + peerDependencies: + '@pinia/colada': '>=0.21.2' + '@vue/compiler-sfc': ^3.5.17 + pinia: ^3.0.4 + vue: ^3.5.0 + peerDependenciesMeta: + '@pinia/colada': + optional: true + '@vue/compiler-sfc': + optional: true + pinia: + optional: true + + vue3-puzzle-vcode@1.1.7: + resolution: {integrity: sha512-mW780dz7HKjrElnE60CeYSeHGidKBKHoMjTDYfqF21330rTkFOsfDK1FQKZ22MktgMtTEoS/imfpEDlM1cxY/g==} + + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vxe-pc-ui@4.13.0: + resolution: {integrity: sha512-uhK4w6xfVfb8uioAECVbC0lkaXiklxw6Y+j7/ThorV7JFvo8p/6X7OA6IZMe819mq4EOeiZhkyDfWCUM4IszPw==} + + vxe-table@4.17.49: + resolution: {integrity: sha512-aNz1Ho6u94ETjcMxJRljaZSgpgA7VCJjwcHXYwZqPE9en26tT7p+lzXLNCBC1uMfaOHnKM08iAMFzdCyVs9Neg==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + xe-utils@3.9.1: + resolution: {integrity: sha512-Ujk5UmoH6Iaqhgz3oGwfCXVcMdUJKlXnfvLABdnMyseMG0eHsX2mcCvLd/8sGlIXtfwsprI9bW7vgcVognLmqQ==} + + xe-utils@4.0.4: + resolution: {integrity: sha512-1IUuTZRHa5w88Y3kEf0O4Y/99O0hIdh5o8EXqmgqyhY3MaT1xWZgS5iuD7pys6v+9JrJOzECb07+6gxRahDsyw==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + +snapshots: + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.4 + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@bufbuild/protobuf@2.11.0': {} + + '@ctrl/tinycolor@4.2.0': {} + + '@element-plus/icons-vue@2.3.2(vue@3.5.30)': + dependencies: + vue: 3.5.30 + + '@emnapi/core@1.9.0': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.6': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/utils@0.2.11': {} + + '@iconify/json@2.2.449': + dependencies: + '@iconify/types': 2.0.0 + pathe: 2.0.3 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.1 + + '@iconify/vue@5.0.0(vue@3.5.30)': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.30 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@module-federation/error-codes@0.22.0': {} + + '@module-federation/runtime-core@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/runtime-tools@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/webpack-bundler-runtime': 0.22.0 + + '@module-federation/runtime@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/runtime-core': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/sdk@0.22.0': {} + + '@module-federation/webpack-bundler-runtime@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@napi-rs/wasm-runtime@1.0.7': + dependencies: + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@oxfmt/binding-android-arm-eabi@0.40.0': + optional: true + + '@oxfmt/binding-android-arm64@0.40.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.40.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.40.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.40.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.40.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.40.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.40.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.40.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.40.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.40.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.40.0': + optional: true + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.3 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + + '@rsbuild/core@1.7.3': + dependencies: + '@rspack/core': 1.7.8(@swc/helpers@0.5.19) + '@rspack/lite-tapable': 1.1.0 + '@swc/helpers': 0.5.19 + core-js: 3.47.0 + jiti: 2.6.1 + + '@rsbuild/plugin-babel@1.1.2(@rsbuild/core@1.7.3)': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@types/babel__core': 7.20.5 + reduce-configs: 1.1.1 + optionalDependencies: + '@rsbuild/core': 1.7.3 + transitivePeerDependencies: + - supports-color + + '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@1.7.3)': + dependencies: + acorn: 8.16.0 + browserslist-to-es-version: 1.4.1 + htmlparser2: 10.0.0 + picocolors: 1.1.1 + source-map: 0.7.6 + optionalDependencies: + '@rsbuild/core': 1.7.3 + + '@rsbuild/plugin-sass@1.5.1(@rsbuild/core@1.7.3)': + dependencies: + deepmerge: 4.3.1 + loader-utils: 2.0.4 + postcss: 8.5.8 + reduce-configs: 1.1.1 + sass-embedded: 1.98.0 + optionalDependencies: + '@rsbuild/core': 1.7.3 + + '@rsbuild/plugin-vue-jsx@1.1.2(@babel/core@7.29.0)(@rsbuild/core@1.7.3)': + dependencies: + '@rsbuild/plugin-babel': 1.1.2(@rsbuild/core@1.7.3) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) + babel-plugin-vue-jsx-hmr: 1.0.0 + optionalDependencies: + '@rsbuild/core': 1.7.3 + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@rsbuild/plugin-vue@1.2.7(@rsbuild/core@1.7.3)(@rspack/core@1.7.8(@swc/helpers@0.5.19))(@vue/compiler-sfc@3.5.30)(vue@3.5.30)': + dependencies: + rspack-vue-loader: 17.5.0(@rspack/core@1.7.8(@swc/helpers@0.5.19))(@vue/compiler-sfc@3.5.30)(vue@3.5.30) + optionalDependencies: + '@rsbuild/core': 1.7.3 + transitivePeerDependencies: + - '@rspack/core' + - '@vue/compiler-sfc' + - vue + + '@rspack/binding-darwin-arm64@1.7.8': + optional: true + + '@rspack/binding-darwin-x64@1.7.8': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.7.8': + optional: true + + '@rspack/binding-linux-arm64-musl@1.7.8': + optional: true + + '@rspack/binding-linux-x64-gnu@1.7.8': + optional: true + + '@rspack/binding-linux-x64-musl@1.7.8': + optional: true + + '@rspack/binding-wasm32-wasi@1.7.8': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + + '@rspack/binding-win32-arm64-msvc@1.7.8': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.7.8': + optional: true + + '@rspack/binding-win32-x64-msvc@1.7.8': + optional: true + + '@rspack/binding@1.7.8': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.7.8 + '@rspack/binding-darwin-x64': 1.7.8 + '@rspack/binding-linux-arm64-gnu': 1.7.8 + '@rspack/binding-linux-arm64-musl': 1.7.8 + '@rspack/binding-linux-x64-gnu': 1.7.8 + '@rspack/binding-linux-x64-musl': 1.7.8 + '@rspack/binding-wasm32-wasi': 1.7.8 + '@rspack/binding-win32-arm64-msvc': 1.7.8 + '@rspack/binding-win32-ia32-msvc': 1.7.8 + '@rspack/binding-win32-x64-msvc': 1.7.8 + + '@rspack/core@1.7.8(@swc/helpers@0.5.19)': + dependencies: + '@module-federation/runtime-tools': 0.22.0 + '@rspack/binding': 1.7.8 + '@rspack/lite-tapable': 1.1.0 + optionalDependencies: + '@swc/helpers': 0.5.19 + + '@rspack/lite-tapable@1.1.0': {} + + '@swc/helpers@0.5.19': + dependencies: + tslib: 2.8.1 + + '@sxzz/popperjs-es@2.11.8': {} + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/estree@1.0.8': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.24 + + '@types/lodash@4.17.24': {} + + '@types/web-bluetooth@0.0.20': {} + + '@vue-macros/common@3.1.2(vue@3.5.30)': + dependencies: + '@vue/compiler-sfc': 3.5.30 + ast-kit: 2.2.0 + local-pkg: 1.1.2 + magic-string-ast: 1.0.3 + unplugin-utils: 0.3.1 + optionalDependencies: + vue: 3.5.30 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.0)': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.0) + '@vue/shared': 3.5.30 + optionalDependencies: + '@babel/core': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.0)': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.29.0 + '@vue/compiler-sfc': 3.5.30 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.30': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.30 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.30': + dependencies: + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 + + '@vue/compiler-sfc@3.5.30': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.30 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.8 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.30': + dependencies: + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 + + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + + '@vue/devtools-api@8.1.0': + dependencies: + '@vue/devtools-kit': 8.1.0 + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-kit@8.1.0': + dependencies: + '@vue/devtools-shared': 8.1.0 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/devtools-shared@8.1.0': {} + + '@vue/reactivity@3.5.30': + dependencies: + '@vue/shared': 3.5.30 + + '@vue/runtime-core@3.5.30': + dependencies: + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 + + '@vue/runtime-dom@3.5.30': + dependencies: + '@vue/reactivity': 3.5.30 + '@vue/runtime-core': 3.5.30 + '@vue/shared': 3.5.30 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.30(vue@3.5.30)': + dependencies: + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + vue: 3.5.30 + + '@vue/shared@3.5.30': {} + + '@vueuse/core@12.0.0': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 12.0.0 + '@vueuse/shared': 12.0.0 + vue: 3.5.30 + transitivePeerDependencies: + - typescript + + '@vueuse/metadata@12.0.0': {} + + '@vueuse/shared@12.0.0': + dependencies: + vue: 3.5.30 + transitivePeerDependencies: + - typescript + + '@vxe-ui/core@4.4.3(vue@3.5.30)': + dependencies: + dom-zindex: 1.0.6 + vue: 3.5.30 + xe-utils: 4.0.4 + + acorn@8.16.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.29.0 + pathe: 2.0.3 + + ast-walker-scope@0.8.3: + dependencies: + '@babel/parser': 7.29.0 + ast-kit: 2.2.0 + + async-validator@4.2.5: {} + + asynckit@0.4.0: {} + + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-plugin-vue-jsx-hmr@1.0.0: + dependencies: + '@babel/core': 7.29.0 + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + baseline-browser-mapping@2.10.8: {} + + big.js@5.2.2: {} + + birpc@2.9.0: {} + + browserslist-to-es-version@1.4.1: + dependencies: + browserslist: 4.28.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.10.8 + caniuse-lite: 1.0.30001778 + electron-to-chromium: 1.5.313 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + caniuse-lite@1.0.30001778: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + optional: true + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorjs.io@0.5.2: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + convert-source-map@2.0.0: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + core-js@3.47.0: {} + + csstype@3.2.3: {} + + dayjs@1.11.20: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deepmerge@4.3.1: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: + optional: true + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom-zindex@1.0.6: {} + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.313: {} + + element-plus@2.13.5(vue@3.5.30): + dependencies: + '@ctrl/tinycolor': 4.2.0 + '@element-plus/icons-vue': 2.3.2(vue@3.5.30) + '@floating-ui/dom': 1.7.6 + '@popperjs/core': '@sxzz/popperjs-es@2.11.8' + '@types/lodash': 4.17.24 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 12.0.0 + async-validator: 4.2.5 + dayjs: 1.11.20 + lodash: 4.17.23 + lodash-es: 4.17.23 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.23)(lodash@4.17.23) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.30 + transitivePeerDependencies: + - typescript + + emojis-list@3.0.0: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + escalade@3.2.0: {} + + escape-string-regexp@5.0.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + exsolve@1.0.8: {} + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + follow-redirects@1.15.11: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + gopd@1.2.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + + immutable@5.1.5: {} + + is-extglob@2.1.1: + optional: true + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + optional: true + + is-what@5.5.0: {} + + jiti@2.6.1: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.1 + pkg-types: 2.3.0 + quansync: 0.2.11 + + lodash-es@4.17.23: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.23)(lodash@4.17.23): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.23 + lodash-es: 4.17.23 + + lodash@4.17.23: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.21 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + memoize-one@6.0.0: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mitt@3.0.1: {} + + mlly@1.8.1: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + node-addon-api@7.1.1: + optional: true + + node-releases@2.0.36: {} + + normalize-wheel-es@1.2.0: {} + + nprogress@0.2.0: {} + + obug@2.1.1: {} + + oxfmt@0.40.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.40.0 + '@oxfmt/binding-android-arm64': 0.40.0 + '@oxfmt/binding-darwin-arm64': 0.40.0 + '@oxfmt/binding-darwin-x64': 0.40.0 + '@oxfmt/binding-freebsd-x64': 0.40.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.40.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.40.0 + '@oxfmt/binding-linux-arm64-gnu': 0.40.0 + '@oxfmt/binding-linux-arm64-musl': 0.40.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.40.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.40.0 + '@oxfmt/binding-linux-riscv64-musl': 0.40.0 + '@oxfmt/binding-linux-s390x-gnu': 0.40.0 + '@oxfmt/binding-linux-x64-gnu': 0.40.0 + '@oxfmt/binding-linux-x64-musl': 0.40.0 + '@oxfmt/binding-openharmony-arm64': 0.40.0 + '@oxfmt/binding-win32-arm64-msvc': 0.40.0 + '@oxfmt/binding-win32-ia32-msvc': 0.40.0 + '@oxfmt/binding-win32-x64-msvc': 0.40.0 + + package-manager-detector@1.6.0: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + pinia-plugin-persistedstate@4.7.1(pinia@3.0.4(vue@3.5.30)): + dependencies: + defu: 6.1.4 + optionalDependencies: + pinia: 3.0.4(vue@3.5.30) + + pinia@3.0.4(vue@3.5.30): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.30 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.1 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + proxy-from-env@1.1.0: {} + + quansync@0.2.11: {} + + readdirp@4.1.2: + optional: true + + readdirp@5.0.0: {} + + reduce-configs@1.1.1: {} + + resize-observer-polyfill@1.5.1: {} + + rfdc@1.4.1: {} + + rspack-vue-loader@17.5.0(@rspack/core@1.7.8(@swc/helpers@0.5.19))(@vue/compiler-sfc@3.5.30)(vue@3.5.30): + dependencies: + '@rspack/lite-tapable': 1.1.0 + chalk: 4.1.2 + optionalDependencies: + '@rspack/core': 1.7.8(@swc/helpers@0.5.19) + '@vue/compiler-sfc': 3.5.30 + vue: 3.5.30 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + sass-embedded-all-unknown@1.98.0: + dependencies: + sass: 1.98.0 + optional: true + + sass-embedded-android-arm64@1.98.0: + optional: true + + sass-embedded-android-arm@1.98.0: + optional: true + + sass-embedded-android-riscv64@1.98.0: + optional: true + + sass-embedded-android-x64@1.98.0: + optional: true + + sass-embedded-darwin-arm64@1.98.0: + optional: true + + sass-embedded-darwin-x64@1.98.0: + optional: true + + sass-embedded-linux-arm64@1.98.0: + optional: true + + sass-embedded-linux-arm@1.98.0: + optional: true + + sass-embedded-linux-musl-arm64@1.98.0: + optional: true + + sass-embedded-linux-musl-arm@1.98.0: + optional: true + + sass-embedded-linux-musl-riscv64@1.98.0: + optional: true + + sass-embedded-linux-musl-x64@1.98.0: + optional: true + + sass-embedded-linux-riscv64@1.98.0: + optional: true + + sass-embedded-linux-x64@1.98.0: + optional: true + + sass-embedded-unknown-all@1.98.0: + dependencies: + sass: 1.98.0 + optional: true + + sass-embedded-win32-arm64@1.98.0: + optional: true + + sass-embedded-win32-x64@1.98.0: + optional: true + + sass-embedded@1.98.0: + dependencies: + '@bufbuild/protobuf': 2.11.0 + colorjs.io: 0.5.2 + immutable: 5.1.5 + rxjs: 7.8.2 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-all-unknown: 1.98.0 + sass-embedded-android-arm: 1.98.0 + sass-embedded-android-arm64: 1.98.0 + sass-embedded-android-riscv64: 1.98.0 + sass-embedded-android-x64: 1.98.0 + sass-embedded-darwin-arm64: 1.98.0 + sass-embedded-darwin-x64: 1.98.0 + sass-embedded-linux-arm: 1.98.0 + sass-embedded-linux-arm64: 1.98.0 + sass-embedded-linux-musl-arm: 1.98.0 + sass-embedded-linux-musl-arm64: 1.98.0 + sass-embedded-linux-musl-riscv64: 1.98.0 + sass-embedded-linux-musl-x64: 1.98.0 + sass-embedded-linux-riscv64: 1.98.0 + sass-embedded-linux-x64: 1.98.0 + sass-embedded-unknown-all: 1.98.0 + sass-embedded-win32-arm64: 1.98.0 + sass-embedded-win32-x64: 1.98.0 + + sass@1.98.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + optional: true + + scule@1.3.0: {} + + semver@6.3.1: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + speakingurl@14.0.1: {} + + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + sync-child-process@1.0.2: + dependencies: + sync-message-port: 1.2.0 + + sync-message-port@1.2.0: {} + + tinyexec@1.0.4: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tinypool@2.1.0: {} + + tslib@2.8.1: {} + + ufo@1.6.3: {} + + unimport@5.7.0: + dependencies: + acorn: 8.16.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.1 + pathe: 2.0.3 + picomatch: 4.0.3 + pkg-types: 2.3.0 + scule: 1.3.0 + strip-literal: 3.1.0 + tinyglobby: 0.2.15 + unplugin: 2.3.11 + unplugin-utils: 0.3.1 + + unplugin-auto-import@21.0.0(@vueuse/core@12.0.0): + dependencies: + local-pkg: 1.1.2 + magic-string: 0.30.21 + picomatch: 4.0.3 + unimport: 5.7.0 + unplugin: 2.3.11 + unplugin-utils: 0.3.1 + optionalDependencies: + '@vueuse/core': 12.0.0 + + unplugin-icons@23.0.1(@vue/compiler-sfc@3.5.30): + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/utils': 3.1.0 + local-pkg: 1.1.2 + obug: 2.1.1 + unplugin: 2.3.11 + optionalDependencies: + '@vue/compiler-sfc': 3.5.30 + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin-vue-components@31.0.0(vue@3.5.30): + dependencies: + chokidar: 5.0.0 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.1 + obug: 2.1.1 + picomatch: 4.0.3 + tinyglobby: 0.2.15 + unplugin: 2.3.11 + unplugin-utils: 0.3.1 + vue: 3.5.30 + + unplugin@2.3.11: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.16.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + unplugin@3.0.0: + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uuid@13.0.0: {} + + varint@6.0.0: {} + + vue-router@5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(vue@3.5.30))(vue@3.5.30): + dependencies: + '@babel/generator': 7.29.1 + '@vue-macros/common': 3.1.2(vue@3.5.30) + '@vue/devtools-api': 8.1.0 + ast-walker-scope: 0.8.3 + chokidar: 5.0.0 + json5: 2.2.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.1 + muggle-string: 0.4.1 + pathe: 2.0.3 + picomatch: 4.0.3 + scule: 1.3.0 + tinyglobby: 0.2.15 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + vue: 3.5.30 + yaml: 2.8.2 + optionalDependencies: + '@vue/compiler-sfc': 3.5.30 + pinia: 3.0.4(vue@3.5.30) + + vue3-puzzle-vcode@1.1.7: {} + + vue@3.5.30: + dependencies: + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-sfc': 3.5.30 + '@vue/runtime-dom': 3.5.30 + '@vue/server-renderer': 3.5.30(vue@3.5.30) + '@vue/shared': 3.5.30 + + vxe-pc-ui@4.13.0(vue@3.5.30): + dependencies: + '@vxe-ui/core': 4.4.3(vue@3.5.30) + transitivePeerDependencies: + - vue + + vxe-table@4.17.49(vue@3.5.30): + dependencies: + vxe-pc-ui: 4.13.0(vue@3.5.30) + transitivePeerDependencies: + - vue + + webpack-virtual-modules@0.6.2: {} + + xe-utils@3.9.1: {} + + xe-utils@4.0.4: {} + + yallist@3.1.1: {} + + yaml@2.8.2: {} diff --git a/code/container-ocr/ocr-vue/public/logo.png b/code/container-ocr/ocr-vue/public/logo.png new file mode 100644 index 00000000..cc94de6c Binary files /dev/null and b/code/container-ocr/ocr-vue/public/logo.png differ diff --git a/code/container-ocr/ocr-vue/rsbuild.config.js b/code/container-ocr/ocr-vue/rsbuild.config.js new file mode 100644 index 00000000..699b8b8f --- /dev/null +++ b/code/container-ocr/ocr-vue/rsbuild.config.js @@ -0,0 +1,73 @@ +// @ts-check +import { defineConfig } from "@rsbuild/core"; +import { pluginVue } from "@rsbuild/plugin-vue"; +import { pluginSass } from "@rsbuild/plugin-sass"; + +import AutoImport from "unplugin-auto-import/rspack"; +import Components from "unplugin-vue-components/rspack"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import { pluginCheckSyntax } from "@rsbuild/plugin-check-syntax"; +import { pluginBabel } from "@rsbuild/plugin-babel"; +import { pluginVueJsx } from "@rsbuild/plugin-vue-jsx"; + +import IconsResolver from "unplugin-icons/resolver"; +import Icons from "unplugin-icons/rspack"; + +export default defineConfig({ + plugins: [ + pluginBabel({ + include: /\.[jt]sx?$/, + }), + pluginVue(), + pluginVueJsx(), + pluginSass(), + pluginCheckSyntax({ + ecmaVersion: 2015, + }), + ], + tools: { + rspack: { + plugins: [ + Icons({ + compiler: "vue3", + autoInstall: true, + }), + + AutoImport({ + imports: ["vue", "vue-router"], + resolvers: [ElementPlusResolver()], + }), + + Components({ + dirs: ['src/components'], + dts: true, + deep: true, + resolvers: [ElementPlusResolver(), IconsResolver()], + }), + ], + }, + }, + source: { + include: [{ not: /[\\/]core-js[\\/]/ }], + entry: { + index: "./src/main.js", + }, + tsconfigPath: "./jsconfig.json", + }, + output: { + polyfill: "usage", + }, + html: { + template: "./index.html", + mountId: "app", + meta: { + viewport: false, + }, + favicon: "./public/logo.png", + title: process.env.PUBLIC_APP_NAME, + }, + server: { + base: process.env.PUBLIC_SERVER_PATH || "/", + port: Number(process.env.PUBLIC_SERVER_PORT) || 3000, + }, +}); diff --git a/code/container-ocr/ocr-vue/src/App.vue b/code/container-ocr/ocr-vue/src/App.vue new file mode 100644 index 00000000..e524e087 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/App.vue @@ -0,0 +1,7 @@ + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/assets/login-bg.jpg b/code/container-ocr/ocr-vue/src/assets/login-bg.jpg new file mode 100644 index 00000000..8b330d2e Binary files /dev/null and b/code/container-ocr/ocr-vue/src/assets/login-bg.jpg differ diff --git a/code/container-ocr/ocr-vue/src/assets/logo.png b/code/container-ocr/ocr-vue/src/assets/logo.png new file mode 100644 index 00000000..cc94de6c Binary files /dev/null and b/code/container-ocr/ocr-vue/src/assets/logo.png differ diff --git a/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-group.vue b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-group.vue new file mode 100644 index 00000000..8e1ef318 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-group.vue @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-item.vue b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-item.vue new file mode 100644 index 00000000..fb729c3e --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid-item.vue @@ -0,0 +1,223 @@ + + + + + + + + + {{ label }} + + + + + + + + {{ content }} + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid.vue b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid.vue new file mode 100644 index 00000000..99a8c4cc --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-grid/g3-grid.vue @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-icon/index.vue b/code/container-ocr/ocr-vue/src/components/g3-icon/index.vue new file mode 100644 index 00000000..7e089b2c --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-icon/index.vue @@ -0,0 +1,72 @@ + + + + emit('click', e)" + > + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-select/index.vue b/code/container-ocr/ocr-vue/src/components/g3-select/index.vue new file mode 100644 index 00000000..ffb120cf --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-select/index.vue @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + + + + 暂无数据 + + + + + {{ item[labelKey] }} + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-table/G3EditTable.vue b/code/container-ocr/ocr-vue/src/components/g3-table/G3EditTable.vue new file mode 100644 index 00000000..626a40ab --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-table/G3EditTable.vue @@ -0,0 +1,7 @@ + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-table/G3RecursiveColumn.vue b/code/container-ocr/ocr-vue/src/components/g3-table/G3RecursiveColumn.vue new file mode 100644 index 00000000..7d654438 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-table/G3RecursiveColumn.vue @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-table/g3-column.vue b/code/container-ocr/ocr-vue/src/components/g3-table/g3-column.vue new file mode 100644 index 00000000..34f98649 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-table/g3-column.vue @@ -0,0 +1,20 @@ + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/components/g3-table/g3-table-view.vue b/code/container-ocr/ocr-vue/src/components/g3-table/g3-table-view.vue new file mode 100644 index 00000000..eea43958 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/components/g3-table/g3-table-view.vue @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/components/content.vue b/code/container-ocr/ocr-vue/src/layout/components/content.vue new file mode 100644 index 00000000..a36dbfa7 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/components/content.vue @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/components/menu-item.vue b/code/container-ocr/ocr-vue/src/layout/components/menu-item.vue new file mode 100644 index 00000000..44996b8c --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/components/menu-item.vue @@ -0,0 +1,50 @@ + + + + + + + {{ item.label }} + + + + + + + + + + {{ item.label }} + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/components/menu.vue b/code/container-ocr/ocr-vue/src/layout/components/menu.vue new file mode 100644 index 00000000..d20b4a54 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/components/menu.vue @@ -0,0 +1,162 @@ + + + + + + + + {{ title }} + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/components/tab.vue b/code/container-ocr/ocr-vue/src/layout/components/tab.vue new file mode 100644 index 00000000..a61e9016 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/components/tab.vue @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 关闭 + + + 关闭其他 + + + 关闭左侧 + + + 关闭右侧 + + 关闭所有 + + + + {{ item.title }} + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/components/topbar.vue b/code/container-ocr/ocr-vue/src/layout/components/topbar.vue new file mode 100644 index 00000000..ce9242b9 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/components/topbar.vue @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + 001 + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/layout/index.vue b/code/container-ocr/ocr-vue/src/layout/index.vue new file mode 100644 index 00000000..04701f43 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/layout/index.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/main.js b/code/container-ocr/ocr-vue/src/main.js new file mode 100644 index 00000000..b14e1621 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/main.js @@ -0,0 +1,53 @@ +import { createApp } from "vue"; +import App from "./App.vue"; +import { createPinia } from "pinia"; +import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; +import router from "@/router/index"; +import ResizeObserver from "resize-observer-polyfill"; + +import { SetupPlugins } from "./plugins"; + +import "element-plus/dist/index.css"; + +import VxeUIBase from "vxe-pc-ui"; +import "vxe-pc-ui/es/style.css"; + +import VxeUITable from "vxe-table"; +import "vxe-table/es/style.css"; + +import "./style.css"; + +// ElementPlus 兼容低版本浏览器 +window.ResizeObserver = ResizeObserver; + +VxeUITable.setConfig({ + table: { + stripe: true, + border: "full", + cellConfig: { + height: 28, + }, + headerCellConfig: { + height: 32, + }, + footerCellConfig: { + height: 32, + }, + }, +}); + +// pinia +const pinia = createPinia(); +pinia.use(piniaPluginPersistedstate); + +SetupPlugins(); + +// 创建 Vue 应用 +const app = createApp(App); + +app.use(pinia); +app.use(router); +app.use(VxeUIBase); +app.use(VxeUITable); + +app.mount("#app"); diff --git a/code/container-ocr/ocr-vue/src/plugins/icon.js b/code/container-ocr/ocr-vue/src/plugins/icon.js new file mode 100644 index 00000000..784883fa --- /dev/null +++ b/code/container-ocr/ocr-vue/src/plugins/icon.js @@ -0,0 +1,12 @@ +/** + * 用到的图标集在这里添加,可以离线使用 + */ + +import { addCollection } from "@iconify/vue"; +import Lucide from "@iconify/json/json/lucide.json"; +import ElementPlus from "@iconify/json/json/ep.json"; + +export function SetupIcons() { + addCollection(Lucide); + addCollection(ElementPlus); +} diff --git a/code/container-ocr/ocr-vue/src/plugins/index.js b/code/container-ocr/ocr-vue/src/plugins/index.js new file mode 100644 index 00000000..e63e3a41 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/plugins/index.js @@ -0,0 +1,5 @@ +import { SetupIcons } from "./icon"; + +export function SetupPlugins() { + SetupIcons(); +} diff --git a/code/container-ocr/ocr-vue/src/request/api.js b/code/container-ocr/ocr-vue/src/request/api.js new file mode 100644 index 00000000..25ea1294 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/request/api.js @@ -0,0 +1,100 @@ +import { httpPost } from "."; + +// 登录 +export function loginApi(orgid, userid, password) { + return httpPost(`/auth/login`, { + orgid, + userid, + password, + }); +} + +// ============================= data ============================= +export function loadDataApi(viewName, searchCondition = "", orderField = "", searchColumns = []) { + return httpPost("/data/loadData", { + viewName, + searchCondition, + orderField, + searchColumns, + }); +} + +export function loadDataBySqlApi(sql) { + return httpPost("/data/loadDataBySql", { + sql, + }); +} + +/** + * 分页加载表格数据 + * @param {Object} params 参数对象 + * @param {number} params.page 当前页 + * @param {number} params.size 每页条数 + * @param {string} params.viewName 视图名称 + * @param {string} [params.searchCondition] 搜索条件 + * @param {string} [params.orderField] 排序字段 + * @param {string[]} [params.searchColumns] 搜索列 + * @returns {Promise<{ + * success: boolean, + * data: { + * rows: Array>, + * total: number, + * page: number, + * size: number + * }, + * code: number, + * message: string + * }>} 返回 Promise 对象 + */ +export function loadPageDataApi( + { page, size, viewName, searchCondition = "", orderField = "", searchColumns = [] }, + config = {}, +) { + return httpPost( + "/data/page", + { + page, + size, + viewName, + searchCondition, + orderField, + searchColumns, + }, + config, + ); +} + +export function saveObjectApi(data) { + return httpPost("/data/saveObject", data); +} + +export function saveObjectKeysApi(data) { + return httpPost("/data/saveObjectKeys", data); +} +// ============================= data ============================= + +// ============================= column ============================= +export function loadViewColumnsApi(viewName) { + return httpPost("/column/view", { + viewName, + }); +} + +export function loadEditColumnsApi(viewName) { + return httpPost("/column/edit", { + viewName, + }); +} + +export function loadAllColumnsApi(viewName) { + return httpPost("/column/all", { + viewName, + }); +} + +export function checkColumnsApi(viewName) { + return httpPost("/column/check", { + viewName, + }); +} +// ============================= column ============================= diff --git a/code/container-ocr/ocr-vue/src/request/index.js b/code/container-ocr/ocr-vue/src/request/index.js new file mode 100644 index 00000000..698ff019 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/request/index.js @@ -0,0 +1,116 @@ +import axios from "axios"; +import { ElMessage } from "element-plus"; +import { useUserStore } from "@/store/user"; +import router from "@/router"; + +let hasShown401 = false; + +const axiosInstance = axios.create({ + // baseURL: "http://127.0.0.1:8084/api", + baseURL: process.env.PUBLIC_API_BASE_URL, + timeout: 30000, +}); + +axiosInstance.interceptors.request.use( + (config) => { + const userStore = useUserStore(); + const token = userStore.userInfo.token; + + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + + return config; + }, + (error) => Promise.reject(error), +); + +axiosInstance.interceptors.response.use( + (response) => { + const resData = response.data; + + resData.success = resData.code === 200; + + if (resData.code === 401) { + if (!hasShown401) { + hasShown401 = true; + const userStore = useUserStore(); + ElMessage.warning("登录已过期,请重新登录"); + userStore.resetUserInfo(); + router.replace("/login"); + } + } else if (resData.code === 500) { + // 系统异常 + ElMessage.error(resData.message || "系统异常,请稍后再试"); + } else if (resData.code === 1000) { + // 业务异常 + ElMessage.error(resData.message || "业务异常,请稍后再试"); + } + + return response; + }, + (error) => { + let message = "请求失败"; + + if (error.code === "ECONNABORTED") { + message = "请求超时,请稍后重试"; + } else if (error.message === "Network Error") { + message = "网络异常,请检查网络连接"; + } else if (error.response) { + const status = error.response.status; + + switch (status) { + case 400: + message = "请求参数错误"; + break; + case 404: + message = "请求接口不存在"; + break; + case 500: + message = "服务器异常"; + break; + default: + message = error.response.data?.msg || `请求失败 (${status})`; + } + } + + // ElMessage.error(message); + + return Promise.reject(error); + }, +); + +/** + * 通用 API 响应类型 + * @template T + * @typedef {Object} ApiResponse + * @property {boolean} success - 请求是否成功 + * @property {number} code - 状态码 + * @property {string} message - 消息 + * @property {T} data - 数据 + */ + +/** + * 通用 HTTP POST 请求 + * @template T + * @param {string} url + * @param {any} data + * @param {any} config + * @returns {Promise>} + */ +export function httpPost(url, data, config) { + return axiosInstance + .post(url, data, { + headers: { + "Content-Type": "application/json", + }, + ...config, + }) + .then((res) => res.data); +} + +export function reset401Flag() { + hasShown401 = false; +} + +export default axiosInstance; diff --git a/code/container-ocr/ocr-vue/src/router/index.js b/code/container-ocr/ocr-vue/src/router/index.js new file mode 100644 index 00000000..e11e118a --- /dev/null +++ b/code/container-ocr/ocr-vue/src/router/index.js @@ -0,0 +1,64 @@ +import { createRouter, createWebHistory } from "vue-router"; +import { routes } from "./routes"; +import { useUserStore } from "@/store/user"; +import { ElMessage } from "element-plus"; +import { useTabStore } from "@/store/tab"; +import NProgress from "nprogress"; + +NProgress.configure({ easing: "ease", speed: 500 }); + +const router = createRouter({ + history: createWebHistory(import.meta.env.PUBLIC_SERVER_PATH || "/"), + routes, +}); + +router.beforeEach((to) => { + NProgress?.start?.(); + + const userStore = useUserStore(); + + // if (!userStore.isLogined() && to.path !== "/login") { + // ElMessage.warning("登录已过期,请先登录"); + // return "/login"; + // } + + handleTabPath(to); + + return; +}); + +router.afterEach(() => { + NProgress?.done?.(); +}); + +function handleTabPath(to) { + const path = to.path; + + if (path === "/login") { + return; + } + + const meta = to.meta; + const query = to.query; + + // 处理标签页 + if (meta.title) { + let displayTitle = meta.title; + if (query.id) { + displayTitle = `${meta.title} ${query.id}`; + } + + const tabStore = useTabStore(); + + tabStore.addTab({ + path: path, + fullPath: to.fullPath, + title: displayTitle, + params: to.params, + meta: to.meta, + query: to.query, + }); + } +} + +export default router; diff --git a/code/container-ocr/ocr-vue/src/router/routes.js b/code/container-ocr/ocr-vue/src/router/routes.js new file mode 100644 index 00000000..3635fd97 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/router/routes.js @@ -0,0 +1,40 @@ +import BaseLayout from "@/layout/index.vue"; + +export const routes = [ + { + path: "/", + component: BaseLayout, + children: [ + { + path: "/", + component: () => import("@/views/index.vue"), + meta: { + title: "首页", + keepAlive: true, + }, + }, + // ==================== 业务管理 ==================== + { + path: "/business", + component: () => import("@/views/business/index.vue"), + meta: { + title: "海运业务", + keepAlive: true, + }, + }, + // ==================== 系统管理 ==================== + { + path: "/system/field", + component: () => import("@/views/system/field/index.vue"), + meta: { + title: "字段配置", + keepAlive: true, + }, + }, + ], + }, + { + path: "/login", + component: () => import("@/views/auth/login.vue"), + }, +]; diff --git a/code/container-ocr/ocr-vue/src/sql/create.sql b/code/container-ocr/ocr-vue/src/sql/create.sql new file mode 100644 index 00000000..e8c61cf1 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/sql/create.sql @@ -0,0 +1,215 @@ +CREATE TABLE s_columnlib2 ( + -- 主键,自增 + b_id INT IDENTITY(1,1) PRIMARY KEY, + + -- 基本标识 + col_table_name VARCHAR(50) NOT NULL, -- 表名 + col_field_name VARCHAR(50) NOT NULL, -- 字段名 + col_field_name_v VARCHAR(50), -- 字段别名/显示名 + col_caption VARCHAR(50), -- 字段描述 + + -- 展示相关 + col_visible CHAR(1) DEFAULT '1', -- 是否可见 + col_width INT, -- 宽度 + col_position INT, -- 显示位置 + col_group_index INT, -- 分组编号 + col_color VARCHAR(50), -- 颜色 + col_display_format VARCHAR(50), -- 显示格式 + col_show_summary CHAR(1) DEFAULT '0', -- 是否统计汇总 + + -- 校验 / 默认 + col_allow_null CHAR(1) DEFAULT '1', -- 是否允许空值 + col_allow_repeat CHAR(1) DEFAULT '1', -- 是否允许重复 + col_allow_readonly CHAR(1) DEFAULT '0', -- 是否只读 + col_allow_reserve CHAR(1) DEFAULT '0', -- 是否保留字段 + col_default_value TEXT, -- 默认值 + + -- 查询相关 + col_search CHAR(1) DEFAULT '0', -- 是否可搜索 + col_search_order INT, -- 搜索顺序 + col_search_group_index INT, -- 搜索分组编号 + + -- 类型定义 + col_type VARCHAR(50), -- 字段类型 + col_show_property CHAR(1) DEFAULT '0', -- 显示属性 + + -- 编辑相关 + col_edit CHAR(1) DEFAULT '0', -- 是否可编辑 + col_edit_position INT, -- 编辑位置 + col_edit_width INT, -- 编辑宽度 + col_edit_height INT, -- 编辑高度 + col_edit_group_index INT, -- 编辑分组编号 + col_edit_batch CHAR(1) DEFAULT '0', -- 是否批量编辑 + col_edit_source_data VARCHAR(50), -- 编辑数据源表 + col_edit_source_field VARCHAR(50), -- 编辑数据源字段 + + -- 唯一约束 + CONSTRAINT uk_tablename_fieldname UNIQUE (col_table_name, col_field_name) +); + +INSERT INTO s_columnlib ( + col_table_name, + col_field_name, + col_field_name_v, + col_caption, + col_width, + col_visible, + col_position, + col_show_summary, + col_group_index, + col_allow_null, + col_allow_repeat, + col_default_value, + col_allow_readonly, + col_color, + col_search, + col_search_order, + col_allow_reserve, + col_display_format, + col_search_group_index, + col_type, + col_show_property, + col_edit, + col_edit_position, + col_edit_width, + col_edit_height, + col_edit_group_index, + col_edit_batch, + col_edit_source_data, + col_edit_source_field +) +SELECT + col_TableName, + col_FieldName, + col_FieldName_v, + col_Caption, + TRY_CAST(col_Width AS INT) AS col_width, + col_Visible, + TRY_CAST(col_Position AS INT) AS col_position, + col_ShowSummary, + TRY_CAST(col_BandIndex AS INT) AS col_group_index, -- 分组编号 + col_AllowNull, + col_AllowRepeat, + col_DefaultValue, + col_ReadOnly, + col_Color, + col_CanSearch, -- 是否可搜索 + TRY_CAST(col_SearchOrder AS INT) AS col_search_order, -- 搜索顺序 + col_NeedReserve, -- 保留字段 + col_DisplayFormat, + TRY_CAST(col_SearchGroupIndex AS INT) AS col_search_group_index, + col_type, + col_edit_type, + col_ShowDetail, -- 显示属性 + col_edit, + TRY_CAST(col_edit_position AS INT) AS col_edit_position, + TRY_CAST(col_edit_width AS INT) AS col_edit_width, + TRY_CAST(col_edit_height AS INT) AS col_edit_height, + TRY_CAST(col_edit_grouping AS INT) AS col_edit_group_index, -- 编辑分组编号 + col_edit_batch, + col_edit_source_table, -- 编辑数据源表 + col_edit_source_field +FROM s_columnLib3 +WHERE + -- 只保留关键字段不为空的行,例如表名和字段名必须有值 + col_TableName IS NOT NULL AND col_FieldName IS NOT NULL; + + +CREATE PROCEDURE [dbo].[G3_CheckColumnSettings_New] + @viewname SYSNAME +AS +BEGIN + SET NOCOUNT ON; + + /* ========== 1. 取视图 / 表字段 ========== */ + DECLARE @Tmp TABLE (name SYSNAME); + + INSERT INTO @Tmp (name) + SELECT c.name + FROM sys.columns c + WHERE c.object_id = OBJECT_ID(@viewname); + + /* ========== 2. 删除不存在的字段配置 ========== */ + DELETE s + FROM s_columnLib s + WHERE s.col_table_name = @viewname + AND NOT EXISTS ( + SELECT 1 + FROM @Tmp t + WHERE t.name = s.col_field_name + ); + + /* ========== 3. 计算起始 position ========== */ + DECLARE @startPos INT; + SELECT @startPos = ISNULL(MAX(col_position), 0) + 10 + FROM s_columnLib + WHERE col_table_name = @viewname; + + /* ========== 4. 插入新增字段配置 ========== */ + INSERT INTO s_columnLib ( + col_table_name, + col_field_name, + col_field_name_v, + col_caption, + col_width, + col_visible, + col_position, + col_show_summary, + col_group_index, + col_allow_null, + col_allow_repeat, + col_allow_readonly, + col_allow_reserve, + col_default_value, + col_search, + col_search_order, + col_search_group_index, + col_type, + col_show_property, + col_edit, + col_edit_position, + col_edit_width, + col_edit_height, + col_edit_group_index, + col_edit_batch, + col_edit_source_data, + col_edit_source_field, + col_display_format + ) + SELECT + @viewname, + t.name, + '', -- col_field_name_v 默认空 + t.name, -- col_caption 默认用字段名 + 60, -- col_width 默认 60 + '1', -- col_visible 默认显示 + @startPos + ROW_NUMBER() OVER (ORDER BY t.name) * 10, + '0', -- col_show_summary 默认 0 + 0, -- col_group_index 默认 0 + '1', -- col_allow_null 默认允许 + '1', -- col_allow_repeat 默认允许 + '0', -- col_allow_readonly 默认不只读 + '0', -- col_allow_reserve 默认 0 + '', -- col_default_value 默认空 + '0', -- col_search 默认 0 + 0, -- col_search_index 默认 0 + 0, + '', -- col_type 默认空 + '0', -- col_show_property 默认 0 + '0', -- col_edit 默认 0 + 0, -- col_edit_position 默认 0 + 0, -- col_edit_width 默认 0 + 0, -- col_edit_height 默认 0 + 0, -- col_edit_group_index 默认 0 + '0', -- col_edit_batch 默认 0 + '', -- col_edit_source_data 默认空 + '', -- col_edit_source_field 默认空 + '' -- col_display_format 默认空 + FROM @Tmp t + WHERE NOT EXISTS ( + SELECT 1 + FROM s_columnLib s + WHERE s.col_table_name = @viewname + AND s.col_field_name = t.name + ); +END \ No newline at end of file diff --git a/code/container-ocr/ocr-vue/src/store/app.js b/code/container-ocr/ocr-vue/src/store/app.js new file mode 100644 index 00000000..e69de29b diff --git a/code/container-ocr/ocr-vue/src/store/tab.js b/code/container-ocr/ocr-vue/src/store/tab.js new file mode 100644 index 00000000..5c79972e --- /dev/null +++ b/code/container-ocr/ocr-vue/src/store/tab.js @@ -0,0 +1,74 @@ +import { defineStore } from "pinia"; +import { ref, computed } from "vue"; + +export const useTabStore = defineStore("tabs", () => { + const tabs = ref([{ title: "首页", path: "/", fullPath: "/" }]); + const activeTab = ref("/"); + const cachedKeys = ref(["/"]); + + const tabMap = computed(() => { + const map = new Map(); + tabs.value.forEach((t) => map.set(t.fullPath, t)); + return map; + }); + + const addTab = (tab) => { + const existing = tabMap.value.get(tab.fullPath); + if (existing) { + existing.title = tab.title; + } else { + tabs.value.push(tab); + if (tab.meta?.keepAlive && !cachedKeys.value.includes(tab.fullPath)) { + cachedKeys.value.push(tab.fullPath); + } + } + activeTab.value = tab.fullPath; + }; + + const setActiveTab = (fullPath) => { + if (tabMap.value.has(fullPath)) activeTab.value = fullPath; + }; + + const closeTab = (fullPath) => { + if (fullPath === "/") return activeTab.value; + + const index = tabs.value.findIndex((t) => t.fullPath === fullPath); + if (index === -1) return activeTab.value; + + tabs.value.splice(index, 1); + const cacheIndex = cachedKeys.value.indexOf(fullPath); + if (cacheIndex !== -1) cachedKeys.value.splice(cacheIndex, 1); + + if (activeTab.value === fullPath) { + const newIndex = Math.max(index - 1, 0); + activeTab.value = tabs.value[newIndex].fullPath; + } + + return activeTab.value; + }; + + const resetTabs = () => { + const homeTab = { title: "首页", path: "/", fullPath: "/" }; + tabs.value = [homeTab]; + activeTab.value = "/"; + cachedKeys.value = ["/"]; + }; + + const currentActiveTab = computed(() => tabMap.value.get(activeTab.value)); + + const findTabIndex = (fullPath) => { + return tabs.value.findIndex((t) => t.fullPath === fullPath); + }; + + return { + tabs, + activeTab, + cachedKeys, + addTab, + setActiveTab, + closeTab, + resetTabs, + currentActiveTab, + findTabIndex, + }; +}); diff --git a/code/container-ocr/ocr-vue/src/store/user.js b/code/container-ocr/ocr-vue/src/store/user.js new file mode 100644 index 00000000..e50f0a42 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/store/user.js @@ -0,0 +1,41 @@ +import { defineStore } from "pinia"; +import { useRoute } from "vue-router"; + +export const useUserStore = defineStore( + "userInfo", + () => { + const userInfo = ref({ + orgid: "", + userid: "", + username: "", + token: "", + }); + + function setUserInfo(orgid, userid, username, token) { + userInfo.value.orgid = orgid; + userInfo.value.userid = userid; + userInfo.value.token = token; + userInfo.value.username = username; + } + + function resetUserInfo() { + userInfo.value.token = ""; + } + + function isLogined() { + return !!userInfo.value.orgid && !!userInfo.value.userid && !!userInfo.value.token; + } + + return { + userInfo, + setUserInfo, + resetUserInfo, + isLogined, + }; + }, + { + persist: { + paths: ["userInfo"], + }, + }, +); diff --git a/code/container-ocr/ocr-vue/src/style.css b/code/container-ocr/ocr-vue/src/style.css new file mode 100644 index 00000000..22987d95 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/style.css @@ -0,0 +1,22 @@ +@import "./styles/nprogress.css"; +@import "./styles/element-plus.scss"; +@import "./styles/vxe-table.scss"; + +html, +body, +#app { + width: 100%; + height: 100%; +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; + outline: none; +} + +:root { + --border-color: #dcdfe6; + --border-color-hover: var(--el-color-primary); +} diff --git a/code/container-ocr/ocr-vue/src/styles/element-plus.scss b/code/container-ocr/ocr-vue/src/styles/element-plus.scss new file mode 100644 index 00000000..ee17abc5 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/styles/element-plus.scss @@ -0,0 +1,25 @@ +:root { + --el-color-primary: #165dff; + + --el-component-size-small: 24px; + --el-component-size: 28px; + --el-component-size-large: 32px; + + --el-loading-spinner-size: 36px !important; +} + +.el-button { + height: 28px; + line-height: 0; +} + +.el-button--small { + height: 24px; +} +.el-button--large { + height: 32px; +} + +.el-button + .el-button { + margin-left: 0px ; +} diff --git a/code/container-ocr/ocr-vue/src/styles/mixins.scss b/code/container-ocr/ocr-vue/src/styles/mixins.scss new file mode 100644 index 00000000..5108ed17 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/styles/mixins.scss @@ -0,0 +1,56 @@ +@mixin flexGapRow($size) { + gap: $size; + & > * { + margin-right: $size; + } + & > *:last-child { + margin-right: 0; + } +} + +@mixin flexGapColumn($size) { + gap: $size; + & > * { + margin-bottom: $size; + } + & > *:last-child { + margin-bottom: 0; + } +} + +/** + * 兼容低版本浏览器的 Flex Wrap 布局 Mixin + * 支持浏览器:自动检测 gap 支持,不支持时回退到负边距方案 + * @param {number} $row-gap - 行间距 + * @param {number} $column-gap - 列间距 + * @param {string} $direction: row - 布局方向 (row|column) + */ +@mixin flexGapWrap($row-gap, $column-gap, $direction: row) { + display: flex; + flex-wrap: wrap; + flex-direction: $direction; + + // 现代浏览器:直接使用 gap + @supports (gap: 1px) { + gap: $row-gap $column-gap; + } + + // 低版本浏览器回退方案 + @supports not (gap: 1px) { + @if $direction == row { + // 横向布局:用负边距补偿 + margin: -$row-gap / 2 (-$column-gap / 2); + + & > * { + margin: $row-gap / 2 $column-gap / 2; + } + } @else { + // 纵向布局 + margin: (-$row-gap / 2) (-$column-gap / 2); + + & > * { + margin: $row-gap / 2 $column-gap / 2; + } + } + } +} diff --git a/code/container-ocr/ocr-vue/src/styles/nprogress.css b/code/container-ocr/ocr-vue/src/styles/nprogress.css new file mode 100644 index 00000000..80a9576e --- /dev/null +++ b/code/container-ocr/ocr-vue/src/styles/nprogress.css @@ -0,0 +1,80 @@ +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + position: fixed; + top: 0; + left: 0; + z-index: 1031; + + width: 100%; + height: 2px; + background: var(--el-color-primary); +} +/* Fancy blur effect */ +#nprogress .peg { + position: absolute; + right: 0px; + display: block; + width: 100px; + height: 100%; + box-shadow: + 0 0 10px var(--el-color-primary), + 0 0 5px var(--el-color-primary); + opacity: 1; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + position: fixed; + top: 15px; + right: 15px; + z-index: 1031; + display: block; +} + +#nprogress .spinner-icon { + box-sizing: border-box; + width: 18px; + height: 18px; + + border: solid 2px transparent; + border-top-color: var(--el-color-primary); + border-left-color: var(--el-color-primary); + border-radius: 50%; + + -webkit-animation: nprogress-spinner 300ms linear infinite; + animation: nprogress-spinner 300ms linear infinite; +} + +.nprogress-custom-parent { + position: relative; + overflow: hidden; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/code/container-ocr/ocr-vue/src/styles/vxe-table.scss b/code/container-ocr/ocr-vue/src/styles/vxe-table.scss new file mode 100644 index 00000000..035aed30 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/styles/vxe-table.scss @@ -0,0 +1,26 @@ +.vxe-table { + .el-checkbox { + height: 100%; + } + + .col--edit { + .vxe-cell { + padding: 1px !important; + .vxe-cell--wrapper { + height: 100%; + + .el-input, + .el-select { + height: 100%; + line-height: 100%; + + .el-input__wrapper, + .el-select__wrapper { + height: 100%; + border-radius: 0; + } + } + } + } + } +} diff --git a/code/container-ocr/ocr-vue/src/utils/diff.js b/code/container-ocr/ocr-vue/src/utils/diff.js new file mode 100644 index 00000000..8ac4c51e --- /dev/null +++ b/code/container-ocr/ocr-vue/src/utils/diff.js @@ -0,0 +1,35 @@ +/** + * 对比新旧对象,只返回变化字段,同时保留主键 + * @param {Object} newData 新对象 + * @param {Object} oldData 旧对象 + * @param {Array} primaryKeys 主键字段数组 + * @param {Array} excludeKeys 排除字段(可选) + * @returns {{ isChanged: boolean, result: Object }} 明确返回值结构 + */ +export function diffObject(newData, oldData, primaryKeys = [], excludeKeys = []) { + const result = {}; + let isChanged = false; + + // 先把主键字段放入结果 + for (const pk of primaryKeys) { + if (pk in newData) { + result[pk] = newData[pk]; + } + } + + for (const key of Object.keys(newData)) { + if (excludeKeys.includes(key)) continue; + if (key.startsWith("_") || key.startsWith("v_")) continue; // 可选:忽略 v_ 前缀字段 + + const newVal = newData[key]; + const oldVal = oldData[key]; + + // 只比较原始类型 + if (newVal !== oldVal) { + result[key] = newVal; + isChanged = true; + } + } + + return { isChanged, result }; +} diff --git a/code/container-ocr/ocr-vue/src/utils/emitter.js b/code/container-ocr/ocr-vue/src/utils/emitter.js new file mode 100644 index 00000000..cdadf921 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/utils/emitter.js @@ -0,0 +1,5 @@ +import mitt from "mitt"; + +const emitter = mitt(); + +export default emitter; diff --git a/code/container-ocr/ocr-vue/src/utils/throttle.js b/code/container-ocr/ocr-vue/src/utils/throttle.js new file mode 100644 index 00000000..7472d9ef --- /dev/null +++ b/code/container-ocr/ocr-vue/src/utils/throttle.js @@ -0,0 +1,5 @@ +import throttle from "lodash/throttle"; + +export function useThrottle(fn, delay = 150) { + return throttle(fn, delay); +} diff --git a/code/container-ocr/ocr-vue/src/utils/uuid.js b/code/container-ocr/ocr-vue/src/utils/uuid.js new file mode 100644 index 00000000..350e2976 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/utils/uuid.js @@ -0,0 +1,10 @@ +// utils/uuid.js +import { v4 as uuidv4 } from "uuid"; + +/** + * 获取唯一 ID + */ +export function getUuid() { + const id = uuidv4(); + return id; +} diff --git a/code/container-ocr/ocr-vue/src/views/auth/login.vue b/code/container-ocr/ocr-vue/src/views/auth/login.vue new file mode 100644 index 00000000..b805f252 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/auth/login.vue @@ -0,0 +1,421 @@ + + + + + + + + + + + + 网上服务平台 + + + + + 登录 + + + + 机构码 + + + + + + + + + 账号 + + + + + + + + 密码 + + + + + + + + 登录 + + + + + + + + + 服务中心 + + + + + + + + + + {{ item.title }} + + + + + + + + + {{ item.title }} + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/business/detail.vue b/code/container-ocr/ocr-vue/src/views/business/detail.vue new file mode 100644 index 00000000..1edc2f6a --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/business/detail.vue @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/code/container-ocr/ocr-vue/src/views/business/index.vue b/code/container-ocr/ocr-vue/src/views/business/index.vue new file mode 100644 index 00000000..d3a3fcdb --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/business/index.vue @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/index.vue b/code/container-ocr/ocr-vue/src/views/index.vue new file mode 100644 index 00000000..40633f2e --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/index.vue @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/system/field/index.vue b/code/container-ocr/ocr-vue/src/views/system/field/index.vue new file mode 100644 index 00000000..241e2ce8 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/system/field/index.vue @@ -0,0 +1,714 @@ + + + + + + + + + 模块名 + + + + + + + + + + + + + + + + 检查 + 浏览栏位预览 + 编辑栏位预览 + 属性预览 + 修改标签 + + SQL语句 + + + + + + 搜索 + + + + + + + + + + + + {{ row[column.prop] }} + + + + + + + + + + {{ row[column.prop] }} + + + + + + + + + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/system/field/preview-edit.vue b/code/container-ocr/ocr-vue/src/views/system/field/preview-edit.vue new file mode 100644 index 00000000..e69de29b diff --git a/code/container-ocr/ocr-vue/src/views/system/field/preview-sql.vue b/code/container-ocr/ocr-vue/src/views/system/field/preview-sql.vue new file mode 100644 index 00000000..5d1b4ad9 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/system/field/preview-sql.vue @@ -0,0 +1,71 @@ + + + + {{ sqlStr }} + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/system/field/preview-view.vue b/code/container-ocr/ocr-vue/src/views/system/field/preview-view.vue new file mode 100644 index 00000000..626a40ab --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/system/field/preview-view.vue @@ -0,0 +1,7 @@ + + + + + + + diff --git a/code/container-ocr/ocr-vue/src/views/test/detail.vue b/code/container-ocr/ocr-vue/src/views/test/detail.vue new file mode 100644 index 00000000..8830f6d4 --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/test/detail.vue @@ -0,0 +1,11 @@ + + + + + test-detail + + + + diff --git a/code/container-ocr/ocr-vue/src/views/test/index.vue b/code/container-ocr/ocr-vue/src/views/test/index.vue new file mode 100644 index 00000000..626a40ab --- /dev/null +++ b/code/container-ocr/ocr-vue/src/views/test/index.vue @@ -0,0 +1,7 @@ + + + + + + + diff --git a/code/container-ocr/ocr-vue/test.html b/code/container-ocr/ocr-vue/test.html new file mode 100644 index 00000000..9b66b30d --- /dev/null +++ b/code/container-ocr/ocr-vue/test.html @@ -0,0 +1,102 @@ + + + + + + + 自适应 Descriptions 每行自动填满 + + + + + + 自适应 Descriptions 示例 + + + + + 姓名: + 张三 + + + 年龄: + 18 + + + + + + + 邮箱: + zhangsan@example.com + + + + + + + 城市: + 北京 + + + 职业: + 学生 + + + 爱好: + 篮球 + + + + + + \ No newline at end of file