refactor(shadcn): 优化 Button 组件并更新相关依赖

- 更新 @types/node 版本至 24.3.0
- 更新 @vue/tsconfig 版本至 0.8.0
- 更新 eslint-plugin-oxlint 和 oxlint 版本至 1.12.0
- 优化 HCesiumManager 中的卫星实体创建逻辑
- 修复 ShadcnVue 页面中的 Button 组件用法
- 优化 Button 组件的 Props 类型定义
- 更新 buttonVariants 的导入路径
This commit is contained in:
严浩
2025-08-18 10:18:03 +08:00
parent 3b25b0dc7b
commit 46e5fd3e49
7 changed files with 123 additions and 107 deletions

View File

@@ -109,7 +109,7 @@
"@tsconfig/node22": "^22.0.2",
"@types/archiver": "^6.0.3",
"@types/mockjs": "^1.0.10",
"@types/node": "^24.2.1",
"@types/node": "^24.3.0",
"@types/nprogress": "^0.2.3",
"@types/plotly.js-dist-min": "^2.3.4",
"@types/three": "^0.179.0",
@@ -120,13 +120,13 @@
"@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.6.0",
"@vue/test-utils": "^2.4.6",
"@vue/tsconfig": "^0.7.0",
"@vue/tsconfig": "^0.8.0",
"archiver": "^7.0.1",
"depcheck": "^1.4.7",
"eruda": "^3.4.3",
"eslint": "^9.33.0",
"eslint-plugin-import-x": "^4.16.1",
"eslint-plugin-oxlint": "^1.11.2",
"eslint-plugin-oxlint": "^1.12.0",
"eslint-plugin-perfectionist": "^4.15.0",
"eslint-plugin-unicorn": "^60.0.0",
"eslint-plugin-vue": "^10.4.0",
@@ -136,7 +136,7 @@
"mockjs": "^1.1.0",
"naive-ui": "^2.42.0",
"npm-run-all2": "^8.0.4",
"oxlint": "^1.11.2",
"oxlint": "^1.12.0",
"prettier": "3.6.2",
"spritesmith": "^3.5.1",
"typescript": "~5.9.2",

125
pnpm-lock.yaml generated
View File

@@ -201,7 +201,7 @@ importers:
specifier: ^1.0.10
version: 1.0.10
'@types/node':
specifier: ^24.2.1
specifier: ^24.3.0
version: 24.3.0
'@types/nprogress':
specifier: ^0.2.3
@@ -234,8 +234,8 @@ importers:
specifier: ^2.4.6
version: 2.4.6
'@vue/tsconfig':
specifier: ^0.7.0
version: 0.7.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))
specifier: ^0.8.0
version: 0.8.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))
archiver:
specifier: ^7.0.1
version: 7.0.1
@@ -252,7 +252,7 @@ importers:
specifier: ^4.16.1
version: 4.16.1(@typescript-eslint/utils@8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))
eslint-plugin-oxlint:
specifier: ^1.11.2
specifier: ^1.12.0
version: 1.12.0
eslint-plugin-perfectionist:
specifier: ^4.15.0
@@ -282,7 +282,7 @@ importers:
specifier: ^8.0.4
version: 8.0.4
oxlint:
specifier: ^1.11.2
specifier: ^1.12.0
version: 1.12.0
prettier:
specifier: 3.6.2
@@ -1260,6 +1260,9 @@ packages:
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -1514,8 +1517,8 @@ packages:
'@protobufjs/utf8@1.1.0':
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
'@quansync/fs@0.1.4':
resolution: {integrity: sha512-vy/41FCdnIalPTQCb2Wl0ic1caMdzGus4ktDp+gpZesQNydXcx8nhh8qB3qMPbGkictOTaXgXEUUfQEm8DQYoA==}
'@quansync/fs@0.1.5':
resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==}
'@rolldown/pluginutils@1.0.0-beta.29':
resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==}
@@ -2343,8 +2346,8 @@ packages:
'@vue/test-utils@2.4.6':
resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
'@vue/tsconfig@0.7.0':
resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==}
'@vue/tsconfig@0.8.0':
resolution: {integrity: sha512-HqJDMjxk9D3mbXAcO9IxqKPeKlVnRWvzyHtgY35L/VoLKubqn7zX80UeiD3jfS/gf+qS7ZlO5KmfXMUrsQtOeQ==}
peerDependencies:
typescript: 5.x
vue: ^3.4.0
@@ -2442,8 +2445,8 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
ansi-regex@6.1.0:
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
ansi-regex@6.2.0:
resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==}
engines: {node: '>=12'}
ansi-styles@4.3.0:
@@ -2523,8 +2526,8 @@ packages:
resolution: {integrity: sha512-1UWOyC50xI3QZkRuDj6PqDtpm1oHWtYs+NQGwqL/2R11eN3Q81PHAHPM0SWW3BNQm53UDwS//Jv8L4CCVLM1bQ==}
engines: {node: '>=16.14.0'}
ast-walker-scope@0.8.1:
resolution: {integrity: sha512-72XOdbzQCMKERvFrxAykatn2pu7osPNq/sNUzwcHdWzwPvOsNpPqkawfDXVvQbA2RT+ivtsMNjYdojTUZitt1A==}
ast-walker-scope@0.8.2:
resolution: {integrity: sha512-3pYeLyDZ6nJew9QeBhS4Nly02269Dkdk32+zdbbKmL6n4ZuaGorwwA+xx12xgOciA8BF1w9x+dlH7oUkFTW91w==}
engines: {node: '>=20.18.0'}
async-validator@4.2.5:
@@ -2623,8 +2626,8 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
cacheable@1.10.3:
resolution: {integrity: sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==}
cacheable@1.10.4:
resolution: {integrity: sha512-Gd7ccIUkZ9TE2odLQVS+PDjIvQCdJKUlLdJRVvZu0aipj07Qfx+XIej7hhDrKGGoIxV5m5fT/kOJNJPQhQneRg==}
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
@@ -2655,8 +2658,8 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
chalk@5.5.0:
resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==}
chalk@5.6.0:
resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
change-case@5.4.4:
@@ -3039,8 +3042,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
electron-to-chromium@1.5.202:
resolution: {integrity: sha512-NxbYjRmiHcHXV1Ws3fWUW+SLb62isauajk45LUJ/HgIOkUA7jLZu/X2Iif+X9FBNK8QkF9Zb4Q2mcwXCcY30mg==}
electron-to-chromium@1.5.203:
resolution: {integrity: sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
@@ -3360,8 +3363,8 @@ packages:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
flat-cache@6.1.12:
resolution: {integrity: sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==}
flat-cache@6.1.13:
resolution: {integrity: sha512-gmtS2PaUjSPa4zjObEIn4WWliKyZzYljgxODBfxugpK6q6HU9ClXzgCJ+nlcPKY9Bt090ypTOLIFWkV0jbKFjw==}
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
@@ -4517,8 +4520,8 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
protobufjs@7.5.3:
resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==}
protobufjs@7.5.4:
resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
engines: {node: '>=12.0.0'}
proxy-from-env@1.1.0:
@@ -4546,8 +4549,8 @@ packages:
resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
engines: {node: '>=0.6'}
quansync@0.2.10:
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
quansync@0.2.11:
resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -5291,8 +5294,8 @@ packages:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
unplugin@2.3.5:
resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==}
unplugin@2.3.6:
resolution: {integrity: sha512-+/MdXl8bLTXI2lJF22gUBeCFqZruEpL/oM9f8wxCuKh9+Mw9qeul3gTqgbKpMeOFlusCzc0s7x2Kax2xKW+FQg==}
engines: {node: '>=18.12.0'}
unrs-resolver@1.11.1:
@@ -5970,7 +5973,7 @@ snapshots:
mersenne-twister: 1.1.0
meshoptimizer: 0.24.0
pako: 2.1.0
protobufjs: 7.5.3
protobufjs: 7.5.4
rbush: 4.0.1
topojson-client: 3.1.0
urijs: 1.19.11
@@ -6019,7 +6022,7 @@ snapshots:
'@commitlint/format@19.8.1':
dependencies:
'@commitlint/types': 19.8.1
chalk: 5.5.0
chalk: 5.6.0
'@commitlint/is-ignored@19.8.1':
dependencies:
@@ -6039,7 +6042,7 @@ snapshots:
'@commitlint/execute-rule': 19.8.1
'@commitlint/resolve-extends': 19.8.1
'@commitlint/types': 19.8.1
chalk: 5.5.0
chalk: 5.6.0
cosmiconfig: 9.0.0(typescript@5.9.2)
cosmiconfig-typescript-loader: 6.1.0(@types/node@24.3.0)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2)
lodash.isplainobject: 4.0.6
@@ -6090,7 +6093,7 @@ snapshots:
'@commitlint/types@19.8.1':
dependencies:
'@types/conventional-commits-parser': 5.0.1
chalk: 5.5.0
chalk: 5.6.0
'@css-render/plugin-bem@0.15.14(css-render@0.15.14)':
dependencies:
@@ -6573,6 +6576,11 @@ snapshots:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.30
'@jridgewell/remapping@2.3.5':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.30
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/source-map@0.3.11':
@@ -6776,9 +6784,9 @@ snapshots:
'@protobufjs/utf8@1.1.0': {}
'@quansync/fs@0.1.4':
'@quansync/fs@0.1.5':
dependencies:
quansync: 0.2.10
quansync: 0.2.11
'@rolldown/pluginutils@1.0.0-beta.29': {}
@@ -7773,7 +7781,7 @@ snapshots:
js-beautify: 1.15.4
vue-component-type-helpers: 2.2.12
'@vue/tsconfig@0.7.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))':
'@vue/tsconfig@0.8.0(typescript@5.9.2)(vue@3.5.18(typescript@5.9.2))':
optionalDependencies:
typescript: 5.9.2
vue: 3.5.18(typescript@5.9.2)
@@ -7881,7 +7889,7 @@ snapshots:
ansi-regex@5.0.1: {}
ansi-regex@6.1.0: {}
ansi-regex@6.2.0: {}
ansi-styles@4.3.0:
dependencies:
@@ -7983,7 +7991,7 @@ snapshots:
'@babel/parser': 7.28.3
ast-kit: 1.4.3
ast-walker-scope@0.8.1:
ast-walker-scope@0.8.2:
dependencies:
'@babel/parser': 7.28.3
ast-kit: 2.1.2
@@ -8049,7 +8057,7 @@ snapshots:
browserslist@4.25.2:
dependencies:
caniuse-lite: 1.0.30001735
electron-to-chromium: 1.5.202
electron-to-chromium: 1.5.203
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.25.2)
@@ -8079,7 +8087,7 @@ snapshots:
cac@6.7.14: {}
cacheable@1.10.3:
cacheable@1.10.4:
dependencies:
hookified: 1.11.0
keyv: 5.5.0
@@ -8109,7 +8117,7 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
chalk@5.5.0: {}
chalk@5.6.0: {}
change-case@5.4.4: {}
@@ -8498,7 +8506,7 @@ snapshots:
minimatch: 9.0.1
semver: 7.7.2
electron-to-chromium@1.5.202: {}
electron-to-chromium@1.5.203: {}
emoji-regex@10.4.0: {}
@@ -8890,9 +8898,9 @@ snapshots:
flatted: 3.3.3
keyv: 4.5.4
flat-cache@6.1.12:
flat-cache@6.1.13:
dependencies:
cacheable: 1.10.3
cacheable: 1.10.4
flatted: 3.3.3
hookified: 1.11.0
@@ -9385,7 +9393,7 @@ snapshots:
lint-staged@16.1.5:
dependencies:
chalk: 5.5.0
chalk: 5.6.0
commander: 14.0.0
debug: 4.4.1
lilconfig: 3.1.3
@@ -9416,7 +9424,7 @@ snapshots:
dependencies:
mlly: 1.7.4
pkg-types: 2.2.0
quansync: 0.2.10
quansync: 0.2.11
locate-path@6.0.0:
dependencies:
@@ -9992,7 +10000,7 @@ snapshots:
proto-list@1.2.4: {}
protobufjs@7.5.3:
protobufjs@7.5.4:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
@@ -10029,7 +10037,7 @@ snapshots:
qs@6.5.3: {}
quansync@0.2.10: {}
quansync@0.2.11: {}
queue-microtask@1.2.3: {}
@@ -10495,7 +10503,7 @@ snapshots:
strip-ansi@7.1.0:
dependencies:
ansi-regex: 6.1.0
ansi-regex: 6.2.0
strip-bom-stream@1.0.0:
dependencies:
@@ -10666,10 +10674,10 @@ snapshots:
unconfig@7.3.2:
dependencies:
'@quansync/fs': 0.1.4
'@quansync/fs': 0.1.5
defu: 6.1.4
jiti: 2.5.1
quansync: 0.2.10
quansync: 0.2.11
undici-types@7.10.0: {}
@@ -10695,7 +10703,7 @@ snapshots:
scule: 1.3.0
strip-literal: 3.0.0
tinyglobby: 0.2.14
unplugin: 2.3.5
unplugin: 2.3.6
unplugin-utils: 0.2.5
uniq@1.0.1: {}
@@ -10753,7 +10761,7 @@ snapshots:
magic-string: 0.30.17
picomatch: 4.0.3
unimport: 5.2.0
unplugin: 2.3.5
unplugin: 2.3.6
unplugin-utils: 0.2.5
optionalDependencies:
'@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.9.2))
@@ -10771,7 +10779,7 @@ snapshots:
'@iconify/utils': 2.3.0
debug: 4.4.1
local-pkg: 1.1.1
unplugin: 2.3.5
unplugin: 2.3.6
optionalDependencies:
'@vue/compiler-sfc': 3.5.18
transitivePeerDependencies:
@@ -10790,7 +10798,7 @@ snapshots:
magic-string: 0.30.17
mlly: 1.7.4
tinyglobby: 0.2.14
unplugin: 2.3.5
unplugin: 2.3.6
unplugin-utils: 0.2.5
vue: 3.5.18(typescript@5.9.2)
optionalDependencies:
@@ -10860,7 +10868,7 @@ snapshots:
'@types/markdown-it': 14.1.2
markdown-it: 14.1.0
markdown-it-async: 2.2.0
unplugin: 2.3.5
unplugin: 2.3.6
unplugin-utils: 0.2.5
vite: 7.1.2(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.0)(sass-embedded@1.89.1)(terser@5.42.0)(yaml@2.8.1)
@@ -10869,7 +10877,7 @@ snapshots:
'@vue-macros/common': 3.0.0-beta.16(vue@3.5.18(typescript@5.9.2))
'@vue/compiler-sfc': 3.5.18
'@vue/language-core': 3.0.5(typescript@5.9.2)
ast-walker-scope: 0.8.1
ast-walker-scope: 0.8.2
chokidar: 4.0.3
json5: 2.2.3
local-pkg: 1.1.1
@@ -10880,7 +10888,7 @@ snapshots:
picomatch: 4.0.3
scule: 1.3.0
tinyglobby: 0.2.14
unplugin: 2.3.5
unplugin: 2.3.6
unplugin-utils: 0.2.5
yaml: 2.8.1
optionalDependencies:
@@ -10894,8 +10902,9 @@ snapshots:
acorn: 8.15.0
webpack-virtual-modules: 0.6.2
unplugin@2.3.5:
unplugin@2.3.6:
dependencies:
'@jridgewell/remapping': 2.3.5
acorn: 8.15.0
picomatch: 4.0.3
webpack-virtual-modules: 0.6.2
@@ -11112,7 +11121,7 @@ snapshots:
dependencies:
axios: 1.11.0
clean-css: 5.3.3
flat-cache: 6.1.12
flat-cache: 6.1.13
picocolors: 1.1.1
vite: 7.1.2(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.0)(sass-embedded@1.89.1)(terser@5.42.0)(yaml@2.8.1)
transitivePeerDependencies:

View File

@@ -6,9 +6,9 @@ import type { I卫星 } from './HCesiumManager.types';
import { type OrbitCalculationResult, SatelliteCalculator } from '../calculators/SatelliteCalculator';
interface ManagedSatelliteEntities {
coverageEntity?: Cesium.Entity;
coverageEntity?: Cesium.Entity | null;
mainEntity: Cesium.Entity;
orbitEntity?: Cesium.Entity;
orbitEntity?: Cesium.Entity | null;
}
export class HCesiumSatelliteManager {
@@ -108,8 +108,8 @@ export class HCesiumSatelliteManager {
// 存储实体引用
this.currentSatelliteEntities.set(id, {
mainEntity: addedMainEntity, // 存储实际添加成功的实体
orbitEntity: addedOrbitEntity ?? undefined,
coverageEntity: addedCoverageEntity ?? undefined,
orbitEntity: addedOrbitEntity,
coverageEntity: addedCoverageEntity,
});
}
@@ -124,21 +124,10 @@ export class HCesiumSatelliteManager {
options: I卫星,
): Cesium.Entity {
// 动态轨迹路径 (Path) - 注意:这与完整轨道线 (Polyline) 不同
const path: Cesium.PathGraphics.ConstructorOptions = {
resolution: 1,
material: new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.15,
color: randomBaseColor,
}),
width: 2,
leadTime: (options.orbitDurationSeconds ?? 3600 * 2) / 2, // 默认1小时
trailTime: (options.orbitDurationSeconds ?? 3600 * 2) / 2, // 默认1小时
};
return new Cesium.Entity({
const entityOptions: Cesium.Entity.ConstructorOptions = {
id,
name,
path: options.showPath ? path : undefined, // 根据 options.showPath 控制是否显示路径
position: sampledPositionProperty, // 使用计算好的位置属性
orientation: new Cesium.VelocityOrientationProperty(sampledPositionProperty),
point: {
@@ -157,7 +146,22 @@ export class HCesiumSatelliteManager {
fillColor: Cesium.Color.WHITE,
outlineColor: Cesium.Color.BLACK,
},
});
};
if (options.showPath) {
entityOptions.path = {
resolution: 1,
material: new Cesium.PolylineGlowMaterialProperty({
glowPower: 0.15,
color: randomBaseColor,
}),
width: 2,
leadTime: (options.orbitDurationSeconds ?? 3600 * 2) / 2, // 默认1小时
trailTime: (options.orbitDurationSeconds ?? 3600 * 2) / 2, // 默认1小时
};
}
return new Cesium.Entity(entityOptions);
}
/**

View File

@@ -8,7 +8,7 @@ const onClick = () => {
<template>
<div>
<ShadcnButton :onClick>ShadcnButton</ShadcnButton>
<ShadcnButton as="button" :onClick>ShadcnButton</ShadcnButton>
</div>
</template>

View File

@@ -1,24 +1,26 @@
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import type { PrimitiveProps } from "reka-ui"
import type { HTMLAttributes } from "vue"
import type { ButtonVariants } from "."
import { Primitive } from "reka-ui"
import { cn } from '@/shadcn/lib/utils'
import { Primitive, type PrimitiveProps } from 'reka-ui'
import { type ButtonVariants, buttonVariants } from '.'
import { buttonVariants } from "."
interface Props extends PrimitiveProps {
variant?: ButtonVariants['variant']
size?: ButtonVariants['size']
class?: HTMLAttributes['class']
variant?: ButtonVariants["variant"]
size?: ButtonVariants["size"]
class?: HTMLAttributes["class"]
}
const props = withDefaults(defineProps<Props>(), {
as: 'button',
as: "button",
})
</script>
<template>
<Primitive
:as="as"
:as-child="asChild"
:as="props.as"
:as-child="props.asChild"
:class="cn(buttonVariants({ variant, size }), props.class)"
>
<slot />

View File

@@ -1,33 +1,34 @@
import { cva, type VariantProps } from 'class-variance-authority'
import type { VariantProps } from "class-variance-authority"
import { cva } from "class-variance-authority"
export { default as Button } from './Button.vue'
export { default as Button } from "./Button.vue"
export const buttonVariants = cva(
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
{
variants: {
variant: {
default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
destructive:
'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
outline:
'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
secondary:
'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
ghost: 'hover:bg-accent hover:text-accent-foreground',
link: 'text-primary underline-offset-4 hover:underline',
"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
ghost: "hover:bg-accent hover:text-accent-foreground",
link: "text-primary underline-offset-4 hover:underline",
},
size: {
default: 'h-9 px-4 py-2',
xs: 'h-7 rounded px-2',
sm: 'h-8 rounded-md px-3 text-xs',
lg: 'h-10 rounded-md px-8',
icon: 'h-9 w-9',
default: "h-9 px-4 py-2",
xs: "h-7 rounded px-2",
sm: "h-8 rounded-md px-3 text-xs",
lg: "h-10 rounded-md px-8",
icon: "h-9 w-9",
},
},
defaultVariants: {
variant: 'default',
size: 'default',
variant: "default",
size: "default",
},
},
)

View File

@@ -4,8 +4,8 @@ import { cn } from '@/shadcn/lib/utils'
import { useVModel } from '@vueuse/core'
const props = defineProps<{
defaultValue?: string | number
modelValue?: string | number
defaultValue: string | number | undefined
modelValue: string | number | undefined
class?: HTMLAttributes['class']
}>()