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.
Files changed (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -0
  3. package/dist/assets/RudderIcon.d.ts +23 -0
  4. package/dist/assets/RudderIcon.d.ts.map +1 -0
  5. package/dist/assets/RudderIcon.js +23 -0
  6. package/dist/assets/RudderIcon.js.map +1 -0
  7. package/dist/assets/svgSources.d.ts +18 -0
  8. package/dist/assets/svgSources.d.ts.map +1 -0
  9. package/dist/assets/svgSources.js +18 -0
  10. package/dist/assets/svgSources.js.map +1 -0
  11. package/dist/components/Joystick.d.ts +23 -0
  12. package/dist/components/Joystick.d.ts.map +1 -0
  13. package/dist/components/Joystick.js +114 -0
  14. package/dist/components/Joystick.js.map +1 -0
  15. package/dist/components/TelemetryDashboard.d.ts +31 -0
  16. package/dist/components/TelemetryDashboard.d.ts.map +1 -0
  17. package/dist/components/TelemetryDashboard.js +127 -0
  18. package/dist/components/TelemetryDashboard.js.map +1 -0
  19. package/dist/components/controls/ControlOverlay.d.ts +64 -0
  20. package/dist/components/controls/ControlOverlay.d.ts.map +1 -0
  21. package/dist/components/controls/ControlOverlay.js +88 -0
  22. package/dist/components/controls/ControlOverlay.js.map +1 -0
  23. package/dist/components/controls/ControlsDrawer.d.ts +37 -0
  24. package/dist/components/controls/ControlsDrawer.d.ts.map +1 -0
  25. package/dist/components/controls/ControlsDrawer.js +93 -0
  26. package/dist/components/controls/ControlsDrawer.js.map +1 -0
  27. package/dist/components/controls/ForceVectorsPanel.d.ts +37 -0
  28. package/dist/components/controls/ForceVectorsPanel.d.ts.map +1 -0
  29. package/dist/components/controls/ForceVectorsPanel.js +76 -0
  30. package/dist/components/controls/ForceVectorsPanel.js.map +1 -0
  31. package/dist/components/controls/InfoPopover.d.ts +34 -0
  32. package/dist/components/controls/InfoPopover.d.ts.map +1 -0
  33. package/dist/components/controls/InfoPopover.js +41 -0
  34. package/dist/components/controls/InfoPopover.js.map +1 -0
  35. package/dist/components/controls/Legend.d.ts +29 -0
  36. package/dist/components/controls/Legend.d.ts.map +1 -0
  37. package/dist/components/controls/Legend.js +74 -0
  38. package/dist/components/controls/Legend.js.map +1 -0
  39. package/dist/components/controls/MobileBottomNav.d.ts +17 -0
  40. package/dist/components/controls/MobileBottomNav.d.ts.map +1 -0
  41. package/dist/components/controls/MobileBottomNav.js +46 -0
  42. package/dist/components/controls/MobileBottomNav.js.map +1 -0
  43. package/dist/components/hud/SceneHUD.d.ts +100 -0
  44. package/dist/components/hud/SceneHUD.d.ts.map +1 -0
  45. package/dist/components/hud/SceneHUD.js +216 -0
  46. package/dist/components/hud/SceneHUD.js.map +1 -0
  47. package/dist/components/hud/telemetry/Batteries.d.ts +40 -0
  48. package/dist/components/hud/telemetry/Batteries.d.ts.map +1 -0
  49. package/dist/components/hud/telemetry/Batteries.js +137 -0
  50. package/dist/components/hud/telemetry/Batteries.js.map +1 -0
  51. package/dist/components/hud/telemetry/Compass.d.ts +2 -0
  52. package/dist/components/hud/telemetry/Compass.d.ts.map +1 -0
  53. package/dist/components/hud/telemetry/Compass.js +147 -0
  54. package/dist/components/hud/telemetry/Compass.js.map +1 -0
  55. package/dist/components/hud/telemetry/Log.d.ts +2 -0
  56. package/dist/components/hud/telemetry/Log.d.ts.map +1 -0
  57. package/dist/components/hud/telemetry/Log.js +65 -0
  58. package/dist/components/hud/telemetry/Log.js.map +1 -0
  59. package/dist/components/hud/telemetry/Map.d.ts +4 -0
  60. package/dist/components/hud/telemetry/Map.d.ts.map +1 -0
  61. package/dist/components/hud/telemetry/Map.js +293 -0
  62. package/dist/components/hud/telemetry/Map.js.map +1 -0
  63. package/dist/components/hud/telemetry/PowerRudderPanel.d.ts +2 -0
  64. package/dist/components/hud/telemetry/PowerRudderPanel.d.ts.map +1 -0
  65. package/dist/components/hud/telemetry/PowerRudderPanel.js +115 -0
  66. package/dist/components/hud/telemetry/PowerRudderPanel.js.map +1 -0
  67. package/dist/components/hud/telemetry/RadiusVisualizer.d.ts +63 -0
  68. package/dist/components/hud/telemetry/RadiusVisualizer.d.ts.map +1 -0
  69. package/dist/components/hud/telemetry/RadiusVisualizer.js +139 -0
  70. package/dist/components/hud/telemetry/RadiusVisualizer.js.map +1 -0
  71. package/dist/components/hud/telemetry/RadiusVisualizerPanel.d.ts +31 -0
  72. package/dist/components/hud/telemetry/RadiusVisualizerPanel.d.ts.map +1 -0
  73. package/dist/components/hud/telemetry/RadiusVisualizerPanel.js +37 -0
  74. package/dist/components/hud/telemetry/RadiusVisualizerPanel.js.map +1 -0
  75. package/dist/components/hud/telemetry/ShipRudderVisualizer.d.ts +43 -0
  76. package/dist/components/hud/telemetry/ShipRudderVisualizer.d.ts.map +1 -0
  77. package/dist/components/hud/telemetry/ShipRudderVisualizer.js +121 -0
  78. package/dist/components/hud/telemetry/ShipRudderVisualizer.js.map +1 -0
  79. package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.d.ts +26 -0
  80. package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.d.ts.map +1 -0
  81. package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.js +29 -0
  82. package/dist/components/hud/telemetry/ShipRudderVisualizerPanel.js.map +1 -0
  83. package/dist/components/hud/telemetry/SignalLog.d.ts +7 -0
  84. package/dist/components/hud/telemetry/SignalLog.d.ts.map +1 -0
  85. package/dist/components/hud/telemetry/SignalLog.js +28 -0
  86. package/dist/components/hud/telemetry/SignalLog.js.map +1 -0
  87. package/dist/components/hud/telemetry/SignalStrength.d.ts +9 -0
  88. package/dist/components/hud/telemetry/SignalStrength.d.ts.map +1 -0
  89. package/dist/components/hud/telemetry/SignalStrength.js +53 -0
  90. package/dist/components/hud/telemetry/SignalStrength.js.map +1 -0
  91. package/dist/components/hud/telemetry/Speedometer.d.ts +2 -0
  92. package/dist/components/hud/telemetry/Speedometer.d.ts.map +1 -0
  93. package/dist/components/hud/telemetry/Speedometer.js +70 -0
  94. package/dist/components/hud/telemetry/Speedometer.js.map +1 -0
  95. package/dist/components/hud/telemetry/Task.d.ts +2 -0
  96. package/dist/components/hud/telemetry/Task.d.ts.map +1 -0
  97. package/dist/components/hud/telemetry/Task.js +61 -0
  98. package/dist/components/hud/telemetry/Task.js.map +1 -0
  99. package/dist/components/hud/telemetry/TaskData.d.ts +2 -0
  100. package/dist/components/hud/telemetry/TaskData.d.ts.map +1 -0
  101. package/dist/components/hud/telemetry/TaskData.js +62 -0
  102. package/dist/components/hud/telemetry/TaskData.js.map +1 -0
  103. package/dist/components/hud/telemetry/index.d.ts +40 -0
  104. package/dist/components/hud/telemetry/index.d.ts.map +1 -0
  105. package/dist/components/hud/telemetry/index.js +40 -0
  106. package/dist/components/hud/telemetry/index.js.map +1 -0
  107. package/dist/components/hud/telemetry/powerColor.d.ts +16 -0
  108. package/dist/components/hud/telemetry/powerColor.d.ts.map +1 -0
  109. package/dist/components/hud/telemetry/powerColor.js +15 -0
  110. package/dist/components/hud/telemetry/powerColor.js.map +1 -0
  111. package/dist/components/scenes/MappingScene.d.ts +19 -0
  112. package/dist/components/scenes/MappingScene.d.ts.map +1 -0
  113. package/dist/components/scenes/MappingScene.js +353 -0
  114. package/dist/components/scenes/MappingScene.js.map +1 -0
  115. package/dist/components/scenes/SceneCanvas.d.ts +96 -0
  116. package/dist/components/scenes/SceneCanvas.d.ts.map +1 -0
  117. package/dist/components/scenes/SceneCanvas.js +151 -0
  118. package/dist/components/scenes/SceneCanvas.js.map +1 -0
  119. package/dist/components/scenes/SceneRenderer.d.ts +16 -0
  120. package/dist/components/scenes/SceneRenderer.d.ts.map +1 -0
  121. package/dist/components/scenes/SceneRenderer.js +60 -0
  122. package/dist/components/scenes/SceneRenderer.js.map +1 -0
  123. package/dist/components/scenes/TelemetryScene.d.ts +6 -0
  124. package/dist/components/scenes/TelemetryScene.d.ts.map +1 -0
  125. package/dist/components/scenes/TelemetryScene.js +6 -0
  126. package/dist/components/scenes/TelemetryScene.js.map +1 -0
  127. package/dist/components/svg/CompassRose.d.ts +129 -0
  128. package/dist/components/svg/CompassRose.d.ts.map +1 -0
  129. package/dist/components/svg/CompassRose.js +221 -0
  130. package/dist/components/svg/CompassRose.js.map +1 -0
  131. package/dist/connection/config.d.ts +41 -0
  132. package/dist/connection/config.d.ts.map +1 -0
  133. package/dist/connection/config.js +44 -0
  134. package/dist/connection/config.js.map +1 -0
  135. package/dist/contexts/SceneContext.d.ts +35 -0
  136. package/dist/contexts/SceneContext.d.ts.map +1 -0
  137. package/dist/contexts/SceneContext.js +24 -0
  138. package/dist/contexts/SceneContext.js.map +1 -0
  139. package/dist/hooks/useAutoPathAnimation.d.ts +22 -0
  140. package/dist/hooks/useAutoPathAnimation.d.ts.map +1 -0
  141. package/dist/hooks/useAutoPathAnimation.js +102 -0
  142. package/dist/hooks/useAutoPathAnimation.js.map +1 -0
  143. package/dist/hooks/useLayoutConfig.d.ts +29 -0
  144. package/dist/hooks/useLayoutConfig.d.ts.map +1 -0
  145. package/dist/hooks/useLayoutConfig.js +30 -0
  146. package/dist/hooks/useLayoutConfig.js.map +1 -0
  147. package/dist/hooks/useSceneContext.d.ts +64 -0
  148. package/dist/hooks/useSceneContext.d.ts.map +1 -0
  149. package/dist/hooks/useSceneContext.js +37 -0
  150. package/dist/hooks/useSceneContext.js.map +1 -0
  151. package/dist/index.d.ts +44 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +57 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/providers/TelemetryProvider.d.ts +27 -0
  156. package/dist/providers/TelemetryProvider.d.ts.map +1 -0
  157. package/dist/providers/TelemetryProvider.js +50 -0
  158. package/dist/providers/TelemetryProvider.js.map +1 -0
  159. package/dist/providers/TelemetryThemeProvider.d.ts +25 -0
  160. package/dist/providers/TelemetryThemeProvider.d.ts.map +1 -0
  161. package/dist/providers/TelemetryThemeProvider.js +54 -0
  162. package/dist/providers/TelemetryThemeProvider.js.map +1 -0
  163. package/dist/store/actions/connectionActions.d.ts +39 -0
  164. package/dist/store/actions/connectionActions.d.ts.map +1 -0
  165. package/dist/store/actions/connectionActions.js +162 -0
  166. package/dist/store/actions/connectionActions.js.map +1 -0
  167. package/dist/store/actions/fetchTelemetry.d.ts +51 -0
  168. package/dist/store/actions/fetchTelemetry.d.ts.map +1 -0
  169. package/dist/store/actions/fetchTelemetry.js +135 -0
  170. package/dist/store/actions/fetchTelemetry.js.map +1 -0
  171. package/dist/store/index.d.ts +23 -0
  172. package/dist/store/index.d.ts.map +1 -0
  173. package/dist/store/index.js +22 -0
  174. package/dist/store/index.js.map +1 -0
  175. package/dist/store/slices/connectionSlice.d.ts +15 -0
  176. package/dist/store/slices/connectionSlice.d.ts.map +1 -0
  177. package/dist/store/slices/connectionSlice.js +39 -0
  178. package/dist/store/slices/connectionSlice.js.map +1 -0
  179. package/dist/store/slices/discoveredGridSlice.d.ts +168 -0
  180. package/dist/store/slices/discoveredGridSlice.d.ts.map +1 -0
  181. package/dist/store/slices/discoveredGridSlice.js +146 -0
  182. package/dist/store/slices/discoveredGridSlice.js.map +1 -0
  183. package/dist/store/slices/sceneSlice.d.ts +185 -0
  184. package/dist/store/slices/sceneSlice.d.ts.map +1 -0
  185. package/dist/store/slices/sceneSlice.js +95 -0
  186. package/dist/store/slices/sceneSlice.js.map +1 -0
  187. package/dist/store/slices/simulationSlice.d.ts +87 -0
  188. package/dist/store/slices/simulationSlice.d.ts.map +1 -0
  189. package/dist/store/slices/simulationSlice.js +55 -0
  190. package/dist/store/slices/simulationSlice.js.map +1 -0
  191. package/dist/store/slices/telemetrySlice.d.ts +10 -0
  192. package/dist/store/slices/telemetrySlice.d.ts.map +1 -0
  193. package/dist/store/slices/telemetrySlice.js +88 -0
  194. package/dist/store/slices/telemetrySlice.js.map +1 -0
  195. package/dist/store/slices/videoSlice.d.ts +12 -0
  196. package/dist/store/slices/videoSlice.d.ts.map +1 -0
  197. package/dist/store/slices/videoSlice.js +27 -0
  198. package/dist/store/slices/videoSlice.js.map +1 -0
  199. package/dist/store/slices/visualizationSlice.d.ts +152 -0
  200. package/dist/store/slices/visualizationSlice.d.ts.map +1 -0
  201. package/dist/store/slices/visualizationSlice.js +58 -0
  202. package/dist/store/slices/visualizationSlice.js.map +1 -0
  203. package/dist/store/store.d.ts +61 -0
  204. package/dist/store/store.d.ts.map +1 -0
  205. package/dist/store/store.js +78 -0
  206. package/dist/store/store.js.map +1 -0
  207. package/dist/theme/index.d.ts +14 -0
  208. package/dist/theme/index.d.ts.map +1 -0
  209. package/dist/theme/index.js +14 -0
  210. package/dist/theme/index.js.map +1 -0
  211. package/dist/theme/lightTheme.d.ts +151 -0
  212. package/dist/theme/lightTheme.d.ts.map +1 -0
  213. package/dist/theme/lightTheme.js +194 -0
  214. package/dist/theme/lightTheme.js.map +1 -0
  215. package/dist/theme/telemetryTheme.d.ts +90 -0
  216. package/dist/theme/telemetryTheme.d.ts.map +1 -0
  217. package/dist/theme/telemetryTheme.js +157 -0
  218. package/dist/theme/telemetryTheme.js.map +1 -0
  219. package/dist/types/detectedObjectsTypes.d.ts +18 -0
  220. package/dist/types/detectedObjectsTypes.d.ts.map +1 -0
  221. package/dist/types/detectedObjectsTypes.js +8 -0
  222. package/dist/types/detectedObjectsTypes.js.map +1 -0
  223. package/dist/types/index.d.ts +16 -0
  224. package/dist/types/index.d.ts.map +1 -0
  225. package/dist/types/index.js +16 -0
  226. package/dist/types/index.js.map +1 -0
  227. package/dist/types/ros.d.ts +87 -0
  228. package/dist/types/ros.d.ts.map +1 -0
  229. package/dist/types/ros.js +17 -0
  230. package/dist/types/ros.js.map +1 -0
  231. package/dist/types/statusTypes.d.ts +81 -0
  232. package/dist/types/statusTypes.d.ts.map +1 -0
  233. package/dist/types/statusTypes.js +52 -0
  234. package/dist/types/statusTypes.js.map +1 -0
  235. package/dist/types/taskTypes.d.ts +65 -0
  236. package/dist/types/taskTypes.d.ts.map +1 -0
  237. package/dist/types/taskTypes.js +18 -0
  238. package/dist/types/taskTypes.js.map +1 -0
  239. package/dist/types/telemetryInterfaces.d.ts +81 -0
  240. package/dist/types/telemetryInterfaces.d.ts.map +1 -0
  241. package/dist/types/telemetryInterfaces.js +30 -0
  242. package/dist/types/telemetryInterfaces.js.map +1 -0
  243. package/dist/utils/basestation.d.ts +7 -0
  244. package/dist/utils/basestation.d.ts.map +1 -0
  245. package/dist/utils/basestation.js +49 -0
  246. package/dist/utils/basestation.js.map +1 -0
  247. package/dist/utils/batteryUtil.d.ts +8 -0
  248. package/dist/utils/batteryUtil.d.ts.map +1 -0
  249. package/dist/utils/batteryUtil.js +32 -0
  250. package/dist/utils/batteryUtil.js.map +1 -0
  251. package/dist/utils/telemetry/index.d.ts +13 -0
  252. package/dist/utils/telemetry/index.d.ts.map +1 -0
  253. package/dist/utils/telemetry/index.js +13 -0
  254. package/dist/utils/telemetry/index.js.map +1 -0
  255. package/dist/utils/telemetry/telemetryFactory.d.ts +48 -0
  256. package/dist/utils/telemetry/telemetryFactory.d.ts.map +1 -0
  257. package/dist/utils/telemetry/telemetryFactory.js +390 -0
  258. package/dist/utils/telemetry/telemetryFactory.js.map +1 -0
  259. 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,2 @@
1
+ export default function Log(): import("react").JSX.Element;
2
+ //# sourceMappingURL=Log.d.ts.map
@@ -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,4 @@
1
+ import React from "react";
2
+ declare const MapComponent: React.FC;
3
+ export default MapComponent;
4
+ //# sourceMappingURL=Map.d.ts.map
@@ -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,2 @@
1
+ export default function PowerRudderPanel(): import("react").JSX.Element;
2
+ //# sourceMappingURL=PowerRudderPanel.d.ts.map
@@ -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"}