@zendir/ui 0.1.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.
- package/CHANGELOG.md +19 -0
- package/LICENSE +21 -0
- package/README.md +589 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +421 -0
- package/dist/index.js.map +1 -0
- package/dist/react/3d/EarthViewer.d.ts +46 -0
- package/dist/react/3d/EarthViewer.js +836 -0
- package/dist/react/3d/EarthViewer.js.map +1 -0
- package/dist/react/3d/SolarSystemViewer.d.ts +43 -0
- package/dist/react/3d/SolarSystemViewer.js +372 -0
- package/dist/react/3d/SolarSystemViewer.js.map +1 -0
- package/dist/react/3d/ZenSpace3D.d.ts +16 -0
- package/dist/react/3d/ZenSpace3D.js +1253 -0
- package/dist/react/3d/ZenSpace3D.js.map +1 -0
- package/dist/react/3d/ZenSpace3DCesium.d.ts +9 -0
- package/dist/react/3d/ZenSpace3DCesium.js +186 -0
- package/dist/react/3d/ZenSpace3DCesium.js.map +1 -0
- package/dist/react/3d/ZenSpace3DShaders.d.ts +78 -0
- package/dist/react/3d/ZenSpace3DShaders.js +94 -0
- package/dist/react/3d/ZenSpace3DShaders.js.map +1 -0
- package/dist/react/3d/ZenSpace3DTypes.d.ts +614 -0
- package/dist/react/3d/ZenSpace3DUtils.d.ts +183 -0
- package/dist/react/3d/ZenSpace3DUtils.js +213 -0
- package/dist/react/3d/ZenSpace3DUtils.js.map +1 -0
- package/dist/react/3d/index.d.ts +23 -0
- package/dist/react/3d/threeLoader.d.ts +22 -0
- package/dist/react/3d/threeLoader.js +18 -0
- package/dist/react/3d/threeLoader.js.map +1 -0
- package/dist/react/astro/ClassificationBanner.d.ts +25 -0
- package/dist/react/astro/ClassificationBanner.js +83 -0
- package/dist/react/astro/ClassificationBanner.js.map +1 -0
- package/dist/react/astro/GlobalStatusBar.d.ts +42 -0
- package/dist/react/astro/GlobalStatusBar.js +165 -0
- package/dist/react/astro/GlobalStatusBar.js.map +1 -0
- package/dist/react/astro/MissionClock.d.ts +169 -0
- package/dist/react/astro/MissionClock.js +411 -0
- package/dist/react/astro/MissionClock.js.map +1 -0
- package/dist/react/astro/MonitoringIcon.d.ts +60 -0
- package/dist/react/astro/MonitoringIcon.js +369 -0
- package/dist/react/astro/MonitoringIcon.js.map +1 -0
- package/dist/react/astro/Notification.d.ts +42 -0
- package/dist/react/astro/Notification.js +156 -0
- package/dist/react/astro/Notification.js.map +1 -0
- package/dist/react/astro/Progress.d.ts +39 -0
- package/dist/react/astro/Progress.js +149 -0
- package/dist/react/astro/Progress.js.map +1 -0
- package/dist/react/astro/SimulationControls.d.ts +136 -0
- package/dist/react/astro/SimulationControls.js +668 -0
- package/dist/react/astro/SimulationControls.js.map +1 -0
- package/dist/react/astro/StatusIndicator.d.ts +34 -0
- package/dist/react/astro/StatusIndicator.js +189 -0
- package/dist/react/astro/StatusIndicator.js.map +1 -0
- package/dist/react/astro/UnifiedTimeline.d.ts +106 -0
- package/dist/react/astro/UnifiedTimeline.js +1768 -0
- package/dist/react/astro/UnifiedTimeline.js.map +1 -0
- package/dist/react/astro/index.d.ts +63 -0
- package/dist/react/cards/AccessCard.d.ts +37 -0
- package/dist/react/cards/AccessCard.js +410 -0
- package/dist/react/cards/AccessCard.js.map +1 -0
- package/dist/react/cards/OrbitCard.d.ts +31 -0
- package/dist/react/cards/OrbitCard.js +372 -0
- package/dist/react/cards/OrbitCard.js.map +1 -0
- package/dist/react/cards/SpacecraftCard.d.ts +54 -0
- package/dist/react/cards/SpacecraftCard.js +941 -0
- package/dist/react/cards/SpacecraftCard.js.map +1 -0
- package/dist/react/cards/TelemetryCard.d.ts +40 -0
- package/dist/react/cards/TelemetryCard.js +742 -0
- package/dist/react/cards/TelemetryCard.js.map +1 -0
- package/dist/react/cards/TelemetryStreamCard.d.ts +59 -0
- package/dist/react/cards/TelemetryStreamCard.js +309 -0
- package/dist/react/cards/TelemetryStreamCard.js.map +1 -0
- package/dist/react/cards/index.d.ts +13 -0
- package/dist/react/charts/GroundTrackMap.d.ts +112 -0
- package/dist/react/charts/GroundTrackMap.js +1123 -0
- package/dist/react/charts/GroundTrackMap.js.map +1 -0
- package/dist/react/charts/GroundTrackMapLeaflet.d.ts +26 -0
- package/dist/react/charts/GroundTrackMapLeaflet.js +571 -0
- package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -0
- package/dist/react/charts/groundTrackMapLeafletTiles.d.ts +22 -0
- package/dist/react/charts/groundTrackMapLeafletTiles.js +11 -0
- package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -0
- package/dist/react/charts/groundTrackMapLeafletUtils.d.ts +24 -0
- package/dist/react/charts/groundTrackMapLeafletUtils.js +109 -0
- package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -0
- package/dist/react/charts/index.d.ts +10 -0
- package/dist/react/charts/unified/AstroChart.d.ts +24 -0
- package/dist/react/charts/unified/AstroChart.js +1405 -0
- package/dist/react/charts/unified/AstroChart.js.map +1 -0
- package/dist/react/charts/unified/PowerOverviewChart.d.ts +73 -0
- package/dist/react/charts/unified/PowerOverviewChart.js +488 -0
- package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -0
- package/dist/react/charts/unified/domain.d.ts +845 -0
- package/dist/react/charts/unified/domain.js +3168 -0
- package/dist/react/charts/unified/domain.js.map +1 -0
- package/dist/react/charts/unified/generators.d.ts +276 -0
- package/dist/react/charts/unified/generators.js +518 -0
- package/dist/react/charts/unified/generators.js.map +1 -0
- package/dist/react/charts/unified/index.d.ts +55 -0
- package/dist/react/charts/unified/presets.d.ts +290 -0
- package/dist/react/charts/unified/presets.js +999 -0
- package/dist/react/charts/unified/presets.js.map +1 -0
- package/dist/react/charts/unified/sync.d.ts +69 -0
- package/dist/react/charts/unified/sync.js +219 -0
- package/dist/react/charts/unified/sync.js.map +1 -0
- package/dist/react/charts/unified/theme.d.ts +447 -0
- package/dist/react/charts/unified/theme.js +562 -0
- package/dist/react/charts/unified/theme.js.map +1 -0
- package/dist/react/charts/unified/types.d.ts +826 -0
- package/dist/react/charts/unified/useChartStream.d.ts +58 -0
- package/dist/react/charts/unified/useChartStream.js +226 -0
- package/dist/react/charts/unified/useChartStream.js.map +1 -0
- package/dist/react/chatgpt/AppCard.d.ts +59 -0
- package/dist/react/chatgpt/AppCard.js +306 -0
- package/dist/react/chatgpt/AppCard.js.map +1 -0
- package/dist/react/chatgpt/ChatGPTCard.d.ts +6 -0
- package/dist/react/chatgpt/index.d.ts +167 -0
- package/dist/react/chatgpt/index.js +166 -0
- package/dist/react/chatgpt/index.js.map +1 -0
- package/dist/react/context/DisplaySettingsContext.d.ts +107 -0
- package/dist/react/context/DisplaySettingsContext.js +169 -0
- package/dist/react/context/DisplaySettingsContext.js.map +1 -0
- package/dist/react/context/index.d.ts +5 -0
- package/dist/react/core/ActivityPlanner.d.ts +45 -0
- package/dist/react/core/ActivityPlanner.js +532 -0
- package/dist/react/core/ActivityPlanner.js.map +1 -0
- package/dist/react/core/AppBar.d.ts +71 -0
- package/dist/react/core/AppBar.js +817 -0
- package/dist/react/core/AppBar.js.map +1 -0
- package/dist/react/core/AstroIcon.d.ts +84 -0
- package/dist/react/core/AstroIcon.js +1243 -0
- package/dist/react/core/AstroIcon.js.map +1 -0
- package/dist/react/core/Badge.d.ts +27 -0
- package/dist/react/core/Badge.js +134 -0
- package/dist/react/core/Badge.js.map +1 -0
- package/dist/react/core/Button.d.ts +26 -0
- package/dist/react/core/Button.js +306 -0
- package/dist/react/core/Button.js.map +1 -0
- package/dist/react/core/CardHeader.d.ts +34 -0
- package/dist/react/core/CardHeader.js +316 -0
- package/dist/react/core/CardHeader.js.map +1 -0
- package/dist/react/core/ChatPanel.d.ts +627 -0
- package/dist/react/core/ChatPanel.js +1144 -0
- package/dist/react/core/ChatPanel.js.map +1 -0
- package/dist/react/core/Checkbox.d.ts +26 -0
- package/dist/react/core/Checkbox.js +130 -0
- package/dist/react/core/Checkbox.js.map +1 -0
- package/dist/react/core/ColorPickerPanel.d.ts +25 -0
- package/dist/react/core/ColorPickerPanel.js +293 -0
- package/dist/react/core/ColorPickerPanel.js.map +1 -0
- package/dist/react/core/CommandBuilder.d.ts +74 -0
- package/dist/react/core/CommandBuilder.js +518 -0
- package/dist/react/core/CommandBuilder.js.map +1 -0
- package/dist/react/core/ConfirmDialog.d.ts +45 -0
- package/dist/react/core/ConfirmDialog.js +315 -0
- package/dist/react/core/ConfirmDialog.js.map +1 -0
- package/dist/react/core/ConnectionForm.d.ts +57 -0
- package/dist/react/core/ConnectionForm.js +496 -0
- package/dist/react/core/ConnectionForm.js.map +1 -0
- package/dist/react/core/Container.d.ts +51 -0
- package/dist/react/core/Container.js +670 -0
- package/dist/react/core/Container.js.map +1 -0
- package/dist/react/core/CopyButton.d.ts +39 -0
- package/dist/react/core/CopyButton.js +105 -0
- package/dist/react/core/CopyButton.js.map +1 -0
- package/dist/react/core/DataTable.d.ts +113 -0
- package/dist/react/core/DataTable.js +446 -0
- package/dist/react/core/DataTable.js.map +1 -0
- package/dist/react/core/DataValue.d.ts +64 -0
- package/dist/react/core/DataValue.js +545 -0
- package/dist/react/core/DataValue.js.map +1 -0
- package/dist/react/core/Dialog.d.ts +32 -0
- package/dist/react/core/Dialog.js +201 -0
- package/dist/react/core/Dialog.js.map +1 -0
- package/dist/react/core/FileExplorer.d.ts +65 -0
- package/dist/react/core/FileExplorer.js +520 -0
- package/dist/react/core/FileExplorer.js.map +1 -0
- package/dist/react/core/GlassCard.d.ts +129 -0
- package/dist/react/core/GlassCard.js +375 -0
- package/dist/react/core/GlassCard.js.map +1 -0
- package/dist/react/core/HeaderIconWithStatus.d.ts +39 -0
- package/dist/react/core/HeaderIconWithStatus.js +157 -0
- package/dist/react/core/HeaderIconWithStatus.js.map +1 -0
- package/dist/react/core/HexViewer.d.ts +143 -0
- package/dist/react/core/HexViewer.js +1106 -0
- package/dist/react/core/HexViewer.js.map +1 -0
- package/dist/react/core/Icon.d.ts +32 -0
- package/dist/react/core/Icon.js +142 -0
- package/dist/react/core/Icon.js.map +1 -0
- package/dist/react/core/ImageGallery.d.ts +41 -0
- package/dist/react/core/ImageGallery.js +320 -0
- package/dist/react/core/ImageGallery.js.map +1 -0
- package/dist/react/core/Input.d.ts +38 -0
- package/dist/react/core/Input.js +288 -0
- package/dist/react/core/Input.js.map +1 -0
- package/dist/react/core/LimitsBar.d.ts +51 -0
- package/dist/react/core/LimitsBar.js +200 -0
- package/dist/react/core/LimitsBar.js.map +1 -0
- package/dist/react/core/LogViewer.d.ts +61 -0
- package/dist/react/core/LogViewer.js +599 -0
- package/dist/react/core/LogViewer.js.map +1 -0
- package/dist/react/core/MessageStream.d.ts +58 -0
- package/dist/react/core/MessageStream.js +455 -0
- package/dist/react/core/MessageStream.js.map +1 -0
- package/dist/react/core/MissionCalendar.d.ts +81 -0
- package/dist/react/core/MissionCalendar.js +1049 -0
- package/dist/react/core/MissionCalendar.js.map +1 -0
- package/dist/react/core/NumberInput.d.ts +85 -0
- package/dist/react/core/NumberInput.js +507 -0
- package/dist/react/core/NumberInput.js.map +1 -0
- package/dist/react/core/PacketViewer.d.ts +73 -0
- package/dist/react/core/PacketViewer.js +431 -0
- package/dist/react/core/PacketViewer.js.map +1 -0
- package/dist/react/core/Pagination.d.ts +30 -0
- package/dist/react/core/Pagination.js +190 -0
- package/dist/react/core/Pagination.js.map +1 -0
- package/dist/react/core/PinInput.d.ts +41 -0
- package/dist/react/core/PinInput.js +210 -0
- package/dist/react/core/PinInput.js.map +1 -0
- package/dist/react/core/Popover.d.ts +55 -0
- package/dist/react/core/Popover.js +288 -0
- package/dist/react/core/Popover.js.map +1 -0
- package/dist/react/core/Select.d.ts +42 -0
- package/dist/react/core/Select.js +303 -0
- package/dist/react/core/Select.js.map +1 -0
- package/dist/react/core/SideNav.d.ts +103 -0
- package/dist/react/core/SideNav.js +551 -0
- package/dist/react/core/SideNav.js.map +1 -0
- package/dist/react/core/SidePanel.d.ts +33 -0
- package/dist/react/core/SidePanel.js +199 -0
- package/dist/react/core/SidePanel.js.map +1 -0
- package/dist/react/core/Tabs.d.ts +47 -0
- package/dist/react/core/Tabs.js +129 -0
- package/dist/react/core/Tabs.js.map +1 -0
- package/dist/react/core/Toast.d.ts +56 -0
- package/dist/react/core/Toast.js +229 -0
- package/dist/react/core/Toast.js.map +1 -0
- package/dist/react/core/Toggle.d.ts +22 -0
- package/dist/react/core/Toggle.js +151 -0
- package/dist/react/core/Toggle.js.map +1 -0
- package/dist/react/core/Tooltip.d.ts +19 -0
- package/dist/react/core/Tooltip.js +179 -0
- package/dist/react/core/Tooltip.js.map +1 -0
- package/dist/react/core/Typography.d.ts +127 -0
- package/dist/react/core/Typography.js +187 -0
- package/dist/react/core/Typography.js.map +1 -0
- package/dist/react/core/index.d.ts +108 -0
- package/dist/react/core/layout/Box.d.ts +77 -0
- package/dist/react/core/layout/Box.js +126 -0
- package/dist/react/core/layout/Box.js.map +1 -0
- package/dist/react/core/layout/Center.d.ts +20 -0
- package/dist/react/core/layout/Center.js +34 -0
- package/dist/react/core/layout/Center.js.map +1 -0
- package/dist/react/core/layout/Divider.d.ts +16 -0
- package/dist/react/core/layout/Divider.js +108 -0
- package/dist/react/core/layout/Divider.js.map +1 -0
- package/dist/react/core/layout/Flex.d.ts +30 -0
- package/dist/react/core/layout/Flex.js +128 -0
- package/dist/react/core/layout/Flex.js.map +1 -0
- package/dist/react/core/layout/Grid.d.ts +36 -0
- package/dist/react/core/layout/Grid.js +142 -0
- package/dist/react/core/layout/Grid.js.map +1 -0
- package/dist/react/core/layout/Spacer.d.ts +8 -0
- package/dist/react/core/layout/Spacer.js +31 -0
- package/dist/react/core/layout/Spacer.js.map +1 -0
- package/dist/react/core/layout/Stack.d.ts +54 -0
- package/dist/react/core/layout/Stack.js +74 -0
- package/dist/react/core/layout/Stack.js.map +1 -0
- package/dist/react/core/layout/index.d.ts +38 -0
- package/dist/react/core/layout/responsive.d.ts +23 -0
- package/dist/react/core/layout/responsive.js +26 -0
- package/dist/react/core/layout/responsive.js.map +1 -0
- package/dist/react/core/layout/useBreakpoint.d.ts +77 -0
- package/dist/react/core/layout/useBreakpoint.js +73 -0
- package/dist/react/core/layout/useBreakpoint.js.map +1 -0
- package/dist/react/core/propertyConfig.d.ts +443 -0
- package/dist/react/core/propertyConfig.js +399 -0
- package/dist/react/core/propertyConfig.js.map +1 -0
- package/dist/react/hooks/index.d.ts +21 -0
- package/dist/react/hooks/useAccessWindows.d.ts +66 -0
- package/dist/react/hooks/useCompactMode.d.ts +82 -0
- package/dist/react/hooks/useCompactMode.js +62 -0
- package/dist/react/hooks/useCompactMode.js.map +1 -0
- package/dist/react/hooks/useLiveSelection.d.ts +57 -0
- package/dist/react/hooks/useSimulationPlayback.d.ts +97 -0
- package/dist/react/hooks/useSimulationTime.d.ts +61 -0
- package/dist/react/hooks/useSpacecraftPosition.d.ts +50 -0
- package/dist/react/hooks/useSpacecraftPosition.js +89 -0
- package/dist/react/hooks/useSpacecraftPosition.js.map +1 -0
- package/dist/react/hooks/useTelemetry.d.ts +55 -0
- package/dist/react/hooks/useTelemetry.js +73 -0
- package/dist/react/hooks/useTelemetry.js.map +1 -0
- package/dist/react/hooks/useZendirSession.d.ts +109 -0
- package/dist/react/hooks/useZendirSession.js +148 -0
- package/dist/react/hooks/useZendirSession.js.map +1 -0
- package/dist/react/index.d.ts +74 -0
- package/dist/react/shared/ErrorBoundary.d.ts +63 -0
- package/dist/react/shared/ErrorBoundary.js +142 -0
- package/dist/react/shared/ErrorBoundary.js.map +1 -0
- package/dist/react/shared/Skeleton.d.ts +110 -0
- package/dist/react/shared/Skeleton.js +324 -0
- package/dist/react/shared/Skeleton.js.map +1 -0
- package/dist/react/shared/index.d.ts +12 -0
- package/dist/react/theme/ThemeProvider.d.ts +385 -0
- package/dist/react/theme/ThemeProvider.js +1096 -0
- package/dist/react/theme/ThemeProvider.js.map +1 -0
- package/dist/react/theme/astro-tokens.d.ts +153 -0
- package/dist/react/theme/cardAccent.d.ts +75 -0
- package/dist/react/theme/cardAccent.js +137 -0
- package/dist/react/theme/cardAccent.js.map +1 -0
- package/dist/react/theme/config.d.ts +39 -0
- package/dist/react/theme/index.d.ts +9 -0
- package/dist/react/types.d.ts +360 -0
- package/dist/react/types.js +58 -0
- package/dist/react/types.js.map +1 -0
- package/dist/react/utils/index.d.ts +247 -0
- package/dist/react/utils/index.js +423 -0
- package/dist/react/utils/index.js.map +1 -0
- package/dist/react/visualizations/EclipseTimerCard.d.ts +17 -0
- package/dist/react/visualizations/EclipseTimerCard.js +250 -0
- package/dist/react/visualizations/EclipseTimerCard.js.map +1 -0
- package/dist/react/visualizations/LinkBudgetCard.d.ts +50 -0
- package/dist/react/visualizations/LinkBudgetCard.js +444 -0
- package/dist/react/visualizations/LinkBudgetCard.js.map +1 -0
- package/dist/react/visualizations/NavBallCard.d.ts +17 -0
- package/dist/react/visualizations/NavBallCard.js +243 -0
- package/dist/react/visualizations/NavBallCard.js.map +1 -0
- package/dist/react/visualizations/PropulsionCard.d.ts +37 -0
- package/dist/react/visualizations/PropulsionCard.js +298 -0
- package/dist/react/visualizations/PropulsionCard.js.map +1 -0
- package/dist/react/visualizations/SensorFootprintCard.d.ts +33 -0
- package/dist/react/visualizations/SensorFootprintCard.js +326 -0
- package/dist/react/visualizations/SensorFootprintCard.js.map +1 -0
- package/dist/react/visualizations/ThermalHeatmapCard.d.ts +38 -0
- package/dist/react/visualizations/ThermalHeatmapCard.js +372 -0
- package/dist/react/visualizations/ThermalHeatmapCard.js.map +1 -0
- package/dist/react/visualizations/index.d.ts +17 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.js +421 -0
- package/dist/react.js.map +1 -0
- package/dist/shaders/atmosphere.frag.js +5 -0
- package/dist/shaders/atmosphere.frag.js.map +1 -0
- package/dist/shaders/atmosphere.vert.js +5 -0
- package/dist/shaders/atmosphere.vert.js.map +1 -0
- package/dist/shaders/stars.frag.js +5 -0
- package/dist/shaders/stars.frag.js.map +1 -0
- package/dist/shaders/stars.vert.js +5 -0
- package/dist/shaders/stars.vert.js.map +1 -0
- package/dist/style.css +143 -0
- package/dist/tokens/index.d.ts +296 -0
- package/dist/tokens/index.js +263 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/tokens.css +155 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +220 -0
- package/sdk-stub.js +22 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zendir/ui - Local Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* These types are provided so the UI library can be used without @zendir/sdk.
|
|
5
|
+
* If you have @zendir/sdk installed, those types will be used instead.
|
|
6
|
+
*
|
|
7
|
+
* All types here mirror the @zendir/sdk interfaces.
|
|
8
|
+
*/
|
|
9
|
+
export interface SpacecraftPosition {
|
|
10
|
+
/** Optional spacecraft id (when combined with Spacecraft) */
|
|
11
|
+
id?: string;
|
|
12
|
+
/** Optional display name */
|
|
13
|
+
name?: string;
|
|
14
|
+
/** Latitude in degrees (-90 to 90) */
|
|
15
|
+
latitude: number;
|
|
16
|
+
/** Longitude in degrees (-180 to 180) */
|
|
17
|
+
longitude: number;
|
|
18
|
+
/** Altitude in kilometers */
|
|
19
|
+
altitude: number;
|
|
20
|
+
/** Velocity in km/s */
|
|
21
|
+
velocity?: number;
|
|
22
|
+
/** Heading in degrees */
|
|
23
|
+
heading?: number;
|
|
24
|
+
/** Timestamp */
|
|
25
|
+
timestamp?: string;
|
|
26
|
+
/** Orbit type (e.g. LEO, GEO) */
|
|
27
|
+
orbitType?: string;
|
|
28
|
+
/** Orbital inclination in degrees */
|
|
29
|
+
inclination?: number;
|
|
30
|
+
/** Health/operational status using AstroUXDS 6-level system */
|
|
31
|
+
status?: 'off' | 'standby' | 'normal' | 'caution' | 'serious' | 'critical';
|
|
32
|
+
}
|
|
33
|
+
export interface Spacecraft {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
noradId?: number;
|
|
37
|
+
type?: string;
|
|
38
|
+
/** Status using AstroUXDS 6-level system */
|
|
39
|
+
status?: 'off' | 'standby' | 'normal' | 'caution' | 'serious' | 'critical';
|
|
40
|
+
}
|
|
41
|
+
export interface GroundStation {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
latitude: number;
|
|
45
|
+
longitude: number;
|
|
46
|
+
elevation?: number;
|
|
47
|
+
/** Minimum elevation angle for visibility (degrees) */
|
|
48
|
+
minElevation?: number;
|
|
49
|
+
network?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface GroundTrackPoint {
|
|
52
|
+
latitude: number;
|
|
53
|
+
longitude: number;
|
|
54
|
+
altitude: number;
|
|
55
|
+
timestamp: string;
|
|
56
|
+
}
|
|
57
|
+
export interface AccessData {
|
|
58
|
+
stationId: string;
|
|
59
|
+
stationName: string;
|
|
60
|
+
spacecraftId: string;
|
|
61
|
+
aos: string;
|
|
62
|
+
los: string;
|
|
63
|
+
maxElevation: number;
|
|
64
|
+
azimuthAos?: number;
|
|
65
|
+
azimuthLos?: number;
|
|
66
|
+
/** Whether link is currently accessible */
|
|
67
|
+
isAccessible?: boolean;
|
|
68
|
+
/** Current elevation angle (degrees) */
|
|
69
|
+
elevation?: number;
|
|
70
|
+
/** Current azimuth (degrees) */
|
|
71
|
+
azimuth?: number;
|
|
72
|
+
/** Slant range in km */
|
|
73
|
+
slantRange?: number;
|
|
74
|
+
/** Signal strength 0-100 */
|
|
75
|
+
signalStrength?: number;
|
|
76
|
+
/** Link budget details */
|
|
77
|
+
linkBudget?: {
|
|
78
|
+
receivedPower?: number;
|
|
79
|
+
snr?: number;
|
|
80
|
+
dataRate?: number;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export interface AccessWindow {
|
|
84
|
+
aos: string;
|
|
85
|
+
los: string;
|
|
86
|
+
maxElevation: number;
|
|
87
|
+
stationId: string;
|
|
88
|
+
/** Start time (ISO or ms) */
|
|
89
|
+
startTime?: string | number;
|
|
90
|
+
/** Duration in seconds */
|
|
91
|
+
duration?: number;
|
|
92
|
+
}
|
|
93
|
+
export interface TelemetryData {
|
|
94
|
+
timestamp: string;
|
|
95
|
+
subsystems: {
|
|
96
|
+
power?: {
|
|
97
|
+
status: string;
|
|
98
|
+
batteryLevel?: number;
|
|
99
|
+
solarArrayOutput?: number;
|
|
100
|
+
voltage?: number;
|
|
101
|
+
solarGeneration?: number;
|
|
102
|
+
consumption?: number;
|
|
103
|
+
};
|
|
104
|
+
thermal?: {
|
|
105
|
+
status: string;
|
|
106
|
+
cpuTemp?: number;
|
|
107
|
+
batteryTemp?: number;
|
|
108
|
+
};
|
|
109
|
+
comms?: {
|
|
110
|
+
status: string;
|
|
111
|
+
signalStrength?: number;
|
|
112
|
+
dataRate?: number;
|
|
113
|
+
downlinkRate?: number;
|
|
114
|
+
transmitterStatus?: string;
|
|
115
|
+
packetsQueued?: number;
|
|
116
|
+
bytesTransmitted?: number;
|
|
117
|
+
packetsTransmitted?: number;
|
|
118
|
+
};
|
|
119
|
+
attitude?: {
|
|
120
|
+
status: string;
|
|
121
|
+
pointingError?: number;
|
|
122
|
+
eulerAngles?: EulerAngles;
|
|
123
|
+
targetMode?: string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
/** Health status (convenience alias / extended) */
|
|
127
|
+
health?: {
|
|
128
|
+
status?: string;
|
|
129
|
+
anomalies?: Array<{
|
|
130
|
+
id: string;
|
|
131
|
+
message: string;
|
|
132
|
+
severity?: string;
|
|
133
|
+
}>;
|
|
134
|
+
};
|
|
135
|
+
/** Power (convenience alias for subsystems.power / extended) */
|
|
136
|
+
power?: {
|
|
137
|
+
status?: string;
|
|
138
|
+
batteryLevel?: number;
|
|
139
|
+
solarArrayOutput?: number;
|
|
140
|
+
voltage?: number;
|
|
141
|
+
solarGeneration?: number;
|
|
142
|
+
consumption?: number;
|
|
143
|
+
};
|
|
144
|
+
/** Attitude (convenience alias / extended) */
|
|
145
|
+
attitude?: {
|
|
146
|
+
status?: string;
|
|
147
|
+
eulerAngles?: EulerAngles;
|
|
148
|
+
targetMode?: string;
|
|
149
|
+
pointingError?: number;
|
|
150
|
+
};
|
|
151
|
+
/** Communications (convenience alias / extended) */
|
|
152
|
+
communications?: {
|
|
153
|
+
status?: string;
|
|
154
|
+
signalStrength?: number;
|
|
155
|
+
dataRate?: number;
|
|
156
|
+
downlinkRate?: number;
|
|
157
|
+
transmitterStatus?: string;
|
|
158
|
+
packetsQueued?: number;
|
|
159
|
+
bytesTransmitted?: number;
|
|
160
|
+
packetsTransmitted?: number;
|
|
161
|
+
};
|
|
162
|
+
alerts?: Array<{
|
|
163
|
+
id: string;
|
|
164
|
+
severity: string;
|
|
165
|
+
message: string;
|
|
166
|
+
timestamp: string;
|
|
167
|
+
}>;
|
|
168
|
+
}
|
|
169
|
+
export interface OrbitalElements {
|
|
170
|
+
semiMajorAxis: number;
|
|
171
|
+
eccentricity: number;
|
|
172
|
+
inclination: number;
|
|
173
|
+
raan: number;
|
|
174
|
+
argumentOfPerigee: number;
|
|
175
|
+
trueAnomaly: number;
|
|
176
|
+
period?: number;
|
|
177
|
+
epoch?: string;
|
|
178
|
+
}
|
|
179
|
+
export interface Quaternion {
|
|
180
|
+
x: number;
|
|
181
|
+
y: number;
|
|
182
|
+
z: number;
|
|
183
|
+
w: number;
|
|
184
|
+
}
|
|
185
|
+
export interface EulerAngles {
|
|
186
|
+
roll: number;
|
|
187
|
+
pitch: number;
|
|
188
|
+
yaw: number;
|
|
189
|
+
}
|
|
190
|
+
export interface AngularVelocity {
|
|
191
|
+
x: number;
|
|
192
|
+
y: number;
|
|
193
|
+
z: number;
|
|
194
|
+
}
|
|
195
|
+
export interface AttitudeData {
|
|
196
|
+
quaternion: Quaternion;
|
|
197
|
+
eulerAngles: EulerAngles;
|
|
198
|
+
angularVelocity: AngularVelocity;
|
|
199
|
+
targetMode?: string;
|
|
200
|
+
/** Pointing error in degrees */
|
|
201
|
+
pointingError?: number;
|
|
202
|
+
/** Target direction vector [x, y, z] */
|
|
203
|
+
targetDirection?: [number, number, number];
|
|
204
|
+
}
|
|
205
|
+
export type PointingMode = 'nadir' | 'sun' | 'target' | 'inertial' | 'velocity';
|
|
206
|
+
export interface EclipseInfo {
|
|
207
|
+
inEclipse: boolean;
|
|
208
|
+
timeToEclipse: number;
|
|
209
|
+
eclipseDuration: number;
|
|
210
|
+
sunlightDuration: number;
|
|
211
|
+
/** Umbra duration in seconds */
|
|
212
|
+
umbraDuration?: number;
|
|
213
|
+
/** Penumbra duration in seconds */
|
|
214
|
+
penumbraDuration?: number;
|
|
215
|
+
/** Seconds until sunlight (when in eclipse) */
|
|
216
|
+
timeToSunlight?: number;
|
|
217
|
+
}
|
|
218
|
+
export interface DetailedLinkBudget {
|
|
219
|
+
spacecraftId: string;
|
|
220
|
+
groundStationId: string;
|
|
221
|
+
frequency: number;
|
|
222
|
+
eirp: number;
|
|
223
|
+
pathLoss: number;
|
|
224
|
+
atmosphericLoss: number;
|
|
225
|
+
receiverGain: number;
|
|
226
|
+
systemNoiseTemp: number;
|
|
227
|
+
cnoRequired: number;
|
|
228
|
+
cnoActual: number;
|
|
229
|
+
margin: number;
|
|
230
|
+
dataRate: number;
|
|
231
|
+
}
|
|
232
|
+
export interface ThermalZone {
|
|
233
|
+
id: string;
|
|
234
|
+
name: string;
|
|
235
|
+
temperature: number;
|
|
236
|
+
minLimit: number;
|
|
237
|
+
maxLimit: number;
|
|
238
|
+
}
|
|
239
|
+
export interface ThermalData {
|
|
240
|
+
timestamp: string;
|
|
241
|
+
zones: ThermalZone[];
|
|
242
|
+
averageTemp: number;
|
|
243
|
+
hottest: {
|
|
244
|
+
zone: string;
|
|
245
|
+
temp: number;
|
|
246
|
+
};
|
|
247
|
+
coldest: {
|
|
248
|
+
zone: string;
|
|
249
|
+
temp: number;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
export interface ThrusterStatus {
|
|
253
|
+
id: string;
|
|
254
|
+
name: string;
|
|
255
|
+
status: 'ready' | 'firing' | 'disabled' | 'error';
|
|
256
|
+
fuelFlow?: number;
|
|
257
|
+
}
|
|
258
|
+
export interface PropulsionSummary {
|
|
259
|
+
fuelRemaining: number;
|
|
260
|
+
fuelCapacity: number;
|
|
261
|
+
thrusterStatus: ThrusterStatus[];
|
|
262
|
+
deltaVRemaining: number;
|
|
263
|
+
deltaVUsed: number;
|
|
264
|
+
lastManeuver?: string;
|
|
265
|
+
}
|
|
266
|
+
export interface ReactionWheelData {
|
|
267
|
+
/** Unique wheel identifier */
|
|
268
|
+
id: string;
|
|
269
|
+
/** Display name (e.g. "RW-X", "RW-1") */
|
|
270
|
+
name: string;
|
|
271
|
+
/** Mounted axis */
|
|
272
|
+
axis: 'X' | 'Y' | 'Z' | 'skew';
|
|
273
|
+
/** Current stored angular momentum in N·m·s */
|
|
274
|
+
momentumNms: number;
|
|
275
|
+
/** Maximum momentum capacity in N·m·s */
|
|
276
|
+
maxMomentumNms: number;
|
|
277
|
+
/** Current wheel speed in RPM */
|
|
278
|
+
speedRpm: number;
|
|
279
|
+
/** Maximum wheel speed in RPM */
|
|
280
|
+
maxSpeedRpm: number;
|
|
281
|
+
/** Operational status */
|
|
282
|
+
status: 'nominal' | 'saturated' | 'desaturating' | 'off' | 'error';
|
|
283
|
+
/** Power consumption in Watts */
|
|
284
|
+
powerW?: number;
|
|
285
|
+
/** Bearing temperature in °C */
|
|
286
|
+
temperatureC?: number;
|
|
287
|
+
}
|
|
288
|
+
/** LVLH (Local Vertical Local Horizontal) frame vector */
|
|
289
|
+
export interface LVLHVector {
|
|
290
|
+
/** Radial component (local vertical, positive away from Earth) */
|
|
291
|
+
radial: number;
|
|
292
|
+
/** In-track component (along velocity vector) */
|
|
293
|
+
inTrack: number;
|
|
294
|
+
/** Cross-track component (normal to orbital plane) */
|
|
295
|
+
crossTrack: number;
|
|
296
|
+
}
|
|
297
|
+
/** Time-stamped LVLH state for trajectory plotting */
|
|
298
|
+
export interface LVLHState {
|
|
299
|
+
/** Timestamp in milliseconds */
|
|
300
|
+
time: number;
|
|
301
|
+
/** Position in LVLH frame (km) */
|
|
302
|
+
position: LVLHVector;
|
|
303
|
+
/** Velocity in LVLH frame (km/s) */
|
|
304
|
+
velocity: LVLHVector;
|
|
305
|
+
}
|
|
306
|
+
/** Thruster firing event */
|
|
307
|
+
export interface ThrusterFireEvent {
|
|
308
|
+
/** Event timestamp in milliseconds */
|
|
309
|
+
time: number;
|
|
310
|
+
/** Thruster ID */
|
|
311
|
+
thrusterId: string;
|
|
312
|
+
/** Display name */
|
|
313
|
+
name: string;
|
|
314
|
+
/** Delta-V magnitude in m/s */
|
|
315
|
+
deltaVMs: number;
|
|
316
|
+
/** Delta-V direction in LVLH frame (unit vector) */
|
|
317
|
+
deltaVDirection?: LVLHVector;
|
|
318
|
+
/** Burn duration in seconds */
|
|
319
|
+
durationSeconds: number;
|
|
320
|
+
/** Event type */
|
|
321
|
+
type: 'impulsive' | 'finite' | 'continuous';
|
|
322
|
+
}
|
|
323
|
+
export type PlanetId = 'sun' | 'mercury' | 'venus' | 'earth' | 'moon' | 'mars' | 'jupiter' | 'saturn' | 'uranus' | 'neptune' | 'pluto';
|
|
324
|
+
export interface PlanetInfo {
|
|
325
|
+
id: PlanetId;
|
|
326
|
+
name: string;
|
|
327
|
+
radius: number;
|
|
328
|
+
/** @deprecated Use radius */
|
|
329
|
+
radiusKm?: number;
|
|
330
|
+
mass: number;
|
|
331
|
+
semiMajorAxis: number;
|
|
332
|
+
/** Distance from Sun in AU (alias for semiMajorAxis) */
|
|
333
|
+
distanceFromSunAU?: number;
|
|
334
|
+
orbitalPeriod: number;
|
|
335
|
+
color: string;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Estimate orbital period from altitude (simplified)
|
|
339
|
+
*/
|
|
340
|
+
export declare function estimateOrbitalPeriod(altitudeKm: number): number;
|
|
341
|
+
/**
|
|
342
|
+
* Estimate orbital velocity from altitude (simplified)
|
|
343
|
+
*/
|
|
344
|
+
export declare function estimateOrbitalVelocity(altitudeKm: number): number;
|
|
345
|
+
/**
|
|
346
|
+
* Convert AU to kilometers
|
|
347
|
+
*/
|
|
348
|
+
export declare function auToKm(au: number): number;
|
|
349
|
+
/**
|
|
350
|
+
* Normalize planet name to PlanetId
|
|
351
|
+
*/
|
|
352
|
+
export declare function normalizePlanetName(name: string): PlanetId | null;
|
|
353
|
+
/**
|
|
354
|
+
* Get planet info by ID
|
|
355
|
+
*/
|
|
356
|
+
export declare function getPlanet(id: PlanetId): PlanetInfo | undefined;
|
|
357
|
+
/**
|
|
358
|
+
* Planet data (simplified)
|
|
359
|
+
*/
|
|
360
|
+
export declare const PLANETS: PlanetInfo[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
function estimateOrbitalPeriod(altitudeKm) {
|
|
2
|
+
const earthRadiusKm = 6371;
|
|
3
|
+
const mu = 398600.4418;
|
|
4
|
+
const semiMajorAxis = earthRadiusKm + altitudeKm;
|
|
5
|
+
const period = 2 * Math.PI * Math.sqrt(Math.pow(semiMajorAxis, 3) / mu);
|
|
6
|
+
return period / 60;
|
|
7
|
+
}
|
|
8
|
+
function estimateOrbitalVelocity(altitudeKm) {
|
|
9
|
+
const earthRadiusKm = 6371;
|
|
10
|
+
const mu = 398600.4418;
|
|
11
|
+
const radius = earthRadiusKm + altitudeKm;
|
|
12
|
+
return Math.sqrt(mu / radius);
|
|
13
|
+
}
|
|
14
|
+
function auToKm(au) {
|
|
15
|
+
return au * 1495978707e-1;
|
|
16
|
+
}
|
|
17
|
+
function normalizePlanetName(name) {
|
|
18
|
+
const normalized = name.toLowerCase().trim();
|
|
19
|
+
const validPlanets = [
|
|
20
|
+
"sun",
|
|
21
|
+
"mercury",
|
|
22
|
+
"venus",
|
|
23
|
+
"earth",
|
|
24
|
+
"moon",
|
|
25
|
+
"mars",
|
|
26
|
+
"jupiter",
|
|
27
|
+
"saturn",
|
|
28
|
+
"uranus",
|
|
29
|
+
"neptune",
|
|
30
|
+
"pluto"
|
|
31
|
+
];
|
|
32
|
+
return validPlanets.includes(normalized) ? normalized : null;
|
|
33
|
+
}
|
|
34
|
+
function getPlanet(id) {
|
|
35
|
+
return PLANETS.find((p) => p.id === id);
|
|
36
|
+
}
|
|
37
|
+
const PLANETS = [
|
|
38
|
+
{ id: "sun", name: "Sun", radius: 696340, mass: 1989e27, semiMajorAxis: 0, orbitalPeriod: 0, color: "#ffcc00" },
|
|
39
|
+
{ id: "mercury", name: "Mercury", radius: 2439.7, mass: 33011e19, semiMajorAxis: 0.387, orbitalPeriod: 88, color: "#b5b5b5" },
|
|
40
|
+
{ id: "venus", name: "Venus", radius: 6051.8, mass: 48675e20, semiMajorAxis: 0.723, orbitalPeriod: 225, color: "#e6c87a" },
|
|
41
|
+
{ id: "earth", name: "Earth", radius: 6371, mass: 5972e21, semiMajorAxis: 1, orbitalPeriod: 365, color: "#4da6ff" },
|
|
42
|
+
{ id: "moon", name: "Moon", radius: 1737.4, mass: 7342e19, semiMajorAxis: 257e-5, orbitalPeriod: 27.3, color: "#c0c0c0" },
|
|
43
|
+
{ id: "mars", name: "Mars", radius: 3389.5, mass: 64171e19, semiMajorAxis: 1.524, orbitalPeriod: 687, color: "#e07b4a" },
|
|
44
|
+
{ id: "jupiter", name: "Jupiter", radius: 69911, mass: 18982e23, semiMajorAxis: 5.203, orbitalPeriod: 4333, color: "#d8ca9d" },
|
|
45
|
+
{ id: "saturn", name: "Saturn", radius: 58232, mass: 56834e22, semiMajorAxis: 9.537, orbitalPeriod: 10759, color: "#f4d59e" },
|
|
46
|
+
{ id: "uranus", name: "Uranus", radius: 25362, mass: 8681e22, semiMajorAxis: 19.19, orbitalPeriod: 30687, color: "#b3e0e6" },
|
|
47
|
+
{ id: "neptune", name: "Neptune", radius: 24622, mass: 102413e21, semiMajorAxis: 30.07, orbitalPeriod: 60190, color: "#5b7fff" },
|
|
48
|
+
{ id: "pluto", name: "Pluto", radius: 1188.3, mass: 1303e19, semiMajorAxis: 39.48, orbitalPeriod: 90560, color: "#c9b79c" }
|
|
49
|
+
];
|
|
50
|
+
export {
|
|
51
|
+
PLANETS,
|
|
52
|
+
auToKm,
|
|
53
|
+
estimateOrbitalPeriod,
|
|
54
|
+
estimateOrbitalVelocity,
|
|
55
|
+
getPlanet,
|
|
56
|
+
normalizePlanetName
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/react/types.ts"],"sourcesContent":["/**\n * @zendir/ui - Local Type Definitions\n * \n * These types are provided so the UI library can be used without @zendir/sdk.\n * If you have @zendir/sdk installed, those types will be used instead.\n * \n * All types here mirror the @zendir/sdk interfaces.\n */\n\n// =============================================================================\n// Spacecraft Types\n// =============================================================================\n\nexport interface SpacecraftPosition {\n /** Optional spacecraft id (when combined with Spacecraft) */\n id?: string;\n /** Optional display name */\n name?: string;\n /** Latitude in degrees (-90 to 90) */\n latitude: number;\n /** Longitude in degrees (-180 to 180) */\n longitude: number;\n /** Altitude in kilometers */\n altitude: number;\n /** Velocity in km/s */\n velocity?: number;\n /** Heading in degrees */\n heading?: number;\n /** Timestamp */\n timestamp?: string;\n /** Orbit type (e.g. LEO, GEO) */\n orbitType?: string;\n /** Orbital inclination in degrees */\n inclination?: number;\n /** Health/operational status using AstroUXDS 6-level system */\n status?: 'off' | 'standby' | 'normal' | 'caution' | 'serious' | 'critical';\n}\n\nexport interface Spacecraft {\n id: string;\n name: string;\n noradId?: number;\n type?: string;\n /** Status using AstroUXDS 6-level system */\n status?: 'off' | 'standby' | 'normal' | 'caution' | 'serious' | 'critical';\n}\n\n// =============================================================================\n// Ground Station Types\n// =============================================================================\n\nexport interface GroundStation {\n id: string;\n name: string;\n latitude: number;\n longitude: number;\n elevation?: number;\n /** Minimum elevation angle for visibility (degrees) */\n minElevation?: number;\n network?: string;\n}\n\nexport interface GroundTrackPoint {\n latitude: number;\n longitude: number;\n altitude: number;\n timestamp: string;\n}\n\n// =============================================================================\n// Access / Contact Types\n// =============================================================================\n\nexport interface AccessData {\n stationId: string;\n stationName: string;\n spacecraftId: string;\n aos: string; // Acquisition of Signal - ISO timestamp\n los: string; // Loss of Signal - ISO timestamp\n maxElevation: number;\n azimuthAos?: number;\n azimuthLos?: number;\n /** Whether link is currently accessible */\n isAccessible?: boolean;\n /** Current elevation angle (degrees) */\n elevation?: number;\n /** Current azimuth (degrees) */\n azimuth?: number;\n /** Slant range in km */\n slantRange?: number;\n /** Signal strength 0-100 */\n signalStrength?: number;\n /** Link budget details */\n linkBudget?: {\n receivedPower?: number;\n snr?: number;\n dataRate?: number;\n };\n}\n\nexport interface AccessWindow {\n aos: string;\n los: string;\n maxElevation: number;\n stationId: string;\n /** Start time (ISO or ms) */\n startTime?: string | number;\n /** Duration in seconds */\n duration?: number;\n}\n\n// =============================================================================\n// Telemetry Types\n// =============================================================================\n\nexport interface TelemetryData {\n timestamp: string;\n subsystems: {\n power?: {\n status: string;\n batteryLevel?: number;\n solarArrayOutput?: number;\n voltage?: number;\n solarGeneration?: number;\n consumption?: number;\n };\n thermal?: {\n status: string;\n cpuTemp?: number;\n batteryTemp?: number;\n };\n comms?: {\n status: string;\n signalStrength?: number;\n dataRate?: number;\n downlinkRate?: number;\n transmitterStatus?: string;\n packetsQueued?: number;\n bytesTransmitted?: number;\n packetsTransmitted?: number;\n };\n attitude?: {\n status: string;\n pointingError?: number;\n eulerAngles?: EulerAngles;\n targetMode?: string;\n };\n };\n /** Health status (convenience alias / extended) */\n health?: {\n status?: string;\n anomalies?: Array<{ id: string; message: string; severity?: string }>;\n };\n /** Power (convenience alias for subsystems.power / extended) */\n power?: {\n status?: string;\n batteryLevel?: number;\n solarArrayOutput?: number;\n voltage?: number;\n solarGeneration?: number;\n consumption?: number;\n };\n /** Attitude (convenience alias / extended) */\n attitude?: {\n status?: string;\n eulerAngles?: EulerAngles;\n targetMode?: string;\n pointingError?: number;\n };\n /** Communications (convenience alias / extended) */\n communications?: {\n status?: string;\n signalStrength?: number;\n dataRate?: number;\n downlinkRate?: number;\n transmitterStatus?: string;\n packetsQueued?: number;\n bytesTransmitted?: number;\n packetsTransmitted?: number;\n };\n alerts?: Array<{\n id: string;\n severity: string;\n message: string;\n timestamp: string;\n }>;\n}\n\n// =============================================================================\n// Orbital Types\n// =============================================================================\n\nexport interface OrbitalElements {\n semiMajorAxis: number;\n eccentricity: number;\n inclination: number;\n raan: number; // Right Ascension of Ascending Node\n argumentOfPerigee: number;\n trueAnomaly: number;\n period?: number;\n epoch?: string;\n}\n\n// =============================================================================\n// Attitude Types\n// =============================================================================\n\nexport interface Quaternion {\n x: number;\n y: number;\n z: number;\n w: number;\n}\n\nexport interface EulerAngles {\n roll: number;\n pitch: number;\n yaw: number;\n}\n\nexport interface AngularVelocity {\n x: number;\n y: number;\n z: number;\n}\n\nexport interface AttitudeData {\n quaternion: Quaternion;\n eulerAngles: EulerAngles;\n angularVelocity: AngularVelocity;\n targetMode?: string;\n /** Pointing error in degrees */\n pointingError?: number;\n /** Target direction vector [x, y, z] */\n targetDirection?: [number, number, number];\n}\n\nexport type PointingMode = 'nadir' | 'sun' | 'target' | 'inertial' | 'velocity';\n\n// =============================================================================\n// Eclipse Types\n// =============================================================================\n\nexport interface EclipseInfo {\n inEclipse: boolean;\n timeToEclipse: number; // seconds\n eclipseDuration: number; // seconds\n sunlightDuration: number; // seconds\n /** Umbra duration in seconds */\n umbraDuration?: number;\n /** Penumbra duration in seconds */\n penumbraDuration?: number;\n /** Seconds until sunlight (when in eclipse) */\n timeToSunlight?: number;\n}\n\n// =============================================================================\n// Link Budget Types\n// =============================================================================\n\nexport interface DetailedLinkBudget {\n spacecraftId: string;\n groundStationId: string;\n frequency: number;\n eirp: number;\n pathLoss: number;\n atmosphericLoss: number;\n receiverGain: number;\n systemNoiseTemp: number;\n cnoRequired: number;\n cnoActual: number;\n margin: number;\n dataRate: number;\n}\n\n// =============================================================================\n// Thermal Types\n// =============================================================================\n\nexport interface ThermalZone {\n id: string;\n name: string;\n temperature: number;\n minLimit: number;\n maxLimit: number;\n}\n\nexport interface ThermalData {\n timestamp: string;\n zones: ThermalZone[];\n averageTemp: number;\n hottest: { zone: string; temp: number };\n coldest: { zone: string; temp: number };\n}\n\n// =============================================================================\n// Propulsion Types\n// =============================================================================\n\nexport interface ThrusterStatus {\n id: string;\n name: string;\n status: 'ready' | 'firing' | 'disabled' | 'error';\n fuelFlow?: number;\n}\n\nexport interface PropulsionSummary {\n fuelRemaining: number;\n fuelCapacity: number;\n thrusterStatus: ThrusterStatus[];\n deltaVRemaining: number;\n deltaVUsed: number;\n lastManeuver?: string;\n}\n\n// =============================================================================\n// Reaction Wheel / Momentum Types\n// =============================================================================\n\nexport interface ReactionWheelData {\n /** Unique wheel identifier */\n id: string;\n /** Display name (e.g. \"RW-X\", \"RW-1\") */\n name: string;\n /** Mounted axis */\n axis: 'X' | 'Y' | 'Z' | 'skew';\n /** Current stored angular momentum in N·m·s */\n momentumNms: number;\n /** Maximum momentum capacity in N·m·s */\n maxMomentumNms: number;\n /** Current wheel speed in RPM */\n speedRpm: number;\n /** Maximum wheel speed in RPM */\n maxSpeedRpm: number;\n /** Operational status */\n status: 'nominal' | 'saturated' | 'desaturating' | 'off' | 'error';\n /** Power consumption in Watts */\n powerW?: number;\n /** Bearing temperature in °C */\n temperatureC?: number;\n}\n\n/** LVLH (Local Vertical Local Horizontal) frame vector */\nexport interface LVLHVector {\n /** Radial component (local vertical, positive away from Earth) */\n radial: number;\n /** In-track component (along velocity vector) */\n inTrack: number;\n /** Cross-track component (normal to orbital plane) */\n crossTrack: number;\n}\n\n/** Time-stamped LVLH state for trajectory plotting */\nexport interface LVLHState {\n /** Timestamp in milliseconds */\n time: number;\n /** Position in LVLH frame (km) */\n position: LVLHVector;\n /** Velocity in LVLH frame (km/s) */\n velocity: LVLHVector;\n}\n\n/** Thruster firing event */\nexport interface ThrusterFireEvent {\n /** Event timestamp in milliseconds */\n time: number;\n /** Thruster ID */\n thrusterId: string;\n /** Display name */\n name: string;\n /** Delta-V magnitude in m/s */\n deltaVMs: number;\n /** Delta-V direction in LVLH frame (unit vector) */\n deltaVDirection?: LVLHVector;\n /** Burn duration in seconds */\n durationSeconds: number;\n /** Event type */\n type: 'impulsive' | 'finite' | 'continuous';\n}\n\n// =============================================================================\n// Planet Types\n// =============================================================================\n\nexport type PlanetId = \n | 'sun' \n | 'mercury' \n | 'venus' \n | 'earth' \n | 'moon' \n | 'mars' \n | 'jupiter' \n | 'saturn' \n | 'uranus' \n | 'neptune' \n | 'pluto';\n\nexport interface PlanetInfo {\n id: PlanetId;\n name: string;\n radius: number; // km\n /** @deprecated Use radius */\n radiusKm?: number;\n mass: number; // kg\n semiMajorAxis: number; // AU\n /** Distance from Sun in AU (alias for semiMajorAxis) */\n distanceFromSunAU?: number;\n orbitalPeriod: number; // Earth days\n color: string;\n}\n\n// =============================================================================\n// Utility Functions (fallbacks when SDK not available)\n// =============================================================================\n\n/**\n * Estimate orbital period from altitude (simplified)\n */\nexport function estimateOrbitalPeriod(altitudeKm: number): number {\n const earthRadiusKm = 6371;\n const mu = 398600.4418; // km³/s² - Earth's gravitational parameter\n const semiMajorAxis = earthRadiusKm + altitudeKm;\n const period = 2 * Math.PI * Math.sqrt(Math.pow(semiMajorAxis, 3) / mu);\n return period / 60; // Return in minutes\n}\n\n/**\n * Estimate orbital velocity from altitude (simplified)\n */\nexport function estimateOrbitalVelocity(altitudeKm: number): number {\n const earthRadiusKm = 6371;\n const mu = 398600.4418; // km³/s²\n const radius = earthRadiusKm + altitudeKm;\n return Math.sqrt(mu / radius); // km/s\n}\n\n/**\n * Convert AU to kilometers\n */\nexport function auToKm(au: number): number {\n return au * 149597870.7;\n}\n\n/**\n * Normalize planet name to PlanetId\n */\nexport function normalizePlanetName(name: string): PlanetId | null {\n const normalized = name.toLowerCase().trim();\n const validPlanets: PlanetId[] = [\n 'sun', 'mercury', 'venus', 'earth', 'moon', \n 'mars', 'jupiter', 'saturn', 'uranus', 'neptune', 'pluto'\n ];\n return validPlanets.includes(normalized as PlanetId) \n ? (normalized as PlanetId) \n : null;\n}\n\n/**\n * Get planet info by ID\n */\nexport function getPlanet(id: PlanetId): PlanetInfo | undefined {\n return PLANETS.find(p => p.id === id);\n}\n\n/**\n * Planet data (simplified)\n */\nexport const PLANETS: PlanetInfo[] = [\n { id: 'sun', name: 'Sun', radius: 696340, mass: 1.989e30, semiMajorAxis: 0, orbitalPeriod: 0, color: '#ffcc00' },\n { id: 'mercury', name: 'Mercury', radius: 2439.7, mass: 3.3011e23, semiMajorAxis: 0.387, orbitalPeriod: 88, color: '#b5b5b5' },\n { id: 'venus', name: 'Venus', radius: 6051.8, mass: 4.8675e24, semiMajorAxis: 0.723, orbitalPeriod: 225, color: '#e6c87a' },\n { id: 'earth', name: 'Earth', radius: 6371, mass: 5.972e24, semiMajorAxis: 1.0, orbitalPeriod: 365, color: '#4da6ff' },\n { id: 'moon', name: 'Moon', radius: 1737.4, mass: 7.342e22, semiMajorAxis: 0.00257, orbitalPeriod: 27.3, color: '#c0c0c0' },\n { id: 'mars', name: 'Mars', radius: 3389.5, mass: 6.4171e23, semiMajorAxis: 1.524, orbitalPeriod: 687, color: '#e07b4a' },\n { id: 'jupiter', name: 'Jupiter', radius: 69911, mass: 1.8982e27, semiMajorAxis: 5.203, orbitalPeriod: 4333, color: '#d8ca9d' },\n { id: 'saturn', name: 'Saturn', radius: 58232, mass: 5.6834e26, semiMajorAxis: 9.537, orbitalPeriod: 10759, color: '#f4d59e' },\n { id: 'uranus', name: 'Uranus', radius: 25362, mass: 8.6810e25, semiMajorAxis: 19.19, orbitalPeriod: 30687, color: '#b3e0e6' },\n { id: 'neptune', name: 'Neptune', radius: 24622, mass: 1.02413e26, semiMajorAxis: 30.07, orbitalPeriod: 60190, color: '#5b7fff' },\n { id: 'pluto', name: 'Pluto', radius: 1188.3, mass: 1.303e22, semiMajorAxis: 39.48, orbitalPeriod: 90560, color: '#c9b79c' },\n];\n"],"names":[],"mappings":"AAkaO,SAAS,sBAAsB,YAA4B;AAChE,QAAM,gBAAgB;AACtB,QAAM,KAAK;AACX,QAAM,gBAAgB,gBAAgB;AACtC,QAAM,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,eAAe,CAAC,IAAI,EAAE;AACtE,SAAO,SAAS;AAClB;AAKO,SAAS,wBAAwB,YAA4B;AAClE,QAAM,gBAAgB;AACtB,QAAM,KAAK;AACX,QAAM,SAAS,gBAAgB;AAC/B,SAAO,KAAK,KAAK,KAAK,MAAM;AAC9B;AAKO,SAAS,OAAO,IAAoB;AACzC,SAAO,KAAK;AACd;AAKO,SAAS,oBAAoB,MAA+B;AACjE,QAAM,aAAa,KAAK,YAAA,EAAc,KAAA;AACtC,QAAM,eAA2B;AAAA,IAC/B;AAAA,IAAO;AAAA,IAAW;AAAA,IAAS;AAAA,IAAS;AAAA,IACpC;AAAA,IAAQ;AAAA,IAAW;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,EAAA;AAEpD,SAAO,aAAa,SAAS,UAAsB,IAC9C,aACD;AACN;AAKO,SAAS,UAAU,IAAsC;AAC9D,SAAO,QAAQ,KAAK,CAAA,MAAK,EAAE,OAAO,EAAE;AACtC;AAKO,MAAM,UAAwB;AAAA,EACnC,EAAE,IAAI,OAAO,MAAM,OAAO,QAAQ,QAAQ,MAAM,SAAU,eAAe,GAAG,eAAe,GAAG,OAAO,UAAA;AAAA,EACrG,EAAE,IAAI,WAAW,MAAM,WAAW,QAAQ,QAAQ,MAAM,UAAW,eAAe,OAAO,eAAe,IAAI,OAAO,UAAA;AAAA,EACnH,EAAE,IAAI,SAAS,MAAM,SAAS,QAAQ,QAAQ,MAAM,UAAW,eAAe,OAAO,eAAe,KAAK,OAAO,UAAA;AAAA,EAChH,EAAE,IAAI,SAAS,MAAM,SAAS,QAAQ,MAAM,MAAM,SAAU,eAAe,GAAK,eAAe,KAAK,OAAO,UAAA;AAAA,EAC3G,EAAE,IAAI,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,MAAM,SAAU,eAAe,QAAS,eAAe,MAAM,OAAO,UAAA;AAAA,EAChH,EAAE,IAAI,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,MAAM,UAAW,eAAe,OAAO,eAAe,KAAK,OAAO,UAAA;AAAA,EAC9G,EAAE,IAAI,WAAW,MAAM,WAAW,QAAQ,OAAO,MAAM,UAAW,eAAe,OAAO,eAAe,MAAM,OAAO,UAAA;AAAA,EACpH,EAAE,IAAI,UAAU,MAAM,UAAU,QAAQ,OAAO,MAAM,UAAW,eAAe,OAAO,eAAe,OAAO,OAAO,UAAA;AAAA,EACnH,EAAE,IAAI,UAAU,MAAM,UAAU,QAAQ,OAAO,MAAM,SAAW,eAAe,OAAO,eAAe,OAAO,OAAO,UAAA;AAAA,EACnH,EAAE,IAAI,WAAW,MAAM,WAAW,QAAQ,OAAO,MAAM,WAAY,eAAe,OAAO,eAAe,OAAO,OAAO,UAAA;AAAA,EACtH,EAAE,IAAI,SAAS,MAAM,SAAS,QAAQ,QAAQ,MAAM,SAAU,eAAe,OAAO,eAAe,OAAO,OAAO,UAAA;AACnH;"}
|