Compare commits
3 Commits
0ae7ae5e20
...
669cd7070f
Author | SHA1 | Date | |
---|---|---|---|
669cd7070f | |||
5487dc321e | |||
ec4906f441 |
@ -117,7 +117,7 @@
|
|||||||
"@vitejs/plugin-vue-jsx": "^5.0.1",
|
"@vitejs/plugin-vue-jsx": "^5.0.1",
|
||||||
"@vitest/eslint-plugin": "^1.3.4",
|
"@vitest/eslint-plugin": "^1.3.4",
|
||||||
"@vue/eslint-config-prettier": "^10.2.0",
|
"@vue/eslint-config-prettier": "^10.2.0",
|
||||||
"@vue/eslint-config-typescript": "^14.5.1",
|
"@vue/eslint-config-typescript": "^14.6.0",
|
||||||
"@vue/test-utils": "^2.4.6",
|
"@vue/test-utils": "^2.4.6",
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
"archiver": "^7.0.1",
|
"archiver": "^7.0.1",
|
||||||
@ -128,7 +128,7 @@
|
|||||||
"eslint-plugin-oxlint": "^1.5.0",
|
"eslint-plugin-oxlint": "^1.5.0",
|
||||||
"eslint-plugin-perfectionist": "^4.15.0",
|
"eslint-plugin-perfectionist": "^4.15.0",
|
||||||
"eslint-plugin-unicorn": "^59.0.1",
|
"eslint-plugin-unicorn": "^59.0.1",
|
||||||
"eslint-plugin-vue": "^10.2.0",
|
"eslint-plugin-vue": "^10.3.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"less": "^4.3.0",
|
"less": "^4.3.0",
|
||||||
"lint-staged": "^16.1.2",
|
"lint-staged": "^16.1.2",
|
||||||
|
194
pnpm-lock.yaml
generated
194
pnpm-lock.yaml
generated
@ -228,8 +228,8 @@ importers:
|
|||||||
specifier: ^10.2.0
|
specifier: ^10.2.0
|
||||||
version: 10.2.0(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2)
|
version: 10.2.0(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2)
|
||||||
'@vue/eslint-config-typescript':
|
'@vue/eslint-config-typescript':
|
||||||
specifier: ^14.5.1
|
specifier: ^14.6.0
|
||||||
version: 14.5.1(eslint-plugin-vue@10.2.0(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2))))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
version: 14.6.0(eslint-plugin-vue@10.3.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2))))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@vue/test-utils':
|
'@vue/test-utils':
|
||||||
specifier: ^2.4.6
|
specifier: ^2.4.6
|
||||||
version: 2.4.6
|
version: 2.4.6
|
||||||
@ -250,7 +250,7 @@ importers:
|
|||||||
version: 9.30.1(jiti@2.4.2)
|
version: 9.30.1(jiti@2.4.2)
|
||||||
eslint-plugin-import-x:
|
eslint-plugin-import-x:
|
||||||
specifier: ^4.16.1
|
specifier: ^4.16.1
|
||||||
version: 4.16.1(@typescript-eslint/utils@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))
|
version: 4.16.1(@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))
|
||||||
eslint-plugin-oxlint:
|
eslint-plugin-oxlint:
|
||||||
specifier: ^1.5.0
|
specifier: ^1.5.0
|
||||||
version: 1.5.0
|
version: 1.5.0
|
||||||
@ -261,8 +261,8 @@ importers:
|
|||||||
specifier: ^59.0.1
|
specifier: ^59.0.1
|
||||||
version: 59.0.1(eslint@9.30.1(jiti@2.4.2))
|
version: 59.0.1(eslint@9.30.1(jiti@2.4.2))
|
||||||
eslint-plugin-vue:
|
eslint-plugin-vue:
|
||||||
specifier: ^10.2.0
|
specifier: ^10.3.0
|
||||||
version: 10.2.0(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2)))
|
version: 10.3.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2)))
|
||||||
husky:
|
husky:
|
||||||
specifier: ^9.1.7
|
specifier: ^9.1.7
|
||||||
version: 9.1.7
|
version: 9.1.7
|
||||||
@ -1746,16 +1746,16 @@ packages:
|
|||||||
'@types/webxr@0.5.22':
|
'@types/webxr@0.5.22':
|
||||||
resolution: {integrity: sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==}
|
resolution: {integrity: sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.34.1':
|
'@typescript-eslint/eslint-plugin@8.35.1':
|
||||||
resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==}
|
resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/parser': ^8.34.1
|
'@typescript-eslint/parser': ^8.35.1
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.34.1':
|
'@typescript-eslint/parser@8.35.1':
|
||||||
resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==}
|
resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -1773,6 +1773,12 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.35.1':
|
||||||
|
resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.33.1':
|
'@typescript-eslint/scope-manager@8.33.1':
|
||||||
resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==}
|
resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1781,6 +1787,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==}
|
resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.35.1':
|
||||||
|
resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.33.1':
|
'@typescript-eslint/tsconfig-utils@8.33.1':
|
||||||
resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==}
|
resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1793,8 +1803,14 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.34.1':
|
'@typescript-eslint/tsconfig-utils@8.35.1':
|
||||||
resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==}
|
resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/type-utils@8.35.1':
|
||||||
|
resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -1812,6 +1828,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==}
|
resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.35.1':
|
||||||
|
resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.33.1':
|
'@typescript-eslint/typescript-estree@8.33.1':
|
||||||
resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==}
|
resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1824,6 +1844,12 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.35.1':
|
||||||
|
resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.34.1':
|
'@typescript-eslint/utils@8.34.1':
|
||||||
resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==}
|
resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1831,6 +1857,13 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.35.1':
|
||||||
|
resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.33.1':
|
'@typescript-eslint/visitor-keys@8.33.1':
|
||||||
resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==}
|
resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1839,6 +1872,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==}
|
resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.35.1':
|
||||||
|
resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@unhead/vue@2.0.11':
|
'@unhead/vue@2.0.11':
|
||||||
resolution: {integrity: sha512-8fotlaymgclwiywz9sCr+4EfJs4aoVr0TW31lk5Z8c3VVxeKLSjS4rs8ely8HQd9e3UWxYzZhR8ZqQh0qJPQ/w==}
|
resolution: {integrity: sha512-8fotlaymgclwiywz9sCr+4EfJs4aoVr0TW31lk5Z8c3VVxeKLSjS4rs8ely8HQd9e3UWxYzZhR8ZqQh0qJPQ/w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -2334,8 +2371,8 @@ packages:
|
|||||||
eslint: '>= 8.21.0'
|
eslint: '>= 8.21.0'
|
||||||
prettier: '>= 3.0.0'
|
prettier: '>= 3.0.0'
|
||||||
|
|
||||||
'@vue/eslint-config-typescript@14.5.1':
|
'@vue/eslint-config-typescript@14.6.0':
|
||||||
resolution: {integrity: sha512-ys6qdYHGXS/WLt0r5vUcTiG163F4NbNpx3ABTsGITw8k5uCFiv4g9E1N9Jydlw62KzJMVKGcpXbg6LCA3fV+eA==}
|
resolution: {integrity: sha512-UpiRY/7go4Yps4mYCjkvlIbVWmn9YvPGQDxTAlcKLphyaD77LjIu3plH4Y9zNT0GB4f3K5tMmhhtRhPOgrQ/bQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^9.10.0
|
eslint: ^9.10.0
|
||||||
@ -3179,12 +3216,16 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: '>=9.22.0'
|
eslint: '>=9.22.0'
|
||||||
|
|
||||||
eslint-plugin-vue@10.2.0:
|
eslint-plugin-vue@10.3.0:
|
||||||
resolution: {integrity: sha512-tl9s+KN3z0hN2b8fV2xSs5ytGl7Esk1oSCxULLwFcdaElhZ8btYYZFrWxvh4En+czrSDtuLCeCOGa8HhEZuBdQ==}
|
resolution: {integrity: sha512-A0u9snqjCfYaPnqqOaH6MBLVWDUIN4trXn8J3x67uDcXvR7X6Ut8p16N+nYhMCQ9Y7edg2BIRGzfyZsY0IdqoQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
'@typescript-eslint/parser': ^7.0.0 || ^8.0.0
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
vue-eslint-parser: ^10.0.0
|
vue-eslint-parser: ^10.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@typescript-eslint/parser':
|
||||||
|
optional: true
|
||||||
|
|
||||||
eslint-scope@8.4.0:
|
eslint-scope@8.4.0:
|
||||||
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
|
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
|
||||||
@ -4939,8 +4980,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
|
|
||||||
typescript-eslint@8.34.1:
|
typescript-eslint@8.35.1:
|
||||||
resolution: {integrity: sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==}
|
resolution: {integrity: sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -5391,8 +5432,8 @@ packages:
|
|||||||
'@vue/composition-api':
|
'@vue/composition-api':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
vue-eslint-parser@10.1.3:
|
vue-eslint-parser@10.2.0:
|
||||||
resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==}
|
resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -6890,14 +6931,14 @@ snapshots:
|
|||||||
|
|
||||||
'@types/webxr@0.5.22': {}
|
'@types/webxr@0.5.22': {}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/scope-manager': 8.34.1
|
'@typescript-eslint/scope-manager': 8.35.1
|
||||||
'@typescript-eslint/type-utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.34.1
|
'@typescript-eslint/visitor-keys': 8.35.1
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
@ -6907,12 +6948,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.34.1
|
'@typescript-eslint/scope-manager': 8.35.1
|
||||||
'@typescript-eslint/types': 8.34.1
|
'@typescript-eslint/types': 8.35.1
|
||||||
'@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3)
|
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.34.1
|
'@typescript-eslint/visitor-keys': 8.35.1
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
@ -6931,7 +6972,16 @@ snapshots:
|
|||||||
'@typescript-eslint/project-service@8.34.1(typescript@5.8.3)':
|
'@typescript-eslint/project-service@8.34.1(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3)
|
'@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3)
|
||||||
'@typescript-eslint/types': 8.34.1
|
'@typescript-eslint/types': 8.35.0
|
||||||
|
debug: 4.4.1
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.35.1(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/types': 8.35.1
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -6947,6 +6997,11 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.34.1
|
'@typescript-eslint/types': 8.34.1
|
||||||
'@typescript-eslint/visitor-keys': 8.34.1
|
'@typescript-eslint/visitor-keys': 8.34.1
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.35.1':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.35.1
|
||||||
|
'@typescript-eslint/visitor-keys': 8.35.1
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)':
|
'@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
@ -6955,10 +7010,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3)
|
typescript: 5.8.3
|
||||||
'@typescript-eslint/utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
|
||||||
|
'@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
@ -6972,6 +7031,8 @@ snapshots:
|
|||||||
|
|
||||||
'@typescript-eslint/types@8.35.0': {}
|
'@typescript-eslint/types@8.35.0': {}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.35.1': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)':
|
'@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/project-service': 8.33.1(typescript@5.8.3)
|
'@typescript-eslint/project-service': 8.33.1(typescript@5.8.3)
|
||||||
@ -7004,6 +7065,22 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/project-service': 8.35.1(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/types': 8.35.1
|
||||||
|
'@typescript-eslint/visitor-keys': 8.35.1
|
||||||
|
debug: 4.4.1
|
||||||
|
fast-glob: 3.3.3
|
||||||
|
is-glob: 4.0.3
|
||||||
|
minimatch: 9.0.5
|
||||||
|
semver: 7.7.2
|
||||||
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/utils@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
@ -7015,6 +7092,17 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
'@typescript-eslint/scope-manager': 8.35.1
|
||||||
|
'@typescript-eslint/types': 8.35.1
|
||||||
|
'@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.33.1':
|
'@typescript-eslint/visitor-keys@8.33.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.33.1
|
'@typescript-eslint/types': 8.33.1
|
||||||
@ -7025,6 +7113,11 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.34.1
|
'@typescript-eslint/types': 8.34.1
|
||||||
eslint-visitor-keys: 4.2.1
|
eslint-visitor-keys: 4.2.1
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.35.1':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.35.1
|
||||||
|
eslint-visitor-keys: 4.2.1
|
||||||
|
|
||||||
'@unhead/vue@2.0.11(vue@3.5.17(typescript@5.8.3))':
|
'@unhead/vue@2.0.11(vue@3.5.17(typescript@5.8.3))':
|
||||||
dependencies:
|
dependencies:
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
@ -7728,14 +7821,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/eslint'
|
- '@types/eslint'
|
||||||
|
|
||||||
'@vue/eslint-config-typescript@14.5.1(eslint-plugin-vue@10.2.0(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2))))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
'@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.3.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2))))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
eslint-plugin-vue: 10.2.0(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2)))
|
eslint-plugin-vue: 10.3.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2)))
|
||||||
fast-glob: 3.3.3
|
fast-glob: 3.3.3
|
||||||
typescript-eslint: 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
typescript-eslint: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
vue-eslint-parser: 10.1.3(eslint@9.30.1(jiti@2.4.2))
|
vue-eslint-parser: 10.2.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -8622,7 +8715,7 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
unrs-resolver: 1.9.2
|
unrs-resolver: 1.9.2
|
||||||
|
|
||||||
eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)):
|
eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.35.0
|
'@typescript-eslint/types': 8.35.0
|
||||||
comment-parser: 1.4.1
|
comment-parser: 1.4.1
|
||||||
@ -8635,7 +8728,7 @@ snapshots:
|
|||||||
stable-hash-x: 0.2.0
|
stable-hash-x: 0.2.0
|
||||||
unrs-resolver: 1.9.2
|
unrs-resolver: 1.9.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -8683,7 +8776,7 @@ snapshots:
|
|||||||
semver: 7.7.2
|
semver: 7.7.2
|
||||||
strip-indent: 4.0.0
|
strip-indent: 4.0.0
|
||||||
|
|
||||||
eslint-plugin-vue@10.2.0(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2))):
|
eslint-plugin-vue@10.3.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2))):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
@ -8691,8 +8784,10 @@ snapshots:
|
|||||||
nth-check: 2.1.1
|
nth-check: 2.1.1
|
||||||
postcss-selector-parser: 6.1.2
|
postcss-selector-parser: 6.1.2
|
||||||
semver: 7.7.2
|
semver: 7.7.2
|
||||||
vue-eslint-parser: 10.1.3(eslint@9.30.1(jiti@2.4.2))
|
vue-eslint-parser: 10.2.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
xml-name-validator: 4.0.0
|
xml-name-validator: 4.0.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
|
||||||
eslint-scope@8.4.0:
|
eslint-scope@8.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -10443,11 +10538,11 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prelude-ls: 1.2.1
|
prelude-ls: 1.2.1
|
||||||
|
|
||||||
typescript-eslint@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3):
|
typescript-eslint@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/parser': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.34.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -10963,7 +11058,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/sortablejs': 1.15.8
|
'@types/sortablejs': 1.15.8
|
||||||
|
|
||||||
vue-eslint-parser@10.1.3(eslint@9.30.1(jiti@2.4.2)):
|
vue-eslint-parser@10.2.0(eslint@9.30.1(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
eslint: 9.30.1(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
@ -10971,7 +11066,6 @@ snapshots:
|
|||||||
eslint-visitor-keys: 4.2.1
|
eslint-visitor-keys: 4.2.1
|
||||||
espree: 10.4.0
|
espree: 10.4.0
|
||||||
esquery: 1.6.0
|
esquery: 1.6.0
|
||||||
lodash: 4.17.21
|
|
||||||
semver: 7.7.2
|
semver: 7.7.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -15,9 +15,11 @@ const themeConfig = computed(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<n-config-provider preflight-style-disabled>
|
||||||
<a-config-provider :theme="themeConfig">
|
<a-config-provider :theme="themeConfig">
|
||||||
<RouterView />
|
<RouterView />
|
||||||
</a-config-provider>
|
</a-config-provider>
|
||||||
|
</n-config-provider>
|
||||||
|
|
||||||
<DynamicDialog /> <ConfirmDialog /> <Toast />
|
<DynamicDialog /> <ConfirmDialog /> <Toast />
|
||||||
</template>
|
</template>
|
||||||
|
321
src/layouts/naive-ui/AppLayout.vue
Normal file
321
src/layouts/naive-ui/AppLayout.vue
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { MenuOption } from 'naive-ui';
|
||||||
|
|
||||||
|
import { createGetRoutes } from '@/plugins/router';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
// 响应式断点检测
|
||||||
|
const isMobile = ref(false);
|
||||||
|
const isTablet = ref(false);
|
||||||
|
|
||||||
|
// 检测屏幕尺寸
|
||||||
|
const updateScreenSize = () => {
|
||||||
|
const width = window.innerWidth;
|
||||||
|
const wasMobile = isMobile.value;
|
||||||
|
|
||||||
|
isMobile.value = width < 768;
|
||||||
|
isTablet.value = width >= 768 && width < 1024;
|
||||||
|
|
||||||
|
// 当从移动端切换到桌面端时,关闭抽屉并重置折叠状态
|
||||||
|
if (wasMobile && !isMobile.value) {
|
||||||
|
drawerVisible.value = false;
|
||||||
|
collapsed.value = false;
|
||||||
|
}
|
||||||
|
// 当从桌面端切换到移动端时,关闭抽屉
|
||||||
|
else if (!wasMobile && isMobile.value) {
|
||||||
|
drawerVisible.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 侧边栏状态管理
|
||||||
|
const collapsed = ref(false);
|
||||||
|
const drawerVisible = ref(false);
|
||||||
|
|
||||||
|
// 初始化屏幕尺寸检测
|
||||||
|
onMounted(() => {
|
||||||
|
updateScreenSize();
|
||||||
|
window.addEventListener('resize', updateScreenSize);
|
||||||
|
|
||||||
|
// 移动端默认收起侧边栏
|
||||||
|
if (isMobile.value) {
|
||||||
|
collapsed.value = true;
|
||||||
|
drawerVisible.value = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('resize', updateScreenSize);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 菜单项类型定义
|
||||||
|
type MenuItemWithRoute = MenuOption & {
|
||||||
|
routeName?: string;
|
||||||
|
parentId?: string;
|
||||||
|
originalPath?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 生成菜单项
|
||||||
|
const menuOptions = computed(() => {
|
||||||
|
let flatArray: MenuItemWithRoute[] = createGetRoutes(router)()
|
||||||
|
.filter((route) => !route.path.includes('/:'))
|
||||||
|
.filter((route) => !route.meta.hidden)
|
||||||
|
.map((route) => ({
|
||||||
|
key: route.path,
|
||||||
|
label: route.meta.title || `${(route.name as string) || route.path}`,
|
||||||
|
routeName: route.name as string,
|
||||||
|
}));
|
||||||
|
|
||||||
|
flatArray = flatArray.map((item) => {
|
||||||
|
const originalPath = item.key as string; // 保存原始路径
|
||||||
|
let id = item.key as string;
|
||||||
|
if (flatArray.some((item) => (item.key as string).startsWith(`${id}/`))) {
|
||||||
|
id = `${id}/index`;
|
||||||
|
}
|
||||||
|
// 去掉最前面的 /
|
||||||
|
id = id.replace(/^\//, '');
|
||||||
|
|
||||||
|
let parentId = id.replace(/\/[^/]+$/, '');
|
||||||
|
if (parentId === id) {
|
||||||
|
parentId = '_ROOT_';
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
key: id,
|
||||||
|
parentId,
|
||||||
|
originalPath, // 保存原始路径用于后续映射
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const groupItems: MenuItemWithRoute[] = [];
|
||||||
|
for (const flatArrayItem of flatArray) {
|
||||||
|
if (!groupItems.some((item) => item.key === flatArrayItem.parentId) && flatArrayItem.parentId !== '_ROOT_') {
|
||||||
|
let groupItemParentId = flatArrayItem.parentId!.replace(/\/[^/]+$/, '');
|
||||||
|
if (groupItemParentId === flatArrayItem.parentId) groupItemParentId = '_ROOT_';
|
||||||
|
groupItems.push({
|
||||||
|
key: flatArrayItem.parentId!,
|
||||||
|
label: `Group ${flatArrayItem.parentId}`,
|
||||||
|
parentId: groupItemParentId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const tree = arrayToTree([...flatArray, ...groupItems], {
|
||||||
|
id: 'key',
|
||||||
|
parentId: 'parentId',
|
||||||
|
rootId: '_ROOT_',
|
||||||
|
});
|
||||||
|
|
||||||
|
// 递归转换树形结构为 naive-ui menu 格式
|
||||||
|
function convertToMenuOptions(tree: MenuItemWithRoute[]): MenuOption[] {
|
||||||
|
return tree.map((item) => {
|
||||||
|
const menuItem: MenuOption = {
|
||||||
|
key: item.key,
|
||||||
|
label: item.label,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (item.children && item.children.length > 0) {
|
||||||
|
menuItem.children = convertToMenuOptions(item.children);
|
||||||
|
} else if (item.routeName) {
|
||||||
|
// 叶子节点,存储路由映射
|
||||||
|
menuRouteMap.set(item.key as string, item.routeName);
|
||||||
|
// 同时存储路径到 key 的映射(用于高亮显示)
|
||||||
|
if (item.originalPath) {
|
||||||
|
pathToKeyMap.set(item.originalPath, item.key as string);
|
||||||
|
}
|
||||||
|
(menuItem as MenuItemWithRoute).routeName = item.routeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return menuItem;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清空之前的映射
|
||||||
|
menuRouteMap.clear();
|
||||||
|
pathToKeyMap.clear();
|
||||||
|
const result = convertToMenuOptions(tree);
|
||||||
|
|
||||||
|
// 菜单生成后,重新设置当前选中的菜单项
|
||||||
|
nextTick(() => {
|
||||||
|
const currentPath = router.currentRoute.value.path;
|
||||||
|
const menuKey = pathToKeyMap.get(currentPath);
|
||||||
|
if (menuKey) {
|
||||||
|
selectedKey.value = menuKey;
|
||||||
|
} else {
|
||||||
|
const pathWithoutSlash = currentPath.replace(/^\//, '');
|
||||||
|
selectedKey.value = pathWithoutSlash;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 当前选中的菜单项
|
||||||
|
const selectedKey = ref<string>();
|
||||||
|
|
||||||
|
// 存储菜单项与路由名称的映射
|
||||||
|
const menuRouteMap = new Map<string, string>();
|
||||||
|
|
||||||
|
// 存储路由路径与菜单 key 的映射(用于高亮显示)
|
||||||
|
const pathToKeyMap = new Map<string, string>();
|
||||||
|
|
||||||
|
// 处理菜单点击
|
||||||
|
const handleMenuSelect = (key: string, item: MenuOption) => {
|
||||||
|
const routeName = menuRouteMap.get(key) || (item as MenuItemWithRoute).routeName;
|
||||||
|
if (routeName) {
|
||||||
|
router.push({ name: routeName as never });
|
||||||
|
|
||||||
|
// 移动端点击菜单项后自动收起侧边栏
|
||||||
|
if (isMobile.value) {
|
||||||
|
drawerVisible.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 监听路由变化,更新选中的菜单项
|
||||||
|
watch(
|
||||||
|
() => router.currentRoute.value.path,
|
||||||
|
(newPath) => {
|
||||||
|
// 使用路径到 key 的映射来找到对应的菜单项
|
||||||
|
const menuKey = pathToKeyMap.get(newPath);
|
||||||
|
if (menuKey) {
|
||||||
|
selectedKey.value = menuKey;
|
||||||
|
} else {
|
||||||
|
// 如果没有找到精确匹配,尝试去掉前面的 / 再匹配
|
||||||
|
const pathWithoutSlash = newPath.replace(/^\//, '');
|
||||||
|
selectedKey.value = pathWithoutSlash;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true },
|
||||||
|
);
|
||||||
|
|
||||||
|
// 切换侧边栏状态
|
||||||
|
const toggleSidebar = () => {
|
||||||
|
if (isMobile.value) {
|
||||||
|
// 移动端使用抽屉模式
|
||||||
|
drawerVisible.value = !drawerVisible.value;
|
||||||
|
} else {
|
||||||
|
// 桌面端使用折叠模式
|
||||||
|
collapsed.value = !collapsed.value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<n-layout :has-sider="!isMobile">
|
||||||
|
<!-- 移动端抽屉 -->
|
||||||
|
<n-drawer
|
||||||
|
v-if="isMobile"
|
||||||
|
v-model:show="drawerVisible"
|
||||||
|
:width="280"
|
||||||
|
placement="left"
|
||||||
|
:trap-focus="false"
|
||||||
|
:block-scroll="false"
|
||||||
|
>
|
||||||
|
<n-drawer-content title="菜单" :native-scrollbar="false">
|
||||||
|
<n-menu :options="menuOptions" :value="selectedKey" @update:value="handleMenuSelect" />
|
||||||
|
</n-drawer-content>
|
||||||
|
</n-drawer>
|
||||||
|
|
||||||
|
<!-- 桌面端侧边栏 -->
|
||||||
|
<n-layout-sider
|
||||||
|
v-if="!isMobile"
|
||||||
|
:collapsed="collapsed"
|
||||||
|
:native-scrollbar="false"
|
||||||
|
bordered
|
||||||
|
collapse-mode="width"
|
||||||
|
:collapsed-width="64"
|
||||||
|
:width="240"
|
||||||
|
show-trigger
|
||||||
|
@collapse="collapsed = true"
|
||||||
|
@expand="collapsed = false"
|
||||||
|
>
|
||||||
|
<n-menu
|
||||||
|
:collapsed="collapsed"
|
||||||
|
:collapsed-width="64"
|
||||||
|
:collapsed-icon-size="22"
|
||||||
|
:options="menuOptions"
|
||||||
|
:value="selectedKey"
|
||||||
|
@update:value="handleMenuSelect"
|
||||||
|
/>
|
||||||
|
</n-layout-sider>
|
||||||
|
|
||||||
|
<n-layout>
|
||||||
|
<n-layout-header
|
||||||
|
bordered
|
||||||
|
:style="{
|
||||||
|
height: '64px',
|
||||||
|
padding: isMobile ? '0 16px' : '0 24px',
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<n-button
|
||||||
|
quaternary
|
||||||
|
@click="toggleSidebar"
|
||||||
|
:style="{
|
||||||
|
marginRight: isMobile ? '8px' : '12px',
|
||||||
|
padding: isMobile ? '8px' : '6px',
|
||||||
|
}"
|
||||||
|
:size="isMobile ? 'medium' : 'small'"
|
||||||
|
>
|
||||||
|
<template #icon>
|
||||||
|
<n-icon :size="isMobile ? 20 : 18">
|
||||||
|
<svg viewBox="0 0 24 24">
|
||||||
|
<path
|
||||||
|
v-if="!isMobile && collapsed"
|
||||||
|
fill="currentColor"
|
||||||
|
d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
v-else-if="!isMobile && !collapsed"
|
||||||
|
fill="currentColor"
|
||||||
|
d="M3 18h13v-2H3v2zm0-5h10v-2H3v2zm0-7v2h13V6H3zm18 9.59L17.42 12 21 8.41 19.59 7l-5 5 5 5L21 15.59z"
|
||||||
|
/>
|
||||||
|
<!-- 移动端始终显示菜单图标 -->
|
||||||
|
<path v-else fill="currentColor" d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" />
|
||||||
|
</svg>
|
||||||
|
</n-icon>
|
||||||
|
</template>
|
||||||
|
</n-button>
|
||||||
|
<span
|
||||||
|
:style="{
|
||||||
|
fontSize: isMobile ? '16px' : '18px',
|
||||||
|
fontWeight: '500',
|
||||||
|
overflow: 'hidden',
|
||||||
|
textOverflow: 'ellipsis',
|
||||||
|
whiteSpace: 'nowrap',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
Vue TS Example
|
||||||
|
</span>
|
||||||
|
</n-layout-header>
|
||||||
|
|
||||||
|
<n-layout-content
|
||||||
|
:content-style="{
|
||||||
|
padding: isMobile ? '16px' : '24px',
|
||||||
|
minHeight: 'calc(100vh - 64px - 72px)', // 减去头部和底部高度
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<router-view />
|
||||||
|
</n-layout-content>
|
||||||
|
|
||||||
|
<n-layout-footer
|
||||||
|
bordered
|
||||||
|
:style="{
|
||||||
|
padding: isMobile ? '16px' : '24px',
|
||||||
|
textAlign: 'center',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
:style="{
|
||||||
|
color: 'var(--n-text-color-disabled)',
|
||||||
|
fontSize: isMobile ? '12px' : '14px',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
© 2025 Vue TS Example. All rights reserved.
|
||||||
|
</span>
|
||||||
|
</n-layout-footer>
|
||||||
|
</n-layout>
|
||||||
|
</n-layout>
|
||||||
|
</template>
|
@ -66,7 +66,8 @@ export function Plugins() {
|
|||||||
|
|
||||||
// https://github.com/dishait/vite-plugin-vue-meta-layouts
|
// https://github.com/dishait/vite-plugin-vue-meta-layouts
|
||||||
MetaLayouts({
|
MetaLayouts({
|
||||||
defaultLayout: 'sakai-vue/AppLayout',
|
// defaultLayout: 'sakai-vue/AppLayout',
|
||||||
|
defaultLayout: 'naive-ui/AppLayout',
|
||||||
skipTopLevelRouteLayout: false, // 打开修复 https://github.com/JohnCampionJr/vite-plugin-vue-layouts/issues/134,默认为 false 关闭
|
skipTopLevelRouteLayout: false, // 打开修复 https://github.com/JohnCampionJr/vite-plugin-vue-layouts/issues/134,默认为 false 关闭
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user