@wandelbots/wandelbots-js-react-components 4.6.0 → 4.7.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 (50) hide show
  1. package/dist/3d.cjs.js +1 -1
  2. package/dist/3d.es.js +1 -1
  3. package/dist/{LoadingCover-6gWr11KP.js → LoadingCover-B3UN1lnU.js} +12 -19
  4. package/dist/LoadingCover-B3UN1lnU.js.map +1 -0
  5. package/dist/LoadingCover-DXcsXWDy.cjs +2 -0
  6. package/dist/LoadingCover-DXcsXWDy.cjs.map +1 -0
  7. package/dist/MotionGroupVisualizer-D8_sA8PA.js +1347 -0
  8. package/dist/MotionGroupVisualizer-D8_sA8PA.js.map +1 -0
  9. package/dist/MotionGroupVisualizer-DcHXsQ4A.cjs +2 -0
  10. package/dist/MotionGroupVisualizer-DcHXsQ4A.cjs.map +1 -0
  11. package/dist/{WandelscriptEditor-D6_vS5Uk.cjs → WandelscriptEditor-6sAoniLC.cjs} +2 -2
  12. package/dist/{WandelscriptEditor-D6_vS5Uk.cjs.map → WandelscriptEditor-6sAoniLC.cjs.map} +1 -1
  13. package/dist/{WandelscriptEditor-7eN-Yw7m.js → WandelscriptEditor-kWC2VyG_.js} +3 -3
  14. package/dist/{WandelscriptEditor-7eN-Yw7m.js.map → WandelscriptEditor-kWC2VyG_.js.map} +1 -1
  15. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -1
  16. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  17. package/dist/components/utils/converters.d.ts +9 -0
  18. package/dist/components/utils/converters.d.ts.map +1 -1
  19. package/dist/core.cjs.js +1 -1
  20. package/dist/core.es.js +4 -4
  21. package/dist/{externalizeComponent-CkVWk2F_.cjs → externalizeComponent-B98tgTPP.cjs} +6 -6
  22. package/dist/externalizeComponent-B98tgTPP.cjs.map +1 -0
  23. package/dist/{externalizeComponent-Dc3fViZA.js → externalizeComponent-BOqKMZMc.js} +167 -130
  24. package/dist/externalizeComponent-BOqKMZMc.js.map +1 -0
  25. package/dist/index.cjs.js +1 -1
  26. package/dist/index.es.js +6 -6
  27. package/dist/{interpolation-BxZtUOAs.js → interpolation-B8AcxfdD.js} +274 -274
  28. package/dist/interpolation-B8AcxfdD.js.map +1 -0
  29. package/dist/{interpolation-D4zTPZou.cjs → interpolation-SWzo5zr4.cjs} +4 -4
  30. package/dist/interpolation-SWzo5zr4.cjs.map +1 -0
  31. package/dist/{theming-3PEA0ksG.js → theming-BKpqgTRM.js} +4 -4
  32. package/dist/{theming-3PEA0ksG.js.map → theming-BKpqgTRM.js.map} +1 -1
  33. package/dist/{theming-U3LOZpcT.cjs → theming-CatQaIl_.cjs} +2 -2
  34. package/dist/{theming-U3LOZpcT.cjs.map → theming-CatQaIl_.cjs.map} +1 -1
  35. package/dist/wandelscript.cjs.js +1 -1
  36. package/dist/wandelscript.es.js +1 -1
  37. package/package.json +1 -1
  38. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +139 -149
  39. package/src/components/utils/converters.ts +64 -0
  40. package/dist/LoadingCover-6gWr11KP.js.map +0 -1
  41. package/dist/LoadingCover-CukpS_aj.cjs +0 -2
  42. package/dist/LoadingCover-CukpS_aj.cjs.map +0 -1
  43. package/dist/MotionGroupVisualizer-BlWkdkaM.js +0 -1338
  44. package/dist/MotionGroupVisualizer-BlWkdkaM.js.map +0 -1
  45. package/dist/MotionGroupVisualizer-Bw-h3U_t.cjs +0 -2
  46. package/dist/MotionGroupVisualizer-Bw-h3U_t.cjs.map +0 -1
  47. package/dist/externalizeComponent-CkVWk2F_.cjs.map +0 -1
  48. package/dist/externalizeComponent-Dc3fViZA.js.map +0 -1
  49. package/dist/interpolation-BxZtUOAs.js.map +0 -1
  50. package/dist/interpolation-D4zTPZou.cjs.map +0 -1
@@ -1,1338 +0,0 @@
1
- import { j as t, e as O } from "./externalizeComponent-Dc3fViZA.js";
2
- import * as x from "three";
3
- import { Matrix4 as w, Vector3 as V, Quaternion as J } from "three";
4
- import { ConvexGeometry as re } from "three-stdlib";
5
- import ve, { useEffect as M, useMemo as F, useRef as R, useCallback as T, useState as S, Suspense as oe } from "react";
6
- import { useThree as se, useFrame as ie, Canvas as Y } from "@react-three/fiber";
7
- import { Environment as _e, Lightformer as A, Line as z, useGLTF as Te, Bounds as X } from "@react-three/drei";
8
- import { useTheme as Ve, Card as Se, Box as b, Typography as K, Divider as Q, Button as Z } from "@mui/material";
9
- import { observer as Ae } from "mobx-react-lite";
10
- import { useTranslation as Fe } from "react-i18next";
11
- import { N as Le, V as ae, c as le, b as ee, M as v, J as D } from "./interpolation-BxZtUOAs.js";
12
- import { ErrorBoundary as ce } from "react-error-boundary";
13
- function Ge(e) {
14
- switch (e.shape_type) {
15
- case "convex_hull":
16
- return new re(
17
- e.vertices.map(
18
- (n) => new x.Vector3(
19
- n[0] / 1e3,
20
- n[1] / 1e3,
21
- n[2] / 1e3
22
- )
23
- )
24
- );
25
- case "box":
26
- return new x.BoxGeometry(
27
- e.size_x / 1e3,
28
- e.size_y / 1e3,
29
- e.size_z / 1e3
30
- );
31
- case "sphere":
32
- return new x.SphereGeometry(e.radius / 1e3);
33
- case "capsule":
34
- return new x.CapsuleGeometry(
35
- e.radius / 1e3,
36
- e.cylinder_height / 1e3
37
- );
38
- case "cylinder":
39
- return new x.CylinderGeometry(
40
- e.radius / 1e3,
41
- e.radius / 1e3,
42
- e.height / 1e3
43
- );
44
- case "rectangle":
45
- return new x.BoxGeometry(e.size_x / 1e3, e.size_y / 1e3, 0);
46
- default:
47
- return console.warn(`${e.shape_type} is not supported`), new x.BufferGeometry();
48
- }
49
- }
50
- function Pe({
51
- name: e,
52
- collider: r,
53
- children: n
54
- }) {
55
- var d, u;
56
- const l = ((d = r.pose) == null ? void 0 : d.position) ?? [0, 0, 0], i = ((u = r.pose) == null ? void 0 : u.orientation) ?? [0, 0, 0];
57
- return r.margin && console.warn(`${e} margin is not supported`), /* @__PURE__ */ t.jsx(
58
- "mesh",
59
- {
60
- name: e,
61
- position: new x.Vector3(
62
- l[0],
63
- l[1],
64
- l[2]
65
- ).divideScalar(1e3),
66
- rotation: new x.Euler(i[0], i[1], i[2], "XYZ"),
67
- geometry: Ge(r.shape),
68
- children: n
69
- }
70
- );
71
- }
72
- function ke({
73
- name: e,
74
- colliders: r,
75
- meshChildrenProvider: n,
76
- ...l
77
- }) {
78
- return /* @__PURE__ */ t.jsx("group", { name: e, ...l, children: Object.entries(r).map(([i, d]) => /* @__PURE__ */ t.jsx(
79
- Pe,
80
- {
81
- name: i,
82
- collider: d,
83
- children: n(i, d)
84
- },
85
- i
86
- )) });
87
- }
88
- function ot({
89
- scene: e,
90
- meshChildrenProvider: r
91
- }) {
92
- const n = e.colliders;
93
- return /* @__PURE__ */ t.jsx("group", { children: n && /* @__PURE__ */ t.jsx(
94
- ke,
95
- {
96
- meshChildrenProvider: r,
97
- colliders: n
98
- }
99
- ) });
100
- }
101
- function te() {
102
- return /* @__PURE__ */ t.jsx(_e, { children: /* @__PURE__ */ t.jsx(Ie, {}) });
103
- }
104
- function Ie({ positions: e = [2, 0, 2, 0, 2, 0, 2, 0] }) {
105
- return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
106
- /* @__PURE__ */ t.jsx(
107
- A,
108
- {
109
- intensity: 5,
110
- "rotation-x": Math.PI / 2,
111
- position: [0, 5, -9],
112
- scale: [10, 10, 1]
113
- }
114
- ),
115
- /* @__PURE__ */ t.jsx("group", { rotation: [0, 0.5, 0], children: /* @__PURE__ */ t.jsx("group", { children: e.map((r, n) => /* @__PURE__ */ t.jsx(
116
- A,
117
- {
118
- form: "circle",
119
- intensity: 5,
120
- rotation: [Math.PI / 2, 0, 0],
121
- position: [r, 4, n * 4],
122
- scale: [3, 1, 1]
123
- },
124
- n
125
- )) }) }),
126
- /* @__PURE__ */ t.jsx(
127
- A,
128
- {
129
- intensity: 40,
130
- "rotation-y": Math.PI / 2,
131
- position: [-5, 1, -1],
132
- scale: [20, 0.1, 1]
133
- }
134
- ),
135
- /* @__PURE__ */ t.jsx(
136
- A,
137
- {
138
- intensity: 20,
139
- "rotation-y": -Math.PI,
140
- position: [-5, -2, -1],
141
- scale: [20, 0.1, 1]
142
- }
143
- ),
144
- /* @__PURE__ */ t.jsx(
145
- A,
146
- {
147
- "rotation-y": Math.PI / 2,
148
- position: [-5, -1, -1],
149
- scale: [20, 0.5, 1],
150
- intensity: 5
151
- }
152
- ),
153
- /* @__PURE__ */ t.jsx(
154
- A,
155
- {
156
- "rotation-y": -Math.PI / 2,
157
- position: [10, 1, 0],
158
- scale: [20, 1, 1],
159
- intensity: 10
160
- }
161
- ),
162
- /* @__PURE__ */ t.jsx(
163
- A,
164
- {
165
- form: "ring",
166
- color: "white",
167
- intensity: 5,
168
- scale: 10,
169
- position: [-15, 4, -18],
170
- target: [0, 0, 0]
171
- }
172
- )
173
- ] });
174
- }
175
- function De(e) {
176
- if (e.length < 3)
177
- return console.log("Not enough vertices to define a plane"), { isCoplanar: !1 };
178
- const r = new x.Vector3(e[0].x, e[0].y, e[0].z), n = new x.Vector3(e[1].x, e[1].y, e[1].z), l = new x.Vector3(e[2].x, e[2].y, e[2].z), i = new x.Vector3().subVectors(n, r), d = new x.Vector3().subVectors(l, r), u = new x.Vector3().crossVectors(i, d).normalize();
179
- for (let m = 3; m < e.length; m++) {
180
- const f = new x.Vector3(e[m].x, e[m].y, e[m].z), s = new x.Vector3().subVectors(f, r), p = u.dot(s);
181
- if (Math.abs(p) > 1e-6)
182
- return console.log("Vertices are not on the same plane"), { isCoplanar: !1 };
183
- }
184
- return { isCoplanar: !0, normal: u };
185
- }
186
- function st({
187
- safetyZones: e,
188
- dhParameters: r,
189
- ...n
190
- }) {
191
- M(() => {
192
- Array.isArray(e) && console.warn("SafetyZonesRenderer: The support of V1 safety zones is deprecated. Please migrate to V2 safety zones.");
193
- }, [e]);
194
- const l = (s, p) => {
195
- const o = De(s);
196
- if (o.isCoplanar && o.normal) {
197
- const y = new x.Vector3().addVectors(
198
- s[0],
199
- o.normal.multiplyScalar(1e-4)
200
- );
201
- s.push(y);
202
- }
203
- let a;
204
- try {
205
- a = new re(s);
206
- } catch (c) {
207
- return console.log("Error creating ConvexGeometry:", c), null;
208
- }
209
- return /* @__PURE__ */ t.jsx("mesh", { geometry: a, children: /* @__PURE__ */ t.jsx(
210
- "meshStandardMaterial",
211
- {
212
- attach: "material",
213
- color: "#009f4d",
214
- opacity: 0.2,
215
- depthTest: !1,
216
- depthWrite: !1,
217
- transparent: !0,
218
- polygonOffset: !0,
219
- polygonOffsetFactor: -p
220
- },
221
- `safety-zone-material-${p}`
222
- ) }, `safety-zone-mesh-${p}`);
223
- }, i = F(() => {
224
- if (!r || r.length === 0)
225
- return 5;
226
- const o = r.reduce((a, c) => a + Math.abs(c.a ?? 0) / 1e3 + Math.abs(c.d ?? 0) / 1e3, 0) * 2;
227
- return !Number.isFinite(o) || o <= 0 ? 5 : o;
228
- }, [r]), d = (s, p, o) => {
229
- const a = p.length(), c = new x.Quaternion();
230
- if (a > 1e-6) {
231
- const y = p.clone().normalize();
232
- c.setFromAxisAngle(y, a);
233
- }
234
- return /* @__PURE__ */ t.jsxs(
235
- "mesh",
236
- {
237
- renderOrder: o,
238
- position: s,
239
- quaternion: c,
240
- children: [
241
- /* @__PURE__ */ t.jsx("planeGeometry", { args: [i, i] }),
242
- /* @__PURE__ */ t.jsx(
243
- "meshStandardMaterial",
244
- {
245
- attach: "material",
246
- color: "#009f4d",
247
- opacity: 0.2,
248
- depthTest: !1,
249
- depthWrite: !1,
250
- transparent: !0,
251
- side: x.DoubleSide,
252
- polygonOffset: !0,
253
- polygonOffsetFactor: -o
254
- },
255
- `safety-zone-plane-material-${o}`
256
- )
257
- ]
258
- },
259
- `safety-zone-plane-${o}`
260
- );
261
- }, u = () => Object.values(e ?? {}).map((s, p) => {
262
- var o, a;
263
- switch (s.shape.shape_type) {
264
- case "convex_hull":
265
- return l(
266
- s.shape.vertices.map((c) => new x.Vector3(c[0] / 1e3, c[1] / 1e3, c[2] / 1e3)),
267
- p
268
- );
269
- case "plane":
270
- return ((o = s == null ? void 0 : s.pose) == null ? void 0 : o.position) && ((a = s == null ? void 0 : s.pose) == null ? void 0 : a.orientation) && d(
271
- new x.Vector3(s.pose.position[0] / 1e3, s.pose.position[1] / 1e3, s.pose.position[2] / 1e3),
272
- new x.Vector3(s.pose.orientation[0], s.pose.orientation[1], s.pose.orientation[2]),
273
- p
274
- );
275
- }
276
- }), m = () => Array.isArray(e) ? e.map((s, p) => {
277
- let o = [];
278
- return s.geometry && (s.geometry.compound ? o = s.geometry.compound.child_geometries : s.geometry.convex_hull && (o = [s.geometry])), o.map((a, c) => {
279
- if (!a.convex_hull) return null;
280
- const y = a.convex_hull.vertices.map(
281
- (h) => new x.Vector3(h.x / 1e3, h.y / 1e3, h.z / 1e3)
282
- );
283
- return l(y, p * 1e3 + c);
284
- });
285
- }) : null, f = F(() => Array.isArray(e) ? m() : u(), [e, m, u]);
286
- return /* @__PURE__ */ t.jsx("group", { ...n, children: f });
287
- }
288
- function it({
289
- trajectory: e,
290
- ...r
291
- }) {
292
- var l;
293
- const n = ((l = e.trajectory) == null ? void 0 : l.map((i) => i.tcp_pose ? new x.Vector3(
294
- i.tcp_pose.position.x / 1e3,
295
- i.tcp_pose.position.z / 1e3,
296
- -i.tcp_pose.position.y / 1e3
297
- ) : null).filter((i) => i !== null)) || [];
298
- return /* @__PURE__ */ t.jsx("group", { ...r, children: n.length > 0 && /* @__PURE__ */ t.jsx(
299
- z,
300
- {
301
- points: n,
302
- lineWidth: 3,
303
- polygonOffset: !0,
304
- polygonOffsetFactor: 10,
305
- polygonOffsetUnits: 10
306
- }
307
- ) });
308
- }
309
- const E = /* @__PURE__ */ new Map();
310
- async function C(e, r) {
311
- if (E.has(e))
312
- return E.get(e);
313
- const n = (async () => {
314
- var u;
315
- const l = r || "", i = new Le({ instanceUrl: l }), d = i.api.motionGroupModels;
316
- (u = d.axios) != null && u.interceptors && d.axios.interceptors.request.use((m) => {
317
- var f;
318
- return (f = m.url) != null && f.includes("/glb") && (m.responseType = "blob"), m;
319
- });
320
- try {
321
- const m = await i.api.motionGroupModels.getMotionGroupGlbModel(e);
322
- return URL.createObjectURL(m);
323
- } catch (m) {
324
- throw console.error("Failed to fetch model:", m), m;
325
- }
326
- })();
327
- return E.set(e, n), n;
328
- }
329
- function ue(e) {
330
- function r(n) {
331
- return n.children.length === 0 ? [n] : [n, ...n.children.flatMap((l) => r(l))];
332
- }
333
- return r(e).filter((n) => de(n));
334
- }
335
- function fe(e) {
336
- return e.name.endsWith("_FLG");
337
- }
338
- function de(e) {
339
- return /_J[0-9]+$/.test(e.name);
340
- }
341
- function Oe(e, r) {
342
- let n;
343
- function l(i) {
344
- if (fe(i)) {
345
- if (n)
346
- throw Error(
347
- `Found multiple flange groups in robot model ${r}; first ${n.name} then ${i.name}. Only one _FLG group is allowed.`
348
- );
349
- n = i;
350
- }
351
- de(i), i.children.map(l);
352
- }
353
- if (l(e.scene), !n)
354
- throw Error(
355
- `No flange group found in robot model ${r}. Flange must be identified with a name ending in _FLG.`
356
- );
357
- return { gltf: e };
358
- }
359
- function pe({
360
- rapidlyChangingMotionState: e,
361
- dhParameters: r,
362
- onRotationChanged: n,
363
- children: l
364
- }) {
365
- const i = R([]), d = R([]), u = R(null), { invalidate: m } = se();
366
- M(() => {
367
- const o = e.joint_position.filter(
368
- (a) => a !== void 0
369
- );
370
- return u.current = new ae(o, {
371
- tension: 120,
372
- // Controls spring stiffness - higher values create faster, more responsive motion
373
- friction: 20,
374
- // Controls damping - higher values reduce oscillation and create smoother settling
375
- threshold: 1e-3
376
- }), () => {
377
- var a;
378
- (a = u.current) == null || a.destroy();
379
- };
380
- }, []), ie((o, a) => {
381
- if (u.current) {
382
- const c = u.current.update(a);
383
- s(), c || m();
384
- }
385
- });
386
- function f(o) {
387
- o && (d.current = ue(o), s(), m());
388
- }
389
- function s() {
390
- var a;
391
- const o = ((a = u.current) == null ? void 0 : a.getCurrentValues()) || [];
392
- if (n)
393
- n(d.current, o);
394
- else
395
- for (const [c, y] of d.current.entries()) {
396
- const h = r[c], j = h.theta || 0, g = h.reverse_rotation_direction ? -1 : 1;
397
- y.rotation.y = g * (o[c] || 0) + j;
398
- }
399
- }
400
- const p = T(() => {
401
- const o = e.joint_position.filter(
402
- (a) => a !== void 0
403
- );
404
- requestAnimationFrame(() => {
405
- var a;
406
- i.current = o, (a = u.current) == null || a.setTarget(o);
407
- });
408
- }, [e]);
409
- return M(() => {
410
- p();
411
- }, [e, p]), le(() => {
412
- p();
413
- }), /* @__PURE__ */ t.jsx("group", { ref: f, children: l });
414
- }
415
- const Ce = "line", Ue = "mesh";
416
- function Ee({
417
- rapidlyChangingMotionState: e,
418
- dhParameters: r,
419
- ...n
420
- }) {
421
- const l = new w(), i = R([]), d = R([]);
422
- ve.useEffect(() => {
423
- i.current = new Array(r.length).fill(null), d.current = new Array(r.length).fill(null);
424
- }, [r.length]);
425
- function u(s, p) {
426
- const o = new V(), a = new J(), c = new V();
427
- l.decompose(o, a, c);
428
- const y = o.clone(), h = new w().makeRotationY(
429
- s.theta + p * (s.reverse_rotation_direction ? -1 : 1)
430
- ).multiply(new w().makeTranslation(0, s.d / 1e3, 0)).multiply(new w().makeTranslation(s.a / 1e3, 0, 0)).multiply(new w().makeRotationX(s.alpha));
431
- return l.multiply(h), l.decompose(o, a, c), { a: y, b: o };
432
- }
433
- function m(s, p, o, a) {
434
- if (!r)
435
- return;
436
- const c = r[s];
437
- if (!c)
438
- return;
439
- const { a: y, b: h } = u(c, a);
440
- p.geometry.setPositions([y.toArray(), h.toArray()].flat()), o.position.set(h.x, h.y, h.z);
441
- }
442
- function f(s, p) {
443
- l.identity();
444
- for (let o = 0; o < Math.min(s.length, p.length); o++) {
445
- const a = i.current[o], c = d.current[o];
446
- a && c && m(o, a, c, p[o]);
447
- }
448
- }
449
- return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(
450
- pe,
451
- {
452
- rapidlyChangingMotionState: e,
453
- dhParameters: r,
454
- onRotationChanged: f,
455
- children: /* @__PURE__ */ t.jsxs("group", { ...n, name: "Scene", children: [
456
- /* @__PURE__ */ t.jsxs("mesh", { children: [
457
- /* @__PURE__ */ t.jsx("sphereGeometry", { args: [0.01, 32, 32] }),
458
- /* @__PURE__ */ t.jsx("meshStandardMaterial", { color: "black", depthTest: !0 })
459
- ] }),
460
- r.map((s, p) => {
461
- const { a: o, b: a } = u(
462
- s,
463
- e.joint_position[p] ?? 0
464
- ), c = `dhrobot_J0${p}`;
465
- return /* @__PURE__ */ t.jsxs("group", { name: c, children: [
466
- /* @__PURE__ */ t.jsx(
467
- z,
468
- {
469
- ref: (y) => {
470
- i.current[p] = y;
471
- },
472
- name: Ce,
473
- points: [o, a],
474
- color: "white",
475
- lineWidth: 5
476
- }
477
- ),
478
- /* @__PURE__ */ t.jsxs(
479
- "mesh",
480
- {
481
- ref: (y) => {
482
- d.current[p] = y;
483
- },
484
- name: Ue,
485
- position: a,
486
- children: [
487
- /* @__PURE__ */ t.jsx("sphereGeometry", { args: [0.01, 32, 32] }),
488
- /* @__PURE__ */ t.jsx("meshStandardMaterial", { color: "black", depthTest: !0 })
489
- ]
490
- },
491
- "mesh_" + p
492
- )
493
- ] }, c);
494
- })
495
- ] })
496
- }
497
- ) });
498
- }
499
- const Je = console.warn;
500
- function me() {
501
- return M(() => {
502
- console.warn = (e) => {
503
- e !== "Cannot call the manual advancement of rafz whilst frameLoop is not set as demand" && Je(e);
504
- };
505
- }, []), /* @__PURE__ */ t.jsx(t.Fragment, {});
506
- }
507
- function ze(e) {
508
- return e.type === "Mesh";
509
- }
510
- function Be({
511
- url: e,
512
- flangeRef: r,
513
- postModelRender: n,
514
- ...l
515
- }) {
516
- const i = Te(e);
517
- let d;
518
- try {
519
- d = Oe(i, "robot.glb").gltf;
520
- } catch (f) {
521
- throw f;
522
- }
523
- const u = T(
524
- (f) => {
525
- f && n && n();
526
- },
527
- [n]
528
- );
529
- function m(f) {
530
- try {
531
- return ze(f) ? f.geometry ? /* @__PURE__ */ t.jsx(
532
- "mesh",
533
- {
534
- name: f.name,
535
- geometry: f.geometry,
536
- material: f.material,
537
- position: f.position,
538
- rotation: f.rotation
539
- },
540
- f.uuid
541
- ) : /* @__PURE__ */ t.jsx("group", { name: f.name, position: f.position, rotation: f.rotation }, f.uuid) : /* @__PURE__ */ t.jsx(
542
- "group",
543
- {
544
- name: f.name,
545
- position: f.position,
546
- rotation: f.rotation,
547
- ref: fe(f) ? r : void 0,
548
- children: f.children.map(m)
549
- },
550
- f.uuid
551
- );
552
- } catch (s) {
553
- return console.warn("Error rendering node", f.name, s), null;
554
- }
555
- }
556
- return /* @__PURE__ */ t.jsx("group", { ...l, dispose: null, ref: u, children: m(d.scene) });
557
- }
558
- function he({
559
- modelURL: e,
560
- flangeRef: r,
561
- postModelRender: n,
562
- ...l
563
- }) {
564
- const [i, d] = S(null);
565
- return M(() => {
566
- (async () => {
567
- try {
568
- if (typeof e == "string")
569
- d(e);
570
- else {
571
- const m = await e;
572
- d(m);
573
- }
574
- } catch (m) {
575
- console.error("Failed to resolve model URL:", m);
576
- }
577
- })();
578
- }, [e]), i ? /* @__PURE__ */ t.jsx(
579
- Be,
580
- {
581
- url: i,
582
- flangeRef: r,
583
- postModelRender: n,
584
- ...l
585
- }
586
- ) : null;
587
- }
588
- const xe = (e, r) => {
589
- e.userData.isGhost || (e.traverse((n) => {
590
- if (n instanceof x.Mesh) {
591
- n.material instanceof x.Material && (n.material.colorWrite = !1);
592
- const l = n.clone(), i = n.clone();
593
- l.material = new x.MeshStandardMaterial({
594
- depthTest: !0,
595
- depthWrite: !0,
596
- colorWrite: !1,
597
- polygonOffset: !0,
598
- polygonOffsetFactor: -1,
599
- side: x.DoubleSide
600
- }), l.userData.isGhost = !0, i.material = new x.MeshStandardMaterial({
601
- color: r,
602
- opacity: 0.3,
603
- depthTest: !0,
604
- depthWrite: !1,
605
- transparent: !0,
606
- polygonOffset: !0,
607
- polygonOffsetFactor: -2,
608
- side: x.DoubleSide
609
- }), i.userData.isGhost = !0, n.parent && (n.parent.add(l), n.parent.add(i));
610
- }
611
- }), e.userData.isGhost = !0);
612
- }, ye = (e) => {
613
- if (!e.userData.isGhost) return;
614
- const r = [];
615
- e.traverse((n) => {
616
- var l;
617
- n instanceof x.Mesh && ((l = n.userData) != null && l.isGhost ? r.push(n) : n.material instanceof x.Material && (n.material.colorWrite = !0));
618
- }), r.forEach((n) => {
619
- n.parent && n.parent.remove(n);
620
- }), e.userData.isGhost = !1;
621
- }, ge = O(
622
- ({
623
- rapidlyChangingMotionState: e,
624
- modelFromController: r,
625
- dhParameters: n,
626
- getModel: l = C,
627
- flangeRef: i,
628
- postModelRender: d,
629
- transparentColor: u,
630
- instanceUrl: m,
631
- ...f
632
- }) => {
633
- const [s, p] = S(null), o = T((c) => {
634
- p(c);
635
- }, []);
636
- M(() => {
637
- s && (u ? xe(s, u) : ye(s));
638
- }, [s, u]);
639
- const a = /* @__PURE__ */ t.jsx(
640
- Ee,
641
- {
642
- rapidlyChangingMotionState: e,
643
- dhParameters: n,
644
- ...f
645
- }
646
- );
647
- return /* @__PURE__ */ t.jsxs(
648
- ce,
649
- {
650
- fallback: a,
651
- onError: (c) => {
652
- console.warn(c);
653
- },
654
- children: [
655
- /* @__PURE__ */ t.jsx(oe, { fallback: a, children: /* @__PURE__ */ t.jsx("group", { ref: o, children: /* @__PURE__ */ t.jsx(
656
- pe,
657
- {
658
- rapidlyChangingMotionState: e,
659
- dhParameters: n,
660
- children: /* @__PURE__ */ t.jsx(
661
- he,
662
- {
663
- modelURL: (() => {
664
- const c = l(r, m);
665
- if (!c) {
666
- const y = new Blob([], { type: "model/gltf-binary" }), h = new File([y], `${r}.glb`, { type: "model/gltf-binary" });
667
- return Promise.resolve(URL.createObjectURL(h));
668
- }
669
- return c;
670
- })(),
671
- postModelRender: d,
672
- flangeRef: i,
673
- ...f
674
- }
675
- )
676
- }
677
- ) }) }),
678
- /* @__PURE__ */ t.jsx(me, {})
679
- ]
680
- }
681
- );
682
- }
683
- );
684
- function We({
685
- connectedMotionGroup: e,
686
- getModel: r = C,
687
- flangeRef: n,
688
- transparentColor: l,
689
- postModelRender: i,
690
- ...d
691
- }) {
692
- return e.dhParameters ? /* @__PURE__ */ t.jsx(
693
- ge,
694
- {
695
- rapidlyChangingMotionState: e.rapidlyChangingMotionState,
696
- modelFromController: e.modelFromController || "",
697
- dhParameters: e.dhParameters,
698
- getModel: r,
699
- flangeRef: n,
700
- transparentColor: l,
701
- postModelRender: i,
702
- ...d
703
- }
704
- ) : null;
705
- }
706
- const at = O(
707
- Ae(
708
- ({
709
- robotName: e,
710
- programState: r,
711
- safetyState: n,
712
- operationMode: l,
713
- driveToHomeEnabled: i = !1,
714
- onDriveToHomePress: d,
715
- onDriveToHomeRelease: u,
716
- connectedMotionGroup: m,
717
- robotComponent: f = We,
718
- customContentComponent: s,
719
- className: p
720
- }) => {
721
- var $;
722
- const o = Ve(), { t: a } = Fe(), [c, y] = S(!1), h = R(null), j = R(null), [g, U] = S(!1), [L, Re] = S({ width: 400, height: 600 }), [He, Me] = S(0);
723
- M(() => {
724
- const I = () => {
725
- if (j.current) {
726
- const { offsetWidth: N, offsetHeight: q } = j.current;
727
- U(N > q), Re({ width: N, height: q });
728
- }
729
- };
730
- I();
731
- const H = new ResizeObserver(I);
732
- return j.current && H.observe(j.current), () => {
733
- H.disconnect();
734
- };
735
- }, []);
736
- const B = T(() => {
737
- Me((I) => I + 1);
738
- }, []), G = T(() => {
739
- !i || !d || (y(!0), d());
740
- }, [i, d]), P = T(() => {
741
- !i || !u || (y(!1), u());
742
- }, [i, u]), W = T(() => {
743
- c && u && (y(!1), u());
744
- }, [c, u]), _ = g ? L.width < 350 : L.height < 200, k = g ? L.height < 310 : L.height < 450;
745
- return /* @__PURE__ */ t.jsx(
746
- Se,
747
- {
748
- ref: j,
749
- className: p,
750
- sx: {
751
- width: "100%",
752
- height: "100%",
753
- display: "flex",
754
- flexDirection: g ? "row" : "column",
755
- position: "relative",
756
- overflow: "hidden",
757
- minWidth: { xs: 180, sm: 220, md: 250 },
758
- minHeight: g ? { xs: 200, sm: 240, md: 260 } : { xs: 150, sm: 180, md: 220 },
759
- // Allow progressive hiding in portrait mode
760
- border: `1px solid ${o.palette.divider}`,
761
- borderRadius: "18px",
762
- boxShadow: "none",
763
- backgroundColor: (($ = o.palette.backgroundPaperElevation) == null ? void 0 : $[8]) || "#2A2A3F",
764
- backgroundImage: "none"
765
- // Override any gradient from elevation
766
- },
767
- children: g ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
768
- /* @__PURE__ */ t.jsx(
769
- b,
770
- {
771
- sx: {
772
- flex: "0 0 50%",
773
- position: "relative",
774
- height: "100%",
775
- minHeight: "100%",
776
- maxHeight: "100%",
777
- borderRadius: 1,
778
- m: { xs: 1.5, sm: 2, md: 3 },
779
- mr: { xs: 0.75, sm: 1, md: 1.5 },
780
- overflow: "hidden",
781
- // Prevent content from affecting container size
782
- display: _ ? "none" : "block"
783
- },
784
- children: !_ && /* @__PURE__ */ t.jsxs(
785
- Y,
786
- {
787
- orthographic: !0,
788
- camera: {
789
- position: [3, 2, 3],
790
- zoom: 1
791
- },
792
- shadows: !0,
793
- frameloop: "demand",
794
- style: {
795
- borderRadius: o.shape.borderRadius,
796
- width: "100%",
797
- height: "100%",
798
- background: "transparent",
799
- position: "absolute",
800
- top: 0,
801
- left: 0
802
- },
803
- dpr: [1, 2],
804
- gl: { alpha: !0, antialias: !0 },
805
- children: [
806
- /* @__PURE__ */ t.jsx(te, {}),
807
- /* @__PURE__ */ t.jsx(X, { fit: !0, observe: !0, margin: 1, maxDuration: 1, children: /* @__PURE__ */ t.jsx(
808
- f,
809
- {
810
- connectedMotionGroup: m,
811
- postModelRender: B
812
- }
813
- ) })
814
- ]
815
- }
816
- )
817
- }
818
- ),
819
- /* @__PURE__ */ t.jsxs(
820
- b,
821
- {
822
- sx: {
823
- flex: "1",
824
- display: "flex",
825
- flexDirection: "column",
826
- justifyContent: "flex-start",
827
- width: _ ? "100%" : "50%"
828
- },
829
- children: [
830
- /* @__PURE__ */ t.jsxs(
831
- b,
832
- {
833
- sx: {
834
- p: { xs: 1.5, sm: 2, md: 3 },
835
- pb: { xs: 1, sm: 1.5, md: 2 },
836
- textAlign: "left"
837
- },
838
- children: [
839
- /* @__PURE__ */ t.jsx(K, { variant: "h6", component: "h2", sx: { mb: 1 }, children: e }),
840
- /* @__PURE__ */ t.jsx(
841
- ee,
842
- {
843
- programState: r,
844
- safetyState: n,
845
- operationMode: l
846
- }
847
- )
848
- ]
849
- }
850
- ),
851
- /* @__PURE__ */ t.jsxs(
852
- b,
853
- {
854
- sx: {
855
- p: { xs: 1.5, sm: 2, md: 3 },
856
- pt: 0,
857
- flex: "1",
858
- display: "flex",
859
- flexDirection: "column",
860
- justifyContent: "space-between"
861
- },
862
- children: [
863
- !k && s && /* @__PURE__ */ t.jsxs(b, { children: [
864
- /* @__PURE__ */ t.jsx(s, {}),
865
- /* @__PURE__ */ t.jsx(
866
- Q,
867
- {
868
- sx: {
869
- mt: 1,
870
- mb: 0,
871
- borderColor: o.palette.divider,
872
- opacity: 0.5
873
- }
874
- }
875
- )
876
- ] }),
877
- /* @__PURE__ */ t.jsx(
878
- b,
879
- {
880
- sx: {
881
- mt: !k && s ? "auto" : 0
882
- },
883
- children: /* @__PURE__ */ t.jsx(
884
- b,
885
- {
886
- sx: {
887
- display: "flex",
888
- justifyContent: "flex-start",
889
- mt: { xs: 1, sm: 1.5, md: 2 },
890
- mb: { xs: 0.5, sm: 0.75, md: 1 }
891
- },
892
- children: /* @__PURE__ */ t.jsx(
893
- Z,
894
- {
895
- ref: h,
896
- variant: "contained",
897
- color: "secondary",
898
- size: "small",
899
- disabled: !i,
900
- onMouseDown: G,
901
- onMouseUp: P,
902
- onMouseLeave: W,
903
- onTouchStart: G,
904
- onTouchEnd: P,
905
- sx: {
906
- textTransform: "none",
907
- px: 1.5,
908
- py: 0.5
909
- },
910
- children: a("RobotCard.DriveToHome.bt")
911
- }
912
- )
913
- }
914
- )
915
- }
916
- )
917
- ]
918
- }
919
- )
920
- ]
921
- }
922
- )
923
- ] }) : /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsxs(
924
- b,
925
- {
926
- sx: {
927
- p: 3,
928
- height: "100%",
929
- display: "flex",
930
- flexDirection: "column"
931
- },
932
- children: [
933
- /* @__PURE__ */ t.jsxs(b, { children: [
934
- /* @__PURE__ */ t.jsx(K, { variant: "h6", component: "h2", sx: { mb: 1 }, children: e }),
935
- /* @__PURE__ */ t.jsx(
936
- ee,
937
- {
938
- programState: r,
939
- safetyState: n,
940
- operationMode: l
941
- }
942
- )
943
- ] }),
944
- /* @__PURE__ */ t.jsx(
945
- b,
946
- {
947
- sx: {
948
- flex: _ ? 0 : 1,
949
- position: "relative",
950
- minHeight: _ ? 0 : { xs: 120, sm: 150, md: 200 },
951
- height: _ ? 0 : "auto",
952
- borderRadius: 1,
953
- overflow: "hidden",
954
- display: _ ? "none" : "block"
955
- },
956
- children: !_ && /* @__PURE__ */ t.jsxs(
957
- Y,
958
- {
959
- orthographic: !0,
960
- camera: {
961
- position: [3, 2, 3],
962
- zoom: 1
963
- },
964
- shadows: !0,
965
- frameloop: "demand",
966
- style: {
967
- borderRadius: o.shape.borderRadius,
968
- width: "100%",
969
- height: "100%",
970
- background: "transparent",
971
- position: "absolute"
972
- },
973
- dpr: [1, 2],
974
- gl: { alpha: !0, antialias: !0 },
975
- children: [
976
- /* @__PURE__ */ t.jsx(te, {}),
977
- /* @__PURE__ */ t.jsx(X, { fit: !0, clip: !0, observe: !0, margin: 1, maxDuration: 1, children: /* @__PURE__ */ t.jsx(
978
- f,
979
- {
980
- connectedMotionGroup: m,
981
- postModelRender: B
982
- }
983
- ) })
984
- ]
985
- }
986
- )
987
- }
988
- ),
989
- /* @__PURE__ */ t.jsxs(b, { children: [
990
- !k && s && /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
991
- /* @__PURE__ */ t.jsx(s, {}),
992
- /* @__PURE__ */ t.jsx(
993
- Q,
994
- {
995
- sx: {
996
- mt: 1,
997
- mb: 0,
998
- borderColor: o.palette.divider,
999
- opacity: 0.5
1000
- }
1001
- }
1002
- )
1003
- ] }),
1004
- /* @__PURE__ */ t.jsx(
1005
- b,
1006
- {
1007
- sx: {
1008
- display: "flex",
1009
- justifyContent: "flex-start",
1010
- mt: !k && s ? { xs: 1, sm: 2, md: 5 } : { xs: 0.5, sm: 1, md: 2 },
1011
- mb: { xs: 0.5, sm: 0.75, md: 1 }
1012
- },
1013
- children: /* @__PURE__ */ t.jsx(
1014
- Z,
1015
- {
1016
- ref: h,
1017
- variant: "contained",
1018
- color: "secondary",
1019
- size: "small",
1020
- disabled: !i,
1021
- onMouseDown: G,
1022
- onMouseUp: P,
1023
- onMouseLeave: W,
1024
- onTouchStart: G,
1025
- onTouchEnd: P,
1026
- sx: {
1027
- textTransform: "none",
1028
- px: 1.5,
1029
- py: 0.5
1030
- },
1031
- children: a("RobotCard.DriveToHome.bt")
1032
- }
1033
- )
1034
- }
1035
- )
1036
- ] })
1037
- ]
1038
- }
1039
- ) })
1040
- }
1041
- );
1042
- }
1043
- )
1044
- ), lt = Array(6).fill(2 * Math.PI);
1045
- function je({
1046
- rapidlyChangingMotionState: e,
1047
- dhParameters: r,
1048
- onTranslationChanged: n,
1049
- children: l
1050
- }) {
1051
- const i = R([]), d = R([]), u = R(null), { invalidate: m } = se();
1052
- M(() => {
1053
- const o = e.joint_position.filter(
1054
- (a) => a !== void 0
1055
- );
1056
- return u.current = new ae(o, {
1057
- tension: 120,
1058
- // Controls spring stiffness - higher values create faster, more responsive motion
1059
- friction: 20,
1060
- // Controls damping - higher values reduce oscillation and create smoother settling
1061
- threshold: 1e-3
1062
- }), () => {
1063
- var a;
1064
- (a = u.current) == null || a.destroy();
1065
- };
1066
- }, []), ie((o, a) => {
1067
- if (u.current) {
1068
- const c = u.current.update(a);
1069
- s(), c || m();
1070
- }
1071
- });
1072
- function f(o) {
1073
- o && (d.current = ue(o), s(), m());
1074
- }
1075
- function s() {
1076
- var a;
1077
- const o = ((a = u.current) == null ? void 0 : a.getCurrentValues()) || [];
1078
- if (n)
1079
- n(d.current, o);
1080
- else
1081
- for (const [c, y] of d.current.entries()) {
1082
- const j = r[c].reverse_rotation_direction ? -1 : 1;
1083
- y.position.y = j * (o[c] || 0) / 1e3;
1084
- }
1085
- }
1086
- const p = T(() => {
1087
- const o = e.joint_position.filter(
1088
- (a) => a !== void 0
1089
- );
1090
- requestAnimationFrame(() => {
1091
- var a;
1092
- i.current = o, (a = u.current) == null || a.setTarget(o);
1093
- });
1094
- }, [e]);
1095
- return M(() => {
1096
- p();
1097
- }, [e, p]), le(() => {
1098
- p();
1099
- }), /* @__PURE__ */ t.jsx("group", { ref: f, children: l });
1100
- }
1101
- function we({
1102
- rapidlyChangingMotionState: e,
1103
- dhParameters: r,
1104
- ...n
1105
- }) {
1106
- const l = new w(), i = R(null), d = R(null);
1107
- function u(s) {
1108
- const p = new w();
1109
- for (let y = 0; y < r.length; y++) {
1110
- const h = r[y], j = s[y] ?? 0, g = new w().makeRotationY(h.theta).multiply(
1111
- new w().makeTranslation(
1112
- h.a / 1e3,
1113
- (h.d + j * (h.reverse_rotation_direction ? -1 : 1)) / 1e3,
1114
- 0
1115
- )
1116
- ).multiply(new w().makeRotationX(h.alpha));
1117
- p.multiply(g);
1118
- }
1119
- const o = new V(), a = new J(), c = new V();
1120
- return p.decompose(o, a, c), o;
1121
- }
1122
- const m = u(e.joint_position);
1123
- function f(s, p) {
1124
- l.identity();
1125
- let o = new V();
1126
- for (let h = 0; h < r.length; h++) {
1127
- const j = p[h] ?? 0, g = r[h], U = new w().makeRotationY(g.theta).multiply(
1128
- new w().makeTranslation(
1129
- g.a / 1e3,
1130
- (g.d + j * (g.reverse_rotation_direction ? -1 : 1)) / 1e3,
1131
- 0
1132
- )
1133
- ).multiply(new w().makeRotationX(g.alpha));
1134
- l.multiply(U);
1135
- }
1136
- const a = new V(), c = new J(), y = new V();
1137
- if (l.decompose(a, c, y), o = a, i.current && i.current.position.set(o.x, o.y, o.z), d.current) {
1138
- const h = d.current.geometry;
1139
- h && h.setPositions && h.setPositions([0, 0, 0, o.x, o.y, o.z]);
1140
- }
1141
- }
1142
- return /* @__PURE__ */ t.jsx(t.Fragment, { children: /* @__PURE__ */ t.jsx(
1143
- je,
1144
- {
1145
- rapidlyChangingMotionState: e,
1146
- dhParameters: r,
1147
- onTranslationChanged: f,
1148
- children: /* @__PURE__ */ t.jsxs("group", { ...n, name: "Scene", children: [
1149
- /* @__PURE__ */ t.jsxs("mesh", { name: "Base", position: [0, 0, 0], children: [
1150
- /* @__PURE__ */ t.jsx("sphereGeometry", { args: [0.02, 32, 32] }),
1151
- /* @__PURE__ */ t.jsx("meshStandardMaterial", { color: "green", depthTest: !0 })
1152
- ] }),
1153
- /* @__PURE__ */ t.jsx(
1154
- z,
1155
- {
1156
- ref: d,
1157
- points: [new V(0, 0, 0), m],
1158
- color: "White",
1159
- lineWidth: 5
1160
- }
1161
- ),
1162
- /* @__PURE__ */ t.jsxs("mesh", { ref: i, name: "TCP", position: m, children: [
1163
- /* @__PURE__ */ t.jsx("sphereGeometry", { args: [0.025, 32, 32] }),
1164
- /* @__PURE__ */ t.jsx("meshStandardMaterial", { color: "red", depthTest: !0 })
1165
- ] })
1166
- ] })
1167
- }
1168
- ) });
1169
- }
1170
- const be = O(
1171
- ({
1172
- rapidlyChangingMotionState: e,
1173
- modelFromController: r,
1174
- dhParameters: n,
1175
- getModel: l = C,
1176
- flangeRef: i,
1177
- postModelRender: d,
1178
- transparentColor: u,
1179
- instanceUrl: m,
1180
- ...f
1181
- }) => {
1182
- const [s, p] = S(null), o = T((c) => {
1183
- p(c);
1184
- }, []);
1185
- M(() => {
1186
- s && (u ? xe(s, u) : ye(s));
1187
- }, [s, u]);
1188
- const a = /* @__PURE__ */ t.jsx(
1189
- we,
1190
- {
1191
- rapidlyChangingMotionState: e,
1192
- dhParameters: n,
1193
- ...f
1194
- }
1195
- );
1196
- return /* @__PURE__ */ t.jsxs(
1197
- ce,
1198
- {
1199
- fallback: a,
1200
- onError: (c) => {
1201
- console.warn(c);
1202
- },
1203
- children: [
1204
- /* @__PURE__ */ t.jsx(oe, { fallback: a, children: /* @__PURE__ */ t.jsx("group", { ref: o, children: /* @__PURE__ */ t.jsx(
1205
- je,
1206
- {
1207
- rapidlyChangingMotionState: e,
1208
- dhParameters: n,
1209
- children: /* @__PURE__ */ t.jsx(
1210
- he,
1211
- {
1212
- modelURL: (() => {
1213
- const c = l(r, m);
1214
- if (!c) {
1215
- const y = new Blob([], { type: "model/gltf-binary" }), h = new File([y], `${r}.glb`, { type: "model/gltf-binary" });
1216
- return Promise.resolve(URL.createObjectURL(h));
1217
- }
1218
- return c;
1219
- })(),
1220
- postModelRender: d,
1221
- flangeRef: i,
1222
- ...f
1223
- }
1224
- )
1225
- }
1226
- ) }) }),
1227
- /* @__PURE__ */ t.jsx(me, {})
1228
- ]
1229
- }
1230
- );
1231
- }
1232
- );
1233
- function ct({
1234
- connectedMotionGroup: e,
1235
- getModel: r = C,
1236
- flangeRef: n,
1237
- transparentColor: l,
1238
- postModelRender: i,
1239
- ...d
1240
- }) {
1241
- if (!e.dhParameters)
1242
- return null;
1243
- const u = e.modelFromController || "";
1244
- return u && r(u) ? /* @__PURE__ */ t.jsx(
1245
- be,
1246
- {
1247
- rapidlyChangingMotionState: e.rapidlyChangingMotionState,
1248
- modelFromController: u,
1249
- dhParameters: e.dhParameters,
1250
- getModel: r,
1251
- flangeRef: n,
1252
- transparentColor: l,
1253
- postModelRender: i,
1254
- ...d
1255
- }
1256
- ) : /* @__PURE__ */ t.jsx(
1257
- we,
1258
- {
1259
- rapidlyChangingMotionState: e.rapidlyChangingMotionState,
1260
- dhParameters: e.dhParameters,
1261
- ...d
1262
- }
1263
- );
1264
- }
1265
- const ne = {
1266
- [v.Abb]: [0, 0, 0, 0, Math.PI / 2, 0, 0],
1267
- [v.Fanuc]: [0, 0, 0, 0, -Math.PI / 2, 0, 0],
1268
- [v.Yaskawa]: [0, 0, 0, 0, -Math.PI / 2, 0, 0],
1269
- [v.Kuka]: [
1270
- 0,
1271
- -Math.PI / 2,
1272
- Math.PI / 2,
1273
- 0,
1274
- Math.PI / 2,
1275
- 0,
1276
- 0
1277
- ],
1278
- [v.Universalrobots]: [
1279
- 0,
1280
- -Math.PI / 2,
1281
- -Math.PI / 2,
1282
- -Math.PI / 2,
1283
- Math.PI / 2,
1284
- -Math.PI / 2,
1285
- 0
1286
- ]
1287
- };
1288
- function $e(e) {
1289
- const [r] = e.split("_");
1290
- switch (r) {
1291
- case "ABB":
1292
- return v.Abb;
1293
- case "FANUC":
1294
- return v.Fanuc;
1295
- case "YASKAWA":
1296
- return v.Yaskawa;
1297
- case "KUKA":
1298
- return v.Kuka;
1299
- case "UniversalRobots":
1300
- return v.Universalrobots;
1301
- default:
1302
- return null;
1303
- }
1304
- }
1305
- function ut(e, r) {
1306
- const n = $e(e);
1307
- return n && n in ne ? ne[n] : r || null;
1308
- }
1309
- const ft = O((e) => {
1310
- const {
1311
- inverseSolver: r,
1312
- dhParameters: n,
1313
- ...l
1314
- } = e, [i, d] = S(D.RevoluteJoint);
1315
- M(() => {
1316
- n.length && d(n[0].type ?? D.RevoluteJoint);
1317
- }, [n]);
1318
- const u = F(() => r === null && i === D.RevoluteJoint, [r, i]), m = F(() => r === null && i === D.PrismaticJoint, [r, i]);
1319
- return F(() => !!r, [r]) || u ? /* @__PURE__ */ t.jsx(ge, { dhParameters: n, ...l }) : m ? /* @__PURE__ */ t.jsx(be, { dhParameters: n, ...l }) : /* @__PURE__ */ t.jsx(t.Fragment, {});
1320
- });
1321
- export {
1322
- ot as C,
1323
- ct as L,
1324
- ne as M,
1325
- te as P,
1326
- We as R,
1327
- st as S,
1328
- it as T,
1329
- ft as a,
1330
- at as b,
1331
- be as c,
1332
- ge as d,
1333
- lt as e,
1334
- C as f,
1335
- $e as g,
1336
- ut as h
1337
- };
1338
- //# sourceMappingURL=MotionGroupVisualizer-BlWkdkaM.js.map