@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,614 @@
|
|
|
1
|
+
import { OrbitalElements, GroundStation } from '../types';
|
|
2
|
+
|
|
3
|
+
export type ViewMode = 'solar-system' | 'earth-orbit' | 'moon' | 'mars' | 'custom';
|
|
4
|
+
export type CameraMode = 'free' | 'follow' | 'orbit' | 'cinematic';
|
|
5
|
+
export type ObjectCategory = 'planet' | 'moon' | 'satellite' | 'debris' | 'station' | 'asteroid' | 'comet' | 'groundStation' | 'constellation';
|
|
6
|
+
export interface SpaceObject {
|
|
7
|
+
/** Unique identifier */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Display name */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Object category */
|
|
12
|
+
category: ObjectCategory;
|
|
13
|
+
/** NORAD catalog ID (for tracked objects) */
|
|
14
|
+
noradId?: number;
|
|
15
|
+
/** International designator */
|
|
16
|
+
intlDesignator?: string;
|
|
17
|
+
/** Position in ECI coordinates (km) */
|
|
18
|
+
position: Vector3D;
|
|
19
|
+
/** Velocity in ECI coordinates (km/s) */
|
|
20
|
+
velocity?: Vector3D;
|
|
21
|
+
/** Visual radius for rendering (km) */
|
|
22
|
+
visualRadius: number;
|
|
23
|
+
/** Color override */
|
|
24
|
+
color?: string;
|
|
25
|
+
/** Additional metadata */
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface Satellite extends SpaceObject {
|
|
29
|
+
category: 'satellite';
|
|
30
|
+
/** Two-Line Element set */
|
|
31
|
+
tle?: TLEData;
|
|
32
|
+
/** Orbital elements */
|
|
33
|
+
orbitalElements?: OrbitalElements;
|
|
34
|
+
/** Operator/owner */
|
|
35
|
+
operator?: string;
|
|
36
|
+
/** Launch date */
|
|
37
|
+
launchDate?: string;
|
|
38
|
+
/** Operational status */
|
|
39
|
+
status?: 'operational' | 'inactive' | 'decaying' | 'unknown';
|
|
40
|
+
/** Constellation membership */
|
|
41
|
+
constellation?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface Debris extends SpaceObject {
|
|
44
|
+
category: 'debris';
|
|
45
|
+
/** Radar cross-section (m²) */
|
|
46
|
+
rcs?: number;
|
|
47
|
+
/** Source event (fragmentation, collision, etc.) */
|
|
48
|
+
sourceEvent?: string;
|
|
49
|
+
/** Estimated size category */
|
|
50
|
+
sizeCategory?: 'small' | 'medium' | 'large';
|
|
51
|
+
}
|
|
52
|
+
export interface SpaceStation extends SpaceObject {
|
|
53
|
+
category: 'station';
|
|
54
|
+
/** Station type */
|
|
55
|
+
stationType?: 'iss' | 'tiangong' | 'commercial' | 'other';
|
|
56
|
+
/** Current crew count */
|
|
57
|
+
crewCount?: number;
|
|
58
|
+
/** Docked vehicles */
|
|
59
|
+
dockedVehicles?: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface Asteroid extends SpaceObject {
|
|
62
|
+
category: 'asteroid';
|
|
63
|
+
/** Spectral type */
|
|
64
|
+
spectralType?: string;
|
|
65
|
+
/** Absolute magnitude */
|
|
66
|
+
absoluteMagnitude?: number;
|
|
67
|
+
/** Estimated diameter (km) */
|
|
68
|
+
diameter?: number;
|
|
69
|
+
/** Is potentially hazardous */
|
|
70
|
+
isPHA?: boolean;
|
|
71
|
+
/** Close approach data */
|
|
72
|
+
closeApproach?: CloseApproachData;
|
|
73
|
+
}
|
|
74
|
+
export interface TLEData {
|
|
75
|
+
line1: string;
|
|
76
|
+
line2: string;
|
|
77
|
+
epoch: Date;
|
|
78
|
+
/** Mean motion (revolutions/day) */
|
|
79
|
+
meanMotion: number;
|
|
80
|
+
/** Eccentricity */
|
|
81
|
+
eccentricity: number;
|
|
82
|
+
/** Inclination (degrees) */
|
|
83
|
+
inclination: number;
|
|
84
|
+
/** RAAN (degrees) */
|
|
85
|
+
raan: number;
|
|
86
|
+
/** Argument of perigee (degrees) */
|
|
87
|
+
argOfPerigee: number;
|
|
88
|
+
/** Mean anomaly (degrees) */
|
|
89
|
+
meanAnomaly: number;
|
|
90
|
+
/** B* drag term */
|
|
91
|
+
bstar: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Legacy visibility cone (ground-station based)
|
|
95
|
+
* @deprecated Use SatelliteCoverage for realistic satellite-to-ground cones
|
|
96
|
+
*/
|
|
97
|
+
export interface VisibilityCone {
|
|
98
|
+
/** Ground station or region ID */
|
|
99
|
+
id: string;
|
|
100
|
+
/** Center position (lat, lon) */
|
|
101
|
+
center: {
|
|
102
|
+
latitude: number;
|
|
103
|
+
longitude: number;
|
|
104
|
+
};
|
|
105
|
+
/** Minimum elevation angle (degrees) */
|
|
106
|
+
minElevation: number;
|
|
107
|
+
/** Cone color */
|
|
108
|
+
color?: string;
|
|
109
|
+
/** Cone opacity */
|
|
110
|
+
opacity?: number;
|
|
111
|
+
/** Label text */
|
|
112
|
+
label?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Satellite coverage/sensor visualization
|
|
116
|
+
*
|
|
117
|
+
* This is a VISUALIZATION type - all geometry data comes from Zendir SDK.
|
|
118
|
+
* The SDK computes the actual coverage; this component just renders it.
|
|
119
|
+
*
|
|
120
|
+
* ## SDK Compatibility
|
|
121
|
+
*
|
|
122
|
+
* The `footprintPolygon` should come from Zendir SDK's sensor/coverage calculations.
|
|
123
|
+
* You can provide just the corner vertices (e.g., 4 points for a rectangular FOV)
|
|
124
|
+
* and the component will automatically interpolate along great circles to create
|
|
125
|
+
* a properly curved footprint that follows the Earth's spherical surface.
|
|
126
|
+
*
|
|
127
|
+
* Example SDK integration:
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const coverage = await zendirClient.getSensorCoverage(satelliteId, sensorId);
|
|
130
|
+
* // coverage.footprintPolygon contains the boundary vertices
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* ## Rendering Approach
|
|
134
|
+
*
|
|
135
|
+
* Uses spherical linear interpolation (SLERP) to subdivide polygon edges,
|
|
136
|
+
* ensuring the rendered coverage follows the sphere's curvature rather than
|
|
137
|
+
* cutting through it as a flat plane would.
|
|
138
|
+
*/
|
|
139
|
+
export interface SatelliteCoverage {
|
|
140
|
+
/** Unique coverage ID */
|
|
141
|
+
id: string;
|
|
142
|
+
/** Satellite ID this coverage belongs to */
|
|
143
|
+
satelliteId: string;
|
|
144
|
+
/** Sensor/instrument name */
|
|
145
|
+
sensorName?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Satellite position in scene coordinates (x, y, z)
|
|
148
|
+
* If not provided, will look up from satelliteId in scene
|
|
149
|
+
*/
|
|
150
|
+
satellitePosition?: {
|
|
151
|
+
x: number;
|
|
152
|
+
y: number;
|
|
153
|
+
z: number;
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Nadir/boresight point on Earth surface (lat, lon)
|
|
157
|
+
* This is where the sensor center points (from SDK)
|
|
158
|
+
*/
|
|
159
|
+
nadirPoint?: {
|
|
160
|
+
latitude: number;
|
|
161
|
+
longitude: number;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Footprint polygon corner vertices (lat, lon) - the coverage boundary on Earth
|
|
165
|
+
*
|
|
166
|
+
* Computed by Zendir SDK based on sensor FOV, pointing, and satellite position.
|
|
167
|
+
* Only corner points are needed (e.g., 4 points for rectangular coverage).
|
|
168
|
+
* The UI automatically interpolates along great circles for spherical accuracy.
|
|
169
|
+
*
|
|
170
|
+
* For best results, provide vertices in clockwise or counter-clockwise order.
|
|
171
|
+
*/
|
|
172
|
+
footprintPolygon?: Array<{
|
|
173
|
+
latitude: number;
|
|
174
|
+
longitude: number;
|
|
175
|
+
}>;
|
|
176
|
+
/**
|
|
177
|
+
* Cone geometry (alternative to footprint polygon)
|
|
178
|
+
* Half-angle of sensor field of view in degrees
|
|
179
|
+
* Used to render a simple circular cone if no footprint polygon provided
|
|
180
|
+
*/
|
|
181
|
+
halfAngle?: number;
|
|
182
|
+
/** Cone/footprint color */
|
|
183
|
+
color?: string;
|
|
184
|
+
/** Opacity (0-1) */
|
|
185
|
+
opacity?: number;
|
|
186
|
+
/** Show nadir line from satellite to ground */
|
|
187
|
+
showNadirLine?: boolean;
|
|
188
|
+
/** Show filled footprint area */
|
|
189
|
+
showFootprint?: boolean;
|
|
190
|
+
/** Show cone beam from satellite */
|
|
191
|
+
showCone?: boolean;
|
|
192
|
+
/** Coverage target/region name (for tooltip) */
|
|
193
|
+
targetName?: string;
|
|
194
|
+
/** Overpass time string (from SDK, e.g., "0.01:06") */
|
|
195
|
+
overpassTime?: string;
|
|
196
|
+
/** Is currently active/in view */
|
|
197
|
+
isActive?: boolean;
|
|
198
|
+
}
|
|
199
|
+
export interface CoverageRegion {
|
|
200
|
+
/** Region identifier */
|
|
201
|
+
id: string;
|
|
202
|
+
/** Region name */
|
|
203
|
+
name: string;
|
|
204
|
+
/** Polygon vertices (lat, lon pairs) */
|
|
205
|
+
polygon?: Array<{
|
|
206
|
+
latitude: number;
|
|
207
|
+
longitude: number;
|
|
208
|
+
}>;
|
|
209
|
+
/** Or circular region */
|
|
210
|
+
center?: {
|
|
211
|
+
latitude: number;
|
|
212
|
+
longitude: number;
|
|
213
|
+
};
|
|
214
|
+
radius?: number;
|
|
215
|
+
/** Coverage quality/value */
|
|
216
|
+
value?: number;
|
|
217
|
+
/** Color */
|
|
218
|
+
color?: string;
|
|
219
|
+
}
|
|
220
|
+
export interface OverpassInfo {
|
|
221
|
+
/** Region/station ID */
|
|
222
|
+
targetId: string;
|
|
223
|
+
/** Target name */
|
|
224
|
+
targetName: string;
|
|
225
|
+
/** Time until next overpass (seconds) */
|
|
226
|
+
timeToOverpass: number;
|
|
227
|
+
/** Overpass duration (seconds) */
|
|
228
|
+
duration: number;
|
|
229
|
+
/** Maximum elevation during pass */
|
|
230
|
+
maxElevation?: number;
|
|
231
|
+
}
|
|
232
|
+
export interface CoverageHexGrid {
|
|
233
|
+
/** Grid resolution (H3 resolution 0-15) */
|
|
234
|
+
resolution: number;
|
|
235
|
+
/** Hexagon data */
|
|
236
|
+
hexagons: Array<{
|
|
237
|
+
/** H3 index or center coordinates */
|
|
238
|
+
id: string;
|
|
239
|
+
/** Coverage value (0-1) */
|
|
240
|
+
value: number;
|
|
241
|
+
/** Center lat/lon */
|
|
242
|
+
center: {
|
|
243
|
+
latitude: number;
|
|
244
|
+
longitude: number;
|
|
245
|
+
};
|
|
246
|
+
}>;
|
|
247
|
+
/** Color scale */
|
|
248
|
+
colorScale?: {
|
|
249
|
+
min: string;
|
|
250
|
+
max: string;
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
export interface CoverageCell {
|
|
254
|
+
/** Cell identifier */
|
|
255
|
+
id: string;
|
|
256
|
+
/** Center latitude */
|
|
257
|
+
latitude: number;
|
|
258
|
+
/** Center longitude */
|
|
259
|
+
longitude: number;
|
|
260
|
+
/** Coverage value (0-1, used for heatmap color) */
|
|
261
|
+
value: number;
|
|
262
|
+
/** Custom color override */
|
|
263
|
+
color?: string;
|
|
264
|
+
}
|
|
265
|
+
export interface OrbitDesignArc {
|
|
266
|
+
/** Arc identifier */
|
|
267
|
+
id: string;
|
|
268
|
+
/** Orbital altitude (km) */
|
|
269
|
+
radius: number;
|
|
270
|
+
/** Start angle (radians) */
|
|
271
|
+
startAngle: number;
|
|
272
|
+
/** End angle (radians) */
|
|
273
|
+
endAngle: number;
|
|
274
|
+
/** Inclination (degrees) */
|
|
275
|
+
inclination?: number;
|
|
276
|
+
/** Arc color */
|
|
277
|
+
color?: string;
|
|
278
|
+
/** Number of segments */
|
|
279
|
+
segments?: number;
|
|
280
|
+
/** Arc label */
|
|
281
|
+
label?: string;
|
|
282
|
+
}
|
|
283
|
+
export interface OrbitPath {
|
|
284
|
+
/** Object ID */
|
|
285
|
+
objectId: string;
|
|
286
|
+
/** Array of position points */
|
|
287
|
+
points: Vector3D[];
|
|
288
|
+
/** Time span (seconds) */
|
|
289
|
+
timeSpan: number;
|
|
290
|
+
/** Is future prediction */
|
|
291
|
+
isFuture?: boolean;
|
|
292
|
+
/** Orbit color */
|
|
293
|
+
color?: string;
|
|
294
|
+
}
|
|
295
|
+
export interface ManeuverNode {
|
|
296
|
+
/** Maneuver ID */
|
|
297
|
+
id: string;
|
|
298
|
+
/** Execution time */
|
|
299
|
+
time: Date;
|
|
300
|
+
/** Delta-V vector (km/s) */
|
|
301
|
+
deltaV: Vector3D;
|
|
302
|
+
/** Maneuver type */
|
|
303
|
+
type?: 'prograde' | 'retrograde' | 'normal' | 'antinormal' | 'radial' | 'antiradial';
|
|
304
|
+
/** Planned/executed */
|
|
305
|
+
status?: 'planned' | 'executed';
|
|
306
|
+
}
|
|
307
|
+
export interface CloseApproachData {
|
|
308
|
+
/** Time of closest approach */
|
|
309
|
+
time: Date;
|
|
310
|
+
/** Distance (km) */
|
|
311
|
+
distance: number;
|
|
312
|
+
/** Relative velocity (km/s) */
|
|
313
|
+
relativeVelocity: number;
|
|
314
|
+
/** Target body */
|
|
315
|
+
body?: string;
|
|
316
|
+
}
|
|
317
|
+
export interface TimeState {
|
|
318
|
+
/** Current simulation time */
|
|
319
|
+
currentTime: Date;
|
|
320
|
+
/** Time scale (1 = realtime, 60 = 1min/sec, etc.) */
|
|
321
|
+
timeScale: number;
|
|
322
|
+
/** Is playing */
|
|
323
|
+
isPlaying: boolean;
|
|
324
|
+
/** Reference epoch */
|
|
325
|
+
epoch?: Date;
|
|
326
|
+
}
|
|
327
|
+
export type ToolType = 'select' | 'measure' | 'orbit-designer' | 'coverage-analysis' | 'conjunction-warning';
|
|
328
|
+
export interface ToolState {
|
|
329
|
+
activeTool: ToolType;
|
|
330
|
+
measurementPoints?: Vector3D[];
|
|
331
|
+
orbitDesignerState?: {
|
|
332
|
+
inclination: number;
|
|
333
|
+
altitude: number;
|
|
334
|
+
eccentricity: number;
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
export interface LayerVisibility {
|
|
338
|
+
planets: boolean;
|
|
339
|
+
moons: boolean;
|
|
340
|
+
satellites: boolean;
|
|
341
|
+
debris: boolean;
|
|
342
|
+
stations: boolean;
|
|
343
|
+
asteroids: boolean;
|
|
344
|
+
groundStations: boolean;
|
|
345
|
+
orbits: boolean;
|
|
346
|
+
labels: boolean;
|
|
347
|
+
constellations: boolean;
|
|
348
|
+
coverage: boolean;
|
|
349
|
+
atmosphere: boolean;
|
|
350
|
+
stars: boolean;
|
|
351
|
+
grid: boolean;
|
|
352
|
+
terminator: boolean;
|
|
353
|
+
}
|
|
354
|
+
export interface SelectionState {
|
|
355
|
+
/** Selected object ID */
|
|
356
|
+
selectedId: string | null;
|
|
357
|
+
/** Selected object data */
|
|
358
|
+
selectedObject: SpaceObject | null;
|
|
359
|
+
/** Hovered object ID */
|
|
360
|
+
hoveredId: string | null;
|
|
361
|
+
/** Multi-selection IDs */
|
|
362
|
+
multiSelect?: string[];
|
|
363
|
+
}
|
|
364
|
+
export interface CameraState {
|
|
365
|
+
/** Camera position (km from origin) */
|
|
366
|
+
position: Vector3D;
|
|
367
|
+
/** Look-at target (km from origin) */
|
|
368
|
+
target: Vector3D;
|
|
369
|
+
/** Up vector */
|
|
370
|
+
up: Vector3D;
|
|
371
|
+
/** Field of view (degrees) */
|
|
372
|
+
fov: number;
|
|
373
|
+
/** Near clipping plane */
|
|
374
|
+
near: number;
|
|
375
|
+
/** Far clipping plane */
|
|
376
|
+
far: number;
|
|
377
|
+
}
|
|
378
|
+
export interface SceneConfig {
|
|
379
|
+
/** Earth radius in scene units */
|
|
380
|
+
earthRadius: number;
|
|
381
|
+
/** Scale factor (km to scene units) */
|
|
382
|
+
scaleFactor: number;
|
|
383
|
+
/** Maximum render distance */
|
|
384
|
+
maxDistance: number;
|
|
385
|
+
/** LOD thresholds */
|
|
386
|
+
lodThresholds: {
|
|
387
|
+
high: number;
|
|
388
|
+
medium: number;
|
|
389
|
+
low: number;
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
export interface ZenSpace3DCallbacks {
|
|
393
|
+
/** Object selection changed */
|
|
394
|
+
onSelect?: (object: SpaceObject | null) => void;
|
|
395
|
+
/** Object hovered */
|
|
396
|
+
onHover?: (object: SpaceObject | null) => void;
|
|
397
|
+
/** Object double-clicked */
|
|
398
|
+
onDoubleClick?: (object: SpaceObject) => void;
|
|
399
|
+
/** Camera focused on object (flyTo completed) */
|
|
400
|
+
onFocus?: (object: SpaceObject | {
|
|
401
|
+
id: string;
|
|
402
|
+
}) => void;
|
|
403
|
+
/** Time changed */
|
|
404
|
+
onTimeChange?: (time: Date) => void;
|
|
405
|
+
/** View/camera changed */
|
|
406
|
+
onViewChange?: (state: CameraState) => void;
|
|
407
|
+
/** Measurement completed */
|
|
408
|
+
onMeasure?: (distance: number, from: Vector3D, to: Vector3D) => void;
|
|
409
|
+
/** Tool action */
|
|
410
|
+
onToolAction?: (tool: ToolType, data: unknown) => void;
|
|
411
|
+
}
|
|
412
|
+
export interface ZenSpace3DProps {
|
|
413
|
+
/** Satellite objects */
|
|
414
|
+
satellites?: Satellite[];
|
|
415
|
+
/** Debris objects */
|
|
416
|
+
debris?: Debris[];
|
|
417
|
+
/** Space stations */
|
|
418
|
+
stations?: SpaceStation[];
|
|
419
|
+
/** Ground stations */
|
|
420
|
+
groundStations?: GroundStation[];
|
|
421
|
+
/** Asteroids (for Solar System view) */
|
|
422
|
+
asteroids?: Asteroid[];
|
|
423
|
+
/** Custom space objects */
|
|
424
|
+
customObjects?: SpaceObject[];
|
|
425
|
+
/** Initial view mode */
|
|
426
|
+
view?: ViewMode;
|
|
427
|
+
/** Camera mode */
|
|
428
|
+
cameraMode?: CameraMode;
|
|
429
|
+
/** Focused object ID */
|
|
430
|
+
focusedObjectId?: string;
|
|
431
|
+
/** Initial camera state override */
|
|
432
|
+
initialCamera?: Partial<CameraState>;
|
|
433
|
+
/** Initial simulation time */
|
|
434
|
+
initialTime?: Date;
|
|
435
|
+
/** Time scale (1 = realtime) */
|
|
436
|
+
timeScale?: number;
|
|
437
|
+
/** Auto-play on mount */
|
|
438
|
+
autoPlay?: boolean;
|
|
439
|
+
/**
|
|
440
|
+
* Sun direction vector for lighting and atmosphere effects
|
|
441
|
+
* Typically from Zendir SDK sun position calculation
|
|
442
|
+
* @example { x: 1, y: 0.3, z: 0.5 } // normalized direction to sun
|
|
443
|
+
*/
|
|
444
|
+
sunDirection?: {
|
|
445
|
+
x: number;
|
|
446
|
+
y: number;
|
|
447
|
+
z: number;
|
|
448
|
+
};
|
|
449
|
+
/**
|
|
450
|
+
* Planet positions for solar system view (from Zendir SDK)
|
|
451
|
+
* Keys are planet IDs, values are positions
|
|
452
|
+
*/
|
|
453
|
+
planetPositions?: Record<string, {
|
|
454
|
+
x: number;
|
|
455
|
+
y: number;
|
|
456
|
+
z: number;
|
|
457
|
+
}>;
|
|
458
|
+
/** Legacy visibility cones (region-based) */
|
|
459
|
+
visibilityCones?: VisibilityCone[];
|
|
460
|
+
/** Satellite coverage cones (realistic satellite-to-ground) - Zendir SDK compatible */
|
|
461
|
+
satelliteCoverages?: SatelliteCoverage[];
|
|
462
|
+
/** Coverage regions */
|
|
463
|
+
coverageRegions?: CoverageRegion[];
|
|
464
|
+
/** Coverage hex grid */
|
|
465
|
+
coverageHexGrid?: CoverageHexGrid;
|
|
466
|
+
/** Overpass information */
|
|
467
|
+
overpasses?: OverpassInfo[];
|
|
468
|
+
/** Orbit paths to display */
|
|
469
|
+
orbitPaths?: OrbitPath[];
|
|
470
|
+
/** Orbit design arcs (colored arc segments) */
|
|
471
|
+
orbitDesignArcs?: OrbitDesignArc[];
|
|
472
|
+
/** Communication links between objects */
|
|
473
|
+
communicationLinks?: Array<{
|
|
474
|
+
id: string;
|
|
475
|
+
fromId: string;
|
|
476
|
+
toId: string;
|
|
477
|
+
type: 'uplink' | 'downlink' | 'crosslink' | 'relay';
|
|
478
|
+
status: 'active' | 'idle' | 'blocked';
|
|
479
|
+
color?: string;
|
|
480
|
+
bandwidth?: number;
|
|
481
|
+
latency?: number;
|
|
482
|
+
signalStrength?: number;
|
|
483
|
+
}>;
|
|
484
|
+
/** Show XYZ axis helper */
|
|
485
|
+
showAxisHelper?: boolean;
|
|
486
|
+
/** Maneuver nodes */
|
|
487
|
+
maneuverNodes?: ManeuverNode[];
|
|
488
|
+
/** Layer visibility overrides */
|
|
489
|
+
layers?: Partial<LayerVisibility>;
|
|
490
|
+
/** Show controls panel */
|
|
491
|
+
showControls?: boolean;
|
|
492
|
+
/** Show timeline */
|
|
493
|
+
showTimeline?: boolean;
|
|
494
|
+
/** Show tools panel */
|
|
495
|
+
showTools?: boolean;
|
|
496
|
+
/** Show info panel on selection */
|
|
497
|
+
showInfoPanel?: boolean;
|
|
498
|
+
/** Show legend */
|
|
499
|
+
showLegend?: boolean;
|
|
500
|
+
/** Show stats (FPS, object count) */
|
|
501
|
+
showStats?: boolean;
|
|
502
|
+
/** Available tools */
|
|
503
|
+
tools?: ToolType[];
|
|
504
|
+
/** Canvas width */
|
|
505
|
+
width?: number | string;
|
|
506
|
+
/** Canvas height */
|
|
507
|
+
height?: number | string;
|
|
508
|
+
/** Theme override */
|
|
509
|
+
theme?: 'dark' | 'light' | 'purple-hue';
|
|
510
|
+
/** Event callbacks */
|
|
511
|
+
callbacks?: ZenSpace3DCallbacks;
|
|
512
|
+
/** Maximum objects to render (for performance) */
|
|
513
|
+
maxObjects?: number;
|
|
514
|
+
/** Enable post-processing effects */
|
|
515
|
+
enablePostProcessing?: boolean;
|
|
516
|
+
/** Pixel ratio limit */
|
|
517
|
+
maxPixelRatio?: number;
|
|
518
|
+
/** MCP context for tool integration */
|
|
519
|
+
mcpContext?: unknown;
|
|
520
|
+
/** Custom scene configuration */
|
|
521
|
+
sceneConfig?: Partial<SceneConfig>;
|
|
522
|
+
/** Custom CSS class */
|
|
523
|
+
className?: string;
|
|
524
|
+
/** Custom inline styles */
|
|
525
|
+
style?: React.CSSProperties;
|
|
526
|
+
}
|
|
527
|
+
export interface ZenSpace3DHandle {
|
|
528
|
+
/** Focus camera on object (legacy alias for flyTo) */
|
|
529
|
+
focusOn: (objectId: string, options?: {
|
|
530
|
+
zoom?: number;
|
|
531
|
+
animate?: boolean;
|
|
532
|
+
}) => void;
|
|
533
|
+
/**
|
|
534
|
+
* Fly camera to an object with smooth animation
|
|
535
|
+
* @param objectId - ID of target object (satellite, station, planet, etc.)
|
|
536
|
+
* @param options.animate - Whether to animate the transition (default: true)
|
|
537
|
+
* @param options.distance - Override viewing distance
|
|
538
|
+
* @param options.offset - Custom camera offset from target
|
|
539
|
+
*/
|
|
540
|
+
flyTo: (objectId: string, options?: {
|
|
541
|
+
animate?: boolean;
|
|
542
|
+
distance?: number;
|
|
543
|
+
offset?: {
|
|
544
|
+
x: number;
|
|
545
|
+
y: number;
|
|
546
|
+
z: number;
|
|
547
|
+
};
|
|
548
|
+
}) => void;
|
|
549
|
+
/** Set view mode */
|
|
550
|
+
setView: (mode: ViewMode) => void;
|
|
551
|
+
/** Set time */
|
|
552
|
+
setTime: (time: Date) => void;
|
|
553
|
+
/** Set time scale */
|
|
554
|
+
setTimeScale: (scale: number) => void;
|
|
555
|
+
/** Play/pause */
|
|
556
|
+
togglePlay: () => void;
|
|
557
|
+
/** Set layer visibility */
|
|
558
|
+
setLayerVisibility: (layer: keyof LayerVisibility, visible: boolean) => void;
|
|
559
|
+
/** Get current camera state */
|
|
560
|
+
getCameraState: () => CameraState;
|
|
561
|
+
/** Set camera state */
|
|
562
|
+
setCameraState: (state: Partial<CameraState>) => void;
|
|
563
|
+
/** Export screenshot */
|
|
564
|
+
exportImage: (format?: 'png' | 'jpeg') => string;
|
|
565
|
+
/** Export 3D scene */
|
|
566
|
+
exportScene: (format?: 'glb' | 'gltf') => Blob;
|
|
567
|
+
/** Get visible objects */
|
|
568
|
+
getVisibleObjects: () => SpaceObject[];
|
|
569
|
+
/** Find objects by query */
|
|
570
|
+
findObjects: (query: string) => SpaceObject[];
|
|
571
|
+
/** Add object dynamically */
|
|
572
|
+
addObject: (object: SpaceObject) => void;
|
|
573
|
+
/** Remove object dynamically */
|
|
574
|
+
removeObject: (objectId: string) => void;
|
|
575
|
+
/** Update object */
|
|
576
|
+
updateObject: (objectId: string, updates: Partial<SpaceObject>) => void;
|
|
577
|
+
/** Measure distance between two points/objects */
|
|
578
|
+
measureDistance: (from: string | Vector3D, to: string | Vector3D) => number;
|
|
579
|
+
}
|
|
580
|
+
export interface Vector3D {
|
|
581
|
+
x: number;
|
|
582
|
+
y: number;
|
|
583
|
+
z: number;
|
|
584
|
+
}
|
|
585
|
+
export interface LatLonAlt {
|
|
586
|
+
latitude: number;
|
|
587
|
+
longitude: number;
|
|
588
|
+
altitude: number;
|
|
589
|
+
}
|
|
590
|
+
export interface SphericalCoords {
|
|
591
|
+
radius: number;
|
|
592
|
+
theta: number;
|
|
593
|
+
phi: number;
|
|
594
|
+
}
|
|
595
|
+
export interface SceneObject {
|
|
596
|
+
id: string;
|
|
597
|
+
mesh: unknown;
|
|
598
|
+
data: SpaceObject;
|
|
599
|
+
lod: 'high' | 'medium' | 'low' | 'point';
|
|
600
|
+
visible: boolean;
|
|
601
|
+
lastUpdate: number;
|
|
602
|
+
}
|
|
603
|
+
export interface OrbitLineObject {
|
|
604
|
+
id: string;
|
|
605
|
+
line: unknown;
|
|
606
|
+
objectId: string;
|
|
607
|
+
points: Vector3D[];
|
|
608
|
+
}
|
|
609
|
+
export interface LabelObject {
|
|
610
|
+
id: string;
|
|
611
|
+
sprite: unknown;
|
|
612
|
+
text: string;
|
|
613
|
+
objectId: string;
|
|
614
|
+
}
|