visualizer-components 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/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/assets/RudderIcon.d.ts +23 -0
- package/dist/assets/RudderIcon.d.ts.map +1 -0
- package/dist/assets/RudderIcon.js +23 -0
- package/dist/assets/RudderIcon.js.map +1 -0
- package/dist/assets/svgSources.d.ts +18 -0
- package/dist/assets/svgSources.d.ts.map +1 -0
- package/dist/assets/svgSources.js +18 -0
- package/dist/assets/svgSources.js.map +1 -0
- package/dist/components/Joystick.d.ts +23 -0
- package/dist/components/Joystick.d.ts.map +1 -0
- package/dist/components/Joystick.js +114 -0
- package/dist/components/Joystick.js.map +1 -0
- package/dist/components/TelemetryDashboard.d.ts +31 -0
- package/dist/components/TelemetryDashboard.d.ts.map +1 -0
- package/dist/components/TelemetryDashboard.js +127 -0
- package/dist/components/TelemetryDashboard.js.map +1 -0
- package/dist/components/controls/ControlOverlay.d.ts +64 -0
- package/dist/components/controls/ControlOverlay.d.ts.map +1 -0
- package/dist/components/controls/ControlOverlay.js +88 -0
- package/dist/components/controls/ControlOverlay.js.map +1 -0
- package/dist/components/controls/ControlsDrawer.d.ts +37 -0
- package/dist/components/controls/ControlsDrawer.d.ts.map +1 -0
- package/dist/components/controls/ControlsDrawer.js +93 -0
- package/dist/components/controls/ControlsDrawer.js.map +1 -0
- package/dist/components/controls/ForceVectorsPanel.d.ts +37 -0
- package/dist/components/controls/ForceVectorsPanel.d.ts.map +1 -0
- package/dist/components/controls/ForceVectorsPanel.js +76 -0
- package/dist/components/controls/ForceVectorsPanel.js.map +1 -0
- package/dist/components/controls/InfoPopover.d.ts +34 -0
- package/dist/components/controls/InfoPopover.d.ts.map +1 -0
- package/dist/components/controls/InfoPopover.js +41 -0
- package/dist/components/controls/InfoPopover.js.map +1 -0
- package/dist/components/controls/Legend.d.ts +29 -0
- package/dist/components/controls/Legend.d.ts.map +1 -0
- package/dist/components/controls/Legend.js +74 -0
- package/dist/components/controls/Legend.js.map +1 -0
- package/dist/components/controls/MobileBottomNav.d.ts +17 -0
- package/dist/components/controls/MobileBottomNav.d.ts.map +1 -0
- package/dist/components/controls/MobileBottomNav.js +46 -0
- package/dist/components/controls/MobileBottomNav.js.map +1 -0
- package/dist/components/hud/SceneHUD.d.ts +100 -0
- package/dist/components/hud/SceneHUD.d.ts.map +1 -0
- package/dist/components/hud/SceneHUD.js +216 -0
- package/dist/components/hud/SceneHUD.js.map +1 -0
- package/dist/components/hud/telemetry/Batteries.d.ts +40 -0
- package/dist/components/hud/telemetry/Batteries.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Batteries.js +137 -0
- package/dist/components/hud/telemetry/Batteries.js.map +1 -0
- package/dist/components/hud/telemetry/Compass.d.ts +2 -0
- package/dist/components/hud/telemetry/Compass.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Compass.js +147 -0
- package/dist/components/hud/telemetry/Compass.js.map +1 -0
- package/dist/components/hud/telemetry/Log.d.ts +2 -0
- package/dist/components/hud/telemetry/Log.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Log.js +65 -0
- package/dist/components/hud/telemetry/Log.js.map +1 -0
- package/dist/components/hud/telemetry/Map.d.ts +4 -0
- package/dist/components/hud/telemetry/Map.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Map.js +293 -0
- package/dist/components/hud/telemetry/Map.js.map +1 -0
- package/dist/components/hud/telemetry/PowerRudderPanel.d.ts +2 -0
- package/dist/components/hud/telemetry/PowerRudderPanel.d.ts.map +1 -0
- package/dist/components/hud/telemetry/PowerRudderPanel.js +115 -0
- package/dist/components/hud/telemetry/PowerRudderPanel.js.map +1 -0
- package/dist/components/hud/telemetry/RadiusVisualizer.d.ts +63 -0
- package/dist/components/hud/telemetry/RadiusVisualizer.d.ts.map +1 -0
- package/dist/components/hud/telemetry/RadiusVisualizer.js +139 -0
- package/dist/components/hud/telemetry/RadiusVisualizer.js.map +1 -0
- package/dist/components/hud/telemetry/RadiusVisualizerPanel.d.ts +31 -0
- package/dist/components/hud/telemetry/RadiusVisualizerPanel.d.ts.map +1 -0
- package/dist/components/hud/telemetry/RadiusVisualizerPanel.js +37 -0
- package/dist/components/hud/telemetry/RadiusVisualizerPanel.js.map +1 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizer.d.ts +43 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizer.d.ts.map +1 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizer.js +121 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizer.js.map +1 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.d.ts +26 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.d.ts.map +1 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.js +29 -0
- package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.js.map +1 -0
- package/dist/components/hud/telemetry/SignalLog.d.ts +7 -0
- package/dist/components/hud/telemetry/SignalLog.d.ts.map +1 -0
- package/dist/components/hud/telemetry/SignalLog.js +28 -0
- package/dist/components/hud/telemetry/SignalLog.js.map +1 -0
- package/dist/components/hud/telemetry/SignalStrength.d.ts +9 -0
- package/dist/components/hud/telemetry/SignalStrength.d.ts.map +1 -0
- package/dist/components/hud/telemetry/SignalStrength.js +53 -0
- package/dist/components/hud/telemetry/SignalStrength.js.map +1 -0
- package/dist/components/hud/telemetry/Speedometer.d.ts +2 -0
- package/dist/components/hud/telemetry/Speedometer.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Speedometer.js +70 -0
- package/dist/components/hud/telemetry/Speedometer.js.map +1 -0
- package/dist/components/hud/telemetry/Task.d.ts +2 -0
- package/dist/components/hud/telemetry/Task.d.ts.map +1 -0
- package/dist/components/hud/telemetry/Task.js +61 -0
- package/dist/components/hud/telemetry/Task.js.map +1 -0
- package/dist/components/hud/telemetry/TaskData.d.ts +2 -0
- package/dist/components/hud/telemetry/TaskData.d.ts.map +1 -0
- package/dist/components/hud/telemetry/TaskData.js +62 -0
- package/dist/components/hud/telemetry/TaskData.js.map +1 -0
- package/dist/components/hud/telemetry/index.d.ts +40 -0
- package/dist/components/hud/telemetry/index.d.ts.map +1 -0
- package/dist/components/hud/telemetry/index.js +40 -0
- package/dist/components/hud/telemetry/index.js.map +1 -0
- package/dist/components/hud/telemetry/powerColor.d.ts +16 -0
- package/dist/components/hud/telemetry/powerColor.d.ts.map +1 -0
- package/dist/components/hud/telemetry/powerColor.js +15 -0
- package/dist/components/hud/telemetry/powerColor.js.map +1 -0
- package/dist/components/scenes/MappingScene.d.ts +19 -0
- package/dist/components/scenes/MappingScene.d.ts.map +1 -0
- package/dist/components/scenes/MappingScene.js +353 -0
- package/dist/components/scenes/MappingScene.js.map +1 -0
- package/dist/components/scenes/SceneCanvas.d.ts +96 -0
- package/dist/components/scenes/SceneCanvas.d.ts.map +1 -0
- package/dist/components/scenes/SceneCanvas.js +151 -0
- package/dist/components/scenes/SceneCanvas.js.map +1 -0
- package/dist/components/scenes/SceneRenderer.d.ts +16 -0
- package/dist/components/scenes/SceneRenderer.d.ts.map +1 -0
- package/dist/components/scenes/SceneRenderer.js +60 -0
- package/dist/components/scenes/SceneRenderer.js.map +1 -0
- package/dist/components/scenes/TelemetryScene.d.ts +6 -0
- package/dist/components/scenes/TelemetryScene.d.ts.map +1 -0
- package/dist/components/scenes/TelemetryScene.js +6 -0
- package/dist/components/scenes/TelemetryScene.js.map +1 -0
- package/dist/components/svg/CompassRose.d.ts +129 -0
- package/dist/components/svg/CompassRose.d.ts.map +1 -0
- package/dist/components/svg/CompassRose.js +221 -0
- package/dist/components/svg/CompassRose.js.map +1 -0
- package/dist/connection/config.d.ts +41 -0
- package/dist/connection/config.d.ts.map +1 -0
- package/dist/connection/config.js +44 -0
- package/dist/connection/config.js.map +1 -0
- package/dist/contexts/SceneContext.d.ts +35 -0
- package/dist/contexts/SceneContext.d.ts.map +1 -0
- package/dist/contexts/SceneContext.js +24 -0
- package/dist/contexts/SceneContext.js.map +1 -0
- package/dist/hooks/useAutoPathAnimation.d.ts +22 -0
- package/dist/hooks/useAutoPathAnimation.d.ts.map +1 -0
- package/dist/hooks/useAutoPathAnimation.js +102 -0
- package/dist/hooks/useAutoPathAnimation.js.map +1 -0
- package/dist/hooks/useLayoutConfig.d.ts +29 -0
- package/dist/hooks/useLayoutConfig.d.ts.map +1 -0
- package/dist/hooks/useLayoutConfig.js +30 -0
- package/dist/hooks/useLayoutConfig.js.map +1 -0
- package/dist/hooks/useSceneContext.d.ts +64 -0
- package/dist/hooks/useSceneContext.d.ts.map +1 -0
- package/dist/hooks/useSceneContext.js +37 -0
- package/dist/hooks/useSceneContext.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/TelemetryProvider.d.ts +27 -0
- package/dist/providers/TelemetryProvider.d.ts.map +1 -0
- package/dist/providers/TelemetryProvider.js +50 -0
- package/dist/providers/TelemetryProvider.js.map +1 -0
- package/dist/providers/TelemetryThemeProvider.d.ts +25 -0
- package/dist/providers/TelemetryThemeProvider.d.ts.map +1 -0
- package/dist/providers/TelemetryThemeProvider.js +54 -0
- package/dist/providers/TelemetryThemeProvider.js.map +1 -0
- package/dist/store/actions/connectionActions.d.ts +39 -0
- package/dist/store/actions/connectionActions.d.ts.map +1 -0
- package/dist/store/actions/connectionActions.js +162 -0
- package/dist/store/actions/connectionActions.js.map +1 -0
- package/dist/store/actions/fetchTelemetry.d.ts +51 -0
- package/dist/store/actions/fetchTelemetry.d.ts.map +1 -0
- package/dist/store/actions/fetchTelemetry.js +135 -0
- package/dist/store/actions/fetchTelemetry.js.map +1 -0
- package/dist/store/index.d.ts +23 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +22 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/slices/connectionSlice.d.ts +15 -0
- package/dist/store/slices/connectionSlice.d.ts.map +1 -0
- package/dist/store/slices/connectionSlice.js +39 -0
- package/dist/store/slices/connectionSlice.js.map +1 -0
- package/dist/store/slices/discoveredGridSlice.d.ts +168 -0
- package/dist/store/slices/discoveredGridSlice.d.ts.map +1 -0
- package/dist/store/slices/discoveredGridSlice.js +146 -0
- package/dist/store/slices/discoveredGridSlice.js.map +1 -0
- package/dist/store/slices/sceneSlice.d.ts +185 -0
- package/dist/store/slices/sceneSlice.d.ts.map +1 -0
- package/dist/store/slices/sceneSlice.js +95 -0
- package/dist/store/slices/sceneSlice.js.map +1 -0
- package/dist/store/slices/simulationSlice.d.ts +87 -0
- package/dist/store/slices/simulationSlice.d.ts.map +1 -0
- package/dist/store/slices/simulationSlice.js +55 -0
- package/dist/store/slices/simulationSlice.js.map +1 -0
- package/dist/store/slices/telemetrySlice.d.ts +10 -0
- package/dist/store/slices/telemetrySlice.d.ts.map +1 -0
- package/dist/store/slices/telemetrySlice.js +88 -0
- package/dist/store/slices/telemetrySlice.js.map +1 -0
- package/dist/store/slices/videoSlice.d.ts +12 -0
- package/dist/store/slices/videoSlice.d.ts.map +1 -0
- package/dist/store/slices/videoSlice.js +27 -0
- package/dist/store/slices/videoSlice.js.map +1 -0
- package/dist/store/slices/visualizationSlice.d.ts +152 -0
- package/dist/store/slices/visualizationSlice.d.ts.map +1 -0
- package/dist/store/slices/visualizationSlice.js +58 -0
- package/dist/store/slices/visualizationSlice.js.map +1 -0
- package/dist/store/store.d.ts +61 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +78 -0
- package/dist/store/store.js.map +1 -0
- package/dist/theme/index.d.ts +14 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +14 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/lightTheme.d.ts +151 -0
- package/dist/theme/lightTheme.d.ts.map +1 -0
- package/dist/theme/lightTheme.js +194 -0
- package/dist/theme/lightTheme.js.map +1 -0
- package/dist/theme/telemetryTheme.d.ts +90 -0
- package/dist/theme/telemetryTheme.d.ts.map +1 -0
- package/dist/theme/telemetryTheme.js +157 -0
- package/dist/theme/telemetryTheme.js.map +1 -0
- package/dist/types/detectedObjectsTypes.d.ts +18 -0
- package/dist/types/detectedObjectsTypes.d.ts.map +1 -0
- package/dist/types/detectedObjectsTypes.js +8 -0
- package/dist/types/detectedObjectsTypes.js.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/ros.d.ts +87 -0
- package/dist/types/ros.d.ts.map +1 -0
- package/dist/types/ros.js +17 -0
- package/dist/types/ros.js.map +1 -0
- package/dist/types/statusTypes.d.ts +81 -0
- package/dist/types/statusTypes.d.ts.map +1 -0
- package/dist/types/statusTypes.js +52 -0
- package/dist/types/statusTypes.js.map +1 -0
- package/dist/types/taskTypes.d.ts +65 -0
- package/dist/types/taskTypes.d.ts.map +1 -0
- package/dist/types/taskTypes.js +18 -0
- package/dist/types/taskTypes.js.map +1 -0
- package/dist/types/telemetryInterfaces.d.ts +81 -0
- package/dist/types/telemetryInterfaces.d.ts.map +1 -0
- package/dist/types/telemetryInterfaces.js +30 -0
- package/dist/types/telemetryInterfaces.js.map +1 -0
- package/dist/utils/basestation.d.ts +7 -0
- package/dist/utils/basestation.d.ts.map +1 -0
- package/dist/utils/basestation.js +49 -0
- package/dist/utils/basestation.js.map +1 -0
- package/dist/utils/batteryUtil.d.ts +8 -0
- package/dist/utils/batteryUtil.d.ts.map +1 -0
- package/dist/utils/batteryUtil.js +32 -0
- package/dist/utils/batteryUtil.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +13 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +13 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/telemetryFactory.d.ts +48 -0
- package/dist/utils/telemetry/telemetryFactory.d.ts.map +1 -0
- package/dist/utils/telemetry/telemetryFactory.js +390 -0
- package/dist/utils/telemetry/telemetryFactory.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @file Compass.tsx
|
|
4
|
+
* @description Displays the ASV's current heading in a compass-like format.
|
|
5
|
+
*/
|
|
6
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
7
|
+
import { useSelector } from "react-redux";
|
|
8
|
+
import { Box, Typography } from "@mui/material";
|
|
9
|
+
import { useSpring, animated } from "@react-spring/web";
|
|
10
|
+
import { useTheme } from "@mui/material/styles";
|
|
11
|
+
// SVG coordinate space for the tick strip.
|
|
12
|
+
// TICK_SPACING is in viewBox units; the spring drives the SVG `transform` attribute
|
|
13
|
+
// directly so there is no CSS-pixel / viewBox-unit mismatch.
|
|
14
|
+
const VIEW_WIDTH = 600;
|
|
15
|
+
const VIEW_HEIGHT = 48;
|
|
16
|
+
const TICK_SPACING = 50; // 13 ticks visible across the 600-unit wide strip
|
|
17
|
+
const SPRING_CONFIG = { tension: 300, friction: 30, mass: 0.5 };
|
|
18
|
+
const wrapHeading = (heading) => {
|
|
19
|
+
const wrapped = heading % 360;
|
|
20
|
+
return wrapped < 0 ? wrapped + 360 : wrapped;
|
|
21
|
+
};
|
|
22
|
+
const formatHeadingLabel = (heading) => {
|
|
23
|
+
const normalized = wrapHeading(heading);
|
|
24
|
+
if (normalized === 0)
|
|
25
|
+
return "N";
|
|
26
|
+
if (normalized === 90)
|
|
27
|
+
return "E";
|
|
28
|
+
if (normalized === 180)
|
|
29
|
+
return "S";
|
|
30
|
+
if (normalized === 270)
|
|
31
|
+
return "W";
|
|
32
|
+
return String(Math.round(normalized));
|
|
33
|
+
};
|
|
34
|
+
export default function Compass() {
|
|
35
|
+
const theme = useTheme();
|
|
36
|
+
const taskData = useSelector((state) => state.telemetry.task.data);
|
|
37
|
+
const heading = useSelector((state) => state.telemetry.asv.heading);
|
|
38
|
+
const normalizedHeading = wrapHeading(heading);
|
|
39
|
+
// Accumulated heading: lets the spring take the shortest arc across the 0°/360° boundary.
|
|
40
|
+
const prevRef = useRef(heading);
|
|
41
|
+
const accRef = useRef(heading);
|
|
42
|
+
// Spring value is in SVG viewBox units (not CSS pixels). react-spring writes the
|
|
43
|
+
// SVG `transform` attribute directly on every frame — no re-renders per frame.
|
|
44
|
+
const [{ x }, springApi] = useSpring(() => ({
|
|
45
|
+
x: VIEW_WIDTH / 2 - (heading / 15) * TICK_SPACING,
|
|
46
|
+
config: SPRING_CONFIG,
|
|
47
|
+
}));
|
|
48
|
+
// centerIdx drives which 25-tick window is rendered (updates every 15°).
|
|
49
|
+
const [centerIdx, setCenterIdx] = useState(() => Math.round(heading / 15));
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const delta = ((heading - prevRef.current + 540) % 360) - 180;
|
|
52
|
+
accRef.current += delta;
|
|
53
|
+
prevRef.current = heading;
|
|
54
|
+
springApi.start({ x: VIEW_WIDTH / 2 - (accRef.current / 15) * TICK_SPACING });
|
|
55
|
+
const next = Math.round(accRef.current / 15);
|
|
56
|
+
setCenterIdx((prev) => (prev !== next ? next : prev));
|
|
57
|
+
}, [heading, springApi]);
|
|
58
|
+
// 25 ticks keyed by stable window index (0-24), not by degree value.
|
|
59
|
+
// When centerIdx shifts the update happens while the tick is off-screen.
|
|
60
|
+
const ticks = useMemo(() => Array.from({ length: 25 }, (_, i) => {
|
|
61
|
+
const idx = centerIdx - 12 + i;
|
|
62
|
+
const deg = ((idx * 15) % 360 + 360) % 360;
|
|
63
|
+
const label = formatHeadingLabel(deg);
|
|
64
|
+
const isCardinal = label === "N" || label === "E" || label === "S" || label === "W";
|
|
65
|
+
const x = idx * TICK_SPACING;
|
|
66
|
+
return (_jsxs("g", { children: [_jsx("rect", { x: x - (isCardinal ? 1.5 : 1), y: 2, width: isCardinal ? 3 : 2, height: isCardinal ? 18 : 12, rx: 1, fill: isCardinal ? "#f8fafc" : "rgba(255,255,255,0.5)" }), _jsx("text", { x: x, y: VIEW_HEIGHT - 4, textAnchor: "middle", fill: isCardinal ? "#ffffff" : "rgba(255,255,255,0.78)", fontSize: isCardinal ? 20 : 12, fontWeight: isCardinal ? 800 : 600, children: label })] }, i));
|
|
67
|
+
}), [centerIdx]);
|
|
68
|
+
return (_jsxs(Box, { sx: {
|
|
69
|
+
width: "100%",
|
|
70
|
+
height: "100%",
|
|
71
|
+
minHeight: 0,
|
|
72
|
+
backgroundColor: theme.palette.telemetry?.background.primary,
|
|
73
|
+
border: theme.palette.telemetry?.border.light,
|
|
74
|
+
borderRadius: 2,
|
|
75
|
+
position: "relative",
|
|
76
|
+
overflow: "hidden",
|
|
77
|
+
padding: { xs: 0.5, sm: 0.5 },
|
|
78
|
+
display: "flex",
|
|
79
|
+
flexDirection: "column",
|
|
80
|
+
justifyContent: "flex-start",
|
|
81
|
+
}, children: [_jsx(Box, { sx: {
|
|
82
|
+
position: "absolute",
|
|
83
|
+
inset: 0,
|
|
84
|
+
background: "linear-gradient(180deg, rgba(255,255,255,0.06), rgba(0,0,0,0.12))",
|
|
85
|
+
pointerEvents: "none",
|
|
86
|
+
} }), _jsxs(Box, { sx: {
|
|
87
|
+
flex: 1,
|
|
88
|
+
minHeight: 0,
|
|
89
|
+
display: "flex",
|
|
90
|
+
flexDirection: "column",
|
|
91
|
+
gap: { xs: 1, sm: 1.25 },
|
|
92
|
+
px: { xs: 0, sm: 0.5 },
|
|
93
|
+
}, children: [_jsx(Box, { component: "svg", viewBox: `0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`, width: "100%", preserveAspectRatio: "none", sx: {
|
|
94
|
+
display: "block",
|
|
95
|
+
overflow: "hidden",
|
|
96
|
+
height: { xs: 42, sm: VIEW_HEIGHT },
|
|
97
|
+
}, children: _jsx(animated.g, { transform: x.to((v) => `translate(${v}, 0)`), children: ticks }) }), _jsxs(Box, { sx: {
|
|
98
|
+
position: "absolute",
|
|
99
|
+
top: "50%",
|
|
100
|
+
right: "50%",
|
|
101
|
+
transform: "translate(50%, -40%)",
|
|
102
|
+
display: "flex",
|
|
103
|
+
flexDirection: "column",
|
|
104
|
+
alignItems: "center",
|
|
105
|
+
}, children: [_jsx(Box, { sx: {
|
|
106
|
+
zIndex: 2,
|
|
107
|
+
width: 0,
|
|
108
|
+
height: 0,
|
|
109
|
+
borderLeft: { xs: "7px solid transparent", sm: "8px solid transparent" },
|
|
110
|
+
borderRight: { xs: "7px solid transparent", sm: "8px solid transparent" },
|
|
111
|
+
borderBottom: { xs: "9px solid #f8fafc", sm: "10px solid #f8fafc" },
|
|
112
|
+
filter: "drop-shadow(0 1px 2px rgba(0,0,0,0.35))",
|
|
113
|
+
}, children: _jsx(Box, { sx: {
|
|
114
|
+
zIndex: -100,
|
|
115
|
+
width: "2px",
|
|
116
|
+
height: "40px",
|
|
117
|
+
backgroundColor: "rgba(222, 20, 20, 0.55)",
|
|
118
|
+
transform: "translate(-1px,-100%)",
|
|
119
|
+
} }) }), _jsx(Box, { sx: {
|
|
120
|
+
px: 1.25,
|
|
121
|
+
py: 0.25,
|
|
122
|
+
borderRadius: 1,
|
|
123
|
+
padding: 0.5,
|
|
124
|
+
backgroundColor: "rgba(17, 24, 39, 0.6)",
|
|
125
|
+
border: "1px solid rgba(255,255,255,0.25)",
|
|
126
|
+
display: "flex",
|
|
127
|
+
alignItems: "center",
|
|
128
|
+
justifyContent: "center",
|
|
129
|
+
backdropFilter: "blur(2px)",
|
|
130
|
+
boxShadow: "0 1px 4px rgba(0,0,0,0.35)",
|
|
131
|
+
minWidth: { xs: 52, sm: 58 },
|
|
132
|
+
minHeight: { xs: 24, sm: 28 },
|
|
133
|
+
}, children: _jsx(Typography, { variant: "caption", sx: {
|
|
134
|
+
color: theme.palette.primary.main,
|
|
135
|
+
fontWeight: 800,
|
|
136
|
+
fontSize: { xs: "30px", sm: "43px" },
|
|
137
|
+
lineHeight: 1,
|
|
138
|
+
}, children: Math.round(normalizedHeading) }) })] }), _jsxs(Box, { sx: {
|
|
139
|
+
paddingRight: "30%",
|
|
140
|
+
paddingLeft: "30%",
|
|
141
|
+
display: "flex",
|
|
142
|
+
flexDirection: "row",
|
|
143
|
+
justifyContent: "space-between",
|
|
144
|
+
gap: "4px",
|
|
145
|
+
}, children: [_jsxs(Typography, { variant: "caption", sx: { fontSize: "20px", color: theme.palette.telemetry?.text.primary }, children: ["Lat: ", taskData?.latitude.toFixed(4), "\u00B0"] }), _jsxs(Typography, { variant: "caption", sx: { fontSize: "20px", color: theme.palette.telemetry?.text.primary }, children: ["Lon: ", taskData?.longitude.toFixed(4), "\u00B0"] })] })] })] }));
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=Compass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Compass.js","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/Compass.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/Log.tsx"],"names":[],"mappings":"AA8BA,MAAM,CAAC,OAAO,UAAU,GAAG,gCAsE1B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2026 HumberASV
|
|
6
|
+
Copyright (c) 2026 Carson Fujita
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
in the Software without restriction, including without limitation the rights
|
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in all
|
|
16
|
+
copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
SOFTWARE.
|
|
25
|
+
*/
|
|
26
|
+
import { useSelector } from "react-redux";
|
|
27
|
+
import { Box, Typography } from "@mui/material";
|
|
28
|
+
import { useMemo } from "react";
|
|
29
|
+
export default function Log() {
|
|
30
|
+
const taskLog = useSelector((state) => state.telemetry.task.log);
|
|
31
|
+
// Get the last 5 log entries in reverse order (newest first)
|
|
32
|
+
const recentLogs = useMemo(() => {
|
|
33
|
+
return [...taskLog].reverse().slice(0, 5);
|
|
34
|
+
}, [taskLog]);
|
|
35
|
+
return (_jsxs(Box, { sx: {
|
|
36
|
+
width: "100%",
|
|
37
|
+
backgroundColor: "#f0f4f8",
|
|
38
|
+
border: "2px solid #d1d5db",
|
|
39
|
+
borderRadius: "8px",
|
|
40
|
+
padding: "12px",
|
|
41
|
+
display: "flex",
|
|
42
|
+
flexDirection: "column",
|
|
43
|
+
gap: "8px",
|
|
44
|
+
minHeight: "120px",
|
|
45
|
+
position: "relative",
|
|
46
|
+
}, children: [_jsx(Typography, { variant: "caption", sx: {
|
|
47
|
+
fontWeight: "bold",
|
|
48
|
+
color: "#6b7280",
|
|
49
|
+
fontSize: "10px",
|
|
50
|
+
textTransform: "uppercase",
|
|
51
|
+
}, children: "Log" }), _jsx(Box, { sx: {
|
|
52
|
+
flex: 1,
|
|
53
|
+
overflow: "hidden",
|
|
54
|
+
display: "flex",
|
|
55
|
+
flexDirection: "column",
|
|
56
|
+
gap: "4px",
|
|
57
|
+
}, children: recentLogs.length > 0 ? (recentLogs.map((log, index) => (_jsxs(Typography, { variant: "caption", sx: {
|
|
58
|
+
fontSize: "11px",
|
|
59
|
+
color: "#374151",
|
|
60
|
+
overflow: "hidden",
|
|
61
|
+
textOverflow: "ellipsis",
|
|
62
|
+
whiteSpace: "nowrap",
|
|
63
|
+
}, children: ["\u2022 ", log] }, index)))) : (_jsx(Typography, { variant: "caption", sx: { color: "#9ca3af", fontSize: "10px" }, children: "No log entries" })) })] }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=Log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/Log.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;EAuBE;AAEF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,CAAC,OAAO,UAAU,GAAG;IAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5E,6DAA6D;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACN,MAAC,GAAG,IACH,EAAE,EAAE;YACH,KAAK,EAAE,MAAM;YACb,eAAe,EAAE,SAAS;YAC1B,MAAM,EAAE,mBAAmB;YAC3B,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,KAAK;YACV,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,UAAU;SACpB,aAGD,KAAC,UAAU,IACV,OAAO,EAAC,SAAS,EACjB,EAAE,EAAE;oBACH,UAAU,EAAE,MAAM;oBAClB,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,WAAW;iBAC1B,oBAGW,EAGb,KAAC,GAAG,IACH,EAAE,EAAE;oBACH,IAAI,EAAE,CAAC;oBACP,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,MAAM;oBACf,aAAa,EAAE,QAAQ;oBACvB,GAAG,EAAE,KAAK;iBACV,YAEA,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACxB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,MAAC,UAAU,IAEV,OAAO,EAAC,SAAS,EACjB,EAAE,EAAE;wBACH,QAAQ,EAAE,MAAM;wBAChB,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,QAAQ;wBAClB,YAAY,EAAE,UAAU;wBACxB,UAAU,EAAE,QAAQ;qBACpB,wBAEE,GAAG,KAVD,KAAK,CAWE,CACb,CAAC,CACF,CAAC,CAAC,CAAC,CACH,KAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,+BAE3D,CACb,GACI,IACD,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/Map.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAqZ3E,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAsHzB,CAAA;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2026 HumberASV
|
|
6
|
+
Copyright (c) 2026 Carson Fujita
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
in the Software without restriction, including without limitation the rights
|
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in all
|
|
16
|
+
copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
SOFTWARE.
|
|
25
|
+
*/
|
|
26
|
+
import React, { useEffect, useId, useMemo, useRef, useState } from "react";
|
|
27
|
+
import { Typography, CircularProgress, Button, Box } from "@mui/material";
|
|
28
|
+
import { boatSvgUrl as boatSVG, warningSvgUrl as warningSVG, arrowSvgUrl as arrowSVG } from "../../../assets/svgSources";
|
|
29
|
+
import ZoomOutIcon from '@mui/icons-material/Remove';
|
|
30
|
+
import ZoomInIcon from '@mui/icons-material/Add';
|
|
31
|
+
import ChangeZoomTargetIcon from '@mui/icons-material/Search';
|
|
32
|
+
import { useSelector } from "react-redux";
|
|
33
|
+
import { CellTypes } from "../../../types";
|
|
34
|
+
import { useTheme } from "@mui/material/styles";
|
|
35
|
+
/**
|
|
36
|
+
* Prints a svg map
|
|
37
|
+
* @param zoomLevel - The current zoom level of the map, which determines how much of the map is visible and how detailed it appears. Higher zoom levels show a smaller area with more detail, while lower zoom levels show a larger area with less detail.
|
|
38
|
+
* @param width - The width of the map component, which defines how much horizontal space the map will occupy in the layout. This can be specified in pixels, percentages, or other CSS units.
|
|
39
|
+
* @param height - The height of the map component, which defines how much vertical space the map will occupy in the layout. Similar to width, this can be specified in pixels, percentages, or other CSS units.
|
|
40
|
+
* @param center - The x and column coordinates that represent the center point of the map. This determines the initial focus of the map when it is rendered.
|
|
41
|
+
* @param onZoom - callback function that is triggered when the user scrolls within the map. This function updates the zoom level state in the parent component.
|
|
42
|
+
* @param onCenterChange - callback function that is triggered when the user drags the map. This function updates the center state in the parent component, allowing for dynamic panning.
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
const MapSVG = ({ zoomLevel, width, height, center, onCenterChange, onZoom }) => {
|
|
46
|
+
const theme = useTheme();
|
|
47
|
+
const mapData = useSelector((state) => state.telemetry.map);
|
|
48
|
+
const occupancyGrid = mapData.occupancyGrid;
|
|
49
|
+
const navigationGrid = mapData.navigationGrid;
|
|
50
|
+
const planningData = useSelector((state) => state.telemetry.planning);
|
|
51
|
+
const status = planningData.status;
|
|
52
|
+
const course = planningData.course;
|
|
53
|
+
const plan = planningData.plan;
|
|
54
|
+
const hasMapData = occupancyGrid.length > 0 && navigationGrid.length > 0;
|
|
55
|
+
const hasPlanningData = course.length > 0 || plan.length > 0;
|
|
56
|
+
const cellSize = 20 * Math.pow(2, zoomLevel - 1); // Base size of 20 units, doubling with each zoom level
|
|
57
|
+
const iconPadding = 1;
|
|
58
|
+
const iconSize = Math.max(0, cellSize - iconPadding * 2);
|
|
59
|
+
const iconRadius = Math.max(0, iconSize / 2);
|
|
60
|
+
const pathStrokeWidth = Math.max(1, cellSize / 10);
|
|
61
|
+
const gridWidth = occupancyGrid[0]?.length ?? 0;
|
|
62
|
+
const gridHeight = occupancyGrid.length;
|
|
63
|
+
const viewBoxSize = 400 / Math.pow(2, zoomLevel - 1); // Base viewBox size of 400 units, halving with each zoom level
|
|
64
|
+
// const maxViewBoxX = Math.max(gridWidth * cellSize - viewBoxSize, 0);
|
|
65
|
+
// const maxViewBoxY = Math.max(gridHeight * cellSize - viewBoxSize, 0);
|
|
66
|
+
const viewBoxX = center.y * cellSize - viewBoxSize / 2;
|
|
67
|
+
const viewBoxY = center.x * cellSize - viewBoxSize / 2;
|
|
68
|
+
const getCellColor = (cell) => {
|
|
69
|
+
const safeType = cell?.type ?? CellTypes.empty;
|
|
70
|
+
switch (safeType) {
|
|
71
|
+
case CellTypes.empty:
|
|
72
|
+
return theme.palette.occupancyMap.empty;
|
|
73
|
+
case CellTypes.occupied:
|
|
74
|
+
return theme.palette.occupancyMap.occupied;
|
|
75
|
+
case CellTypes.path:
|
|
76
|
+
return theme.palette.occupancyMap.path;
|
|
77
|
+
case CellTypes.current:
|
|
78
|
+
return theme.palette.occupancyMap.current;
|
|
79
|
+
case CellTypes.objective:
|
|
80
|
+
return theme.palette.occupancyMap.objective;
|
|
81
|
+
case CellTypes.error:
|
|
82
|
+
return theme.palette.occupancyMap.error;
|
|
83
|
+
default:
|
|
84
|
+
return theme.palette.occupancyMap.empty;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const arrowMarkerId = useId();
|
|
88
|
+
const renderMarkerSymbol = (cell) => {
|
|
89
|
+
const safeType = cell?.type ?? CellTypes.empty;
|
|
90
|
+
switch (safeType) {
|
|
91
|
+
case CellTypes.current:
|
|
92
|
+
return (_jsxs("g", { children: [_jsx("rect", { x: iconPadding / 2, y: iconPadding / 2, width: cellSize - iconPadding, height: cellSize - iconPadding, rx: Math.max(1, cellSize * 0.1), fill: "#fbbf24", opacity: 1 }), _jsx("image", { href: boatSVG, x: iconPadding, y: iconPadding, width: iconSize, height: iconSize, preserveAspectRatio: "xMidYMid meet", className: "boat-icon", style: { filter: 'brightness(0) saturate(100%)' } })] }));
|
|
93
|
+
case CellTypes.objective:
|
|
94
|
+
return (_jsxs("g", { children: [_jsx("circle", { cx: cellSize / 2, cy: cellSize / 2, r: iconRadius, fill: "transparent", stroke: theme.palette.occupancyMap.objectiveIcon, strokeWidth: Math.max(1, cellSize * 0.1) }), _jsx("circle", { cx: cellSize / 2, cy: cellSize / 2, r: Math.max(0, iconRadius * 0.6), fill: theme.palette.occupancyMap.objectiveIcon })] }));
|
|
95
|
+
case CellTypes.error:
|
|
96
|
+
return (_jsxs("g", { children: [_jsx("circle", { cx: cellSize / 2, cy: cellSize / 2, r: iconRadius, fill: theme.palette.occupancyMap.errorIcon, opacity: 0.2 }), _jsx("line", { x1: iconPadding, y1: iconPadding, x2: cellSize - iconPadding, y2: cellSize - iconPadding, stroke: theme.palette.occupancyMap.errorIcon, strokeWidth: Math.max(2, cellSize * 0.12), strokeLinecap: "round" }), _jsx("line", { x1: iconPadding, y1: cellSize - iconPadding, x2: cellSize - iconPadding, y2: iconPadding, stroke: theme.palette.occupancyMap.errorIcon, strokeWidth: Math.max(2, cellSize * 0.12), strokeLinecap: "round" })] }));
|
|
97
|
+
default:
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const getMapPathPoints = (path) => path
|
|
102
|
+
.map((cell) => `${cell.y * cellSize + cellSize / 2},${cell.x * cellSize + cellSize / 2}`)
|
|
103
|
+
.join(" ");
|
|
104
|
+
const renderPlanningPath = (path, color, dashArray, arrow) => {
|
|
105
|
+
if (path.length < 2) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const arrowSize = Math.max(6, cellSize * 0.5);
|
|
109
|
+
const arrowSpacing = Math.max(2, Math.floor(path.length / 8));
|
|
110
|
+
return (_jsxs("g", { children: [_jsx("polyline", { points: getMapPathPoints(path), fill: "none", stroke: color, strokeWidth: pathStrokeWidth, strokeLinecap: "round", strokeLinejoin: "round", strokeDasharray: dashArray, markerEnd: arrow ? `url(#${arrowMarkerId})` : undefined, opacity: 0.9 }), path.map((_, index) => {
|
|
111
|
+
if (index === 0 || index % arrowSpacing !== 0 || index === path.length - 1) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const current = path[index];
|
|
115
|
+
const next = path[Math.min(index + 1, path.length - 1)];
|
|
116
|
+
const dx = (next.y - current.y) * cellSize;
|
|
117
|
+
const dy = (next.x - current.x) * cellSize;
|
|
118
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
119
|
+
const angle = Math.atan2(dy, dx) * (180 / Math.PI);
|
|
120
|
+
const x = current.y * cellSize + cellSize / 2;
|
|
121
|
+
const y = current.x * cellSize + cellSize / 2;
|
|
122
|
+
if (dist === 0)
|
|
123
|
+
return null;
|
|
124
|
+
return (_jsx("g", { transform: `translate(${x}, ${y}) rotate(${angle})`, children: _jsx("image", { href: arrowSVG, x: -arrowSize / 2, y: -arrowSize / 2, width: arrowSize, height: arrowSize, preserveAspectRatio: "xMidYMid meet", style: {
|
|
125
|
+
fill: color,
|
|
126
|
+
mixBlendMode: "lighten"
|
|
127
|
+
} }) }, `arrow-${index}`));
|
|
128
|
+
})] }));
|
|
129
|
+
};
|
|
130
|
+
const rafRef = useRef(null);
|
|
131
|
+
const handleWheel = (event) => {
|
|
132
|
+
event.preventDefault();
|
|
133
|
+
if (rafRef.current !== null)
|
|
134
|
+
return;
|
|
135
|
+
const delta = event.deltaY;
|
|
136
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
137
|
+
rafRef.current = null;
|
|
138
|
+
const nextZoom = delta > 0 ? zoomLevel - 1 : zoomLevel + 1;
|
|
139
|
+
onZoom(nextZoom);
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const [dragging, setDragging] = useState(false);
|
|
143
|
+
const dragStartRef = useRef(null);
|
|
144
|
+
const clampCenter = (next) => {
|
|
145
|
+
const halfViewCells = viewBoxSize / (2 * cellSize);
|
|
146
|
+
const rowMin = Math.min(gridHeight - halfViewCells, halfViewCells);
|
|
147
|
+
const rowMax = Math.max(gridHeight - halfViewCells, halfViewCells);
|
|
148
|
+
const colMin = Math.min(gridWidth - halfViewCells, halfViewCells);
|
|
149
|
+
const colMax = Math.max(gridWidth - halfViewCells, halfViewCells);
|
|
150
|
+
return {
|
|
151
|
+
x: Math.min(Math.max(next.x, rowMin), rowMax),
|
|
152
|
+
y: Math.min(Math.max(next.y, colMin), colMax),
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
const handlePointerDown = (event) => {
|
|
156
|
+
if (event.button !== 0) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const currentTarget = event.currentTarget;
|
|
160
|
+
currentTarget.setPointerCapture(event.pointerId);
|
|
161
|
+
dragStartRef.current = {
|
|
162
|
+
x: event.clientX,
|
|
163
|
+
y: event.clientY,
|
|
164
|
+
center: { ...center },
|
|
165
|
+
};
|
|
166
|
+
setDragging(true);
|
|
167
|
+
event.preventDefault();
|
|
168
|
+
};
|
|
169
|
+
const handlePointerMove = (event) => {
|
|
170
|
+
if (!dragging || !dragStartRef.current) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (rafRef.current !== null)
|
|
174
|
+
return;
|
|
175
|
+
const clientX = event.clientX;
|
|
176
|
+
const clientY = event.clientY;
|
|
177
|
+
const target = event.currentTarget;
|
|
178
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
179
|
+
rafRef.current = null;
|
|
180
|
+
if (!dragStartRef.current)
|
|
181
|
+
return;
|
|
182
|
+
const rect = target.getBoundingClientRect();
|
|
183
|
+
if (rect.width === 0 || rect.height === 0)
|
|
184
|
+
return;
|
|
185
|
+
const deltaX = clientX - dragStartRef.current.x;
|
|
186
|
+
const deltaY = clientY - dragStartRef.current.y;
|
|
187
|
+
const deltaViewX = (deltaX * viewBoxSize) / rect.width;
|
|
188
|
+
const deltaViewY = (deltaY * viewBoxSize) / rect.height;
|
|
189
|
+
const nextCenter = clampCenter({
|
|
190
|
+
x: dragStartRef.current.center.x - deltaViewY / cellSize,
|
|
191
|
+
y: dragStartRef.current.center.y - deltaViewX / cellSize,
|
|
192
|
+
});
|
|
193
|
+
onCenterChange(nextCenter);
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
const endDrag = (event) => {
|
|
197
|
+
if (!dragging) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (rafRef.current !== null) {
|
|
201
|
+
cancelAnimationFrame(rafRef.current);
|
|
202
|
+
rafRef.current = null;
|
|
203
|
+
}
|
|
204
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
205
|
+
dragStartRef.current = null;
|
|
206
|
+
setDragging(false);
|
|
207
|
+
};
|
|
208
|
+
return (_jsx("svg", { width: width, height: height, viewBox: `${viewBoxX} ${viewBoxY} ${viewBoxSize} ${viewBoxSize}`, preserveAspectRatio: "xMidYMid meet", onWheel: handleWheel, onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: endDrag, onPointerCancel: endDrag, onPointerLeave: endDrag, style: {
|
|
209
|
+
border: `2px solid ${theme.palette.status.primary[status]}`,
|
|
210
|
+
borderRadius: "50%",
|
|
211
|
+
overflow: "hidden",
|
|
212
|
+
cursor: dragging ? "grabbing" : "grab",
|
|
213
|
+
touchAction: "none",
|
|
214
|
+
}, children: hasMapData ? (_jsxs(_Fragment, { children: [_jsx("defs", { children: _jsx("marker", { id: arrowMarkerId, viewBox: "0 0 10 10", refX: "10", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto", children: _jsx("path", { d: "M 0 0 L 10 5 L 0 10 z", fill: theme.palette.occupancyMap.plan }) }) }), _jsx("rect", { x: -5000, y: -5000, width: gridWidth * cellSize + 10000, height: gridHeight * cellSize + 10000, fill: theme.palette.occupancyMap.empty }), occupancyGrid.map((x, rowIndex) => x.map((cell, colIndex) => {
|
|
215
|
+
const safeCell = cell ?? { type: CellTypes.empty, x: rowIndex, y: colIndex };
|
|
216
|
+
return (_jsx("g", { transform: `translate(${colIndex * cellSize}, ${rowIndex * cellSize})`, children: _jsx("rect", { width: cellSize, height: cellSize, fill: getCellColor(safeCell), stroke: "rgba(255, 255, 255, 0.08)", strokeWidth: 0.5 }) }, `${rowIndex}-${colIndex}`));
|
|
217
|
+
})), hasPlanningData && renderPlanningPath(course, theme.palette.occupancyMap.course), hasPlanningData && renderPlanningPath(plan, theme.palette.occupancyMap.plan, "4 3", true), navigationGrid.map((x, rowIndex) => x.map((cell, colIndex) => {
|
|
218
|
+
if (![CellTypes.current, CellTypes.objective, CellTypes.error].includes(cell?.type ?? CellTypes.empty)) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
return (_jsxs("g", { transform: `translate(${colIndex * cellSize}, ${rowIndex * cellSize})`, children: [_jsx("rect", { width: cellSize, height: cellSize, fill: "transparent" }), renderMarkerSymbol(cell)] }, `nav-${rowIndex}-${colIndex}`));
|
|
222
|
+
})), occupancyGrid.map((x, rowIndex) => x.map((cell, colIndex) => {
|
|
223
|
+
const safeCell = cell ?? { type: CellTypes.empty, x: rowIndex, y: colIndex };
|
|
224
|
+
if (safeCell.type !== CellTypes.occupied) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
const isOnPath = course.some(c => c.x === rowIndex && c.y === colIndex) ||
|
|
228
|
+
plan.some(c => c.x === rowIndex && c.y === colIndex);
|
|
229
|
+
if (!isOnPath) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
return (_jsx("g", { transform: `translate(${colIndex * cellSize}, ${rowIndex * cellSize})`, children: _jsx("image", { href: warningSVG, x: iconPadding, y: iconPadding, width: iconSize, height: iconSize, preserveAspectRatio: "xMidYMid meet" }) }, `warning-${rowIndex}-${colIndex}`));
|
|
233
|
+
}))] })) : (_jsx("text", { x: "50%", y: "50%", textAnchor: "middle", fill: theme.palette.text.secondary, fontSize: "12px", fontWeight: "bold", children: "No Map Data" })) }));
|
|
234
|
+
};
|
|
235
|
+
const MapComponent = () => {
|
|
236
|
+
const theme = useTheme();
|
|
237
|
+
const [zoomLevel, setZoomLevel] = useState(1);
|
|
238
|
+
const [center, setCenter] = useState({ x: 0, y: 0 });
|
|
239
|
+
const [centerInitialized, setCenterInitialized] = useState(false);
|
|
240
|
+
const occupancyGrid = useSelector((state) => state.telemetry.map.occupancyGrid);
|
|
241
|
+
const navigationGrid = useSelector((state) => state.telemetry.map.navigationGrid);
|
|
242
|
+
const hasGridData = occupancyGrid.length > 0 && navigationGrid.length > 0;
|
|
243
|
+
const currentCell = useMemo(() => navigationGrid.flat().find((cell) => cell?.type === CellTypes.current), [navigationGrid]);
|
|
244
|
+
const objectiveCell = useMemo(() => navigationGrid.flat().find((cell) => cell?.type === CellTypes.objective), [navigationGrid]);
|
|
245
|
+
const mapCenter = useMemo(() => ({
|
|
246
|
+
x: Math.floor(occupancyGrid.length / 2),
|
|
247
|
+
y: Math.floor((occupancyGrid[0]?.length ?? 0) / 2),
|
|
248
|
+
}), [occupancyGrid]);
|
|
249
|
+
const focusSequence = useMemo(() => {
|
|
250
|
+
const targets = [];
|
|
251
|
+
if (objectiveCell)
|
|
252
|
+
targets.push({ x: objectiveCell.x, y: objectiveCell.y });
|
|
253
|
+
if (currentCell)
|
|
254
|
+
targets.push({ x: currentCell.x, y: currentCell.y });
|
|
255
|
+
targets.push(mapCenter);
|
|
256
|
+
return targets;
|
|
257
|
+
}, [objectiveCell, currentCell, mapCenter]);
|
|
258
|
+
const [focusIndex, setFocusIndex] = useState(0);
|
|
259
|
+
useEffect(() => {
|
|
260
|
+
if (focusSequence.length === 0) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
setFocusIndex((index) => Math.min(index, focusSequence.length - 1));
|
|
264
|
+
}, [focusSequence]);
|
|
265
|
+
const resetCenter = useMemo(() => {
|
|
266
|
+
return currentCell
|
|
267
|
+
? { x: currentCell.x, y: currentCell.y }
|
|
268
|
+
: mapCenter;
|
|
269
|
+
}, [currentCell, mapCenter]);
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
if (hasGridData && !centerInitialized) {
|
|
272
|
+
setCenter(resetCenter);
|
|
273
|
+
setCenterInitialized(true);
|
|
274
|
+
}
|
|
275
|
+
}, [hasGridData, centerInitialized, resetCenter]);
|
|
276
|
+
const onZoom = (newZoomLevel) => {
|
|
277
|
+
setZoomLevel(Math.max(0, Math.min(newZoomLevel, 5)));
|
|
278
|
+
};
|
|
279
|
+
const shiftFocus = () => {
|
|
280
|
+
if (focusSequence.length === 0) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const nextIndex = (focusIndex + 1) % focusSequence.length;
|
|
284
|
+
setFocusIndex(nextIndex);
|
|
285
|
+
setCenter(focusSequence[nextIndex]);
|
|
286
|
+
};
|
|
287
|
+
if (!hasGridData) {
|
|
288
|
+
return (_jsxs(Box, { sx: { width: "100%", height: "100%", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: 2 }, children: [_jsx(CircularProgress, {}), _jsx(Typography, { variant: "body2", sx: { color: theme.palette.text.secondary }, children: "Loading map data..." })] }));
|
|
289
|
+
}
|
|
290
|
+
return (_jsxs(Box, { sx: { position: "relative", width: "100%", maxWidth: 400, aspectRatio: "1 / 1", mx: "auto" }, children: [_jsx(MapSVG, { zoomLevel: zoomLevel, width: "100%", height: "100%", center: center, onCenterChange: setCenter, onZoom: onZoom }), _jsx(Button, { variant: "contained", color: "primary", size: "small", onClick: () => onZoom(zoomLevel + 1), sx: { position: "absolute", top: 12, left: "50%", transform: "translateX(-50%)", minWidth: 0, width: 42, height: 42, borderRadius: "50%" }, children: _jsx(ZoomInIcon, { fontSize: "small" }) }), _jsx(Button, { variant: "contained", color: "primary", size: "small", onClick: () => onZoom(zoomLevel - 1), sx: { position: "absolute", bottom: 12, left: "16%", transform: "translateX(-50%)", minWidth: 0, width: 42, height: 42, borderRadius: "50%" }, children: _jsx(ZoomOutIcon, { fontSize: "small" }) }), _jsx(Button, { variant: "contained", color: "primary", size: "small", onClick: shiftFocus, sx: { position: "absolute", bottom: 12, right: "16%", transform: "translateX(50%)", minWidth: 0, width: 42, height: 42, borderRadius: "50%" }, children: _jsx(ChangeZoomTargetIcon, { fontSize: "small" }) })] }));
|
|
291
|
+
};
|
|
292
|
+
export default MapComponent;
|
|
293
|
+
//# sourceMappingURL=Map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Map.js","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/Map.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PowerRudderPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/telemetry/PowerRudderPanel.tsx"],"names":[],"mappings":"AA4IA,MAAM,CAAC,OAAO,UAAU,gBAAgB,gCAqCvC"}
|