From 79b80d5cb3eb956638572a7f784bfe5fdc8568ef Mon Sep 17 00:00:00 2001 From: zhoulexin Date: Thu, 21 May 2026 10:14:26 +0800 Subject: [PATCH] Initial commit --- .env.development | 4 + .env.production | 2 + .gitignore | 2 + index.html | 12 + package-lock.json | 2200 +++++++++++++++++ package.json | 26 + src/App.vue | 26 + src/api/dataset.js | 74 + src/api/face-recognition.js | 40 + src/api/home.js | 42 + src/api/pod_detail.js | 9 + src/api/user.js | 53 + src/assets/images/dcLogo.png | Bin 0 -> 125029 bytes src/assets/images/logo.png | Bin 0 -> 13223 bytes src/components/AuthBackground.vue | 73 + src/components/AuthLogo.vue | 62 + src/components/WebRtcPlayer.vue | 243 ++ src/composables/useWebRtc.js | 66 + src/enums/index.js | 23 + src/layout/index.vue | 277 +++ src/main.js | 21 + src/router/index.js | 86 + src/router/permission.js | 4 + src/stores/theme.js | 27 + src/stores/user.js | 68 + src/styles/index.scss | 73 + src/styles/mixin.scss | 54 + src/styles/variables.scss | 27 + src/utils/fileHttp.js | 2 + src/utils/ptRequest.js | 6 + src/utils/request.js | 95 + src/views/dataset/components/DataList.vue | 465 ++++ src/views/dataset/components/FormDialog.vue | 119 + src/views/dataset/components/TreePanel.vue | 204 ++ src/views/dataset/index.vue | 265 ++ src/views/detail/index.vue | 642 +++++ .../components/AiChatPanel.vue | 676 +++++ .../components/CameraGrid.vue | 324 +++ .../components/FileSelectDialog.vue | 313 +++ .../components/QuickActions.vue | 149 ++ .../components/RealTimeStats.vue | 91 + .../components/RecognitionRecords.vue | 299 +++ src/views/face-recognition/index.vue | 125 + src/views/home/components/AddDeviceDialog.vue | 292 +++ src/views/home/index.vue | 591 +++++ src/views/login/index.vue | 467 ++++ .../components/PersonnelFormDialog.vue | 294 +++ src/views/personnel/index.vue | 351 +++ src/views/register/index.vue | 287 +++ vite.config.js | 24 + 50 files changed, 9675 insertions(+) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .gitignore create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/App.vue create mode 100644 src/api/dataset.js create mode 100644 src/api/face-recognition.js create mode 100644 src/api/home.js create mode 100644 src/api/pod_detail.js create mode 100644 src/api/user.js create mode 100644 src/assets/images/dcLogo.png create mode 100644 src/assets/images/logo.png create mode 100644 src/components/AuthBackground.vue create mode 100644 src/components/AuthLogo.vue create mode 100644 src/components/WebRtcPlayer.vue create mode 100644 src/composables/useWebRtc.js create mode 100644 src/enums/index.js create mode 100644 src/layout/index.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/router/permission.js create mode 100644 src/stores/theme.js create mode 100644 src/stores/user.js create mode 100644 src/styles/index.scss create mode 100644 src/styles/mixin.scss create mode 100644 src/styles/variables.scss create mode 100644 src/utils/fileHttp.js create mode 100644 src/utils/ptRequest.js create mode 100644 src/utils/request.js create mode 100644 src/views/dataset/components/DataList.vue create mode 100644 src/views/dataset/components/FormDialog.vue create mode 100644 src/views/dataset/components/TreePanel.vue create mode 100644 src/views/dataset/index.vue create mode 100644 src/views/detail/index.vue create mode 100644 src/views/face-recognition/components/AiChatPanel.vue create mode 100644 src/views/face-recognition/components/CameraGrid.vue create mode 100644 src/views/face-recognition/components/FileSelectDialog.vue create mode 100644 src/views/face-recognition/components/QuickActions.vue create mode 100644 src/views/face-recognition/components/RealTimeStats.vue create mode 100644 src/views/face-recognition/components/RecognitionRecords.vue create mode 100644 src/views/face-recognition/index.vue create mode 100644 src/views/home/components/AddDeviceDialog.vue create mode 100644 src/views/home/index.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/personnel/components/PersonnelFormDialog.vue create mode 100644 src/views/personnel/index.vue create mode 100644 src/views/register/index.vue create mode 100644 vite.config.js diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..a89ad84 --- /dev/null +++ b/.env.development @@ -0,0 +1,4 @@ +VITE_API_BASE_URL=http://10.23.22.43:35251/api +VITE_API_NEWPOD_URL=http://10.23.22.43 +VITE_API_PYTHON_URL=http://10.23.22.43:8010/api +VITE_APP_TITLE=视觉管理平台 diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..23faf40 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +VITE_API_BASE_URL=https://api.example.com/api +VITE_APP_TITLE=视觉管理平台 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/index.html b/index.html new file mode 100644 index 0000000..aa34e5c --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + 智能视觉管理平台 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cc5dfd9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2200 @@ +{ + "name": "new-pod-ui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "new-pod-ui", + "version": "0.0.0", + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "axios": "^1.6.7", + "element-plus": "^2.6.1", + "js-md5": "^0.8.3", + "js-sha256": "^0.11.1", + "pinia": "^2.1.7", + "vue": "^3.4.21", + "vue-router": "^4.3.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "sass": "^1.71.1", + "vite": "^5.1.5" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", + "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "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" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.8", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz", + "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.32.tgz", + "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.32", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", + "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.32.tgz", + "integrity": "sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.32", + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.8", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.32.tgz", + "integrity": "sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.32.tgz", + "integrity": "sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.32.tgz", + "integrity": "sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.32.tgz", + "integrity": "sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/runtime-core": "3.5.32", + "@vue/shared": "3.5.32", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.32.tgz", + "integrity": "sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "vue": "3.5.32" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.32.tgz", + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.0.0.tgz", + "integrity": "sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "12.0.0", + "@vueuse/shared": "12.0.0", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.0.0.tgz", + "integrity": "sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.0.0.tgz", + "integrity": "sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==", + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/element-plus": { + "version": "2.13.7", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.13.7.tgz", + "integrity": "sha512-XdHATFZOyzVFL1DaHQ90IOJQSg9UnSAV+bhDW+YB5UoZ0Hxs50mwqjqfwXkuwpSag+VXXizVcErBR6Movo5daw==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.2.0", + "@element-plus/icons-vue": "^2.3.2", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.17.20", + "@types/lodash-es": "^4.17.12", + "@vueuse/core": "12.0.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.19", + "lodash": "^4.17.23", + "lodash-es": "^4.17.23", + "lodash-unified": "^1.0.3", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0", + "vue-component-type-helpers": "^3.2.4" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-md5": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz", + "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==", + "license": "MIT" + }, + "node_modules/js-sha256": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/js-sha256/-/js-sha256-0.11.1.tgz", + "integrity": "sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.99.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.99.0.tgz", + "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.32", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.32.tgz", + "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-sfc": "3.5.32", + "@vue/runtime-dom": "3.5.32", + "@vue/server-renderer": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-component-type-helpers": { + "version": "3.2.6", + "resolved": "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-3.2.6.tgz", + "integrity": "sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==", + "license": "MIT" + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.6.4", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.6.4.tgz", + "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..61bcce3 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "new-pod-ui", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "axios": "^1.6.7", + "element-plus": "^2.6.1", + "js-md5": "^0.8.3", + "js-sha256": "^0.11.1", + "pinia": "^2.1.7", + "vue": "^3.4.21", + "vue-router": "^4.3.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "sass": "^1.71.1", + "vite": "^5.1.5" + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..9c6b357 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/api/dataset.js b/src/api/dataset.js new file mode 100644 index 0000000..f7aacb9 --- /dev/null +++ b/src/api/dataset.js @@ -0,0 +1,74 @@ +import request from '@/utils/request' + +// 获取树形结构数据 +export const getTreeList = () => { + return request({ + url: '/project/getList?name=', + method: 'get' + }) +} + +// 添加树节点 +export const saveTreeNode = (data) => { + return request({ + url: '/project/add', + method: 'post', + data + }) +} +// 编辑树节点 +export const editTreeNode = (data) => { + return request({ + url: '/project/update', + method: 'post', + data + }) +} +// 删除树节点 +export const deleteTreeNode = (data) => { + return request({ + url: `/project/delete`, + method: 'post', + data + }) +} + +// 获取数据列表 +export const getDataList = (params) => { + return request({ + url: '/file/getProjectId', + method: 'get', + params + }) +} + +// 删除数据 +export const deleteData = (data) => { + return request({ + url: `/file/deleteFile`, + method: 'post', + data + }) +} + +// 批量导出(返回文件流) +export const batchExport = (data) => { + return request({ + url: '/file/download', + method: 'post', + data, + responseType: 'blob' + }) +} + +// 上传文件到 minio +export const uploadMinio = (data) => { + return request({ + url: '/file/upload-minio', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} diff --git a/src/api/face-recognition.js b/src/api/face-recognition.js new file mode 100644 index 0000000..a31fa1e --- /dev/null +++ b/src/api/face-recognition.js @@ -0,0 +1,40 @@ +import request, { pythonService } from '@/utils/request' + +// 获取会话历史记录 +export const getAIChatHistory = (data) => { + return request({ + url: `/aiConversation/page?pageNum=${data.pageNum}&pageSize=${data.pageSize}`, + method: 'get' + }) +} +// 获取会话详情 +export const getChatContent = (data) => { + return request({ + url: `/aiConversation/chat_content?conversationId=${data.conversationId}`, + method: 'get' + }) +} + +// 删除会话 +export const deleteAIChat = (conversationId) => { + return request({ + url: `/aiConversation/delete?conversationId=${conversationId}`, + method: 'post' + }) +} + +// 开启人脸识别 +export const startFaceRecognition = (data) => { + return pythonService({ + url: '/detection/start', + method: 'post', + data + }) +} +// 关闭人脸识别 +export const stopFaceRecognition = () => { + return pythonService({ + url: '/detection/stop', + method: 'post' + }) +} \ No newline at end of file diff --git a/src/api/home.js b/src/api/home.js new file mode 100644 index 0000000..cc2be14 --- /dev/null +++ b/src/api/home.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +// 获取吊舱列表 +export const getPodList = () => { + return request({ + url: '/boards/location', + method: 'get' + }) +} + +// 添加设备 +export const addPod = (data) => { + return request({ + url: '/sterams/addDevice', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 编辑设备 +export const editPod = (data) => { + return request({ + url: '/sterams/updateDevice', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 删除设备 +export const deletePod = (data) => { + return request({ + url: `/sterams/deleteCameraGroup`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/pod_detail.js b/src/api/pod_detail.js new file mode 100644 index 0000000..facacfc --- /dev/null +++ b/src/api/pod_detail.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取设备详情 +export const getPodInfos = (groupId) => { + return request({ + url: `/sterams/getGroupMsg?groupId=${groupId}`, + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..af0782a --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,53 @@ +import request,{ newPodService } from '@/utils/request' + +// 新吊舱api +export const newPodApi = (data) => { + return newPodService({ + url: '/SDK/UNIV_API', + method: 'post', + data + }) +} + +// 登录 +export const loginApi = (data) => { + return request({ + url: '/user/login', + method: 'post', + data + }) +} + +// 注册 +export const registerApi = (data) => { + return request({ + url: '/user/register', + method: 'post', + data + }) +} + +// 获取用户信息 +export const getUserInfoApi = () => { + return request({ + url: '/user/info', + method: 'get' + }) +} + +// 发送手机验证码 +export const sendSmsCodeApi = (phone) => { + return request({ + url: '/user/sendSms', + method: 'post', + data: { phone } + }) +} + +// 登出 +export const logoutApi = () => { + return request({ + url: '/user/logout', + method: 'post' + }) +} diff --git a/src/assets/images/dcLogo.png b/src/assets/images/dcLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7f2de138fda7fbc21d81ebdf6b4e38f4019d09 GIT binary patch literal 125029 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 Z1^`Y3EC4XdQUw42002ovPDHLkV1hv!P$vKY literal 0 HcmV?d00001 diff --git a/src/components/AuthBackground.vue b/src/components/AuthBackground.vue new file mode 100644 index 0000000..46d03d0 --- /dev/null +++ b/src/components/AuthBackground.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/components/AuthLogo.vue b/src/components/AuthLogo.vue new file mode 100644 index 0000000..e58c305 --- /dev/null +++ b/src/components/AuthLogo.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/components/WebRtcPlayer.vue b/src/components/WebRtcPlayer.vue new file mode 100644 index 0000000..3ca190a --- /dev/null +++ b/src/components/WebRtcPlayer.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/src/composables/useWebRtc.js b/src/composables/useWebRtc.js new file mode 100644 index 0000000..1e5d0e9 --- /dev/null +++ b/src/composables/useWebRtc.js @@ -0,0 +1,66 @@ +// composables/useWebRtc.js +import { ref, onUnmounted } from 'vue'; + +export function useWebRtc(whepUrl) { + const videoRef = ref(null); + const error = ref(null); + let pc = null; + + const connect = async () => { + if (!whepUrl) return; + + try { + pc = new RTCPeerConnection(); + + pc.ontrack = (event) => { + if (videoRef.value && event.streams[0]) { + videoRef.value.srcObject = event.streams[0]; + } + }; + + pc.addTransceiver('video', { direction: 'recvonly' }); + pc.addTransceiver('audio', { direction: 'recvonly' }); + + const offer = await pc.createOffer(); + await pc.setLocalDescription(offer); + + const response = await fetch(whepUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/sdp' }, + body: pc.localDescription.sdp + }); + + if (!response.ok) throw new Error(`HTTP Error: ${response.status}`); + + const answerSdp = await response.text(); + await pc.setRemoteDescription({ type: 'answer', sdp: answerSdp }); + + } catch (err) { + console.error(err); + error.value = err.message; + } + }; + + // 清理逻辑 + const cleanup = () => { + if (pc) { + pc.close(); + pc = null; + } + if (videoRef.value) { + videoRef.value.srcObject = null; + } + }; + + // 组件卸载时自动清理 + onUnmounted(() => { + cleanup(); + }); + + return { + videoRef, + error, + connect, + cleanup + }; +} \ No newline at end of file diff --git a/src/enums/index.js b/src/enums/index.js new file mode 100644 index 0000000..e4c6320 --- /dev/null +++ b/src/enums/index.js @@ -0,0 +1,23 @@ +// 设备类型枚举 +export const DeviceType = { + POD: 0, + DRONE: 1, + CCTV: 2, + ROBOT: 3 +} + +// 设备类型名称映射 +export const DeviceTypeName = { + [DeviceType.POD]: '吊舱', + [DeviceType.DRONE]: '无人机', + [DeviceType.CCTV]: 'CCTV摄像头', + [DeviceType.ROBOT]: '机器人' +} + +// 设备类型颜色映射 +export const DeviceTypeColor = { + [DeviceType.POD]: 'primary', // 蓝色 - 吊舱 + [DeviceType.DRONE]: 'success', // 绿色 - 无人机 + [DeviceType.CCTV]: 'warning', // 橙色 - CCTV摄像头 + [DeviceType.ROBOT]: 'danger' // 红色 - 机器人 +} diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..c3b4a89 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..c01df9b --- /dev/null +++ b/src/main.js @@ -0,0 +1,21 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import ElementPlus from 'element-plus' +import zhCn from 'element-plus/dist/locale/zh-cn.mjs' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import 'element-plus/dist/index.css' +import router from './router' +import App from './App.vue' +import './styles/index.scss' + +const app = createApp(App) + +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} + +app.use(createPinia()) +app.use(router) +app.use(ElementPlus, { locale: zhCn }) + +app.mount('#app') \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..89f3005 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,86 @@ +import { createRouter, createWebHistory } from 'vue-router' +import { useUserStore } from '@/stores/user' + +const routes = [ + { + path: '/login', + name: 'Login', + component: () => import('@/views/login/index.vue'), + meta: { title: '登录' } + }, + { + path: '/register', + name: 'Register', + component: () => import('@/views/register/index.vue'), + meta: { title: '注册' } + }, + { + path: '/', + component: () => import('@/layout/index.vue'), + redirect: '/home', + children: [ + { + path: 'home', + name: 'Home', + component: () => import('@/views/home/index.vue'), + meta: { title: '首页', requiresAuth: true } + }, + { + path: 'detail', + name: 'Detail', + component: () => import('@/views/detail/index.vue'), + meta: { title: '设备详情', requiresAuth: true } + }, + { + path: 'dataset', + name: 'Dataset', + component: () => import('@/views/dataset/index.vue'), + meta: { title: '数据集', requiresAuth: true } + }, + { + path: 'face-recognition', + name: 'FaceRecognition', + component: () => import('@/views/face-recognition/index.vue'), + meta: { title: '人脸识别', requiresAuth: true } + }, + { + path: 'personnel', + name: 'Personnel', + component: () => import('@/views/personnel/index.vue'), + meta: { title: '人员管理', requiresAuth: true } + } + ] + }, + { + path: '/:pathMatch(.*)*', + redirect: '/login' + } +] + +const router = createRouter({ + history: createWebHistory(), + routes +}) + +router.beforeEach((to, from, next) => { + document.title = to.meta.title ? `${to.meta.title} - 视觉管理平台` : '视觉管理平台' + + const userStore = useUserStore() + const token = userStore.token + + if (to.meta.requiresAuth) { + if (!token) { + next({ name: 'Login', query: { redirect: to.fullPath } }) + } else { + next() + } + } else { + if (token && (to.name === 'Login' || to.name === 'Register')) { + next({ name: 'Home' }) + } else { + next() + } + } +}) + +export default router diff --git a/src/router/permission.js b/src/router/permission.js new file mode 100644 index 0000000..ce0ec17 --- /dev/null +++ b/src/router/permission.js @@ -0,0 +1,4 @@ +// 路由权限控制指令(可扩展) +export const initPermission = () => { + // 预留权限初始化逻辑 +} diff --git a/src/stores/theme.js b/src/stores/theme.js new file mode 100644 index 0000000..548a922 --- /dev/null +++ b/src/stores/theme.js @@ -0,0 +1,27 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useThemeStore = defineStore('theme', () => { + const themeColors = ref([ + { name: '科技蓝', color: '#409EFF' }, + { name: '极客绿', color: '#67C23A' }, + { name: '活力橙', color: '#E6A23C' }, + { name: '玫瑰红', color: '#F56C6C' }, + { name: '神秘紫', color: '#9C27B0' }, + { name: '商务灰', color: '#607D8B' } + ]) + + const themeColor = ref(localStorage.getItem('themeColor') || '#409EFF') + + const setThemeColor = (color) => { + themeColor.value = color + localStorage.setItem('themeColor', color) + document.documentElement.style.setProperty('--el-color-primary', color) + } + + return { + themeColors, + themeColor, + setThemeColor + } +}) diff --git a/src/stores/user.js b/src/stores/user.js new file mode 100644 index 0000000..22b3b14 --- /dev/null +++ b/src/stores/user.js @@ -0,0 +1,68 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { loginApi, registerApi, logoutApi, getUserInfoApi } from '@/api/user' + +export const useUserStore = defineStore('user', () => { + const token = ref(localStorage.getItem('token') || '') + const userInfo = ref(null) + const isLoggingOut = ref(false) // 防止logout循环调用 + + const setToken = (newToken) => { + token.value = newToken + localStorage.setItem('token', newToken) + } + + const setUserInfo = (info) => { + userInfo.value = info + } + + const login = async (loginData) => { + const res = await loginApi(loginData) + const { token, userName, id, permissions } = res.data + setToken(token) + setUserInfo({ + id, + userName, + permissions + }) + return { success: true, data: res.data } + } + + const register = async (registerData) => { + const res = await registerApi(registerData) + return { success: true, data: res.data } + } + + const logout = async () => { + if (isLoggingOut.value) return + isLoggingOut.value = true + + try { + await logoutApi() + } catch (e) { + // 忽略logout接口错误 + } finally { + token.value = '' + userInfo.value = null + localStorage.removeItem('token') + isLoggingOut.value = false + } + } + + const getUserInfo = async () => { + if (!token.value) return + const res = await getUserInfoApi() + setUserInfo(res.data) + } + + return { + token, + userInfo, + setToken, + setUserInfo, + login, + register, + logout, + getUserInfo + } +}) diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..e2fe365 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,73 @@ +@use './variables.scss' as *; +@use './mixin.scss' as *; + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, body { + height: 100%; + font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; + color: $text-primary; + background-color: $bg-base; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: $bg-base; +} + +::-webkit-scrollbar-thumb { + background: $border-base; + border-radius: 3px; + + &:hover { + background: $text-secondary; + } +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.mt-10 { + margin-top: 10px; +} + +.mt-20 { + margin-top: 20px; +} + +.mb-10 { + margin-bottom: 10px; +} + +.mb-20 { + margin-bottom: 20px; +} + +.page-container { + padding: 20px; +} + +.card-container { + @include flat-card; + padding: 20px; +} + +.btn-flat { + @include flat-button; +} + diff --git a/src/styles/mixin.scss b/src/styles/mixin.scss new file mode 100644 index 0000000..dbf37c1 --- /dev/null +++ b/src/styles/mixin.scss @@ -0,0 +1,54 @@ +@use './variables.scss' as *; + +@mixin flat-button { + border: none; + border-radius: $border-radius-base; + transition: all $transition-duration $transition-function; + + &:hover { + transform: translateY(-2px); + box-shadow: $box-shadow-base; + } + + &:active { + transform: translateY(0); + } +} + +@mixin flat-card { + background: #fff; + border-radius: $border-radius-base; + box-shadow: $box-shadow-light; + border: 1px solid $border-lighter; + transition: all $transition-duration $transition-function; + + &:hover { + box-shadow: $box-shadow-base; + } +} + +@mixin flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +@mixin flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +@mixin text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +@mixin multi-ellipsis($lines: 2) { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: $lines; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/src/styles/variables.scss b/src/styles/variables.scss new file mode 100644 index 0000000..0c933ed --- /dev/null +++ b/src/styles/variables.scss @@ -0,0 +1,27 @@ +$primary-color: #409EFF; +$success-color: #67C23A; +$warning-color: #E6A23C; +$danger-color: #F56C6C; +$info-color: #909399; + +$text-primary: #303133; +$text-regular: #606266; +$text-secondary: #909399; +$text-placeholder: #c0c4cc; + +$border-base: #dcdfe6; +$border-light: #e4e7ed; +$border-lighter: #ebeef5; +$border-extra-light: #f2f6fc; + +$bg-base: #f5f7fa; +$bg-light: #fafafa; + +$border-radius-base: 4px; +$border-radius-small: 2px; + +$box-shadow-base: 0 2px 12px rgba(0, 0, 0, 0.1); +$box-shadow-light: 0 2px 6px rgba(0, 0, 0, 0.05); + +$transition-duration: 0.3s; +$transition-function: ease; diff --git a/src/utils/fileHttp.js b/src/utils/fileHttp.js new file mode 100644 index 0000000..877e2c7 --- /dev/null +++ b/src/utils/fileHttp.js @@ -0,0 +1,2 @@ +const fileHttp = 'http://ngsk.tech:3900' +export default fileHttp \ No newline at end of file diff --git a/src/utils/ptRequest.js b/src/utils/ptRequest.js new file mode 100644 index 0000000..43d9b34 --- /dev/null +++ b/src/utils/ptRequest.js @@ -0,0 +1,6 @@ +const ptUrl = { + url0:'http://10.23.22.43:5000', + url1:'http://10.23.22.43:5001', + url2:'http://10.23.22.43:5004' +} +export default ptUrl; diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..f26caba --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,95 @@ +import axios from 'axios' +import { ElMessage } from 'element-plus' +import { useUserStore } from '@/stores/user' +import router from '@/router' + +function createService(baseURL) { + + const service = axios.create({ + baseURL: baseURL, + timeout: 15000 + }) + + // 请求拦截器 + service.interceptors.request.use( + (config) => { + const userStore = useUserStore() + if (userStore.token) { + config.headers['Authorization'] = `Bearer ${userStore.token}` + } + return config + }, + (error) => { + console.error('请求错误:', error) + return Promise.reject(error) + } + ) + + // 响应拦截器 + service.interceptors.response.use( + (response) => { + // blob 类型响应直接返回原始 response + if (response.config.responseType === 'blob') { + return response + } + + const res = response.data + + if (res.code && res.code !== 200) { + ElMessage.error(res.message || '请求失败') + + if (res.code === 401) { + const userStore = useUserStore() + if (!userStore.isLoggingOut) { + userStore.logout() + router.push('/login') + } + } + + return Promise.reject(new Error(res.message || '请求失败')) + } + + return res + }, + (error) => { + console.error('响应错误:', error) + + if (error.response) { + switch (error.response.status) { + case 401: + ElMessage.error('登录已过期,请重新登录') + const userStore = useUserStore() + if (!userStore.isLoggingOut) { + userStore.logout() + router.push('/login') + } + break + case 403: + ElMessage.error('没有权限访问') + break + case 404: + ElMessage.error('请求资源不存在') + break + case 500: + ElMessage.error('服务器错误') + break + default: + ElMessage.error(error.message || '网络错误') + } + } else { + ElMessage.error('网络连接失败,请检查网络') + } + + return Promise.reject(error) + } + ) + return service +} +// 系统后端api +export const mainService = createService(import.meta.env.VITE_API_BASE_URL || '/api') +// 新吊舱api +export const newPodService = createService(import.meta.env.VITE_API_NEWPOD_URL || '') +// python接口api +export const pythonService = createService(import.meta.env.VITE_API_PYTHON_URL || '/api') + +export default mainService \ No newline at end of file diff --git a/src/views/dataset/components/DataList.vue b/src/views/dataset/components/DataList.vue new file mode 100644 index 0000000..08c0771 --- /dev/null +++ b/src/views/dataset/components/DataList.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/src/views/dataset/components/FormDialog.vue b/src/views/dataset/components/FormDialog.vue new file mode 100644 index 0000000..19fc5a3 --- /dev/null +++ b/src/views/dataset/components/FormDialog.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/views/dataset/components/TreePanel.vue b/src/views/dataset/components/TreePanel.vue new file mode 100644 index 0000000..beb532f --- /dev/null +++ b/src/views/dataset/components/TreePanel.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/src/views/dataset/index.vue b/src/views/dataset/index.vue new file mode 100644 index 0000000..e18e453 --- /dev/null +++ b/src/views/dataset/index.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/views/detail/index.vue b/src/views/detail/index.vue new file mode 100644 index 0000000..8734ce3 --- /dev/null +++ b/src/views/detail/index.vue @@ -0,0 +1,642 @@ + + + + + diff --git a/src/views/face-recognition/components/AiChatPanel.vue b/src/views/face-recognition/components/AiChatPanel.vue new file mode 100644 index 0000000..22ef717 --- /dev/null +++ b/src/views/face-recognition/components/AiChatPanel.vue @@ -0,0 +1,676 @@ + + + + + + + diff --git a/src/views/face-recognition/components/CameraGrid.vue b/src/views/face-recognition/components/CameraGrid.vue new file mode 100644 index 0000000..73e3cc7 --- /dev/null +++ b/src/views/face-recognition/components/CameraGrid.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/src/views/face-recognition/components/FileSelectDialog.vue b/src/views/face-recognition/components/FileSelectDialog.vue new file mode 100644 index 0000000..8b4d34f --- /dev/null +++ b/src/views/face-recognition/components/FileSelectDialog.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/src/views/face-recognition/components/QuickActions.vue b/src/views/face-recognition/components/QuickActions.vue new file mode 100644 index 0000000..1c4880b --- /dev/null +++ b/src/views/face-recognition/components/QuickActions.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/face-recognition/components/RealTimeStats.vue b/src/views/face-recognition/components/RealTimeStats.vue new file mode 100644 index 0000000..0f31a69 --- /dev/null +++ b/src/views/face-recognition/components/RealTimeStats.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/face-recognition/components/RecognitionRecords.vue b/src/views/face-recognition/components/RecognitionRecords.vue new file mode 100644 index 0000000..c35a7d0 --- /dev/null +++ b/src/views/face-recognition/components/RecognitionRecords.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/face-recognition/index.vue b/src/views/face-recognition/index.vue new file mode 100644 index 0000000..ffc313c --- /dev/null +++ b/src/views/face-recognition/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/views/home/components/AddDeviceDialog.vue b/src/views/home/components/AddDeviceDialog.vue new file mode 100644 index 0000000..bdcfbf5 --- /dev/null +++ b/src/views/home/components/AddDeviceDialog.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..bd6d80f --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,591 @@ + + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..5756147 --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,467 @@ + + + + + diff --git a/src/views/personnel/components/PersonnelFormDialog.vue b/src/views/personnel/components/PersonnelFormDialog.vue new file mode 100644 index 0000000..9e655a9 --- /dev/null +++ b/src/views/personnel/components/PersonnelFormDialog.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/src/views/personnel/index.vue b/src/views/personnel/index.vue new file mode 100644 index 0000000..6b6f11f --- /dev/null +++ b/src/views/personnel/index.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/views/register/index.vue b/src/views/register/index.vue new file mode 100644 index 0000000..4eb5f63 --- /dev/null +++ b/src/views/register/index.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..82a3708 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,24 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { resolve } from 'path' + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': resolve(__dirname, 'src') + } + }, + css: { + preprocessorOptions: { + scss: { + api: 'modern-compiler' + } + } + }, + server: { + host: '0.0.0.0', // 允许通过 IP 地址访问 + port: 5173, // 指定端口号,可选,默认为 5173 + open: false // 启动时自动打开浏览器,可选 + } +})