@wandelbots/wandelbots-js-react-components 3.1.1 → 3.2.0-pr.feat-improve-exports.414.40b4b4e

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 (87) hide show
  1. package/README.md +79 -2
  2. package/dist/3d.cjs.js +2 -0
  3. package/dist/3d.cjs.js.map +1 -0
  4. package/dist/3d.d.ts +11 -0
  5. package/dist/3d.d.ts.map +1 -0
  6. package/dist/3d.es.js +16 -0
  7. package/dist/3d.es.js.map +1 -0
  8. package/dist/PoseJointValues-C3bsJdfd.js +5446 -0
  9. package/dist/PoseJointValues-C3bsJdfd.js.map +1 -0
  10. package/dist/PoseJointValues-wLOjcYDe.cjs +21 -0
  11. package/dist/PoseJointValues-wLOjcYDe.cjs.map +1 -0
  12. package/dist/ProgramStateIndicator-CTT-CAcJ.js +268 -0
  13. package/dist/ProgramStateIndicator-CTT-CAcJ.js.map +1 -0
  14. package/dist/ProgramStateIndicator-DYKBcj1s.cjs +2 -0
  15. package/dist/ProgramStateIndicator-DYKBcj1s.cjs.map +1 -0
  16. package/dist/VelocitySlider-2Zme2MN7.cjs +5 -0
  17. package/dist/VelocitySlider-2Zme2MN7.cjs.map +1 -0
  18. package/dist/VelocitySlider-QSg_8eb1.js +1906 -0
  19. package/dist/VelocitySlider-QSg_8eb1.js.map +1 -0
  20. package/dist/components/jogging/JoggingStore.d.ts +1 -1
  21. package/dist/core.cjs.js +2 -0
  22. package/dist/core.cjs.js.map +1 -0
  23. package/dist/core.d.ts +23 -0
  24. package/dist/core.d.ts.map +1 -0
  25. package/dist/core.es.js +46 -0
  26. package/dist/core.es.js.map +1 -0
  27. package/dist/createSvgIcon-BG4_bQuX.cjs +56 -0
  28. package/dist/createSvgIcon-BG4_bQuX.cjs.map +1 -0
  29. package/dist/createSvgIcon-D3GRPlVu.js +3072 -0
  30. package/dist/createSvgIcon-D3GRPlVu.js.map +1 -0
  31. package/dist/data.cjs.js +2 -0
  32. package/dist/data.cjs.js.map +1 -0
  33. package/dist/data.d.ts +4 -0
  34. package/dist/data.d.ts.map +1 -0
  35. package/dist/data.es.js +7 -0
  36. package/dist/data.es.js.map +1 -0
  37. package/dist/externalizeComponent-C12Qf79R.cjs +24 -0
  38. package/dist/externalizeComponent-C12Qf79R.cjs.map +1 -0
  39. package/dist/externalizeComponent-RpcZ_G17.js +491 -0
  40. package/dist/externalizeComponent-RpcZ_G17.js.map +1 -0
  41. package/dist/index-8UEqiXug.cjs +7 -0
  42. package/dist/index-8UEqiXug.cjs.map +1 -0
  43. package/dist/index-CQDi5W62.cjs +2 -0
  44. package/dist/index-CQDi5W62.cjs.map +1 -0
  45. package/dist/index-DSz82V23.js +1801 -0
  46. package/dist/index-DSz82V23.js.map +1 -0
  47. package/dist/index-DZubFUuo.js +4909 -0
  48. package/dist/index-DZubFUuo.js.map +1 -0
  49. package/dist/index-MyU3fVEK.cjs +50 -0
  50. package/dist/index-MyU3fVEK.cjs.map +1 -0
  51. package/dist/index-VURe0U2S.js +9443 -0
  52. package/dist/index-VURe0U2S.js.map +1 -0
  53. package/dist/index.cjs.js +2 -0
  54. package/dist/index.cjs.js.map +1 -0
  55. package/dist/index.es.js +72 -0
  56. package/dist/index.es.js.map +1 -0
  57. package/dist/interpolation-CVSmVNjc.cjs +2 -0
  58. package/dist/interpolation-CVSmVNjc.cjs.map +1 -0
  59. package/dist/interpolation-DjBX_Si-.js +138 -0
  60. package/dist/interpolation-DjBX_Si-.js.map +1 -0
  61. package/dist/jogging.cjs.js +2 -0
  62. package/dist/jogging.cjs.js.map +1 -0
  63. package/dist/jogging.d.ts +9 -0
  64. package/dist/jogging.d.ts.map +1 -0
  65. package/dist/jogging.es.js +12 -0
  66. package/dist/jogging.es.js.map +1 -0
  67. package/dist/manufacturerHomePositions-DHqcbFON.js +979 -0
  68. package/dist/manufacturerHomePositions-DHqcbFON.js.map +1 -0
  69. package/dist/manufacturerHomePositions-zd-CKEiQ.cjs +2 -0
  70. package/dist/manufacturerHomePositions-zd-CKEiQ.cjs.map +1 -0
  71. package/dist/theming-BO8z_Hpa.js +2198 -0
  72. package/dist/theming-BO8z_Hpa.js.map +1 -0
  73. package/dist/theming-D5DvGuxX.cjs +4 -0
  74. package/dist/theming-D5DvGuxX.cjs.map +1 -0
  75. package/dist/useThemeProps-P648Ox74.cjs +2 -0
  76. package/dist/useThemeProps-P648Ox74.cjs.map +1 -0
  77. package/dist/useThemeProps-jE_Qg6SI.js +40 -0
  78. package/dist/useThemeProps-jE_Qg6SI.js.map +1 -0
  79. package/package.json +24 -3
  80. package/src/3d.ts +15 -0
  81. package/src/core.ts +23 -0
  82. package/src/data.ts +4 -0
  83. package/src/jogging.ts +9 -0
  84. package/dist/index.cjs +0 -155
  85. package/dist/index.cjs.map +0 -1
  86. package/dist/index.js +0 -30530
  87. package/dist/index.js.map +0 -1
@@ -0,0 +1,268 @@
1
+ import { e as S, j as i } from "./externalizeComponent-RpcZ_G17.js";
2
+ import { useTheme as m, Box as g, Button as C, Typography as P, Chip as R } from "@mui/material";
3
+ import { observer as _ } from "mobx-react-lite";
4
+ import { useTranslation as I } from "react-i18next";
5
+ import { PlayArrow as b, Stop as A, Pause as N } from "@mui/icons-material";
6
+ var a = /* @__PURE__ */ ((r) => (r.IDLE = "idle", r.PREPARING = "preparing", r.STARTING = "starting", r.RUNNING = "running", r.PAUSING = "pausing", r.PAUSED = "paused", r.STOPPING = "stopping", r.COMPLETED = "completed", r.FAILED = "failed", r.STOPPED = "stopped", r.ERROR = "error", r))(a || {});
7
+ const j = S(
8
+ _(
9
+ ({
10
+ state: r,
11
+ onRun: e,
12
+ onPause: d,
13
+ onStop: u,
14
+ onReset: l,
15
+ requiresManualReset: o = !1,
16
+ variant: T = "with_pause",
17
+ className: s
18
+ }) => {
19
+ const p = m(), { t: c } = I(), E = () => {
20
+ const n = {
21
+ run: {
22
+ enabled: r === "idle" || r === "stopped" || r === "paused" || r === "completed" || r === "failed" || r === "error",
23
+ label: c(r === "paused" ? "ProgramControl.Resume.bt" : r === "error" || r === "failed" ? "ProgramControl.Retry.bt" : "ProgramControl.Start.bt"),
24
+ color: p.palette.success.main,
25
+ onClick: e
26
+ },
27
+ pause: {
28
+ enabled: r === "running",
29
+ label: c("ProgramControl.Pause.bt"),
30
+ color: "#FFFFFF33",
31
+ onClick: d || (() => {
32
+ })
33
+ },
34
+ stop: {
35
+ enabled: r === "preparing" || r === "starting" || r === "running" || r === "pausing" || r === "paused",
36
+ label: c("ProgramControl.Stop.bt"),
37
+ color: p.palette.error.main,
38
+ onClick: u
39
+ }
40
+ };
41
+ return T === "without_pause" ? [n.run, n.stop] : [n.run, n.pause, n.stop];
42
+ }, x = (n) => {
43
+ const t = { sx: { fontSize: "55px" } };
44
+ if (T === "without_pause")
45
+ return n === 0 ? /* @__PURE__ */ i.jsx(b, { ...t }) : /* @__PURE__ */ i.jsx(A, { ...t });
46
+ switch (n) {
47
+ case 0:
48
+ return /* @__PURE__ */ i.jsx(b, { ...t });
49
+ case 1:
50
+ return /* @__PURE__ */ i.jsx(N, { ...t });
51
+ case 2:
52
+ return /* @__PURE__ */ i.jsx(A, { ...t });
53
+ default:
54
+ return null;
55
+ }
56
+ }, O = E();
57
+ return /* @__PURE__ */ i.jsx(
58
+ g,
59
+ {
60
+ className: s,
61
+ sx: {
62
+ display: "flex",
63
+ flexDirection: "column",
64
+ alignItems: "center",
65
+ gap: 2
66
+ },
67
+ children: /* @__PURE__ */ i.jsx(
68
+ g,
69
+ {
70
+ sx: {
71
+ display: "flex",
72
+ gap: "40px",
73
+ flexWrap: "wrap",
74
+ justifyContent: "center",
75
+ alignItems: "center"
76
+ },
77
+ children: O.map((n, t) => /* @__PURE__ */ i.jsxs(
78
+ g,
79
+ {
80
+ sx: {
81
+ display: "flex",
82
+ flexDirection: "column",
83
+ alignItems: "center",
84
+ gap: 1
85
+ },
86
+ children: [
87
+ /* @__PURE__ */ i.jsx(
88
+ C,
89
+ {
90
+ variant: "contained",
91
+ disabled: !n.enabled || r === "preparing" || r === "starting" || r === "pausing" || r === "stopping" && !o,
92
+ onClick: n.onClick,
93
+ sx: {
94
+ width: "88px",
95
+ height: "88px",
96
+ borderRadius: "88px",
97
+ backgroundColor: n.color,
98
+ opacity: n.enabled && r !== "preparing" && r !== "starting" && r !== "pausing" && !(r === "stopping" && !o) ? 1 : 0.3,
99
+ "&:hover": {
100
+ backgroundColor: n.color,
101
+ opacity: n.enabled && r !== "preparing" && r !== "starting" && r !== "pausing" && !(r === "stopping" && !o) ? 0.8 : 0.3
102
+ },
103
+ "&:disabled": {
104
+ backgroundColor: n.color,
105
+ opacity: 0.3
106
+ },
107
+ minWidth: "88px",
108
+ flexShrink: 0
109
+ },
110
+ children: x(t)
111
+ }
112
+ ),
113
+ /* @__PURE__ */ i.jsx(
114
+ P,
115
+ {
116
+ variant: "body1",
117
+ sx: {
118
+ color: n.enabled && r !== "preparing" && r !== "starting" && r !== "pausing" && !(r === "stopping" && !o) ? n.color : p.palette.text.disabled,
119
+ textAlign: "center",
120
+ opacity: n.enabled && r !== "preparing" && r !== "starting" && r !== "pausing" && !(r === "stopping" && !o) ? 1 : 0.3
121
+ },
122
+ children: n.label
123
+ }
124
+ )
125
+ ]
126
+ },
127
+ n.label
128
+ ))
129
+ }
130
+ )
131
+ }
132
+ );
133
+ }
134
+ )
135
+ ), w = S(
136
+ _(
137
+ ({
138
+ programState: r,
139
+ safetyState: e,
140
+ operationMode: d,
141
+ className: u
142
+ }) => {
143
+ const l = m(), { t: o } = I(), T = () => {
144
+ if (e === "SAFETY_STATE_DEVICE_EMERGENCY_STOP" || e === "SAFETY_STATE_ROBOT_EMERGENCY_STOP" || e === "SAFETY_STATE_STOP_0" || e === "SAFETY_STATE_STOP_1" || e === "SAFETY_STATE_STOP_2" || e === "SAFETY_STATE_PROTECTIVE_STOP" || e === "SAFETY_STATE_STOP" || e === "SAFETY_STATE_REDUCED" || e === "SAFETY_STATE_MASTERING" || e === "SAFETY_STATE_CONFIRM_SAFETY" || e === "SAFETY_STATE_OPERATOR_SAFETY" || e === "SAFETY_STATE_RECOVERY" || e === "SAFETY_STATE_VIOLATION")
145
+ return {
146
+ label: o("ProgramStateIndicator.EStop.lb"),
147
+ color: l.palette.error.main
148
+ };
149
+ if (e === "SAFETY_STATE_UNKNOWN" || e === "SAFETY_STATE_FAULT")
150
+ return {
151
+ label: o("ProgramStateIndicator.Error.lb"),
152
+ color: l.palette.error.main
153
+ };
154
+ if (e === "SAFETY_STATE_NORMAL")
155
+ switch (r) {
156
+ case a.PREPARING:
157
+ return {
158
+ label: o("ProgramStateIndicator.Preparing.lb"),
159
+ color: l.palette.warning.main
160
+ };
161
+ case a.STARTING:
162
+ return {
163
+ label: o("ProgramStateIndicator.Starting.lb"),
164
+ color: l.palette.warning.main
165
+ };
166
+ case a.RUNNING:
167
+ return {
168
+ label: o("ProgramStateIndicator.Running.lb"),
169
+ color: l.palette.success.main
170
+ };
171
+ case a.PAUSING:
172
+ return {
173
+ label: o("ProgramStateIndicator.Pausing.lb"),
174
+ color: l.palette.warning.main
175
+ };
176
+ case a.PAUSED:
177
+ return {
178
+ label: o("ProgramStateIndicator.Paused.lb"),
179
+ color: l.palette.grey[600]
180
+ };
181
+ case a.STOPPING:
182
+ return {
183
+ label: o("ProgramStateIndicator.Stopping.lb"),
184
+ color: l.palette.warning.main
185
+ };
186
+ case a.COMPLETED:
187
+ return {
188
+ label: o("ProgramStateIndicator.Completed.lb"),
189
+ color: l.palette.success.main
190
+ };
191
+ case a.FAILED:
192
+ return {
193
+ label: o("ProgramStateIndicator.Failed.lb"),
194
+ color: l.palette.error.main
195
+ };
196
+ case a.STOPPED:
197
+ return {
198
+ label: o("ProgramStateIndicator.Stopped.lb"),
199
+ color: l.palette.warning.main
200
+ };
201
+ case a.ERROR:
202
+ return {
203
+ label: o("ProgramStateIndicator.Error.lb"),
204
+ color: l.palette.error.main
205
+ };
206
+ case a.IDLE:
207
+ default:
208
+ return {
209
+ label: o("ProgramStateIndicator.Ready.lb"),
210
+ color: l.palette.success.main
211
+ };
212
+ }
213
+ return {
214
+ label: o("ProgramStateIndicator.Idle.lb"),
215
+ color: l.palette.grey[600]
216
+ };
217
+ }, { label: s, color: p } = T(), E = `${s} / ${(() => {
218
+ switch (d) {
219
+ case "OPERATION_MODE_AUTO":
220
+ return o("ProgramStateIndicator.Auto.lb");
221
+ case "OPERATION_MODE_MANUAL":
222
+ return o("ProgramStateIndicator.Manual.lb");
223
+ case "OPERATION_MODE_MANUAL_T1":
224
+ return o("ProgramStateIndicator.ManualT1.lb");
225
+ case "OPERATION_MODE_MANUAL_T2":
226
+ return o("ProgramStateIndicator.ManualT2.lb");
227
+ default:
228
+ return o("ProgramStateIndicator.Auto.lb");
229
+ }
230
+ })()}`;
231
+ return /* @__PURE__ */ i.jsx(
232
+ R,
233
+ {
234
+ className: u,
235
+ label: /* @__PURE__ */ i.jsx(
236
+ P,
237
+ {
238
+ variant: "body2",
239
+ sx: {
240
+ fontSize: "0.75rem",
241
+ // Smaller than body2
242
+ lineHeight: 1.2
243
+ },
244
+ children: E
245
+ }
246
+ ),
247
+ variant: "filled",
248
+ sx: {
249
+ backgroundColor: p,
250
+ color: l.palette.getContrastText(p),
251
+ fontWeight: 500,
252
+ height: "auto",
253
+ "& .MuiChip-label": {
254
+ paddingX: 1.5,
255
+ paddingY: 0.5
256
+ }
257
+ }
258
+ }
259
+ );
260
+ }
261
+ )
262
+ );
263
+ export {
264
+ a as P,
265
+ j as a,
266
+ w as b
267
+ };
268
+ //# sourceMappingURL=ProgramStateIndicator-CTT-CAcJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramStateIndicator-CTT-CAcJ.js","sources":["../src/components/ProgramControl.tsx","../src/components/ProgramStateIndicator.tsx"],"sourcesContent":["import { Pause, PlayArrow, Stop } from \"@mui/icons-material\"\nimport { Box, Button, Typography, useTheme } from \"@mui/material\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport enum ProgramState {\n IDLE = \"idle\",\n PREPARING = \"preparing\",\n STARTING = \"starting\",\n RUNNING = \"running\",\n PAUSING = \"pausing\",\n PAUSED = \"paused\",\n STOPPING = \"stopping\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n STOPPED = \"stopped\",\n ERROR = \"error\",\n}\n\nexport interface ProgramControlProps {\n /** The current state of the program control */\n state: ProgramState\n /** Callback fired when the run/resume button is clicked */\n onRun: () => void\n /** Callback fired when the pause button is clicked (only available in 'with_pause' variant) */\n onPause?: () => void\n /** Callback fired when the stop button is clicked */\n onStop: () => void\n /**\n * Function to reset the component from 'stopping' state back to 'idle'.\n * This must be called manually by the user when requiresManualReset is true.\n */\n onReset?: () => void\n /**\n * When true, the component will stay in 'stopping' state until onReset is called manually.\n * When false (default), auto-resets to 'idle' after 2 seconds.\n */\n requiresManualReset?: boolean\n /**\n * Variant of the component:\n * - 'with_pause': Shows run/pause/stop buttons (default)\n * - 'without_pause': Shows only run/stop buttons\n */\n variant?: \"with_pause\" | \"without_pause\"\n /** Additional CSS class name */\n className?: string\n}\n\ninterface ButtonConfig {\n enabled: boolean\n label: string\n color: string\n onClick: () => void\n}\n\n/**\n * A control component for program execution with run, pause, and stop functionality.\n *\n * Features:\n * - State machine with idle, preparing, starting, running, pausing, paused, stopping, completed, failed, stopped, and error states\n * - Two variants: with_pause (3 buttons) and without_pause (2 buttons)\n * - Optional manual reset functionality\n * - Responsive design with 110px circular buttons\n * - Material-UI theming integration\n */\nexport const ProgramControl = externalizeComponent(\n observer(\n ({\n state,\n onRun,\n onPause,\n onStop,\n onReset,\n requiresManualReset = false,\n variant = \"with_pause\",\n className,\n }: ProgramControlProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getButtonConfigs = (): ButtonConfig[] => {\n const baseConfigs: Record<string, ButtonConfig> = {\n run: {\n enabled:\n state === ProgramState.IDLE ||\n state === ProgramState.STOPPED ||\n state === ProgramState.PAUSED ||\n state === ProgramState.COMPLETED ||\n state === ProgramState.FAILED ||\n state === ProgramState.ERROR,\n label:\n state === ProgramState.PAUSED\n ? t(\"ProgramControl.Resume.bt\")\n : state === ProgramState.ERROR || state === ProgramState.FAILED\n ? t(\"ProgramControl.Retry.bt\")\n : t(\"ProgramControl.Start.bt\"),\n color: theme.palette.success.main,\n onClick: onRun,\n },\n pause: {\n enabled: state === ProgramState.RUNNING,\n label: t(\"ProgramControl.Pause.bt\"),\n color: \"#FFFFFF33\",\n onClick: onPause || (() => {}),\n },\n stop: {\n enabled:\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.RUNNING ||\n state === ProgramState.PAUSING ||\n state === ProgramState.PAUSED,\n label: t(\"ProgramControl.Stop.bt\"),\n color: theme.palette.error.main,\n onClick: onStop,\n },\n }\n\n if (variant === \"without_pause\") {\n return [baseConfigs.run, baseConfigs.stop]\n }\n\n return [baseConfigs.run, baseConfigs.pause, baseConfigs.stop]\n }\n\n const getButtonIcon = (index: number) => {\n const iconProps = { sx: { fontSize: \"55px\" } }\n\n if (variant === \"without_pause\") {\n return index === 0 ? (\n <PlayArrow {...iconProps} />\n ) : (\n <Stop {...iconProps} />\n )\n }\n\n switch (index) {\n case 0:\n return <PlayArrow {...iconProps} />\n case 1:\n return <Pause {...iconProps} />\n case 2:\n return <Stop {...iconProps} />\n default:\n return null\n }\n }\n\n const buttonConfigs = getButtonConfigs()\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n gap: \"40px\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n {buttonConfigs.map((config, index) => (\n <Box\n key={config.label}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Button\n variant=\"contained\"\n disabled={\n !config.enabled ||\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.PAUSING ||\n (state === ProgramState.STOPPING && !requiresManualReset)\n }\n onClick={config.onClick}\n sx={{\n width: \"88px\",\n height: \"88px\",\n borderRadius: \"88px\",\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n \"&:hover\": {\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(\n state === ProgramState.STOPPING &&\n !requiresManualReset\n )\n ? 0.8\n : 0.3,\n },\n \"&:disabled\": {\n backgroundColor: config.color,\n opacity: 0.3,\n },\n minWidth: \"88px\",\n flexShrink: 0,\n }}\n >\n {getButtonIcon(index)}\n </Button>\n\n <Typography\n variant=\"body1\"\n sx={{\n color:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? config.color\n : theme.palette.text.disabled,\n textAlign: \"center\",\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n }}\n >\n {config.label}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n },\n ),\n)\n","import { Chip, Typography, useTheme } from \"@mui/material\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { ProgramState } from \"./ProgramControl\"\n\nexport interface ProgramStateIndicatorProps {\n /** The current state of the program */\n programState: ProgramState\n /** The current safety state of the robot controller */\n safetyState: SafetyStateType\n /** The current operation mode of the robot controller */\n operationMode: OperationMode\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current program execution state\n * combined with robot controller safety and operation mode states.\n *\n * Features:\n * - Combines program state with safety and operation mode states\n * - Color-coded based on state severity (success, warning, error)\n * - Rendered as Material-UI filled chip\n * - Localization support via react-i18next\n */\nexport const ProgramStateIndicator = externalizeComponent(\n observer(\n ({\n programState,\n safetyState,\n operationMode,\n className,\n }: ProgramStateIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n // First check for emergency stop or critical safety states\n if (\n safetyState === \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP_0\" ||\n safetyState === \"SAFETY_STATE_STOP_1\" ||\n safetyState === \"SAFETY_STATE_STOP_2\" ||\n safetyState === \"SAFETY_STATE_PROTECTIVE_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP\" ||\n safetyState === \"SAFETY_STATE_REDUCED\" ||\n safetyState === \"SAFETY_STATE_MASTERING\" ||\n safetyState === \"SAFETY_STATE_CONFIRM_SAFETY\" ||\n safetyState === \"SAFETY_STATE_OPERATOR_SAFETY\" ||\n safetyState === \"SAFETY_STATE_RECOVERY\" ||\n safetyState === \"SAFETY_STATE_VIOLATION\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.EStop.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // Check for error states\n if (\n safetyState === \"SAFETY_STATE_UNKNOWN\" ||\n safetyState === \"SAFETY_STATE_FAULT\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // For normal safety states, check program state\n if (safetyState === \"SAFETY_STATE_NORMAL\") {\n switch (programState) {\n case ProgramState.PREPARING:\n return {\n label: t(\"ProgramStateIndicator.Preparing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.STARTING:\n return {\n label: t(\"ProgramStateIndicator.Starting.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.RUNNING:\n return {\n label: t(\"ProgramStateIndicator.Running.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.PAUSING:\n return {\n label: t(\"ProgramStateIndicator.Pausing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.PAUSED:\n return {\n label: t(\"ProgramStateIndicator.Paused.lb\"),\n color: theme.palette.grey[600],\n }\n case ProgramState.STOPPING:\n return {\n label: t(\"ProgramStateIndicator.Stopping.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.COMPLETED:\n return {\n label: t(\"ProgramStateIndicator.Completed.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.FAILED:\n return {\n label: t(\"ProgramStateIndicator.Failed.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.STOPPED:\n return {\n label: t(\"ProgramStateIndicator.Stopped.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.ERROR:\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.IDLE:\n default:\n return {\n label: t(\"ProgramStateIndicator.Ready.lb\"),\n color: theme.palette.success.main,\n }\n }\n }\n\n // Default fallback\n return {\n label: t(\"ProgramStateIndicator.Idle.lb\"),\n color: theme.palette.grey[600],\n }\n }\n\n const { label, color } = getStateInfo()\n\n // Add operation mode suffix if not automatic\n const getOperationModeText = () => {\n switch (operationMode) {\n case \"OPERATION_MODE_AUTO\":\n return t(\"ProgramStateIndicator.Auto.lb\")\n case \"OPERATION_MODE_MANUAL\":\n return t(\"ProgramStateIndicator.Manual.lb\")\n case \"OPERATION_MODE_MANUAL_T1\":\n return t(\"ProgramStateIndicator.ManualT1.lb\")\n case \"OPERATION_MODE_MANUAL_T2\":\n return t(\"ProgramStateIndicator.ManualT2.lb\")\n default:\n return t(\"ProgramStateIndicator.Auto.lb\") // Default to Auto for unknown modes\n }\n }\n\n const fullLabel = `${label} / ${getOperationModeText()}`\n\n return (\n <Chip\n className={className}\n label={\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {fullLabel}\n </Typography>\n }\n variant=\"filled\"\n sx={{\n backgroundColor: color,\n color: theme.palette.getContrastText(color),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n },\n ),\n)\n"],"names":["ProgramState","ProgramControl","externalizeComponent","observer","state","onRun","onPause","onStop","onReset","requiresManualReset","variant","className","theme","useTheme","t","useTranslation","getButtonConfigs","baseConfigs","getButtonIcon","index","iconProps","jsx","PlayArrow","Stop","Pause","buttonConfigs","Box","config","jsxs","Button","Typography","ProgramStateIndicator","programState","safetyState","operationMode","getStateInfo","label","color","fullLabel","Chip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const t=require("./externalizeComponent-C12Qf79R.cjs"),i=require("@mui/material"),x=require("mobx-react-lite"),m=require("react-i18next"),u=require("@mui/icons-material");var a=(r=>(r.IDLE="idle",r.PREPARING="preparing",r.STARTING="starting",r.RUNNING="running",r.PAUSING="pausing",r.PAUSED="paused",r.STOPPING="stopping",r.COMPLETED="completed",r.FAILED="failed",r.STOPPED="stopped",r.ERROR="error",r))(a||{});const P=t.externalizeComponent(x.observer(({state:r,onRun:n,onPause:E,onStop:d,onReset:l,requiresManualReset:e=!1,variant:T="with_pause",className:g})=>{const c=i.useTheme(),{t:s}=m.useTranslation(),b=()=>{const o={run:{enabled:r==="idle"||r==="stopped"||r==="paused"||r==="completed"||r==="failed"||r==="error",label:s(r==="paused"?"ProgramControl.Resume.bt":r==="error"||r==="failed"?"ProgramControl.Retry.bt":"ProgramControl.Start.bt"),color:c.palette.success.main,onClick:n},pause:{enabled:r==="running",label:s("ProgramControl.Pause.bt"),color:"#FFFFFF33",onClick:E||(()=>{})},stop:{enabled:r==="preparing"||r==="starting"||r==="running"||r==="pausing"||r==="paused",label:s("ProgramControl.Stop.bt"),color:c.palette.error.main,onClick:d}};return T==="without_pause"?[o.run,o.stop]:[o.run,o.pause,o.stop]},A=o=>{const p={sx:{fontSize:"55px"}};if(T==="without_pause")return o===0?t.jsxRuntimeExports.jsx(u.PlayArrow,{...p}):t.jsxRuntimeExports.jsx(u.Stop,{...p});switch(o){case 0:return t.jsxRuntimeExports.jsx(u.PlayArrow,{...p});case 1:return t.jsxRuntimeExports.jsx(u.Pause,{...p});case 2:return t.jsxRuntimeExports.jsx(u.Stop,{...p});default:return null}},S=b();return t.jsxRuntimeExports.jsx(i.Box,{className:g,sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:2},children:t.jsxRuntimeExports.jsx(i.Box,{sx:{display:"flex",gap:"40px",flexWrap:"wrap",justifyContent:"center",alignItems:"center"},children:S.map((o,p)=>t.jsxRuntimeExports.jsxs(i.Box,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:1},children:[t.jsxRuntimeExports.jsx(i.Button,{variant:"contained",disabled:!o.enabled||r==="preparing"||r==="starting"||r==="pausing"||r==="stopping"&&!e,onClick:o.onClick,sx:{width:"88px",height:"88px",borderRadius:"88px",backgroundColor:o.color,opacity:o.enabled&&r!=="preparing"&&r!=="starting"&&r!=="pausing"&&!(r==="stopping"&&!e)?1:.3,"&:hover":{backgroundColor:o.color,opacity:o.enabled&&r!=="preparing"&&r!=="starting"&&r!=="pausing"&&!(r==="stopping"&&!e)?.8:.3},"&:disabled":{backgroundColor:o.color,opacity:.3},minWidth:"88px",flexShrink:0},children:A(p)}),t.jsxRuntimeExports.jsx(i.Typography,{variant:"body1",sx:{color:o.enabled&&r!=="preparing"&&r!=="starting"&&r!=="pausing"&&!(r==="stopping"&&!e)?o.color:c.palette.text.disabled,textAlign:"center",opacity:o.enabled&&r!=="preparing"&&r!=="starting"&&r!=="pausing"&&!(r==="stopping"&&!e)?1:.3},children:o.label})]},o.label))})})})),_=t.externalizeComponent(x.observer(({programState:r,safetyState:n,operationMode:E,className:d})=>{const l=i.useTheme(),{t:e}=m.useTranslation(),T=()=>{if(n==="SAFETY_STATE_DEVICE_EMERGENCY_STOP"||n==="SAFETY_STATE_ROBOT_EMERGENCY_STOP"||n==="SAFETY_STATE_STOP_0"||n==="SAFETY_STATE_STOP_1"||n==="SAFETY_STATE_STOP_2"||n==="SAFETY_STATE_PROTECTIVE_STOP"||n==="SAFETY_STATE_STOP"||n==="SAFETY_STATE_REDUCED"||n==="SAFETY_STATE_MASTERING"||n==="SAFETY_STATE_CONFIRM_SAFETY"||n==="SAFETY_STATE_OPERATOR_SAFETY"||n==="SAFETY_STATE_RECOVERY"||n==="SAFETY_STATE_VIOLATION")return{label:e("ProgramStateIndicator.EStop.lb"),color:l.palette.error.main};if(n==="SAFETY_STATE_UNKNOWN"||n==="SAFETY_STATE_FAULT")return{label:e("ProgramStateIndicator.Error.lb"),color:l.palette.error.main};if(n==="SAFETY_STATE_NORMAL")switch(r){case a.PREPARING:return{label:e("ProgramStateIndicator.Preparing.lb"),color:l.palette.warning.main};case a.STARTING:return{label:e("ProgramStateIndicator.Starting.lb"),color:l.palette.warning.main};case a.RUNNING:return{label:e("ProgramStateIndicator.Running.lb"),color:l.palette.success.main};case a.PAUSING:return{label:e("ProgramStateIndicator.Pausing.lb"),color:l.palette.warning.main};case a.PAUSED:return{label:e("ProgramStateIndicator.Paused.lb"),color:l.palette.grey[600]};case a.STOPPING:return{label:e("ProgramStateIndicator.Stopping.lb"),color:l.palette.warning.main};case a.COMPLETED:return{label:e("ProgramStateIndicator.Completed.lb"),color:l.palette.success.main};case a.FAILED:return{label:e("ProgramStateIndicator.Failed.lb"),color:l.palette.error.main};case a.STOPPED:return{label:e("ProgramStateIndicator.Stopped.lb"),color:l.palette.warning.main};case a.ERROR:return{label:e("ProgramStateIndicator.Error.lb"),color:l.palette.error.main};case a.IDLE:default:return{label:e("ProgramStateIndicator.Ready.lb"),color:l.palette.success.main}}return{label:e("ProgramStateIndicator.Idle.lb"),color:l.palette.grey[600]}},{label:g,color:c}=T(),b=`${g} / ${(()=>{switch(E){case"OPERATION_MODE_AUTO":return e("ProgramStateIndicator.Auto.lb");case"OPERATION_MODE_MANUAL":return e("ProgramStateIndicator.Manual.lb");case"OPERATION_MODE_MANUAL_T1":return e("ProgramStateIndicator.ManualT1.lb");case"OPERATION_MODE_MANUAL_T2":return e("ProgramStateIndicator.ManualT2.lb");default:return e("ProgramStateIndicator.Auto.lb")}})()}`;return t.jsxRuntimeExports.jsx(i.Chip,{className:d,label:t.jsxRuntimeExports.jsx(i.Typography,{variant:"body2",sx:{fontSize:"0.75rem",lineHeight:1.2},children:b}),variant:"filled",sx:{backgroundColor:c,color:l.palette.getContrastText(c),fontWeight:500,height:"auto","& .MuiChip-label":{paddingX:1.5,paddingY:.5}}})}));exports.ProgramControl=P;exports.ProgramState=a;exports.ProgramStateIndicator=_;
2
+ //# sourceMappingURL=ProgramStateIndicator-DYKBcj1s.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramStateIndicator-DYKBcj1s.cjs","sources":["../src/components/ProgramControl.tsx","../src/components/ProgramStateIndicator.tsx"],"sourcesContent":["import { Pause, PlayArrow, Stop } from \"@mui/icons-material\"\nimport { Box, Button, Typography, useTheme } from \"@mui/material\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport enum ProgramState {\n IDLE = \"idle\",\n PREPARING = \"preparing\",\n STARTING = \"starting\",\n RUNNING = \"running\",\n PAUSING = \"pausing\",\n PAUSED = \"paused\",\n STOPPING = \"stopping\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n STOPPED = \"stopped\",\n ERROR = \"error\",\n}\n\nexport interface ProgramControlProps {\n /** The current state of the program control */\n state: ProgramState\n /** Callback fired when the run/resume button is clicked */\n onRun: () => void\n /** Callback fired when the pause button is clicked (only available in 'with_pause' variant) */\n onPause?: () => void\n /** Callback fired when the stop button is clicked */\n onStop: () => void\n /**\n * Function to reset the component from 'stopping' state back to 'idle'.\n * This must be called manually by the user when requiresManualReset is true.\n */\n onReset?: () => void\n /**\n * When true, the component will stay in 'stopping' state until onReset is called manually.\n * When false (default), auto-resets to 'idle' after 2 seconds.\n */\n requiresManualReset?: boolean\n /**\n * Variant of the component:\n * - 'with_pause': Shows run/pause/stop buttons (default)\n * - 'without_pause': Shows only run/stop buttons\n */\n variant?: \"with_pause\" | \"without_pause\"\n /** Additional CSS class name */\n className?: string\n}\n\ninterface ButtonConfig {\n enabled: boolean\n label: string\n color: string\n onClick: () => void\n}\n\n/**\n * A control component for program execution with run, pause, and stop functionality.\n *\n * Features:\n * - State machine with idle, preparing, starting, running, pausing, paused, stopping, completed, failed, stopped, and error states\n * - Two variants: with_pause (3 buttons) and without_pause (2 buttons)\n * - Optional manual reset functionality\n * - Responsive design with 110px circular buttons\n * - Material-UI theming integration\n */\nexport const ProgramControl = externalizeComponent(\n observer(\n ({\n state,\n onRun,\n onPause,\n onStop,\n onReset,\n requiresManualReset = false,\n variant = \"with_pause\",\n className,\n }: ProgramControlProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getButtonConfigs = (): ButtonConfig[] => {\n const baseConfigs: Record<string, ButtonConfig> = {\n run: {\n enabled:\n state === ProgramState.IDLE ||\n state === ProgramState.STOPPED ||\n state === ProgramState.PAUSED ||\n state === ProgramState.COMPLETED ||\n state === ProgramState.FAILED ||\n state === ProgramState.ERROR,\n label:\n state === ProgramState.PAUSED\n ? t(\"ProgramControl.Resume.bt\")\n : state === ProgramState.ERROR || state === ProgramState.FAILED\n ? t(\"ProgramControl.Retry.bt\")\n : t(\"ProgramControl.Start.bt\"),\n color: theme.palette.success.main,\n onClick: onRun,\n },\n pause: {\n enabled: state === ProgramState.RUNNING,\n label: t(\"ProgramControl.Pause.bt\"),\n color: \"#FFFFFF33\",\n onClick: onPause || (() => {}),\n },\n stop: {\n enabled:\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.RUNNING ||\n state === ProgramState.PAUSING ||\n state === ProgramState.PAUSED,\n label: t(\"ProgramControl.Stop.bt\"),\n color: theme.palette.error.main,\n onClick: onStop,\n },\n }\n\n if (variant === \"without_pause\") {\n return [baseConfigs.run, baseConfigs.stop]\n }\n\n return [baseConfigs.run, baseConfigs.pause, baseConfigs.stop]\n }\n\n const getButtonIcon = (index: number) => {\n const iconProps = { sx: { fontSize: \"55px\" } }\n\n if (variant === \"without_pause\") {\n return index === 0 ? (\n <PlayArrow {...iconProps} />\n ) : (\n <Stop {...iconProps} />\n )\n }\n\n switch (index) {\n case 0:\n return <PlayArrow {...iconProps} />\n case 1:\n return <Pause {...iconProps} />\n case 2:\n return <Stop {...iconProps} />\n default:\n return null\n }\n }\n\n const buttonConfigs = getButtonConfigs()\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n gap: \"40px\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n {buttonConfigs.map((config, index) => (\n <Box\n key={config.label}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Button\n variant=\"contained\"\n disabled={\n !config.enabled ||\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.PAUSING ||\n (state === ProgramState.STOPPING && !requiresManualReset)\n }\n onClick={config.onClick}\n sx={{\n width: \"88px\",\n height: \"88px\",\n borderRadius: \"88px\",\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n \"&:hover\": {\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(\n state === ProgramState.STOPPING &&\n !requiresManualReset\n )\n ? 0.8\n : 0.3,\n },\n \"&:disabled\": {\n backgroundColor: config.color,\n opacity: 0.3,\n },\n minWidth: \"88px\",\n flexShrink: 0,\n }}\n >\n {getButtonIcon(index)}\n </Button>\n\n <Typography\n variant=\"body1\"\n sx={{\n color:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? config.color\n : theme.palette.text.disabled,\n textAlign: \"center\",\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n }}\n >\n {config.label}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n },\n ),\n)\n","import { Chip, Typography, useTheme } from \"@mui/material\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { ProgramState } from \"./ProgramControl\"\n\nexport interface ProgramStateIndicatorProps {\n /** The current state of the program */\n programState: ProgramState\n /** The current safety state of the robot controller */\n safetyState: SafetyStateType\n /** The current operation mode of the robot controller */\n operationMode: OperationMode\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current program execution state\n * combined with robot controller safety and operation mode states.\n *\n * Features:\n * - Combines program state with safety and operation mode states\n * - Color-coded based on state severity (success, warning, error)\n * - Rendered as Material-UI filled chip\n * - Localization support via react-i18next\n */\nexport const ProgramStateIndicator = externalizeComponent(\n observer(\n ({\n programState,\n safetyState,\n operationMode,\n className,\n }: ProgramStateIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n // First check for emergency stop or critical safety states\n if (\n safetyState === \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP_0\" ||\n safetyState === \"SAFETY_STATE_STOP_1\" ||\n safetyState === \"SAFETY_STATE_STOP_2\" ||\n safetyState === \"SAFETY_STATE_PROTECTIVE_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP\" ||\n safetyState === \"SAFETY_STATE_REDUCED\" ||\n safetyState === \"SAFETY_STATE_MASTERING\" ||\n safetyState === \"SAFETY_STATE_CONFIRM_SAFETY\" ||\n safetyState === \"SAFETY_STATE_OPERATOR_SAFETY\" ||\n safetyState === \"SAFETY_STATE_RECOVERY\" ||\n safetyState === \"SAFETY_STATE_VIOLATION\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.EStop.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // Check for error states\n if (\n safetyState === \"SAFETY_STATE_UNKNOWN\" ||\n safetyState === \"SAFETY_STATE_FAULT\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // For normal safety states, check program state\n if (safetyState === \"SAFETY_STATE_NORMAL\") {\n switch (programState) {\n case ProgramState.PREPARING:\n return {\n label: t(\"ProgramStateIndicator.Preparing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.STARTING:\n return {\n label: t(\"ProgramStateIndicator.Starting.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.RUNNING:\n return {\n label: t(\"ProgramStateIndicator.Running.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.PAUSING:\n return {\n label: t(\"ProgramStateIndicator.Pausing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.PAUSED:\n return {\n label: t(\"ProgramStateIndicator.Paused.lb\"),\n color: theme.palette.grey[600],\n }\n case ProgramState.STOPPING:\n return {\n label: t(\"ProgramStateIndicator.Stopping.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.COMPLETED:\n return {\n label: t(\"ProgramStateIndicator.Completed.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.FAILED:\n return {\n label: t(\"ProgramStateIndicator.Failed.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.STOPPED:\n return {\n label: t(\"ProgramStateIndicator.Stopped.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.ERROR:\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.IDLE:\n default:\n return {\n label: t(\"ProgramStateIndicator.Ready.lb\"),\n color: theme.palette.success.main,\n }\n }\n }\n\n // Default fallback\n return {\n label: t(\"ProgramStateIndicator.Idle.lb\"),\n color: theme.palette.grey[600],\n }\n }\n\n const { label, color } = getStateInfo()\n\n // Add operation mode suffix if not automatic\n const getOperationModeText = () => {\n switch (operationMode) {\n case \"OPERATION_MODE_AUTO\":\n return t(\"ProgramStateIndicator.Auto.lb\")\n case \"OPERATION_MODE_MANUAL\":\n return t(\"ProgramStateIndicator.Manual.lb\")\n case \"OPERATION_MODE_MANUAL_T1\":\n return t(\"ProgramStateIndicator.ManualT1.lb\")\n case \"OPERATION_MODE_MANUAL_T2\":\n return t(\"ProgramStateIndicator.ManualT2.lb\")\n default:\n return t(\"ProgramStateIndicator.Auto.lb\") // Default to Auto for unknown modes\n }\n }\n\n const fullLabel = `${label} / ${getOperationModeText()}`\n\n return (\n <Chip\n className={className}\n label={\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {fullLabel}\n </Typography>\n }\n variant=\"filled\"\n sx={{\n backgroundColor: color,\n color: theme.palette.getContrastText(color),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n },\n ),\n)\n"],"names":["ProgramState","ProgramControl","externalizeComponent","observer","state","onRun","onPause","onStop","onReset","requiresManualReset","variant","className","theme","useTheme","t","useTranslation","getButtonConfigs","baseConfigs","getButtonIcon","index","iconProps","jsx","PlayArrow","Stop","Pause","buttonConfigs","Box","config","jsxs","Button","Typography","ProgramStateIndicator","programState","safetyState","operationMode","getStateInfo","label","color","fullLabel","Chip"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";const Ye=require("three"),v=require("./externalizeComponent-C12Qf79R.cjs"),I=require("@mui/material"),gt=require("lodash-es"),Ue=require("react"),Be=require("./index-8UEqiXug.cjs"),ht=require("mobx-react-lite"),yt=require("react-i18next"),n=require("prop-types"),l=require("./createSvgIcon-BG4_bQuX.cjs");function vt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const S=vt(Ue),xt=S.createContext();process.env.NODE_ENV!=="production"&&(n.node,n.bool);const kt=()=>S.useContext(xt)??!1;function St(e){const{controlled:t,default:r,name:o,state:s="value"}=e,{current:f}=S.useRef(t!==void 0),[g,p]=S.useState(r),d=f?t:g;if(process.env.NODE_ENV!=="production"){S.useEffect(()=>{f!==(t!==void 0)&&console.error([`MUI: A component is changing the ${f?"":"un"}controlled ${s} state of ${o} to be ${f?"un":""}controlled.`,"Elements should not switch from uncontrolled to controlled (or vice versa).",`Decide between using a controlled or uncontrolled ${o} element for the lifetime of the component.`,"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.","More info: https://fb.me/react-controlled-components"].join(`
2
+ `))},[s,o,t]);const{current:T}=S.useRef(r);S.useEffect(()=>{!f&&!Object.is(T,r)&&console.error([`MUI: A component is changing the default ${s} state of an uncontrolled ${o} after being initialized. To suppress this warning opt to use a controlled ${o}.`].join(`
3
+ `))},[JSON.stringify(r)])}const h=S.useCallback(T=>{f||p(T)},[]);return[d,h]}var tt=typeof global=="object"&&global&&global.Object===Object&&global,wt=typeof self=="object"&&self&&self.Object===Object&&self,nt=tt||wt||Function("return this")(),pe=nt.Symbol,rt=Object.prototype,jt=rt.hasOwnProperty,Et=rt.toString,fe=pe?pe.toStringTag:void 0;function Tt(e){var t=jt.call(e,fe),r=e[fe];try{e[fe]=void 0;var o=!0}catch{}var s=Et.call(e);return o&&(t?e[fe]=r:delete e[fe]),s}var Lt=Object.prototype,Ot=Lt.toString;function Rt(e){return Ot.call(e)}var Ct="[object Null]",Nt="[object Undefined]",Ke=pe?pe.toStringTag:void 0;function ot(e){return e==null?e===void 0?Nt:Ct:Ke&&Ke in Object(e)?Tt(e):Rt(e)}function at(e){return e!=null&&typeof e=="object"}function Mt(e,t,r){if(t.length!==e.length)return!0;for(let o=0;o<t.length;o++)if(Math.abs(t[o]-e[o])>r)return!1;return!0}function it(e,t,r){if(e===void 0&&t||e&&t===void 0||(e==null?void 0:e.orientation)===void 0||(t==null?void 0:t.orientation)===void 0||(e==null?void 0:e.position)===void 0||(t==null?void 0:t.position)===void 0)return!1;if(e===void 0||t===void 0)return!0;let o=0;return o+=Math.abs(e.orientation[0]-t.orientation[0]),o+=Math.abs(e.orientation[1]-t.orientation[1]),o+=Math.abs(e.orientation[2]-t.orientation[2]),o+=Math.abs(e.position[0]-t.position[0]),o+=Math.abs(e.position[1]-t.position[1]),o+=Math.abs(e.position[2]-t.position[2]),o<=r}function At(e,t,r){return e.coordinate_system===t.coordinate_system&&e.tcp===t.tcp&&it(e.tcp_pose,t.tcp_pose,r)}function It(e,t){const r=new Ye.Vector3(t[0],t[1],t[2]),o=new Ye.Vector3(e[0],e[1],e[2]),s=r.length(),f=r.normalize();let g=o.length(),p=o.normalize();p.dot(f)<0&&(g=-g,p=p.multiplyScalar(-1));let d=g-s;return d-=2*Math.PI*Math.floor((d+Math.PI)/(2*Math.PI)),g=s+d,[...p.multiplyScalar(g)]}function Vt(e){try{return JSON.stringify(e)}catch{return}}function zt(e,t){throw new Error(t+` ${JSON.stringify(e)}`)}function $t(e){var t,r,o,s;return e instanceof Be.AxiosError&&e.code==="ERR_NETWORK"?"Failed to connect to the server. Please check your internet connection.":e instanceof Be.AxiosError&&e.response?`${(t=e.response)==null?void 0:t.status} ${(r=e.response)==null?void 0:r.statusText} from ${(o=e.response)==null?void 0:o.config.url}: ${JSON.stringify((s=e.response)==null?void 0:s.data)}`:e instanceof Error?e.message:`Unexpected error: ${Vt(e)||e}`}const Pt=e=>{const t=e.softTimeout||3e3,[r,o]=Ue.useState(!1),s=I.useTheme();return Ue.useEffect(()=>{const f=setTimeout(()=>{o(!0)},t);return()=>clearTimeout(f)}),v.jsxRuntimeExports.jsx(I.Stack,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",sx:{color:s.palette.text.primary},children:e.error?v.jsxRuntimeExports.jsx(st,{loadingMessage:e.message,error:e.error}):v.jsxRuntimeExports.jsxs(v.jsxRuntimeExports.Fragment,{children:[v.jsxRuntimeExports.jsx(I.CircularProgress,{sx:{marginBottom:"24px"}}),!!e.message&&v.jsxRuntimeExports.jsx("div",{children:e.message}),v.jsxRuntimeExports.jsx(I.Stack,{sx:{visibility:r?"visible":"hidden",marginTop:"1rem",color:s.palette.text.secondary},children:"This is taking longer than expected..."})]})})},st=e=>{const t=$t(e.error),r=e.error instanceof Error?e.error.stack:null,o=I.useTheme();return v.jsxRuntimeExports.jsxs(I.Stack,{sx:{maxHeight:"100%",maxWidth:"min(100%, 800px)",padding:2,overflow:"auto",color:o.palette.error.main,"& pre":{whiteSpace:"pre-wrap",wordBreak:"break-word",paddingBottom:"3rem"}},children:[(e.loadingMessage?`Error while ${gt.lowerFirst(I.capitalize(e.loadingMessage))} - `:"")+t,v.jsxRuntimeExports.jsx("br",{}),r&&v.jsxRuntimeExports.jsx("pre",{children:r})]})};function Ge(e,t){return process.env.NODE_ENV==="production"?()=>null:function(...o){return e(...o)||t(...o)}}function Dt(e){return typeof e=="string"}function qt(e,t,r){return e===void 0||Dt(e)?t:{...t,ownerState:{...t.ownerState,...r}}}function Ce(e,t=[]){if(e===void 0)return{};const r={};return Object.keys(e).filter(o=>o.match(/^on[A-Z]/)&&typeof e[o]=="function"&&!t.includes(o)).forEach(o=>{r[o]=e[o]}),r}function Xe(e){if(e===void 0)return{};const t={};return Object.keys(e).filter(r=>!(r.match(/^on[A-Z]/)&&typeof e[r]=="function")).forEach(r=>{t[r]=e[r]}),t}function Ft(e){const{getSlotProps:t,additionalProps:r,externalSlotProps:o,externalForwardedProps:s,className:f}=e;if(!t){const H=l.clsx(r==null?void 0:r.className,f,s==null?void 0:s.className,o==null?void 0:o.className),B={...r==null?void 0:r.style,...s==null?void 0:s.style,...o==null?void 0:o.style},C={...r,...s,...o};return H.length>0&&(C.className=H),Object.keys(B).length>0&&(C.style=B),{props:C,internalRef:void 0}}const g=Ce({...s,...o}),p=Xe(o),d=Xe(s),h=t(g),T=l.clsx(h==null?void 0:h.className,r==null?void 0:r.className,f,s==null?void 0:s.className,o==null?void 0:o.className),V={...h==null?void 0:h.style,...r==null?void 0:r.style,...s==null?void 0:s.style,...o==null?void 0:o.style},q={...h,...r,...d,...p};return T.length>0&&(q.className=T),Object.keys(V).length>0&&(q.style=V),{props:q,internalRef:h.ref}}function Ut(e,t,r){return typeof e=="function"?e(t,r):e}function Y(e){var V;const{elementType:t,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:s=!1,...f}=e,g=s?{}:Ut(r,o),{props:p,internalRef:d}=Ft({...f,externalSlotProps:g}),h=l.useForkRef(d,g==null?void 0:g.ref,(V=e.additionalProps)==null?void 0:V.ref);return qt(t,{...p,ref:h},o)}function Je(e){try{return e.matches(":focus-visible")}catch{process.env.NODE_ENV!=="production"&&!/jsdom/.test(window.navigator.userAgent)&&console.warn(["MUI: The `:focus-visible` pseudo class is not supported in this browser.","Some components rely on this feature to work properly."].join(`
4
+ `))}return!1}const _t={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};function Wt(e,t,r=(o,s)=>o===s){return e.length===t.length&&e.every((o,s)=>r(o,t[s]))}const Yt=2;function se(e,t,r,o,s){return r===1?Math.min(e+t,s):Math.max(e-t,o)}function lt(e,t){return e-t}function Ze(e,t){const{index:r}=e.reduce((o,s,f)=>{const g=Math.abs(t-s);return o===null||g<o.distance||g===o.distance?{distance:g,index:f}:o},null)??{};return r}function Te(e,t){if(t.current!==void 0&&e.changedTouches){const r=e;for(let o=0;o<r.changedTouches.length;o+=1){const s=r.changedTouches[o];if(s.identifier===t.current)return{x:s.clientX,y:s.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function Me(e,t,r){return(e-t)*100/(r-t)}function Bt(e,t,r){return(r-t)*e+t}function Kt(e){if(Math.abs(e)<1){const r=e.toExponential().split("e-"),o=r[0].split(".")[1];return(o?o.length:0)+parseInt(r[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}function Gt(e,t,r){const o=Math.round((e-r)/t)*t+r;return Number(o.toFixed(Kt(t)))}function Qe({values:e,newValue:t,index:r}){const o=e.slice();return o[r]=t,o.sort(lt)}function Le({sliderRef:e,activeIndex:t,setActive:r}){var s,f,g;const o=l.ownerDocument(e.current);(!((s=e.current)!=null&&s.contains(o.activeElement))||Number((f=o==null?void 0:o.activeElement)==null?void 0:f.getAttribute("data-index"))!==t)&&((g=e.current)==null||g.querySelector(`[type="range"][data-index="${t}"]`).focus()),r&&r(t)}function Oe(e,t){return typeof e=="number"&&typeof t=="number"?e===t:typeof e=="object"&&typeof t=="object"?Wt(e,t):!1}const Xt={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Jt=e=>e;let Re;function He(){return Re===void 0&&(typeof CSS<"u"&&typeof CSS.supports=="function"?Re=CSS.supports("touch-action","none"):Re=!0),Re}function Zt(e){const{"aria-labelledby":t,defaultValue:r,disabled:o=!1,disableSwap:s=!1,isRtl:f=!1,marks:g=!1,max:p=100,min:d=0,name:h,onChange:T,onChangeCommitted:V,orientation:q="horizontal",rootRef:H,scale:B=Jt,step:C=1,shiftStep:ee=10,tabIndex:me,value:Ae}=e,D=S.useRef(void 0),[U,te]=S.useState(-1),[We,ne]=S.useState(-1),[be,ge]=S.useState(!1),re=S.useRef(0),le=S.useRef(null),[z,y]=St({controlled:Ae,default:r??d,name:"Slider"}),b=T&&((a,i,c)=>{const m=a.nativeEvent||a,x=new m.constructor(m.type,m);Object.defineProperty(x,"target",{writable:!0,value:{value:i,name:h}}),le.current=i,T(x,i,c)}),oe=Array.isArray(z);let j=oe?z.slice().sort(lt):[z];j=j.map(a=>a==null?d:l.clamp(a,d,p));const ce=g===!0&&C!==null?[...Array(Math.floor((p-d)/C)+1)].map((a,i)=>({value:d+C*i})):g||[],w=ce.map(a=>a.value),[W,ae]=S.useState(-1),k=S.useRef(null),K=l.useForkRef(H,k),Ie=a=>i=>{var m;const c=Number(i.currentTarget.getAttribute("data-index"));Je(i.target)&&ae(c),ne(c),(m=a==null?void 0:a.onFocus)==null||m.call(a,i)},Ve=a=>i=>{var c;Je(i.target)||ae(-1),ne(-1),(c=a==null?void 0:a.onBlur)==null||c.call(a,i)},he=(a,i)=>{const c=Number(a.currentTarget.getAttribute("data-index")),m=j[c],x=w.indexOf(m);let u=i;if(ce&&C==null){const O=w[w.length-1];u>=O?u=O:u<=w[0]?u=w[0]:u=u<m?w[x-1]:w[x+1]}if(u=l.clamp(u,d,p),oe){s&&(u=l.clamp(u,j[c-1]||-1/0,j[c+1]||1/0));const O=u;u=Qe({values:j,newValue:u,index:c});let A=c;s||(A=u.indexOf(O)),Le({sliderRef:k,activeIndex:A})}y(u),ae(c),b&&!Oe(u,z)&&b(a,u,c),V&&V(a,le.current??u)},ze=a=>i=>{var c;if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"].includes(i.key)){i.preventDefault();const m=Number(i.currentTarget.getAttribute("data-index")),x=j[m];let u=null;if(C!=null){const O=i.shiftKey?ee:C;switch(i.key){case"ArrowUp":u=se(x,O,1,d,p);break;case"ArrowRight":u=se(x,O,f?-1:1,d,p);break;case"ArrowDown":u=se(x,O,-1,d,p);break;case"ArrowLeft":u=se(x,O,f?1:-1,d,p);break;case"PageUp":u=se(x,ee,1,d,p);break;case"PageDown":u=se(x,ee,-1,d,p);break;case"Home":u=d;break;case"End":u=p;break}}else if(ce){const O=w[w.length-1],A=w.indexOf(x),L=[f?"ArrowRight":"ArrowLeft","ArrowDown","PageDown","Home"],$=[f?"ArrowLeft":"ArrowRight","ArrowUp","PageUp","End"];L.includes(i.key)?A===0?u=w[0]:u=w[A-1]:$.includes(i.key)&&(A===w.length-1?u=O:u=w[A+1])}u!=null&&he(i,u)}(c=a==null?void 0:a.onKeyDown)==null||c.call(a,i)};l.useEnhancedEffect(()=>{var a;o&&k.current.contains(document.activeElement)&&((a=document.activeElement)==null||a.blur())},[o]),o&&U!==-1&&te(-1),o&&W!==-1&&ae(-1);const ye=a=>i=>{var c;(c=a.onChange)==null||c.call(a,i),he(i,i.target.valueAsNumber)},G=S.useRef(void 0);let X=q;f&&q==="horizontal"&&(X+="-reverse");const J=({finger:a,move:i=!1})=>{const{current:c}=k,{width:m,height:x,bottom:u,left:O}=c.getBoundingClientRect();let A;X.startsWith("vertical")?A=(u-a.y)/x:A=(a.x-O)/m,X.includes("-reverse")&&(A=1-A);let L;if(L=Bt(A,d,p),C)L=Gt(L,C,d);else{const de=Ze(w,L);L=w[de]}L=l.clamp(L,d,p);let $=0;if(oe){i?$=G.current:$=Ze(j,L),s&&(L=l.clamp(L,j[$-1]||-1/0,j[$+1]||1/0));const de=L;L=Qe({values:j,newValue:L,index:$}),s&&i||($=L.indexOf(de),G.current=$)}return{newValue:L,activeIndex:$}},Z=l.useEventCallback(a=>{const i=Te(a,D);if(!i)return;if(re.current+=1,a.type==="mousemove"&&a.buttons===0){F(a);return}const{newValue:c,activeIndex:m}=J({finger:i,move:!0});Le({sliderRef:k,activeIndex:m,setActive:te}),y(c),!be&&re.current>Yt&&ge(!0),b&&!Oe(c,z)&&b(a,c,m)}),F=l.useEventCallback(a=>{const i=Te(a,D);if(ge(!1),!i)return;const{newValue:c}=J({finger:i,move:!0});te(-1),a.type==="touchend"&&ne(-1),V&&V(a,le.current??c),D.current=void 0,Q()}),N=l.useEventCallback(a=>{if(o)return;He()||a.preventDefault();const i=a.changedTouches[0];i!=null&&(D.current=i.identifier);const c=Te(a,D);if(c!==!1){const{newValue:x,activeIndex:u}=J({finger:c});Le({sliderRef:k,activeIndex:u,setActive:te}),y(x),b&&!Oe(x,z)&&b(a,x,u)}re.current=0;const m=l.ownerDocument(k.current);m.addEventListener("touchmove",Z,{passive:!0}),m.addEventListener("touchend",F,{passive:!0})}),Q=S.useCallback(()=>{const a=l.ownerDocument(k.current);a.removeEventListener("mousemove",Z),a.removeEventListener("mouseup",F),a.removeEventListener("touchmove",Z),a.removeEventListener("touchend",F)},[F,Z]);S.useEffect(()=>{const{current:a}=k;return a.addEventListener("touchstart",N,{passive:He()}),()=>{a.removeEventListener("touchstart",N),Q()}},[Q,N]),S.useEffect(()=>{o&&Q()},[o,Q]);const $e=a=>i=>{var x;if((x=a.onMouseDown)==null||x.call(a,i),o||i.defaultPrevented||i.button!==0)return;i.preventDefault();const c=Te(i,D);if(c!==!1){const{newValue:u,activeIndex:O}=J({finger:c});Le({sliderRef:k,activeIndex:O,setActive:te}),y(u),b&&!Oe(u,z)&&b(i,u,O)}re.current=0;const m=l.ownerDocument(k.current);m.addEventListener("mousemove",Z,{passive:!0}),m.addEventListener("mouseup",F)},ve=Me(oe?j[0]:d,d,p),M=Me(j[j.length-1],d,p)-ve,ue=(a={})=>{const i=Ce(a),c={onMouseDown:$e(i||{})},m={...i,...c};return{...a,ref:K,...m}},xe=a=>i=>{var m;(m=a.onMouseOver)==null||m.call(a,i);const c=Number(i.currentTarget.getAttribute("data-index"));ne(c)},ke=a=>i=>{var c;(c=a.onMouseLeave)==null||c.call(a,i),ne(-1)},Se=(a={})=>{const i=Ce(a),c={onMouseOver:xe(i||{}),onMouseLeave:ke(i||{})};return{...a,...i,...c}},we=a=>({pointerEvents:U!==-1&&U!==a?"none":void 0});let ie;return q==="vertical"&&(ie=f?"vertical-rl":"vertical-lr"),{active:U,axis:X,axisProps:Xt,dragging:be,focusedThumbIndex:W,getHiddenInputProps:(a={})=>{const i=Ce(a),c={onChange:ye(i||{}),onFocus:Ie(i||{}),onBlur:Ve(i||{}),onKeyDown:ze(i||{})},m={...i,...c};return{tabIndex:me,"aria-labelledby":t,"aria-orientation":q,"aria-valuemax":B(p),"aria-valuemin":B(d),name:h,type:"range",min:e.min,max:e.max,step:e.step===null&&e.marks?"any":e.step??void 0,disabled:o,...a,...m,style:{..._t,direction:f?"rtl":"ltr",width:"100%",height:"100%",writingMode:ie}}},getRootProps:ue,getThumbProps:Se,marks:ce,open:We,range:oe,rootRef:K,trackLeap:M,trackOffset:ve,values:j,getThumbStyle:we}}function Ne(e){return typeof e=="string"}const Qt=e=>!e||!Ne(e);function Ht(e){return typeof e.main=="string"}function en(e,t=[]){if(!Ht(e))return!1;for(const r of t)if(!e.hasOwnProperty(r)||typeof e[r]!="string")return!1;return!0}function _e(e=[]){return([,t])=>t&&en(t,e)}function tn(e){return l.generateUtilityClass("MuiSlider",e)}const P=l.generateUtilityClasses("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","thumbColorPrimary","thumbColorSecondary","thumbColorError","thumbColorSuccess","thumbColorInfo","thumbColorWarning","track","trackInverted","trackFalse","thumbSizeSmall","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]),nn=e=>{const{open:t}=e;return{offset:l.clsx(t&&P.valueLabelOpen),circle:P.valueLabelCircle,label:P.valueLabelLabel}};function ct(e){const{children:t,className:r,value:o}=e,s=nn(e);return t?S.cloneElement(t,{className:t.props.className},v.jsxRuntimeExports.jsxs(S.Fragment,{children:[t.props.children,v.jsxRuntimeExports.jsx("span",{className:l.clsx(s.offset,r),"aria-hidden":!0,children:v.jsxRuntimeExports.jsx("span",{className:s.circle,children:v.jsxRuntimeExports.jsx("span",{className:s.label,children:o})})})]})):null}process.env.NODE_ENV!=="production"&&(ct.propTypes={children:n.element.isRequired,className:n.string,value:n.node});function et(e){return e}const rn=l.styled("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[`color${l.capitalize(r.color)}`],r.size!=="medium"&&t[`size${l.capitalize(r.size)}`],r.marked&&t.marked,r.orientation==="vertical"&&t.vertical,r.track==="inverted"&&t.trackInverted,r.track===!1&&t.trackFalse]}})(l.memoTheme(({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${P.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${P.dragging}`]:{[`& .${P.thumb}, & .${P.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter(_e()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}))),on=l.styled("span",{name:"MuiSlider",slot:"Rail"})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),an=l.styled("span",{name:"MuiSlider",slot:"Track"})(l.memoTheme(({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{border:"none"}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter(_e()).map(([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:l.lighten(e.palette[t].main,.62),borderColor:l.lighten(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:l.darken(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:l.darken(e.palette[t].main,.5)})}}}))]}))),sn=l.styled("span",{name:"MuiSlider",slot:"Thumb",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.thumb,t[`thumbColor${l.capitalize(r.color)}`],r.size!=="medium"&&t[`thumbSize${l.capitalize(r.size)}`]]}})(l.memoTheme(({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${P.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter(_e()).map(([t])=>({props:{color:t},style:{[`&:hover, &.${P.focusVisible}`]:{...e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${l.alpha(e.palette[t].main,.16)}`},"@media (hover: none)":{boxShadow:"none"}},[`&.${P.active}`]:{...e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${l.alpha(e.palette[t].main,.16)}`}}}}))]}))),ut=l.styled(ct,{name:"MuiSlider",slot:"ValueLabel"})(l.memoTheme(({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${P.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${P.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]})));process.env.NODE_ENV!=="production"&&(ut.propTypes={children:n.element.isRequired,index:n.number.isRequired,open:n.bool.isRequired,value:n.node});const ln=l.styled("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>l.slotShouldForwardProp(e)&&e!=="markActive",overridesResolver:(e,t)=>{const{markActive:r}=e;return[t.mark,r&&t.markActive]}})(l.memoTheme(({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]}))),cn=l.styled("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>l.slotShouldForwardProp(e)&&e!=="markLabelActive"})(l.memoTheme(({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]}))),un=e=>{const{disabled:t,dragging:r,marked:o,orientation:s,track:f,classes:g,color:p,size:d}=e,h={root:["root",t&&"disabled",r&&"dragging",o&&"marked",s==="vertical"&&"vertical",f==="inverted"&&"trackInverted",f===!1&&"trackFalse",p&&`color${l.capitalize(p)}`,d&&`size${l.capitalize(d)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled",d&&`thumbSize${l.capitalize(d)}`,p&&`thumbColor${l.capitalize(p)}`],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]};return l.composeClasses(h,tn,g)},dn=({children:e})=>e,dt=S.forwardRef(function(t,r){const o=l.useDefaultProps({props:t,name:"MuiSlider"}),s=kt(),{"aria-label":f,"aria-valuetext":g,"aria-labelledby":p,component:d="span",components:h={},componentsProps:T={},color:V="primary",classes:q,className:H,disableSwap:B=!1,disabled:C=!1,getAriaLabel:ee,getAriaValueText:me,marks:Ae=!1,max:D=100,min:U=0,name:te,onChange:We,onChangeCommitted:ne,orientation:be="horizontal",shiftStep:ge=10,size:re="medium",step:le=1,scale:z=et,slotProps:y,slots:b,tabIndex:oe,track:j="normal",value:ce,valueLabelDisplay:w="off",valueLabelFormat:W=et,...ae}=o,k={...o,isRtl:s,max:D,min:U,classes:q,disabled:C,disableSwap:B,orientation:be,marks:Ae,color:V,size:re,step:le,shiftStep:ge,scale:z,track:j,valueLabelDisplay:w,valueLabelFormat:W},{axisProps:K,getRootProps:Ie,getHiddenInputProps:Ve,getThumbProps:he,open:ze,active:ye,axis:G,focusedThumbIndex:X,range:J,dragging:Z,marks:F,values:N,trackOffset:Q,trackLeap:$e,getThumbStyle:ve}=Zt({...k,rootRef:r});k.marked=F.length>0&&F.some(E=>E.label),k.dragging=Z,k.focusedThumbIndex=X;const M=un(k),ue=(b==null?void 0:b.root)??h.Root??rn,xe=(b==null?void 0:b.rail)??h.Rail??on,ke=(b==null?void 0:b.track)??h.Track??an,Se=(b==null?void 0:b.thumb)??h.Thumb??sn,we=(b==null?void 0:b.valueLabel)??h.ValueLabel??ut,ie=(b==null?void 0:b.mark)??h.Mark??ln,je=(b==null?void 0:b.markLabel)??h.MarkLabel??cn,a=(b==null?void 0:b.input)??h.Input??"input",i=(y==null?void 0:y.root)??T.root,c=(y==null?void 0:y.rail)??T.rail,m=(y==null?void 0:y.track)??T.track,x=(y==null?void 0:y.thumb)??T.thumb,u=(y==null?void 0:y.valueLabel)??T.valueLabel,O=(y==null?void 0:y.mark)??T.mark,A=(y==null?void 0:y.markLabel)??T.markLabel,L=(y==null?void 0:y.input)??T.input,$=Y({elementType:ue,getSlotProps:Ie,externalSlotProps:i,externalForwardedProps:ae,additionalProps:{...Qt(ue)&&{as:d}},ownerState:{...k,...i==null?void 0:i.ownerState},className:[M.root,H]}),de=Y({elementType:xe,externalSlotProps:c,ownerState:k,className:M.rail}),pt=Y({elementType:ke,externalSlotProps:m,additionalProps:{style:{...K[G].offset(Q),...K[G].leap($e)}},ownerState:{...k,...m==null?void 0:m.ownerState},className:M.track}),Pe=Y({elementType:Se,getSlotProps:he,externalSlotProps:x,ownerState:{...k,...x==null?void 0:x.ownerState},className:M.thumb}),mt=Y({elementType:we,externalSlotProps:u,ownerState:{...k,...u==null?void 0:u.ownerState},className:M.valueLabel}),De=Y({elementType:ie,externalSlotProps:O,ownerState:k,className:M.mark}),qe=Y({elementType:je,externalSlotProps:A,ownerState:k,className:M.markLabel}),bt=Y({elementType:a,getSlotProps:Ve,externalSlotProps:L,ownerState:k});return v.jsxRuntimeExports.jsxs(ue,{...$,children:[v.jsxRuntimeExports.jsx(xe,{...de}),v.jsxRuntimeExports.jsx(ke,{...pt}),F.filter(E=>E.value>=U&&E.value<=D).map((E,R)=>{const Fe=Me(E.value,U,D),Ee=K[G].offset(Fe);let _;return j===!1?_=N.includes(E.value):_=j==="normal"&&(J?E.value>=N[0]&&E.value<=N[N.length-1]:E.value<=N[0])||j==="inverted"&&(J?E.value<=N[0]||E.value>=N[N.length-1]:E.value>=N[0]),v.jsxRuntimeExports.jsxs(S.Fragment,{children:[v.jsxRuntimeExports.jsx(ie,{"data-index":R,...De,...!Ne(ie)&&{markActive:_},style:{...Ee,...De.style},className:l.clsx(De.className,_&&M.markActive)}),E.label!=null?v.jsxRuntimeExports.jsx(je,{"aria-hidden":!0,"data-index":R,...qe,...!Ne(je)&&{markLabelActive:_},style:{...Ee,...qe.style},className:l.clsx(M.markLabel,qe.className,_&&M.markLabelActive),children:E.label}):null]},R)}),N.map((E,R)=>{const Fe=Me(E,U,D),Ee=K[G].offset(Fe),_=w==="off"?dn:we;return v.jsxRuntimeExports.jsx(_,{...!Ne(_)&&{valueLabelFormat:W,valueLabelDisplay:w,value:typeof W=="function"?W(z(E),R):W,index:R,open:ze===R||ye===R||w==="on",disabled:C},...mt,children:v.jsxRuntimeExports.jsx(Se,{"data-index":R,...Pe,className:l.clsx(M.thumb,Pe.className,ye===R&&M.active,X===R&&M.focusVisible),style:{...Ee,...ve(R),...Pe.style},children:v.jsxRuntimeExports.jsx(a,{"data-index":R,"aria-label":ee?ee(R):f,"aria-valuenow":z(E),"aria-labelledby":p,"aria-valuetext":me?me(z(E),R):g,value:N[R],...bt})})},R)})]})});process.env.NODE_ENV!=="production"&&(dt.propTypes={"aria-label":Ge(n.string,e=>Array.isArray(e.value||e.defaultValue)&&e["aria-label"]!=null?new Error("MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider."):null),"aria-labelledby":n.string,"aria-valuetext":Ge(n.string,e=>Array.isArray(e.value||e.defaultValue)&&e["aria-valuetext"]!=null?new Error("MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider."):null),children:n.node,classes:n.object,className:n.string,color:n.oneOfType([n.oneOf(["primary","secondary","error","info","success","warning"]),n.string]),components:n.shape({Input:n.elementType,Mark:n.elementType,MarkLabel:n.elementType,Rail:n.elementType,Root:n.elementType,Thumb:n.elementType,Track:n.elementType,ValueLabel:n.elementType}),componentsProps:n.shape({input:n.oneOfType([n.func,n.object]),mark:n.oneOfType([n.func,n.object]),markLabel:n.oneOfType([n.func,n.object]),rail:n.oneOfType([n.func,n.object]),root:n.oneOfType([n.func,n.object]),thumb:n.oneOfType([n.func,n.object]),track:n.oneOfType([n.func,n.object]),valueLabel:n.oneOfType([n.func,n.shape({children:n.element,className:n.string,open:n.bool,style:n.object,value:n.node,valueLabelDisplay:n.oneOf(["auto","off","on"])})])}),defaultValue:n.oneOfType([n.arrayOf(n.number),n.number]),disabled:n.bool,disableSwap:n.bool,getAriaLabel:n.func,getAriaValueText:n.func,marks:n.oneOfType([n.arrayOf(n.shape({label:n.node,value:n.number.isRequired})),n.bool]),max:n.number,min:n.number,name:n.string,onChange:n.func,onChangeCommitted:n.func,orientation:n.oneOf(["horizontal","vertical"]),scale:n.func,shiftStep:n.number,size:n.oneOfType([n.oneOf(["small","medium"]),n.string]),slotProps:n.shape({input:n.oneOfType([n.func,n.object]),mark:n.oneOfType([n.func,n.object]),markLabel:n.oneOfType([n.func,n.object]),rail:n.oneOfType([n.func,n.object]),root:n.oneOfType([n.func,n.object]),thumb:n.oneOfType([n.func,n.object]),track:n.oneOfType([n.func,n.object]),valueLabel:n.oneOfType([n.func,n.shape({children:n.element,className:n.string,open:n.bool,style:n.object,value:n.node,valueLabelDisplay:n.oneOf(["auto","off","on"])})])}),slots:n.shape({input:n.elementType,mark:n.elementType,markLabel:n.elementType,rail:n.elementType,root:n.elementType,thumb:n.elementType,track:n.elementType,valueLabel:n.elementType}),step:n.number,sx:n.oneOfType([n.arrayOf(n.oneOfType([n.func,n.object,n.bool])),n.func,n.object]),tabIndex:n.number,track:n.oneOf(["inverted","normal",!1]),value:n.oneOfType([n.arrayOf(n.number),n.number]),valueLabelDisplay:n.oneOf(["auto","off","on"]),valueLabelFormat:n.oneOfType([n.func,n.string])});var fn="[object Number]";function pn(e){return typeof e=="number"||at(e)&&ot(e)==fn}const mn=ht.observer(e=>{var f,g,p;const t=I.useTheme(),{store:r}=e,{t:o}=yt.useTranslation();function s(d,h){h===e.velocity||!pn(h)||e.onVelocityChange(h)}return v.jsxRuntimeExports.jsxs(I.Stack,{direction:"row",gap:2,alignItems:"center",children:[r.showVelocityLegend&&v.jsxRuntimeExports.jsx(I.Typography,{sx:{color:(p=(g=(f=t.componentsExt)==null?void 0:f.JoggingPanel)==null?void 0:g.VelocitySlider)==null?void 0:p.sliderLegendColor,fontSize:"14px"},children:o("Jogging.Velocity.bt")}),v.jsxRuntimeExports.jsx(dt,{value:e.velocity,color:"secondary",onChange:s,min:e.min,max:e.max,"aria-labelledby":"input-slider",disabled:e.disabled,sx:{"& .MuiSlider-valueLabelOpen":{zIndex:100,backgroundColor:"transparent",top:"0px"}}}),r.showVelocitySliderLabel&&(e.renderValue?e.renderValue(e.velocity):v.jsxRuntimeExports.jsx(ft,{value:e.velocity.toString()}))]})});function ft({value:e,sx:t}){var o;const r=I.useTheme();return v.jsxRuntimeExports.jsx(I.Stack,{direction:"row",justifyContent:"center",alignItems:"center",gap:"5px",sx:{padding:"6px 12px",background:(o=r.palette.backgroundPaperElevation)==null?void 0:o[8],borderRadius:"10px",minWidth:"111px",...t},children:v.jsxRuntimeExports.jsx(I.Typography,{component:"span",sx:{textAlign:"right",fontSize:"14px",opacity:.8,color:r.palette.text.primary,whiteSpace:"nowrap"},children:e})})}exports.LoadingCover=Pt;exports.LoadingErrorMessage=st;exports.Symbol=pe;exports.VelocitySlider=mn;exports.VelocitySliderLabel=ft;exports.assertUnreachable=zt;exports.baseGetTag=ot;exports.freeGlobal=tt;exports.isObjectLike=at;exports.jointValuesEqual=Mt;exports.poseEqual=it;exports.root=nt;exports.tcpMotionEqual=At;exports.unwrapRotationVector=It;
5
+ //# sourceMappingURL=VelocitySlider-2Zme2MN7.cjs.map