@zendir/ui 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +640 -631
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/index.js +17 -221
  5. package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
  6. package/dist/react/3d/CesiumCaptureSource.js +364 -283
  7. package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
  8. package/dist/react/3d/ZenSpace3D.d.ts +2 -3
  9. package/dist/react/3d/ZenSpace3D.js +1681 -1237
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -1
  11. package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
  12. package/dist/react/3d/ZenSpace3DCesium.js +513 -560
  13. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
  14. package/dist/react/3d/ZenSpace3DShaders.js +61 -66
  15. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
  16. package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
  17. package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
  18. package/dist/react/3d/ZenSpace3DUtils.js +37 -24
  19. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
  20. package/dist/react/3d/capturePngAnalysis.js +42 -36
  21. package/dist/react/3d/capturePngAnalysis.js.map +1 -1
  22. package/dist/react/3d/index.d.ts +3 -3
  23. package/dist/react/3d/index.js +5 -53
  24. package/dist/react/3d/threeLoader.d.ts +1 -1
  25. package/dist/react/3d/threeLoader.js +23 -18
  26. package/dist/react/3d/threeLoader.js.map +1 -1
  27. package/dist/react/astro/ClassificationBanner.d.ts +2 -3
  28. package/dist/react/astro/ClassificationBanner.js +95 -79
  29. package/dist/react/astro/ClassificationBanner.js.map +1 -1
  30. package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
  31. package/dist/react/astro/GlobalStatusBar.js +157 -163
  32. package/dist/react/astro/GlobalStatusBar.js.map +1 -1
  33. package/dist/react/astro/MissionClock.d.ts +7 -8
  34. package/dist/react/astro/MissionClock.js +377 -400
  35. package/dist/react/astro/MissionClock.js.map +1 -1
  36. package/dist/react/astro/MonitoringIcon.d.ts +1 -2
  37. package/dist/react/astro/MonitoringIcon.js +422 -358
  38. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  39. package/dist/react/astro/Notification.d.ts +1 -2
  40. package/dist/react/astro/Notification.js +229 -126
  41. package/dist/react/astro/Notification.js.map +1 -1
  42. package/dist/react/astro/Progress.d.ts +0 -1
  43. package/dist/react/astro/Progress.js +199 -141
  44. package/dist/react/astro/Progress.js.map +1 -1
  45. package/dist/react/astro/SimulationControls.d.ts +3 -4
  46. package/dist/react/astro/SimulationControls.js +596 -650
  47. package/dist/react/astro/SimulationControls.js.map +1 -1
  48. package/dist/react/astro/StatusIndicator.d.ts +0 -1
  49. package/dist/react/astro/StatusIndicator.js +236 -170
  50. package/dist/react/astro/StatusIndicator.js.map +1 -1
  51. package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
  52. package/dist/react/astro/UnifiedTimeline.js +2345 -2392
  53. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  54. package/dist/react/astro/index.d.ts +5 -5
  55. package/dist/react/astro/index.js +1 -25
  56. package/dist/react/cards/AccessCard.d.ts +0 -1
  57. package/dist/react/cards/AccessCard.js +471 -405
  58. package/dist/react/cards/AccessCard.js.map +1 -1
  59. package/dist/react/cards/OrbitCard.d.ts +0 -1
  60. package/dist/react/cards/OrbitCard.js +487 -364
  61. package/dist/react/cards/OrbitCard.js.map +1 -1
  62. package/dist/react/cards/SpacecraftCard.d.ts +0 -1
  63. package/dist/react/cards/SpacecraftCard.js +813 -925
  64. package/dist/react/cards/SpacecraftCard.js.map +1 -1
  65. package/dist/react/cards/TelemetryCard.d.ts +0 -1
  66. package/dist/react/cards/TelemetryCard.js +1055 -732
  67. package/dist/react/cards/TelemetryCard.js.map +1 -1
  68. package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
  69. package/dist/react/cards/TelemetryStreamCard.js +323 -297
  70. package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
  71. package/dist/react/cards/index.d.ts +1 -1
  72. package/dist/react/cards/index.js +1 -8
  73. package/dist/react/charts/GroundTrackMap.d.ts +6 -7
  74. package/dist/react/charts/GroundTrackMap.js +1377 -1256
  75. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  76. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
  77. package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
  78. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
  79. package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
  80. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
  81. package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
  82. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
  83. package/dist/react/charts/index.d.ts +1 -1
  84. package/dist/react/charts/index.js +7 -100
  85. package/dist/react/charts/unified/AstroChart.d.ts +1 -2
  86. package/dist/react/charts/unified/AstroChart.js +1331 -1411
  87. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  88. package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
  89. package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
  90. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
  91. package/dist/react/charts/unified/domain.d.ts +12 -13
  92. package/dist/react/charts/unified/domain.js +3999 -3145
  93. package/dist/react/charts/unified/domain.js.map +1 -1
  94. package/dist/react/charts/unified/generators.d.ts +3 -4
  95. package/dist/react/charts/unified/generators.js +561 -498
  96. package/dist/react/charts/unified/generators.js.map +1 -1
  97. package/dist/react/charts/unified/index.d.ts +1 -1
  98. package/dist/react/charts/unified/presets.d.ts +14 -15
  99. package/dist/react/charts/unified/presets.js +857 -994
  100. package/dist/react/charts/unified/presets.js.map +1 -1
  101. package/dist/react/charts/unified/sync.d.ts +2 -3
  102. package/dist/react/charts/unified/sync.js +229 -195
  103. package/dist/react/charts/unified/sync.js.map +1 -1
  104. package/dist/react/charts/unified/theme.d.ts +11 -12
  105. package/dist/react/charts/unified/theme.js +606 -642
  106. package/dist/react/charts/unified/theme.js.map +1 -1
  107. package/dist/react/charts/unified/types.d.ts +32 -33
  108. package/dist/react/charts/unified/useChartStream.d.ts +1 -2
  109. package/dist/react/charts/unified/useChartStream.js +203 -216
  110. package/dist/react/charts/unified/useChartStream.js.map +1 -1
  111. package/dist/react/chatgpt/AppCard.d.ts +1 -2
  112. package/dist/react/chatgpt/index.d.ts +7 -7
  113. package/dist/react/chatgpt/index.js +160 -139
  114. package/dist/react/chatgpt/index.js.map +1 -1
  115. package/dist/react/context/CategoryContext.d.ts +0 -1
  116. package/dist/react/context/CategoryContext.js +78 -29
  117. package/dist/react/context/CategoryContext.js.map +1 -1
  118. package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
  119. package/dist/react/context/DisplaySettingsContext.js +205 -156
  120. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  121. package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
  122. package/dist/react/context/SpatialSelectionContext.js +36 -7
  123. package/dist/react/context/SpatialSelectionContext.js.map +1 -1
  124. package/dist/react/core/data/DataTable.d.ts +3 -4
  125. package/dist/react/core/data/DataTable.js +473 -440
  126. package/dist/react/core/data/DataTable.js.map +1 -1
  127. package/dist/react/core/data/DataValue.d.ts +4 -5
  128. package/dist/react/core/data/DataValue.js +605 -538
  129. package/dist/react/core/data/DataValue.js.map +1 -1
  130. package/dist/react/core/data/propertyConfig.d.ts +1 -2
  131. package/dist/react/core/data/propertyConfig.js +446 -382
  132. package/dist/react/core/data/propertyConfig.js.map +1 -1
  133. package/dist/react/core/display/AstroIcon.d.ts +4 -5
  134. package/dist/react/core/display/AstroIcon.js +339 -429
  135. package/dist/react/core/display/AstroIcon.js.map +1 -1
  136. package/dist/react/core/display/Badge.d.ts +2 -3
  137. package/dist/react/core/display/Badge.js +131 -131
  138. package/dist/react/core/display/Badge.js.map +1 -1
  139. package/dist/react/core/display/CardHeader.d.ts +0 -1
  140. package/dist/react/core/display/CardHeader.js +398 -311
  141. package/dist/react/core/display/CardHeader.js.map +1 -1
  142. package/dist/react/core/display/Container.d.ts +2 -3
  143. package/dist/react/core/display/Container.js +640 -668
  144. package/dist/react/core/display/Container.js.map +1 -1
  145. package/dist/react/core/display/CopyButton.d.ts +1 -2
  146. package/dist/react/core/display/CopyButton.js +158 -101
  147. package/dist/react/core/display/CopyButton.js.map +1 -1
  148. package/dist/react/core/display/GlassCard.d.ts +3 -4
  149. package/dist/react/core/display/GlassCard.js +416 -369
  150. package/dist/react/core/display/GlassCard.js.map +1 -1
  151. package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
  152. package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
  153. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
  154. package/dist/react/core/display/Icon.d.ts +2 -3
  155. package/dist/react/core/display/Icon.js +172 -143
  156. package/dist/react/core/display/Icon.js.map +1 -1
  157. package/dist/react/core/display/Typography.d.ts +24 -25
  158. package/dist/react/core/display/Typography.js +360 -178
  159. package/dist/react/core/display/Typography.js.map +1 -1
  160. package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
  161. package/dist/react/core/feedback/ConfirmDialog.js +343 -304
  162. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
  163. package/dist/react/core/feedback/Dialog.d.ts +2 -3
  164. package/dist/react/core/feedback/Dialog.js +189 -197
  165. package/dist/react/core/feedback/Dialog.js.map +1 -1
  166. package/dist/react/core/feedback/Toast.d.ts +2 -3
  167. package/dist/react/core/feedback/Toast.js +346 -207
  168. package/dist/react/core/feedback/Toast.js.map +1 -1
  169. package/dist/react/core/index.d.ts +26 -26
  170. package/dist/react/core/index.js +7 -119
  171. package/dist/react/core/inputs/Button.d.ts +2 -3
  172. package/dist/react/core/inputs/Button.js +281 -304
  173. package/dist/react/core/inputs/Button.js.map +1 -1
  174. package/dist/react/core/inputs/Checkbox.d.ts +2 -3
  175. package/dist/react/core/inputs/Checkbox.js +139 -127
  176. package/dist/react/core/inputs/Checkbox.js.map +1 -1
  177. package/dist/react/core/inputs/Input.d.ts +3 -4
  178. package/dist/react/core/inputs/Input.js +277 -285
  179. package/dist/react/core/inputs/Input.js.map +1 -1
  180. package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
  181. package/dist/react/core/inputs/LimitsBar.js +271 -196
  182. package/dist/react/core/inputs/LimitsBar.js.map +1 -1
  183. package/dist/react/core/inputs/NumberInput.d.ts +2 -3
  184. package/dist/react/core/inputs/NumberInput.js +531 -503
  185. package/dist/react/core/inputs/NumberInput.js.map +1 -1
  186. package/dist/react/core/inputs/PinInput.d.ts +2 -3
  187. package/dist/react/core/inputs/PinInput.js +224 -207
  188. package/dist/react/core/inputs/PinInput.js.map +1 -1
  189. package/dist/react/core/inputs/Select.d.ts +1 -2
  190. package/dist/react/core/inputs/Select.js +298 -299
  191. package/dist/react/core/inputs/Select.js.map +1 -1
  192. package/dist/react/core/inputs/Toggle.d.ts +2 -3
  193. package/dist/react/core/inputs/Toggle.js +142 -148
  194. package/dist/react/core/inputs/Toggle.js.map +1 -1
  195. package/dist/react/core/layout/Box.d.ts +3 -4
  196. package/dist/react/core/layout/Box.js +118 -122
  197. package/dist/react/core/layout/Box.js.map +1 -1
  198. package/dist/react/core/layout/Center.d.ts +0 -1
  199. package/dist/react/core/layout/Center.js +45 -32
  200. package/dist/react/core/layout/Center.js.map +1 -1
  201. package/dist/react/core/layout/Divider.d.ts +1 -2
  202. package/dist/react/core/layout/Divider.js +112 -106
  203. package/dist/react/core/layout/Divider.js.map +1 -1
  204. package/dist/react/core/layout/Flex.d.ts +4 -5
  205. package/dist/react/core/layout/Flex.js +120 -124
  206. package/dist/react/core/layout/Flex.js.map +1 -1
  207. package/dist/react/core/layout/Grid.d.ts +5 -6
  208. package/dist/react/core/layout/Grid.js +131 -138
  209. package/dist/react/core/layout/Grid.js.map +1 -1
  210. package/dist/react/core/layout/Spacer.d.ts +0 -1
  211. package/dist/react/core/layout/Spacer.js +36 -29
  212. package/dist/react/core/layout/Spacer.js.map +1 -1
  213. package/dist/react/core/layout/Stack.d.ts +4 -5
  214. package/dist/react/core/layout/Stack.js +127 -70
  215. package/dist/react/core/layout/Stack.js.map +1 -1
  216. package/dist/react/core/layout/responsive.d.ts +1 -2
  217. package/dist/react/core/layout/responsive.js +25 -19
  218. package/dist/react/core/layout/responsive.js.map +1 -1
  219. package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
  220. package/dist/react/core/layout/useBreakpoint.js +119 -66
  221. package/dist/react/core/layout/useBreakpoint.js.map +1 -1
  222. package/dist/react/core/navigation/AppBar.d.ts +1 -2
  223. package/dist/react/core/navigation/AppBar.js +827 -805
  224. package/dist/react/core/navigation/AppBar.js.map +1 -1
  225. package/dist/react/core/navigation/Pagination.d.ts +2 -3
  226. package/dist/react/core/navigation/Pagination.js +207 -187
  227. package/dist/react/core/navigation/Pagination.js.map +1 -1
  228. package/dist/react/core/navigation/SideNav.d.ts +11 -5
  229. package/dist/react/core/navigation/SideNav.js +857 -602
  230. package/dist/react/core/navigation/SideNav.js.map +1 -1
  231. package/dist/react/core/navigation/Tabs.d.ts +0 -1
  232. package/dist/react/core/navigation/Tabs.js +113 -119
  233. package/dist/react/core/navigation/Tabs.js.map +1 -1
  234. package/dist/react/core/overlays/Popover.d.ts +2 -3
  235. package/dist/react/core/overlays/Popover.js +303 -282
  236. package/dist/react/core/overlays/Popover.js.map +1 -1
  237. package/dist/react/core/overlays/SidePanel.d.ts +1 -2
  238. package/dist/react/core/overlays/SidePanel.js +217 -212
  239. package/dist/react/core/overlays/SidePanel.js.map +1 -1
  240. package/dist/react/core/overlays/Tooltip.d.ts +1 -2
  241. package/dist/react/core/overlays/Tooltip.js +170 -176
  242. package/dist/react/core/overlays/Tooltip.js.map +1 -1
  243. package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
  244. package/dist/react/core/widgets/ActivityPlanner.js +855 -517
  245. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
  246. package/dist/react/core/widgets/Capture.d.ts +2 -3
  247. package/dist/react/core/widgets/Capture.js +965 -779
  248. package/dist/react/core/widgets/Capture.js.map +1 -1
  249. package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
  250. package/dist/react/core/widgets/ChatPanel.js +1734 -1034
  251. package/dist/react/core/widgets/ChatPanel.js.map +1 -1
  252. package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
  253. package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
  254. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
  255. package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
  256. package/dist/react/core/widgets/CommandBuilder.js +624 -516
  257. package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
  258. package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
  259. package/dist/react/core/widgets/ConnectionForm.js +528 -492
  260. package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
  261. package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
  262. package/dist/react/core/widgets/FileExplorer.js +617 -505
  263. package/dist/react/core/widgets/FileExplorer.js.map +1 -1
  264. package/dist/react/core/widgets/HexViewer.d.ts +2 -3
  265. package/dist/react/core/widgets/HexViewer.js +1353 -1091
  266. package/dist/react/core/widgets/HexViewer.js.map +1 -1
  267. package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
  268. package/dist/react/core/widgets/ImageFrame.js +230 -193
  269. package/dist/react/core/widgets/ImageFrame.js.map +1 -1
  270. package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
  271. package/dist/react/core/widgets/ImageGallery.js +380 -314
  272. package/dist/react/core/widgets/ImageGallery.js.map +1 -1
  273. package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
  274. package/dist/react/core/widgets/ImagePanel.js +110 -101
  275. package/dist/react/core/widgets/ImagePanel.js.map +1 -1
  276. package/dist/react/core/widgets/LogViewer.d.ts +2 -3
  277. package/dist/react/core/widgets/LogViewer.js +711 -607
  278. package/dist/react/core/widgets/LogViewer.js.map +1 -1
  279. package/dist/react/core/widgets/MessageStream.d.ts +3 -4
  280. package/dist/react/core/widgets/MessageStream.js +514 -444
  281. package/dist/react/core/widgets/MessageStream.js.map +1 -1
  282. package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
  283. package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
  284. package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
  285. package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
  286. package/dist/react/core/widgets/PacketViewer.js +550 -421
  287. package/dist/react/core/widgets/PacketViewer.js.map +1 -1
  288. package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
  289. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
  290. package/dist/react/hooks/index.d.ts +5 -5
  291. package/dist/react/hooks/useAccessWindows.d.ts +0 -1
  292. package/dist/react/hooks/useCompactMode.d.ts +1 -1
  293. package/dist/react/hooks/useCompactMode.js +104 -58
  294. package/dist/react/hooks/useCompactMode.js.map +1 -1
  295. package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
  296. package/dist/react/hooks/useSimulationScene.d.ts +1 -2
  297. package/dist/react/hooks/useSimulationScene.js +481 -374
  298. package/dist/react/hooks/useSimulationScene.js.map +1 -1
  299. package/dist/react/index.d.ts +3 -3
  300. package/dist/react/panels/LayerControlPanel.d.ts +1 -2
  301. package/dist/react/panels/LayerControlPanel.js +223 -180
  302. package/dist/react/panels/LayerControlPanel.js.map +1 -1
  303. package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
  304. package/dist/react/panels/ObjectInventoryPanel.js +315 -250
  305. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
  306. package/dist/react/panels/index.d.ts +1 -1
  307. package/dist/react/panels/index.js +1 -6
  308. package/dist/react/shared/ErrorBoundary.d.ts +1 -2
  309. package/dist/react/shared/ErrorBoundary.js +170 -139
  310. package/dist/react/shared/ErrorBoundary.js.map +1 -1
  311. package/dist/react/shared/Skeleton.d.ts +1 -2
  312. package/dist/react/shared/Skeleton.js +300 -301
  313. package/dist/react/shared/Skeleton.js.map +1 -1
  314. package/dist/react/theme/ThemeProvider.d.ts +2 -321
  315. package/dist/react/theme/ThemeProvider.js +312 -939
  316. package/dist/react/theme/ThemeProvider.js.map +1 -1
  317. package/dist/react/theme/cardAccent.d.ts +1 -2
  318. package/dist/react/theme/cardAccent.js +196 -126
  319. package/dist/react/theme/cardAccent.js.map +1 -1
  320. package/dist/react/theme/config.d.ts +0 -1
  321. package/dist/react/theme/config.js +47 -25
  322. package/dist/react/theme/config.js.map +1 -1
  323. package/dist/react/theme/index.d.ts +2 -2
  324. package/dist/react/theme/index.js +1 -16
  325. package/dist/react/theme/types.d.ts +332 -0
  326. package/dist/react/theme/types.js +39 -0
  327. package/dist/react/theme/types.js.map +1 -0
  328. package/dist/react/types.d.ts +8 -8
  329. package/dist/react/types.js +147 -47
  330. package/dist/react/types.js.map +1 -1
  331. package/dist/react/utils/categoryPalette.d.ts +0 -1
  332. package/dist/react/utils/categoryPalette.js +91 -102
  333. package/dist/react/utils/categoryPalette.js.map +1 -1
  334. package/dist/react/utils/index.d.ts +5 -5
  335. package/dist/react/utils/index.js +457 -371
  336. package/dist/react/utils/index.js.map +1 -1
  337. package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
  338. package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
  339. package/dist/react/visualizations/NavBallCard.d.ts +0 -1
  340. package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
  341. package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
  342. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
  343. package/dist/react/visualizations/index.d.ts +3 -3
  344. package/dist/react.d.ts +2 -1
  345. package/dist/react.js +17 -221
  346. package/dist/shaders/atmosphere.frag.js +6 -5
  347. package/dist/shaders/atmosphere.frag.js.map +1 -1
  348. package/dist/shaders/atmosphere.vert.js +6 -5
  349. package/dist/shaders/atmosphere.vert.js.map +1 -1
  350. package/dist/shaders/stars.frag.js +6 -5
  351. package/dist/shaders/stars.frag.js.map +1 -1
  352. package/dist/shaders/stars.vert.js +6 -5
  353. package/dist/shaders/stars.vert.js.map +1 -1
  354. package/dist/style.css +217 -194
  355. package/dist/tokens/core.d.ts +159 -0
  356. package/dist/tokens/core.js +144 -0
  357. package/dist/tokens/core.js.map +1 -0
  358. package/dist/tokens/css-vars.d.ts +213 -2
  359. package/dist/tokens/css-vars.js +590 -227
  360. package/dist/tokens/css-vars.js.map +1 -1
  361. package/dist/tokens/index.d.ts +31 -228
  362. package/dist/tokens/index.js +281 -366
  363. package/dist/tokens/index.js.map +1 -1
  364. package/dist/tokens/palettes/astro.d.ts +129 -0
  365. package/dist/tokens/palettes/astro.js +112 -0
  366. package/dist/tokens/palettes/astro.js.map +1 -0
  367. package/dist/tokens/palettes/index.d.ts +288 -0
  368. package/dist/tokens/palettes/index.js +35 -0
  369. package/dist/tokens/palettes/index.js.map +1 -0
  370. package/dist/tokens/palettes/tailwind.d.ts +324 -0
  371. package/dist/tokens/palettes/tailwind.js +201 -0
  372. package/dist/tokens/palettes/tailwind.js.map +1 -0
  373. package/dist/tokens/palettes/zendir.d.ts +126 -0
  374. package/dist/tokens/palettes/zendir.js +92 -0
  375. package/dist/tokens/palettes/zendir.js.map +1 -0
  376. package/dist/tokens/themes.d.ts +30 -0
  377. package/dist/tokens/themes.js +704 -0
  378. package/dist/tokens/themes.js.map +1 -0
  379. package/dist/tokens/tokens.css +419 -41
  380. package/dist/types/index.d.ts +2 -2
  381. package/package.json +310 -313
  382. package/dist/index.js.map +0 -1
  383. package/dist/react/3d/index.js.map +0 -1
  384. package/dist/react/astro/index.js.map +0 -1
  385. package/dist/react/cards/index.js.map +0 -1
  386. package/dist/react/charts/index.js.map +0 -1
  387. package/dist/react/core/index.js.map +0 -1
  388. package/dist/react/panels/index.js.map +0 -1
  389. package/dist/react/theme/astro-tokens.d.ts +0 -153
  390. package/dist/react/theme/index.js.map +0 -1
  391. package/dist/react.js.map +0 -1
@@ -1,261 +1,326 @@
1
- import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { memo, useState, useCallback } from "react";
3
1
  import { useThemeTokens } from "../theme/ThemeProvider.js";
4
2
  import { useSpatialSelection } from "../context/SpatialSelectionContext.js";
3
+ import { memo, useCallback, useState } from "react";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/react/panels/ObjectInventoryPanel.tsx
6
+ /**
7
+ * @zendir/ui - ObjectInventoryPanel
8
+ *
9
+ * Themed list of simulation objects, grouped by `kind` (spacecraft /
10
+ * ground stations / celestial bodies). Pair with `useSimulationScene`:
11
+ *
12
+ * ```tsx
13
+ * const scene = useSimulationScene({ client, containerId, simulationId });
14
+ * <ObjectInventoryPanel
15
+ * objects={scene.objects}
16
+ * onSelect={(obj) => zenRef.current?.focusOn(obj.id, {
17
+ * zoom: recommendedFlyDistance(obj.kind),
18
+ * })}
19
+ * />
20
+ * ```
21
+ *
22
+ * The panel renders the toggle UI only — it has no opinion about WHAT
23
+ * happens on select. The consumer wires `onSelect` to its 3D viewer's
24
+ * imperative handle (or anywhere else — the panel is reusable in any
25
+ * dashboard or debug context).
26
+ */
27
+ /** Stable short-form of a GUID for inline display. */
5
28
  function shortId(id) {
6
- return id.length <= 8 ? id : id.slice(0, 8);
29
+ return id.length <= 8 ? id : id.slice(0, 8);
7
30
  }
8
- const DEFAULT_KIND_LABELS = {
9
- spacecraft: "Spacecraft",
10
- groundStation: "Ground Stations",
11
- celestialBody: "Celestial Bodies"
31
+ var DEFAULT_KIND_LABELS = {
32
+ spacecraft: "Spacecraft",
33
+ groundStation: "Ground Stations",
34
+ celestialBody: "Celestial Bodies"
12
35
  };
13
- const KIND_ORDER = ["spacecraft", "groundStation", "celestialBody"];
14
- const ObjectInventoryPanel = memo(function ObjectInventoryPanel2({
15
- objects,
16
- onSelect,
17
- selectedId,
18
- position = "top-left",
19
- offset,
20
- hidden = false,
21
- width = 330,
22
- maxHeight = "50vh",
23
- collapsible = true,
24
- defaultCollapsed = false,
25
- title,
26
- structureDiag,
27
- positionTickDiag,
28
- kindLabels,
29
- style
30
- }) {
31
- var _a;
32
- const tokens = useThemeTokens();
33
- const [collapsed, setCollapsed] = useState(defaultCollapsed);
34
- const ctx = useSpatialSelection();
35
- const effectiveSelectedId = selectedId !== void 0 ? selectedId : (ctx == null ? void 0 : ctx.selectedId) ?? null;
36
- const effectiveOnSelect = useCallback(
37
- (obj) => {
38
- onSelect == null ? void 0 : onSelect(obj);
39
- if (!onSelect) ctx == null ? void 0 : ctx.setSelectedId(obj.id);
40
- },
41
- [onSelect, ctx]
42
- );
43
- const labels = { ...DEFAULT_KIND_LABELS, ...kindLabels };
44
- const entries = Array.isArray(objects) ? objects : [];
45
- const offX = (offset == null ? void 0 : offset.x) ?? 16;
46
- const offY = (offset == null ? void 0 : offset.y) ?? 56;
47
- const anchor = (() => {
48
- switch (position) {
49
- case "top-right":
50
- return { top: offY, right: offX };
51
- case "bottom-left":
52
- return { bottom: offY, left: offX };
53
- case "bottom-right":
54
- return { bottom: offY, right: offX };
55
- case "top-left":
56
- default:
57
- return { top: offY, left: offX };
58
- }
59
- })();
60
- if (hidden) return null;
61
- const dim = { opacity: 0.55, fontSize: "0.9em" };
62
- return /* @__PURE__ */ jsxs(
63
- "div",
64
- {
65
- "data-testid": "zendir-object-inventory",
66
- style: {
67
- position: "absolute",
68
- zIndex: 2,
69
- width,
70
- maxHeight,
71
- overflow: "auto",
72
- padding: tokens.spacing.sm,
73
- borderRadius: ((_a = tokens.borderRadius) == null ? void 0 : _a.md) ?? 6,
74
- border: "1px solid rgba(255,255,255,0.12)",
75
- background: "rgba(0,0,0,0.72)",
76
- color: tokens.colors.text.primary,
77
- fontSize: tokens.typography.fontSize.xs,
78
- lineHeight: 1.35,
79
- ...anchor,
80
- ...style
81
- },
82
- children: [
83
- /* @__PURE__ */ jsx(
84
- PanelHeader,
85
- {
86
- title: title ?? `API Objects · ${entries.length}`,
87
- collapsible,
88
- collapsed,
89
- onToggle: () => setCollapsed((c) => !c)
90
- }
91
- ),
92
- !collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
93
- KIND_ORDER.map((kind) => {
94
- const items = entries.filter((o) => o.kind === kind);
95
- return /* @__PURE__ */ jsx(
96
- ObjectInventoryGroup,
97
- {
98
- title: `${labels[kind]} (${items.length})`,
99
- items,
100
- selectedId: effectiveSelectedId,
101
- onSelect: onSelect != null ? onSelect : ctx ? effectiveOnSelect : void 0
102
- },
103
- kind
104
- );
105
- }),
106
- structureDiag !== void 0 && /* @__PURE__ */ jsx(StructureDiagBlock, { diag: structureDiag, dim }),
107
- positionTickDiag !== void 0 && /* @__PURE__ */ jsx(PositionTickDiagBlock, { diag: positionTickDiag, dim })
108
- ] })
109
- ]
110
- }
111
- );
36
+ var KIND_ORDER = [
37
+ "spacecraft",
38
+ "groundStation",
39
+ "celestialBody"
40
+ ];
41
+ var ObjectInventoryPanel = memo(function ObjectInventoryPanel({ objects, onSelect, selectedId, position = "top-left", offset, hidden = false, width = 330, maxHeight = "50vh", collapsible = true, defaultCollapsed = false, title, structureDiag, positionTickDiag, kindLabels, style }) {
42
+ const tokens = useThemeTokens();
43
+ const [collapsed, setCollapsed] = useState(defaultCollapsed);
44
+ const ctx = useSpatialSelection();
45
+ const effectiveSelectedId = selectedId !== void 0 ? selectedId : ctx?.selectedId ?? null;
46
+ const effectiveOnSelect = useCallback((obj) => {
47
+ onSelect?.(obj);
48
+ if (!onSelect) ctx?.setSelectedId(obj.id);
49
+ }, [onSelect, ctx]);
50
+ const labels = {
51
+ ...DEFAULT_KIND_LABELS,
52
+ ...kindLabels
53
+ };
54
+ const entries = Array.isArray(objects) ? objects : [];
55
+ const offX = offset?.x ?? 16;
56
+ const offY = offset?.y ?? 56;
57
+ const anchor = (() => {
58
+ switch (position) {
59
+ case "top-right": return {
60
+ top: offY,
61
+ right: offX
62
+ };
63
+ case "bottom-left": return {
64
+ bottom: offY,
65
+ left: offX
66
+ };
67
+ case "bottom-right": return {
68
+ bottom: offY,
69
+ right: offX
70
+ };
71
+ default: return {
72
+ top: offY,
73
+ left: offX
74
+ };
75
+ }
76
+ })();
77
+ if (hidden) return null;
78
+ const dim = {
79
+ opacity: .55,
80
+ fontSize: "0.9em"
81
+ };
82
+ return /* @__PURE__ */ jsxs("div", {
83
+ "data-testid": "zendir-object-inventory",
84
+ style: {
85
+ position: "absolute",
86
+ zIndex: 2,
87
+ width,
88
+ maxHeight,
89
+ overflow: "auto",
90
+ padding: tokens.spacing.sm,
91
+ borderRadius: tokens.borderRadius?.md ?? 6,
92
+ border: "1px solid rgba(255,255,255,0.12)",
93
+ background: "rgba(0,0,0,0.72)",
94
+ color: tokens.colors.text.primary,
95
+ fontSize: tokens.typography.fontSize.xs,
96
+ lineHeight: 1.35,
97
+ ...anchor,
98
+ ...style
99
+ },
100
+ children: [/* @__PURE__ */ jsx(PanelHeader, {
101
+ title: title ?? `API Objects · ${entries.length}`,
102
+ collapsible,
103
+ collapsed,
104
+ onToggle: () => setCollapsed((c) => !c)
105
+ }), !collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
106
+ KIND_ORDER.map((kind) => {
107
+ const items = entries.filter((o) => o.kind === kind);
108
+ return /* @__PURE__ */ jsx(ObjectInventoryGroup, {
109
+ title: `${labels[kind]} (${items.length})`,
110
+ items,
111
+ selectedId: effectiveSelectedId,
112
+ onSelect: onSelect != null ? onSelect : ctx ? effectiveOnSelect : void 0
113
+ }, kind);
114
+ }),
115
+ structureDiag !== void 0 && /* @__PURE__ */ jsx(StructureDiagBlock, {
116
+ diag: structureDiag,
117
+ dim
118
+ }),
119
+ positionTickDiag !== void 0 && /* @__PURE__ */ jsx(PositionTickDiagBlock, {
120
+ diag: positionTickDiag,
121
+ dim
122
+ })
123
+ ] })]
124
+ });
112
125
  });
113
- const PanelHeader = ({
114
- title,
115
- collapsible,
116
- collapsed,
117
- onToggle
118
- }) => {
119
- if (!collapsible) {
120
- return /* @__PURE__ */ jsx("div", { style: { marginBottom: 6, fontWeight: 600 }, children: title });
121
- }
122
- return /* @__PURE__ */ jsxs(
123
- "button",
124
- {
125
- type: "button",
126
- onClick: onToggle,
127
- "aria-expanded": !collapsed,
128
- style: {
129
- display: "flex",
130
- width: "100%",
131
- alignItems: "center",
132
- justifyContent: "space-between",
133
- marginBottom: 6,
134
- padding: 0,
135
- background: "none",
136
- border: "none",
137
- color: "inherit",
138
- font: "inherit",
139
- fontWeight: 600,
140
- cursor: "pointer",
141
- textAlign: "left"
142
- },
143
- children: [
144
- /* @__PURE__ */ jsx("span", { children: title }),
145
- /* @__PURE__ */ jsx("span", { "aria-hidden": true, style: { opacity: 0.7, fontSize: "0.85em" }, children: collapsed ? "▸" : "▾" })
146
- ]
147
- }
148
- );
126
+ var PanelHeader = ({ title, collapsible, collapsed, onToggle }) => {
127
+ if (!collapsible) return /* @__PURE__ */ jsx("div", {
128
+ style: {
129
+ marginBottom: 6,
130
+ fontWeight: 600
131
+ },
132
+ children: title
133
+ });
134
+ return /* @__PURE__ */ jsxs("button", {
135
+ type: "button",
136
+ onClick: onToggle,
137
+ "aria-expanded": !collapsed,
138
+ style: {
139
+ display: "flex",
140
+ width: "100%",
141
+ alignItems: "center",
142
+ justifyContent: "space-between",
143
+ marginBottom: 6,
144
+ padding: 0,
145
+ background: "none",
146
+ border: "none",
147
+ color: "inherit",
148
+ font: "inherit",
149
+ fontWeight: 600,
150
+ cursor: "pointer",
151
+ textAlign: "left"
152
+ },
153
+ children: [/* @__PURE__ */ jsx("span", { children: title }), /* @__PURE__ */ jsx("span", {
154
+ "aria-hidden": true,
155
+ style: {
156
+ opacity: .7,
157
+ fontSize: "0.85em"
158
+ },
159
+ children: collapsed ? "▸" : "▾"
160
+ })]
161
+ });
149
162
  };
150
- const ObjectInventoryGroup = ({
151
- title,
152
- items,
153
- selectedId,
154
- onSelect
155
- }) => /* @__PURE__ */ jsxs("div", { style: { marginBottom: 6 }, children: [
156
- /* @__PURE__ */ jsx("div", { style: { opacity: 0.85 }, children: title }),
157
- items.length === 0 ? /* @__PURE__ */ jsx("div", { style: { opacity: 0.6 }, children: "—" }) : items.map((item) => /* @__PURE__ */ jsx(
158
- ObjectRow,
159
- {
160
- object: item,
161
- selected: item.id === selectedId,
162
- onSelect
163
- },
164
- item.id
165
- ))
166
- ] });
167
- const ObjectRow = ({
168
- object,
169
- selected,
170
- onSelect
171
- }) => {
172
- const handleClick = useCallback(() => onSelect == null ? void 0 : onSelect(object), [onSelect, object]);
173
- const interactive = onSelect != null;
174
- return /* @__PURE__ */ jsxs(
175
- "div",
176
- {
177
- role: interactive ? "button" : void 0,
178
- tabIndex: interactive ? 0 : void 0,
179
- onClick: interactive ? handleClick : void 0,
180
- onKeyDown: interactive ? (e) => {
181
- if (e.key === "Enter" || e.key === " ") {
182
- e.preventDefault();
183
- handleClick();
184
- }
185
- } : void 0,
186
- style: {
187
- opacity: 0.95,
188
- padding: "1px 4px",
189
- borderRadius: 3,
190
- cursor: interactive ? "pointer" : "default",
191
- background: selected ? "rgba(255,255,255,0.12)" : "transparent"
192
- },
193
- children: [
194
- object.name,
195
- " ",
196
- /* @__PURE__ */ jsxs("span", { style: { opacity: 0.6 }, children: [
197
- "(",
198
- shortId(object.id),
199
- ")"
200
- ] })
201
- ]
202
- }
203
- );
163
+ var ObjectInventoryGroup = ({ title, items, selectedId, onSelect }) => /* @__PURE__ */ jsxs("div", {
164
+ style: { marginBottom: 6 },
165
+ children: [/* @__PURE__ */ jsx("div", {
166
+ style: { opacity: .85 },
167
+ children: title
168
+ }), items.length === 0 ? /* @__PURE__ */ jsx("div", {
169
+ style: { opacity: .6 },
170
+ children: "—"
171
+ }) : items.map((item) => /* @__PURE__ */ jsx(ObjectRow, {
172
+ object: item,
173
+ selected: item.id === selectedId,
174
+ onSelect
175
+ }, item.id))]
176
+ });
177
+ var ObjectRow = ({ object, selected, onSelect }) => {
178
+ const handleClick = useCallback(() => onSelect?.(object), [onSelect, object]);
179
+ const interactive = onSelect != null;
180
+ return /* @__PURE__ */ jsxs("div", {
181
+ role: interactive ? "button" : void 0,
182
+ tabIndex: interactive ? 0 : void 0,
183
+ onClick: interactive ? handleClick : void 0,
184
+ onKeyDown: interactive ? (e) => {
185
+ if (e.key === "Enter" || e.key === " ") {
186
+ e.preventDefault();
187
+ handleClick();
188
+ }
189
+ } : void 0,
190
+ style: {
191
+ opacity: .95,
192
+ padding: "1px 4px",
193
+ borderRadius: 3,
194
+ cursor: interactive ? "pointer" : "default",
195
+ background: selected ? "rgba(255,255,255,0.12)" : "transparent"
196
+ },
197
+ children: [
198
+ object.name,
199
+ " ",
200
+ /* @__PURE__ */ jsxs("span", {
201
+ style: { opacity: .6 },
202
+ children: [
203
+ "(",
204
+ shortId(object.id),
205
+ ")"
206
+ ]
207
+ })
208
+ ]
209
+ });
204
210
  };
205
- const StructureDiagBlock = ({
206
- diag,
207
- dim
208
- }) => /* @__PURE__ */ jsx("div", { style: { marginTop: 8, borderTop: "1px solid rgba(255,255,255,0.1)", paddingTop: 6 }, children: diag ? /* @__PURE__ */ jsxs(Fragment, { children: [
209
- /* @__PURE__ */ jsx("div", { style: { ...dim, marginBottom: 2 }, children: "Raw structure keys:" }),
210
- /* @__PURE__ */ jsx("div", { style: dim, children: diag.topLevelKeys.join(", ") || "—" }),
211
- /* @__PURE__ */ jsxs("div", { style: { ...dim, marginTop: 2 }, children: [
212
- "Objects[]: ",
213
- diag.rawObjectCount < 0 ? "absent" : diag.rawObjectCount,
214
- " · ",
215
- "Systems[]: ",
216
- diag.rawSystemCount < 0 ? "absent" : diag.rawSystemCount
217
- ] })
218
- ] }) : /* @__PURE__ */ jsx("div", { style: { ...dim, marginTop: 4 }, children: "Waiting for structure…" }) });
219
- const PositionTickDiagBlock = ({
220
- diag,
221
- dim
222
- }) => {
223
- if (!diag) return null;
224
- return /* @__PURE__ */ jsxs("div", { style: { marginTop: 8, borderTop: "1px solid rgba(255,255,255,0.1)", paddingTop: 6 }, children: [
225
- /* @__PURE__ */ jsx("div", { style: { ...dim, marginBottom: 2 }, children: "Last position tick:" }),
226
- /* @__PURE__ */ jsxs("div", { style: dim, children: [
227
- "ok ",
228
- diag.parsedOk,
229
- "/",
230
- diag.requested,
231
- diag.parseFailed > 0 && ` · parseFail ${diag.parseFailed}`,
232
- diag.requestFailed > 0 && ` · reqFail ${diag.requestFailed}`
233
- ] }),
234
- /* @__PURE__ */ jsxs("div", { style: dim, children: [
235
- "asked for:",
236
- " ",
237
- diag.requestedProps ? diag.requestedProps.join(", ") : "getAllProperties (fallback)"
238
- ] }),
239
- diag.firstResponseKeys.length > 0 && /* @__PURE__ */ jsxs("div", { style: { ...dim, wordBreak: "break-all" }, children: [
240
- "got keys: ",
241
- diag.firstResponseKeys.slice(0, 12).join(", "),
242
- diag.firstResponseKeys.length > 12 && " …"
243
- ] }),
244
- diag.firstResponseSample && /* @__PURE__ */ jsx("div", { style: { ...dim, wordBreak: "break-all" }, children: diag.firstResponseSample })
245
- ] });
211
+ var StructureDiagBlock = ({ diag, dim }) => /* @__PURE__ */ jsx("div", {
212
+ style: {
213
+ marginTop: 8,
214
+ borderTop: "1px solid rgba(255,255,255,0.1)",
215
+ paddingTop: 6
216
+ },
217
+ children: diag ? /* @__PURE__ */ jsxs(Fragment, { children: [
218
+ /* @__PURE__ */ jsx("div", {
219
+ style: {
220
+ ...dim,
221
+ marginBottom: 2
222
+ },
223
+ children: "Raw structure keys:"
224
+ }),
225
+ /* @__PURE__ */ jsx("div", {
226
+ style: dim,
227
+ children: diag.topLevelKeys.join(", ") || "—"
228
+ }),
229
+ /* @__PURE__ */ jsxs("div", {
230
+ style: {
231
+ ...dim,
232
+ marginTop: 2
233
+ },
234
+ children: [
235
+ "Objects[]: ",
236
+ diag.rawObjectCount < 0 ? "absent" : diag.rawObjectCount,
237
+ " · ",
238
+ "Systems[]: ",
239
+ diag.rawSystemCount < 0 ? "absent" : diag.rawSystemCount
240
+ ]
241
+ })
242
+ ] }) : /* @__PURE__ */ jsx("div", {
243
+ style: {
244
+ ...dim,
245
+ marginTop: 4
246
+ },
247
+ children: "Waiting for structure…"
248
+ })
249
+ });
250
+ var PositionTickDiagBlock = ({ diag, dim }) => {
251
+ if (!diag) return null;
252
+ return /* @__PURE__ */ jsxs("div", {
253
+ style: {
254
+ marginTop: 8,
255
+ borderTop: "1px solid rgba(255,255,255,0.1)",
256
+ paddingTop: 6
257
+ },
258
+ children: [
259
+ /* @__PURE__ */ jsx("div", {
260
+ style: {
261
+ ...dim,
262
+ marginBottom: 2
263
+ },
264
+ children: "Last position tick:"
265
+ }),
266
+ /* @__PURE__ */ jsxs("div", {
267
+ style: dim,
268
+ children: [
269
+ "ok ",
270
+ diag.parsedOk,
271
+ "/",
272
+ diag.requested,
273
+ diag.parseFailed > 0 && ` · parseFail ${diag.parseFailed}`,
274
+ diag.requestFailed > 0 && ` · reqFail ${diag.requestFailed}`
275
+ ]
276
+ }),
277
+ /* @__PURE__ */ jsxs("div", {
278
+ style: dim,
279
+ children: [
280
+ "asked for:",
281
+ " ",
282
+ diag.requestedProps ? diag.requestedProps.join(", ") : "getAllProperties (fallback)"
283
+ ]
284
+ }),
285
+ diag.firstResponseKeys.length > 0 && /* @__PURE__ */ jsxs("div", {
286
+ style: {
287
+ ...dim,
288
+ wordBreak: "break-all"
289
+ },
290
+ children: [
291
+ "got keys: ",
292
+ diag.firstResponseKeys.slice(0, 12).join(", "),
293
+ diag.firstResponseKeys.length > 12 && " …"
294
+ ]
295
+ }),
296
+ diag.firstResponseSample && /* @__PURE__ */ jsx("div", {
297
+ style: {
298
+ ...dim,
299
+ wordBreak: "break-all"
300
+ },
301
+ children: diag.firstResponseSample
302
+ })
303
+ ]
304
+ });
246
305
  };
306
+ /**
307
+ * Sensible default fly-to distance per object kind, for use with
308
+ * `<ZenSpace3D />`'s imperative `focusOn(id, { zoom })` handle.
309
+ *
310
+ * spacecraft: 2 000 000 m (≈ 2 000 km — close orbital view)
311
+ * groundStation: 1 500 000 m (≈ 1 500 km — high-altitude angled view)
312
+ * celestialBody: 50 000 000 m (≈ 50 000 km — full-planet view)
313
+ *
314
+ * Override per call if the consumer wants tighter/looser framing.
315
+ */
247
316
  function recommendedFlyDistance(kind) {
248
- switch (kind) {
249
- case "spacecraft":
250
- return 2e6;
251
- case "groundStation":
252
- return 15e5;
253
- case "celestialBody":
254
- return 5e7;
255
- }
317
+ switch (kind) {
318
+ case "spacecraft": return 2e6;
319
+ case "groundStation": return 15e5;
320
+ case "celestialBody": return 5e7;
321
+ }
256
322
  }
257
- export {
258
- ObjectInventoryPanel,
259
- recommendedFlyDistance
260
- };
261
- //# sourceMappingURL=ObjectInventoryPanel.js.map
323
+ //#endregion
324
+ export { ObjectInventoryPanel, ObjectInventoryPanel as default, recommendedFlyDistance };
325
+
326
+ //# sourceMappingURL=ObjectInventoryPanel.js.map