@zendir/ui 0.5.0 → 0.6.1

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 +419 -386
  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 -571
  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 +5 -6
  229. package/dist/react/core/navigation/SideNav.js +855 -629
  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 +313 -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 +26 -3
  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 +533 -155
  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,71 +1,80 @@
1
+ //#region src/react/charts/groundTrackMapLeafletUtils.ts
2
+ /**
3
+ * Pure geometry helpers for GroundTrackMapLeaflet.
4
+ * Used for antimeridian splitting, geodesic circles, and world copies.
5
+ * Longitudes are normalized to [-180, 180] where required.
6
+ */
7
+ /** Normalize longitude to [-180, 180]. */
1
8
  function wrapLon(lon) {
2
- let l = lon;
3
- while (l > 180) l -= 360;
4
- while (l < -180) l += 360;
5
- return l;
9
+ let l = lon;
10
+ while (l > 180) l -= 360;
11
+ while (l < -180) l += 360;
12
+ return l;
6
13
  }
14
+ /** Normalize an array of [lat, lon] so all longitudes are in [-180, 180]. */
7
15
  function normalizeLatLngs(points) {
8
- return points.map(([lat, lon]) => [lat, wrapLon(lon)]);
16
+ return points.map(([lat, lon]) => [lat, wrapLon(lon)]);
9
17
  }
18
+ /**
19
+ * Split a polyline at the antimeridian (±180°).
20
+ * Input points should be normalized (wrapLon) so crossing is detected correctly.
21
+ * No segment will contain consecutive points with |dLon| > 180 (avoids vertical line at date line).
22
+ */
10
23
  function splitPolylineAtAntimeridian(points) {
11
- if (points.length < 2) return points.length ? [points] : [];
12
- const normalized = normalizeLatLngs(points);
13
- const segments = [];
14
- let current = [[...normalized[0]]];
15
- for (let i = 1; i < normalized.length; i++) {
16
- const prev = normalized[i - 1];
17
- const curr = [...normalized[i]];
18
- const dLon = curr[1] - prev[1];
19
- if (Math.abs(dLon) > 180) {
20
- const edgeLon = dLon > 0 ? -180 : 180;
21
- const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;
22
- const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);
23
- const latEdge = prev[0] + t * (curr[0] - prev[0]);
24
- current.push([latEdge, edgeLon]);
25
- segments.push(current);
26
- const otherEdge = edgeLon === 180 ? -180 : 180;
27
- current = [[latEdge, otherEdge], curr];
28
- } else {
29
- current.push(curr);
30
- }
31
- }
32
- segments.push(current);
33
- return segments;
24
+ if (points.length < 2) return points.length ? [points] : [];
25
+ const normalized = normalizeLatLngs(points);
26
+ const segments = [];
27
+ let current = [[...normalized[0]]];
28
+ for (let i = 1; i < normalized.length; i++) {
29
+ const prev = normalized[i - 1];
30
+ const curr = [...normalized[i]];
31
+ const dLon = curr[1] - prev[1];
32
+ if (Math.abs(dLon) > 180) {
33
+ const edgeLon = dLon > 0 ? -180 : 180;
34
+ const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;
35
+ const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);
36
+ const latEdge = prev[0] + t * (curr[0] - prev[0]);
37
+ current.push([latEdge, edgeLon]);
38
+ segments.push(current);
39
+ current = [[latEdge, edgeLon === 180 ? -180 : 180], curr];
40
+ } else current.push(curr);
41
+ }
42
+ segments.push(current);
43
+ return segments;
34
44
  }
45
+ /** Return each segment plus world copies at lon ± 360. */
35
46
  function segmentsWithWorldCopies(segments) {
36
- const out = [];
37
- for (const seg of segments) {
38
- out.push(seg);
39
- out.push(seg.map(([lat, lon]) => [lat, lon + 360]));
40
- out.push(seg.map(([lat, lon]) => [lat, lon - 360]));
41
- }
42
- return out;
47
+ const out = [];
48
+ for (const seg of segments) {
49
+ out.push(seg);
50
+ out.push(seg.map(([lat, lon]) => [lat, lon + 360]));
51
+ out.push(seg.map(([lat, lon]) => [lat, lon - 360]));
52
+ }
53
+ return out;
43
54
  }
55
+ /**
56
+ * Geodesic circle with continuous (unwrapped) longitudes.
57
+ * All output longitudes stay within ±180° of centerLon, producing a single
58
+ * clean polygon that never jumps across the antimeridian.
59
+ * Leaflet renders out-of-range longitudes correctly, so no splitting is needed.
60
+ */
44
61
  function geodesicCirclePointsContinuous(centerLat, centerLon, radiusDeg, numPoints = 64) {
45
- const lat0 = centerLat * Math.PI / 180;
46
- const lon0 = centerLon * Math.PI / 180;
47
- const d = radiusDeg * Math.PI / 180;
48
- const points = [];
49
- for (let i = 0; i <= numPoints; i++) {
50
- const bearing = i / numPoints * 2 * Math.PI;
51
- const sinLat = Math.sin(lat0) * Math.cos(d) + Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);
52
- const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));
53
- const lon = lon0 + Math.atan2(
54
- Math.sin(bearing) * Math.sin(d) * Math.cos(lat0),
55
- Math.cos(d) - Math.sin(lat0) * sinLat
56
- );
57
- let lonDeg = lon * 180 / Math.PI;
58
- while (lonDeg - centerLon > 180) lonDeg -= 360;
59
- while (lonDeg - centerLon < -180) lonDeg += 360;
60
- points.push([lat * 180 / Math.PI, lonDeg]);
61
- }
62
- return points;
62
+ const lat0 = centerLat * Math.PI / 180;
63
+ const lon0 = centerLon * Math.PI / 180;
64
+ const d = radiusDeg * Math.PI / 180;
65
+ const points = [];
66
+ for (let i = 0; i <= numPoints; i++) {
67
+ const bearing = i / numPoints * 2 * Math.PI;
68
+ const sinLat = Math.sin(lat0) * Math.cos(d) + Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);
69
+ const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));
70
+ let lonDeg = (lon0 + Math.atan2(Math.sin(bearing) * Math.sin(d) * Math.cos(lat0), Math.cos(d) - Math.sin(lat0) * sinLat)) * 180 / Math.PI;
71
+ while (lonDeg - centerLon > 180) lonDeg -= 360;
72
+ while (lonDeg - centerLon < -180) lonDeg += 360;
73
+ points.push([lat * 180 / Math.PI, lonDeg]);
74
+ }
75
+ return points;
63
76
  }
64
- export {
65
- geodesicCirclePointsContinuous,
66
- normalizeLatLngs,
67
- segmentsWithWorldCopies,
68
- splitPolylineAtAntimeridian,
69
- wrapLon
70
- };
71
- //# sourceMappingURL=groundTrackMapLeafletUtils.js.map
77
+ //#endregion
78
+ export { geodesicCirclePointsContinuous, normalizeLatLngs, segmentsWithWorldCopies, splitPolylineAtAntimeridian, wrapLon };
79
+
80
+ //# sourceMappingURL=groundTrackMapLeafletUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"groundTrackMapLeafletUtils.js","sources":["../../../src/react/charts/groundTrackMapLeafletUtils.ts"],"sourcesContent":["/**\r\n * Pure geometry helpers for GroundTrackMapLeaflet.\r\n * Used for antimeridian splitting, geodesic circles, and world copies.\r\n * Longitudes are normalized to [-180, 180] where required.\r\n */\r\n\r\n/** Normalize longitude to [-180, 180]. */\r\nexport function wrapLon(lon: number): number {\r\n let l = lon;\r\n while (l > 180) l -= 360;\r\n while (l < -180) l += 360;\r\n return l;\r\n}\r\n\r\n/** Normalize an array of [lat, lon] so all longitudes are in [-180, 180]. */\r\nexport function normalizeLatLngs(points: [number, number][]): [number, number][] {\r\n return points.map(([lat, lon]) => [lat, wrapLon(lon)] as [number, number]);\r\n}\r\n\r\n/**\r\n * Split a polyline at the antimeridian (±180°).\r\n * Input points should be normalized (wrapLon) so crossing is detected correctly.\r\n * No segment will contain consecutive points with |dLon| > 180 (avoids vertical line at date line).\r\n */\r\nexport function splitPolylineAtAntimeridian(points: [number, number][]): [number, number][][] {\r\n if (points.length < 2) return points.length ? [points] : [];\r\n const normalized = normalizeLatLngs(points);\r\n const segments: [number, number][][] = [];\r\n let current: [number, number][] = [[...normalized[0]]];\r\n for (let i = 1; i < normalized.length; i++) {\r\n const prev = normalized[i - 1];\r\n const curr: [number, number] = [...normalized[i]];\r\n const dLon = curr[1] - prev[1];\r\n if (Math.abs(dLon) > 180) {\r\n const edgeLon = dLon > 0 ? -180 : 180;\r\n // Unwrap curr to get correct interpolation across the dateline\r\n const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;\r\n const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);\r\n const latEdge = prev[0] + t * (curr[0] - prev[0]);\r\n current.push([latEdge, edgeLon]);\r\n segments.push(current);\r\n const otherEdge = edgeLon === 180 ? -180 : 180;\r\n current = [[latEdge, otherEdge], curr];\r\n } else {\r\n current.push(curr);\r\n }\r\n }\r\n segments.push(current);\r\n return segments;\r\n}\r\n\r\n/** Return each segment plus world copies at lon ± 360. */\r\nexport function segmentsWithWorldCopies(segments: [number, number][][]): [number, number][][] {\r\n const out: [number, number][][] = [];\r\n for (const seg of segments) {\r\n out.push(seg);\r\n out.push(seg.map(([lat, lon]) => [lat, lon + 360] as [number, number]));\r\n out.push(seg.map(([lat, lon]) => [lat, lon - 360] as [number, number]));\r\n }\r\n return out;\r\n}\r\n\r\n/** Geodesic circle as lat/lon polygon (for coverage that looks correct at all latitudes). */\r\nexport function geodesicCirclePoints(\r\n centerLat: number,\r\n centerLon: number,\r\n radiusDeg: number,\r\n numPoints: number = 64,\r\n): [number, number][] {\r\n const lat0 = (centerLat * Math.PI) / 180;\r\n const lon0 = (centerLon * Math.PI) / 180;\r\n const d = (radiusDeg * Math.PI) / 180;\r\n const points: [number, number][] = [];\r\n for (let i = 0; i <= numPoints; i++) {\r\n const bearing = (i / numPoints) * 2 * Math.PI;\r\n const sinLat = Math.sin(lat0) * Math.cos(d) + Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);\r\n const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));\r\n const lon = lon0 + Math.atan2(\r\n Math.sin(bearing) * Math.sin(d) * Math.cos(lat0),\r\n Math.cos(d) - Math.sin(lat0) * sinLat,\r\n );\r\n let lonDeg = (lon * 180) / Math.PI;\r\n lonDeg = wrapLon(lonDeg);\r\n points.push([(lat * 180) / Math.PI, lonDeg]);\r\n }\r\n return points;\r\n}\r\n\r\n/**\r\n * Geodesic circle with continuous (unwrapped) longitudes.\r\n * All output longitudes stay within ±180° of centerLon, producing a single\r\n * clean polygon that never jumps across the antimeridian.\r\n * Leaflet renders out-of-range longitudes correctly, so no splitting is needed.\r\n */\r\nexport function geodesicCirclePointsContinuous(\r\n centerLat: number,\r\n centerLon: number,\r\n radiusDeg: number,\r\n numPoints: number = 64,\r\n): [number, number][] {\r\n const lat0 = (centerLat * Math.PI) / 180;\r\n const lon0 = (centerLon * Math.PI) / 180;\r\n const d = (radiusDeg * Math.PI) / 180;\r\n const points: [number, number][] = [];\r\n for (let i = 0; i <= numPoints; i++) {\r\n const bearing = (i / numPoints) * 2 * Math.PI;\r\n const sinLat = Math.sin(lat0) * Math.cos(d) + Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);\r\n const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));\r\n const lon = lon0 + Math.atan2(\r\n Math.sin(bearing) * Math.sin(d) * Math.cos(lat0),\r\n Math.cos(d) - Math.sin(lat0) * sinLat,\r\n );\r\n let lonDeg = (lon * 180) / Math.PI;\r\n while (lonDeg - centerLon > 180) lonDeg -= 360;\r\n while (lonDeg - centerLon < -180) lonDeg += 360;\r\n points.push([(lat * 180) / Math.PI, lonDeg]);\r\n }\r\n return points;\r\n}\r\n\r\n/**\r\n * Split a closed ring (e.g. geodesic circle) at ±180° so each part can be drawn without wrapping.\r\n * Returns one ring if the circle does not cross the date line, or two closed rings (east/west) if it does.\r\n */\r\nexport function splitRingAtAntimeridian(ring: [number, number][]): [number, number][][] {\r\n if (ring.length < 3) return ring.length ? [ring] : [];\r\n const pts = ring.map(([lat, lon]) => [lat, wrapLon(lon)] as [number, number]);\r\n const segments: [number, number][][] = [];\r\n let current: [number, number][] = [pts[0]];\r\n let latAt180: number | null = null;\r\n let latAtNeg180: number | null = null;\r\n\r\n for (let i = 1; i <= pts.length; i++) {\r\n const prev = pts[i - 1];\r\n const curr = i < pts.length ? pts[i] : pts[0];\r\n const dLon = curr[1] - prev[1];\r\n if (Math.abs(dLon) > 180) {\r\n // Must match splitPolylineAtAntimeridian: dLon > 0 → crossing from west to east → exit at -180\r\n const edgeLon = dLon > 0 ? -180 : 180;\r\n // Unwrap curr to get correct interpolation across the dateline\r\n const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;\r\n const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);\r\n const latEdge = prev[0] + t * (curr[0] - prev[0]);\r\n current.push([latEdge, edgeLon]);\r\n segments.push(current);\r\n if (edgeLon === 180) latAt180 = latEdge;\r\n else latAtNeg180 = latEdge;\r\n const otherEdge = edgeLon === 180 ? -180 : 180;\r\n current = [[latEdge, otherEdge]];\r\n } else {\r\n if (i < pts.length) current.push(curr);\r\n }\r\n }\r\n if (current.length > 0) segments.push(current);\r\n\r\n if (segments.length <= 1) return segments.length ? [segments[0]] : [ring];\r\n\r\n const lat1 = latAt180 ?? latAtNeg180 ?? 0;\r\n const lat2 = latAtNeg180 ?? latAt180 ?? 0;\r\n const rings: [number, number][][] = [];\r\n for (const seg of segments) {\r\n const lastLon = seg[seg.length - 1][1];\r\n if (lastLon === 180) rings.push([...seg, [lat2, 180]]);\r\n else rings.push([...seg, [lat1, -180]]);\r\n }\r\n return rings;\r\n}\r\n"],"names":[],"mappings":"AAOO,SAAS,QAAQ,KAAqB;AAC3C,MAAI,IAAI;AACR,SAAO,IAAI,IAAK,MAAK;AACrB,SAAO,IAAI,KAAM,MAAK;AACtB,SAAO;AACT;AAGO,SAAS,iBAAiB,QAAgD;AAC/E,SAAO,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAqB;AAC3E;AAOO,SAAS,4BAA4B,QAAkD;AAC5F,MAAI,OAAO,SAAS,EAAG,QAAO,OAAO,SAAS,CAAC,MAAM,IAAI,CAAA;AACzD,QAAM,aAAa,iBAAiB,MAAM;AAC1C,QAAM,WAAiC,CAAA;AACvC,MAAI,UAA8B,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACrD,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,OAAO,WAAW,IAAI,CAAC;AAC7B,UAAM,OAAyB,CAAC,GAAG,WAAW,CAAC,CAAC;AAChD,UAAM,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7B,QAAI,KAAK,IAAI,IAAI,IAAI,KAAK;AACxB,YAAM,UAAU,OAAO,IAAI,OAAO;AAElC,YAAM,gBAAgB,OAAO,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI;AAC3D,YAAM,KAAK,UAAU,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC;AACvD,YAAM,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;AAC/C,cAAQ,KAAK,CAAC,SAAS,OAAO,CAAC;AAC/B,eAAS,KAAK,OAAO;AACrB,YAAM,YAAY,YAAY,MAAM,OAAO;AAC3C,gBAAU,CAAC,CAAC,SAAS,SAAS,GAAG,IAAI;AAAA,IACvC,OAAO;AACL,cAAQ,KAAK,IAAI;AAAA,IACnB;AAAA,EACF;AACA,WAAS,KAAK,OAAO;AACrB,SAAO;AACT;AAGO,SAAS,wBAAwB,UAAsD;AAC5F,QAAM,MAA4B,CAAA;AAClC,aAAW,OAAO,UAAU;AAC1B,QAAI,KAAK,GAAG;AACZ,QAAI,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM,GAAG,CAAqB,CAAC;AACtE,QAAI,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,MAAM,GAAG,CAAqB,CAAC;AAAA,EACxE;AACA,SAAO;AACT;AAkCO,SAAS,+BACd,WACA,WACA,WACA,YAAoB,IACA;AACpB,QAAM,OAAQ,YAAY,KAAK,KAAM;AACrC,QAAM,OAAQ,YAAY,KAAK,KAAM;AACrC,QAAM,IAAK,YAAY,KAAK,KAAM;AAClC,QAAM,SAA6B,CAAA;AACnC,WAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,UAAM,UAAW,IAAI,YAAa,IAAI,KAAK;AAC3C,UAAM,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,OAAO;AAC7F,UAAM,MAAM,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC;AACvD,UAAM,MAAM,OAAO,KAAK;AAAA,MACtB,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI;AAAA,MAC/C,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI;AAAA,IAAA;AAEjC,QAAI,SAAU,MAAM,MAAO,KAAK;AAChC,WAAO,SAAS,YAAY,IAAK,WAAU;AAC3C,WAAO,SAAS,YAAY,KAAM,WAAU;AAC5C,WAAO,KAAK,CAAE,MAAM,MAAO,KAAK,IAAI,MAAM,CAAC;AAAA,EAC7C;AACA,SAAO;AACT;"}
1
+ {"version":3,"file":"groundTrackMapLeafletUtils.js","names":[],"sources":["../../../src/react/charts/groundTrackMapLeafletUtils.ts"],"sourcesContent":["/**\r\n * Pure geometry helpers for GroundTrackMapLeaflet.\r\n * Used for antimeridian splitting, geodesic circles, and world copies.\r\n * Longitudes are normalized to [-180, 180] where required.\r\n */\r\n\r\n/** Normalize longitude to [-180, 180]. */\r\nexport function wrapLon(lon: number): number {\r\n let l = lon;\r\n while (l > 180) l -= 360;\r\n while (l < -180) l += 360;\r\n return l;\r\n}\r\n\r\n/** Normalize an array of [lat, lon] so all longitudes are in [-180, 180]. */\r\nexport function normalizeLatLngs(\r\n points: [number, number][],\r\n): [number, number][] {\r\n return points.map(([lat, lon]) => [lat, wrapLon(lon)] as [number, number]);\r\n}\r\n\r\n/**\r\n * Split a polyline at the antimeridian (±180°).\r\n * Input points should be normalized (wrapLon) so crossing is detected correctly.\r\n * No segment will contain consecutive points with |dLon| > 180 (avoids vertical line at date line).\r\n */\r\nexport function splitPolylineAtAntimeridian(\r\n points: [number, number][],\r\n): [number, number][][] {\r\n if (points.length < 2) return points.length ? [points] : [];\r\n const normalized = normalizeLatLngs(points);\r\n const segments: [number, number][][] = [];\r\n let current: [number, number][] = [[...normalized[0]]];\r\n for (let i = 1; i < normalized.length; i++) {\r\n const prev = normalized[i - 1];\r\n const curr: [number, number] = [...normalized[i]];\r\n const dLon = curr[1] - prev[1];\r\n if (Math.abs(dLon) > 180) {\r\n const edgeLon = dLon > 0 ? -180 : 180;\r\n // Unwrap curr to get correct interpolation across the dateline\r\n const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;\r\n const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);\r\n const latEdge = prev[0] + t * (curr[0] - prev[0]);\r\n current.push([latEdge, edgeLon]);\r\n segments.push(current);\r\n const otherEdge = edgeLon === 180 ? -180 : 180;\r\n current = [[latEdge, otherEdge], curr];\r\n } else {\r\n current.push(curr);\r\n }\r\n }\r\n segments.push(current);\r\n return segments;\r\n}\r\n\r\n/** Return each segment plus world copies at lon ± 360. */\r\nexport function segmentsWithWorldCopies(\r\n segments: [number, number][][],\r\n): [number, number][][] {\r\n const out: [number, number][][] = [];\r\n for (const seg of segments) {\r\n out.push(seg);\r\n out.push(seg.map(([lat, lon]) => [lat, lon + 360] as [number, number]));\r\n out.push(seg.map(([lat, lon]) => [lat, lon - 360] as [number, number]));\r\n }\r\n return out;\r\n}\r\n\r\n/** Geodesic circle as lat/lon polygon (for coverage that looks correct at all latitudes). */\r\nexport function geodesicCirclePoints(\r\n centerLat: number,\r\n centerLon: number,\r\n radiusDeg: number,\r\n numPoints: number = 64,\r\n): [number, number][] {\r\n const lat0 = (centerLat * Math.PI) / 180;\r\n const lon0 = (centerLon * Math.PI) / 180;\r\n const d = (radiusDeg * Math.PI) / 180;\r\n const points: [number, number][] = [];\r\n for (let i = 0; i <= numPoints; i++) {\r\n const bearing = (i / numPoints) * 2 * Math.PI;\r\n const sinLat =\r\n Math.sin(lat0) * Math.cos(d) +\r\n Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);\r\n const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));\r\n const lon =\r\n lon0 +\r\n Math.atan2(\r\n Math.sin(bearing) * Math.sin(d) * Math.cos(lat0),\r\n Math.cos(d) - Math.sin(lat0) * sinLat,\r\n );\r\n let lonDeg = (lon * 180) / Math.PI;\r\n lonDeg = wrapLon(lonDeg);\r\n points.push([(lat * 180) / Math.PI, lonDeg]);\r\n }\r\n return points;\r\n}\r\n\r\n/**\r\n * Geodesic circle with continuous (unwrapped) longitudes.\r\n * All output longitudes stay within ±180° of centerLon, producing a single\r\n * clean polygon that never jumps across the antimeridian.\r\n * Leaflet renders out-of-range longitudes correctly, so no splitting is needed.\r\n */\r\nexport function geodesicCirclePointsContinuous(\r\n centerLat: number,\r\n centerLon: number,\r\n radiusDeg: number,\r\n numPoints: number = 64,\r\n): [number, number][] {\r\n const lat0 = (centerLat * Math.PI) / 180;\r\n const lon0 = (centerLon * Math.PI) / 180;\r\n const d = (radiusDeg * Math.PI) / 180;\r\n const points: [number, number][] = [];\r\n for (let i = 0; i <= numPoints; i++) {\r\n const bearing = (i / numPoints) * 2 * Math.PI;\r\n const sinLat =\r\n Math.sin(lat0) * Math.cos(d) +\r\n Math.cos(lat0) * Math.sin(d) * Math.cos(bearing);\r\n const lat = Math.asin(Math.max(-1, Math.min(1, sinLat)));\r\n const lon =\r\n lon0 +\r\n Math.atan2(\r\n Math.sin(bearing) * Math.sin(d) * Math.cos(lat0),\r\n Math.cos(d) - Math.sin(lat0) * sinLat,\r\n );\r\n let lonDeg = (lon * 180) / Math.PI;\r\n while (lonDeg - centerLon > 180) lonDeg -= 360;\r\n while (lonDeg - centerLon < -180) lonDeg += 360;\r\n points.push([(lat * 180) / Math.PI, lonDeg]);\r\n }\r\n return points;\r\n}\r\n\r\n/**\r\n * Split a closed ring (e.g. geodesic circle) at ±180° so each part can be drawn without wrapping.\r\n * Returns one ring if the circle does not cross the date line, or two closed rings (east/west) if it does.\r\n */\r\nexport function splitRingAtAntimeridian(\r\n ring: [number, number][],\r\n): [number, number][][] {\r\n if (ring.length < 3) return ring.length ? [ring] : [];\r\n const pts = ring.map(([lat, lon]) => [lat, wrapLon(lon)] as [number, number]);\r\n const segments: [number, number][][] = [];\r\n let current: [number, number][] = [pts[0]];\r\n let latAt180: number | null = null;\r\n let latAtNeg180: number | null = null;\r\n\r\n for (let i = 1; i <= pts.length; i++) {\r\n const prev = pts[i - 1];\r\n const curr = i < pts.length ? pts[i] : pts[0];\r\n const dLon = curr[1] - prev[1];\r\n if (Math.abs(dLon) > 180) {\r\n // Must match splitPolylineAtAntimeridian: dLon > 0 → crossing from west to east → exit at -180\r\n const edgeLon = dLon > 0 ? -180 : 180;\r\n // Unwrap curr to get correct interpolation across the dateline\r\n const unwrappedCurr = dLon > 0 ? curr[1] - 360 : curr[1] + 360;\r\n const t = (edgeLon - prev[1]) / (unwrappedCurr - prev[1]);\r\n const latEdge = prev[0] + t * (curr[0] - prev[0]);\r\n current.push([latEdge, edgeLon]);\r\n segments.push(current);\r\n if (edgeLon === 180) latAt180 = latEdge;\r\n else latAtNeg180 = latEdge;\r\n const otherEdge = edgeLon === 180 ? -180 : 180;\r\n current = [[latEdge, otherEdge]];\r\n } else {\r\n if (i < pts.length) current.push(curr);\r\n }\r\n }\r\n if (current.length > 0) segments.push(current);\r\n\r\n if (segments.length <= 1) return segments.length ? [segments[0]] : [ring];\r\n\r\n const lat1 = latAt180 ?? latAtNeg180 ?? 0;\r\n const lat2 = latAtNeg180 ?? latAt180 ?? 0;\r\n const rings: [number, number][][] = [];\r\n for (const seg of segments) {\r\n const lastLon = seg[seg.length - 1][1];\r\n if (lastLon === 180) rings.push([...seg, [lat2, 180]]);\r\n else rings.push([...seg, [lat1, -180]]);\r\n }\r\n return rings;\r\n}\r\n"],"mappings":";;;;;;;AAOA,SAAgB,QAAQ,KAAqB;CAC3C,IAAI,IAAI;CACR,OAAO,IAAI,KAAK,KAAK;CACrB,OAAO,IAAI,MAAM,KAAK;CACtB,OAAO;AACT;;AAGA,SAAgB,iBACd,QACoB;CACpB,OAAO,OAAO,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAqB;AAC3E;;;;;;AAOA,SAAgB,4BACd,QACsB;CACtB,IAAI,OAAO,SAAS,GAAG,OAAO,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC;CAC1D,MAAM,aAAa,iBAAiB,MAAM;CAC1C,MAAM,WAAiC,CAAC;CACxC,IAAI,UAA8B,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;CACrD,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;EAC1C,MAAM,OAAO,WAAW,IAAI;EAC5B,MAAM,OAAyB,CAAC,GAAG,WAAW,EAAE;EAChD,MAAM,OAAO,KAAK,KAAK,KAAK;EAC5B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK;GACxB,MAAM,UAAU,OAAO,IAAI,OAAO;GAElC,MAAM,gBAAgB,OAAO,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK;GAC3D,MAAM,KAAK,UAAU,KAAK,OAAO,gBAAgB,KAAK;GACtD,MAAM,UAAU,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;GAC9C,QAAQ,KAAK,CAAC,SAAS,OAAO,CAAC;GAC/B,SAAS,KAAK,OAAO;GAErB,UAAU,CAAC,CAAC,SADM,YAAY,MAAM,OAAO,GACb,GAAG,IAAI;EACvC,OACE,QAAQ,KAAK,IAAI;CAErB;CACA,SAAS,KAAK,OAAO;CACrB,OAAO;AACT;;AAGA,SAAgB,wBACd,UACsB;CACtB,MAAM,MAA4B,CAAC;CACnC,KAAK,MAAM,OAAO,UAAU;EAC1B,IAAI,KAAK,GAAG;EACZ,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,MAAM,GAAG,CAAqB,CAAC;EACtE,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,MAAM,GAAG,CAAqB,CAAC;CACxE;CACA,OAAO;AACT;;;;;;;AAsCA,SAAgB,+BACd,WACA,WACA,WACA,YAAoB,IACA;CACpB,MAAM,OAAQ,YAAY,KAAK,KAAM;CACrC,MAAM,OAAQ,YAAY,KAAK,KAAM;CACrC,MAAM,IAAK,YAAY,KAAK,KAAM;CAClC,MAAM,SAA6B,CAAC;CACpC,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,KAAK;EACnC,MAAM,UAAW,IAAI,YAAa,IAAI,KAAK;EAC3C,MAAM,SACJ,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAC3B,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,OAAO;EACjD,MAAM,MAAM,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC;EAOvD,IAAI,UALF,OACA,KAAK,MACH,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,GAC/C,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,MACjC,KACkB,MAAO,KAAK;EAChC,OAAO,SAAS,YAAY,KAAK,UAAU;EAC3C,OAAO,SAAS,YAAY,MAAM,UAAU;EAC5C,OAAO,KAAK,CAAE,MAAM,MAAO,KAAK,IAAI,MAAM,CAAC;CAC7C;CACA,OAAO;AACT"}
@@ -7,5 +7,5 @@ export { AstroChart, LineChart, AreaChart, BarChart, ScatterChart, PieChart, Don
7
7
  export type { AstroChartHandle, AstroChartProps, ChartType, ChartTheme, DataPoint, TimeSeriesPoint, SeriesData, LineStyleOptions, AreaStyleOptions, GradientOptions, SymbolOptions, AxisOptions, ZoomOptions, TooltipOptions, LegendOptions, BrushOptions, MarkLineOptions, MarkAreaOptions, AnnotationOptions, RealTimeOptions, ExportOptions, ChartEventParams, ZoomEventParams, BrushEventParams, PowerChartData, AttitudeChartData, ThermalChartData, LinkBudgetChartData, TelemetryStreamPoint, ContactWindowData, SpectrumDataPoint, ManeuverBudgetData, EclipseTimelineData, BubbleDataPoint, RoseDiagramData, HeliocentricOrbitData, ExportFileNameContext, Data3DPoint, Scatter3DData, Bar3DData, Surface3DData, Lines3DData, LineChartProps, AreaChartProps, BarChartProps, ScatterChartProps, PieChartProps, GaugeChartProps, RadarChartProps, HeatmapChartProps, TimeSeriesChartProps, DualAxisChartProps, BubbleChartProps, HistogramChartProps, SankeyChartProps, TreemapChartProps, TreemapDataNode, SunburstChartProps, SunburstDataNode, ParallelChartProps, ParallelAxisDef, CandlestickChartProps, CandlestickDataPoint, GraphChartProps, GraphNode, GraphLink, GraphCategory, // Domain Props Types
8
8
  PowerChartProps, AttitudeChartProps, ThermalHeatmapChartProps, LinkBudgetChartProps, SubsystemGaugeProps, OrbitChartProps, ContactWindowChartProps, SpectrumChartProps, ManeuverBudgetChartProps, EclipseTimelineChartProps, RoseDiagramProps, HeliocentricOrbitProps, Scatter3DChartProps, Bar3DChartProps, Surface3DChartProps, Lines3DChartProps, SphericalRadar3DChartProps, SphericalRadar3DData, TransferOrbit3DChartProps, TransferOrbitSegment, TransferOrbitWaypoint, AttitudeHistory3DChartProps, AttitudeHistoryPoint, ConjunctionAssessment3DChartProps, ConjunctionEvent, LaunchCorridor3DChartProps, LaunchCorridorData, AntennaPattern3DChartProps, AntennaPattern3DData, WaterfallChartProps, DopplerTrackChartProps, LinkMarginChartProps, ConstellationCoverageChartProps, ConjunctionChartProps, WaterfallDataPoint, WaterfallSignalMarker, DopplerTrackPoint, SatellitePassInfo, LinkMarginPoint, CoverageGridData, PowerGeneratorConfig, AttitudeGeneratorConfig, DopplerGeneratorConfig, WaterfallGeneratorConfig, ContactGeneratorConfig, HeliocentricGeneratorConfig, SpectrumGeneratorConfig, EclipseGeneratorConfig, CoverageGeneratorConfig, ConjunctionGeneratorConfig, PowerOverviewChartProps, PowerTimelinePoint, PowerEvent, PowerState, OperationalMode, EventType, PowerEventType, StreamOptions, StreamController, WebSocketStreamOptions, WebSocketStreamController, UseChartSyncOptions, EChartsTheme, } from './unified';
9
9
  export { GroundTrackMap } from './GroundTrackMap';
10
- export type { GroundTrackMapProps, SatelliteTrack, GroundStationEnhanced, TeamPath, SROGroundStation, MapPin, LightSource, MapLayerDef } from './GroundTrackMap';
10
+ export type { GroundTrackMapProps, SatelliteTrack, GroundStationEnhanced, TeamPath, SROGroundStation, MapPin, LightSource, MapLayerDef, } from './GroundTrackMap';
11
11
  export { TILE_PRESETS, CARTO_ATTRIBUTION, OSM_ATTRIBUTION, ESRI_WORLD_IMAGERY_ATTRIBUTION, getBasemapAttribution, } from './groundTrackMapLeafletTiles';
@@ -1,104 +1,11 @@
1
- import { GroundTrackMap } from "./GroundTrackMap.js";
2
- import { CARTO_ATTRIBUTION, ESRI_WORLD_IMAGERY_ATTRIBUTION, OSM_ATTRIBUTION, TILE_PRESETS, getBasemapAttribution } from "./groundTrackMapLeafletTiles.js";
3
1
  import { ASTRO_DATA_VIZ_COLORS, OFFICIAL_ASTRO_DATA_VIZ_COLORS, STATUS_COLORS, ZENDIR_BRAND_COLORS, calculateAxisBounds, createAreaGradient, createAstroEChartsTheme, formatTimeLabel, formatValueWithUnit, getPaletteForDataType, getSeriesColor, getStatusColor } from "./unified/theme.js";
4
- import { AntennaPattern3DChart, AttitudeChart, AttitudeHistory3DChart, Bar3DChart, ConjunctionAssessment3DChart, ConjunctionChart, ConstellationCoverageChart, ContactWindowChart, DopplerTrackChart, EclipseTimelineChart, HeliocentricOrbitPlot, LaunchCorridor3DChart, Lines3DChart, LinkBudgetChart, LinkMarginChart, ManeuverBudgetChart, OrbitChart, PowerChart, RoseDiagram, Scatter3DChart, SpectrumChart, SphericalRadar3DChart, SubsystemGauge, Surface3DChart, ThermalHeatmapChart, TransferOrbit3DChart, WaterfallChart } from "./unified/domain.js";
5
- import { AreaChart, BarChart, BoxPlotChart, BubbleChart, CandlestickChart, DonutChart, DualAxisChart, GaugeChart, GraphChart, HeatmapChart, HistogramChart, LineChart, ParallelChart, PieChart, RadarChart, SankeyChart, ScatterChart, StackedAreaChart, StackedBarChart, SunburstChart, TimeSeriesChart, TreemapChart } from "./unified/presets.js";
6
2
  import { AstroChart } from "./unified/AstroChart.js";
7
- import { PowerOverviewChart, generateSamplePowerData } from "./unified/PowerOverviewChart.js";
8
- import { dispatchToGroup, exportGroupAsCSV, exportGroupAsImages, getGroupCharts, hideGroupTooltip, resetGroupZoom, showGroupTooltip, syncZoomRange, useChartSync } from "./unified/sync.js";
3
+ import { AreaChart, BarChart, BoxPlotChart, BubbleChart, CandlestickChart, DonutChart, DualAxisChart, GaugeChart, GraphChart, HeatmapChart, HistogramChart, LineChart, ParallelChart, PieChart, RadarChart, SankeyChart, ScatterChart, StackedAreaChart, StackedBarChart, SunburstChart, TimeSeriesChart, TreemapChart } from "./unified/presets.js";
4
+ import { AntennaPattern3DChart, AttitudeChart, AttitudeHistory3DChart, Bar3DChart, ConjunctionAssessment3DChart, ConjunctionChart, ConstellationCoverageChart, ContactWindowChart, DopplerTrackChart, EclipseTimelineChart, HeliocentricOrbitPlot, LaunchCorridor3DChart, Lines3DChart, LinkBudgetChart, LinkMarginChart, ManeuverBudgetChart, OrbitChart, PowerChart, RoseDiagram, Scatter3DChart, SpectrumChart, SphericalRadar3DChart, SubsystemGauge, Surface3DChart, ThermalHeatmapChart, TransferOrbit3DChart, WaterfallChart } from "./unified/domain.js";
9
5
  import { generateAttitudeData, generateConjunctionEvents, generateConstellationCoverage, generateContactWindows, generateDopplerData, generateEclipseTimeline, generateHeliocentricOrbits, generatePowerData, generateSpectrum, generateWaterfallData } from "./unified/generators.js";
6
+ import { PowerOverviewChart, generateSamplePowerData } from "./unified/PowerOverviewChart.js";
10
7
  import { useChartStream, useWebSocketStream } from "./unified/useChartStream.js";
11
- export {
12
- ASTRO_DATA_VIZ_COLORS,
13
- AntennaPattern3DChart,
14
- AreaChart,
15
- AstroChart,
16
- AttitudeChart,
17
- AttitudeHistory3DChart,
18
- Bar3DChart,
19
- BarChart,
20
- BoxPlotChart,
21
- BubbleChart,
22
- CARTO_ATTRIBUTION,
23
- CandlestickChart,
24
- ConjunctionAssessment3DChart,
25
- ConjunctionChart,
26
- ConstellationCoverageChart,
27
- ContactWindowChart,
28
- DonutChart,
29
- DopplerTrackChart,
30
- DualAxisChart,
31
- ESRI_WORLD_IMAGERY_ATTRIBUTION,
32
- EclipseTimelineChart,
33
- GaugeChart,
34
- GraphChart,
35
- GroundTrackMap,
36
- HeatmapChart,
37
- HeliocentricOrbitPlot,
38
- HistogramChart,
39
- LaunchCorridor3DChart,
40
- LineChart,
41
- Lines3DChart,
42
- LinkBudgetChart,
43
- LinkMarginChart,
44
- ManeuverBudgetChart,
45
- OFFICIAL_ASTRO_DATA_VIZ_COLORS,
46
- OSM_ATTRIBUTION,
47
- OrbitChart,
48
- ParallelChart,
49
- PieChart,
50
- PowerChart,
51
- PowerOverviewChart,
52
- RadarChart,
53
- RoseDiagram,
54
- STATUS_COLORS,
55
- SankeyChart,
56
- Scatter3DChart,
57
- ScatterChart,
58
- SpectrumChart,
59
- SphericalRadar3DChart,
60
- StackedAreaChart,
61
- StackedBarChart,
62
- SubsystemGauge,
63
- SunburstChart,
64
- Surface3DChart,
65
- TILE_PRESETS,
66
- ThermalHeatmapChart,
67
- TimeSeriesChart,
68
- TransferOrbit3DChart,
69
- TreemapChart,
70
- WaterfallChart,
71
- ZENDIR_BRAND_COLORS,
72
- calculateAxisBounds,
73
- createAreaGradient,
74
- createAstroEChartsTheme,
75
- dispatchToGroup,
76
- exportGroupAsCSV,
77
- exportGroupAsImages,
78
- formatTimeLabel,
79
- formatValueWithUnit,
80
- generateAttitudeData,
81
- generateConjunctionEvents,
82
- generateConstellationCoverage,
83
- generateContactWindows,
84
- generateDopplerData,
85
- generateEclipseTimeline,
86
- generateHeliocentricOrbits,
87
- generatePowerData,
88
- generateSamplePowerData,
89
- generateSpectrum,
90
- generateWaterfallData,
91
- getBasemapAttribution,
92
- getGroupCharts,
93
- getPaletteForDataType,
94
- getSeriesColor,
95
- getStatusColor,
96
- hideGroupTooltip,
97
- resetGroupZoom,
98
- showGroupTooltip,
99
- syncZoomRange,
100
- useChartStream,
101
- useChartSync,
102
- useWebSocketStream
103
- };
104
- //# sourceMappingURL=index.js.map
8
+ import { dispatchToGroup, exportGroupAsCSV, exportGroupAsImages, getGroupCharts, hideGroupTooltip, resetGroupZoom, showGroupTooltip, syncZoomRange, useChartSync } from "./unified/sync.js";
9
+ import { GroundTrackMap } from "./GroundTrackMap.js";
10
+ import { CARTO_ATTRIBUTION, ESRI_WORLD_IMAGERY_ATTRIBUTION, OSM_ATTRIBUTION, TILE_PRESETS, getBasemapAttribution } from "./groundTrackMapLeafletTiles.js";
11
+ export { ASTRO_DATA_VIZ_COLORS, AntennaPattern3DChart, AreaChart, AstroChart, AttitudeChart, AttitudeHistory3DChart, Bar3DChart, BarChart, BoxPlotChart, BubbleChart, CARTO_ATTRIBUTION, CandlestickChart, ConjunctionAssessment3DChart, ConjunctionChart, ConstellationCoverageChart, ContactWindowChart, DonutChart, DopplerTrackChart, DualAxisChart, ESRI_WORLD_IMAGERY_ATTRIBUTION, EclipseTimelineChart, GaugeChart, GraphChart, GroundTrackMap, HeatmapChart, HeliocentricOrbitPlot, HistogramChart, LaunchCorridor3DChart, LineChart, Lines3DChart, LinkBudgetChart, LinkMarginChart, ManeuverBudgetChart, OFFICIAL_ASTRO_DATA_VIZ_COLORS, OSM_ATTRIBUTION, OrbitChart, ParallelChart, PieChart, PowerChart, PowerOverviewChart, RadarChart, RoseDiagram, STATUS_COLORS, SankeyChart, Scatter3DChart, ScatterChart, SpectrumChart, SphericalRadar3DChart, StackedAreaChart, StackedBarChart, SubsystemGauge, SunburstChart, Surface3DChart, TILE_PRESETS, ThermalHeatmapChart, TimeSeriesChart, TransferOrbit3DChart, TreemapChart, WaterfallChart, ZENDIR_BRAND_COLORS, calculateAxisBounds, createAreaGradient, createAstroEChartsTheme, dispatchToGroup, exportGroupAsCSV, exportGroupAsImages, formatTimeLabel, formatValueWithUnit, generateAttitudeData, generateConjunctionEvents, generateConstellationCoverage, generateContactWindows, generateDopplerData, generateEclipseTimeline, generateHeliocentricOrbits, generatePowerData, generateSamplePowerData, generateSpectrum, generateWaterfallData, getBasemapAttribution, getGroupCharts, getPaletteForDataType, getSeriesColor, getStatusColor, hideGroupTooltip, resetGroupZoom, showGroupTooltip, syncZoomRange, useChartStream, useChartSync, useWebSocketStream };
@@ -1,14 +1,13 @@
1
1
  import { default as React } from 'react';
2
2
  import { ECharts } from 'echarts';
3
3
  import { AstroChartProps, DataPoint, TimeSeriesPoint } from './types';
4
-
5
4
  export interface AstroChartHandle {
6
5
  /** Get ECharts instance */
7
6
  getChart: () => ECharts | undefined;
8
7
  /** Resize chart */
9
8
  resize: () => void;
10
9
  /** Export as image (png, jpeg, svg) */
11
- exportImage: (type?: 'png' | 'jpeg' | 'jpg' | 'svg', pixelRatio?: number) => string | undefined;
10
+ exportImage: (type?: "png" | "jpeg" | "jpg" | "svg", pixelRatio?: number) => string | undefined;
12
11
  /** Export data as CSV */
13
12
  exportCSV: () => string;
14
13
  /** Suggested export filename from title, series names, and chart type (with optional extension and timestamp) */