@wandelbots/wandelbots-js-react-components 4.7.1 → 4.7.2-pr.feat-RB-3348-remove-v1-usage.553.eede090

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 (88) hide show
  1. package/README.md +0 -21
  2. package/dist/3d.cjs.js +1 -1
  3. package/dist/3d.es.js +1 -1
  4. package/dist/{MotionGroupVisualizer-7Mw9PINy.js → MotionGroupVisualizer--j-KhrNT.js} +529 -567
  5. package/dist/MotionGroupVisualizer--j-KhrNT.js.map +1 -0
  6. package/dist/MotionGroupVisualizer-TrHq4Etp.cjs +2 -0
  7. package/dist/MotionGroupVisualizer-TrHq4Etp.cjs.map +1 -0
  8. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
  9. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
  10. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -2
  11. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  12. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +2 -2
  13. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +1 -1
  14. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
  15. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
  16. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +2 -2
  17. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -1
  18. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
  19. package/dist/core.cjs.js +1 -1
  20. package/dist/core.es.js +37 -39
  21. package/dist/core.es.js.map +1 -1
  22. package/dist/index.cjs.js +1 -1
  23. package/dist/index.d.ts +0 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.es.js +51 -55
  26. package/dist/index.es.js.map +1 -1
  27. package/dist/interpolation-7jeNXp6c.cjs +42 -0
  28. package/dist/interpolation-7jeNXp6c.cjs.map +1 -0
  29. package/dist/{interpolation-B8AcxfdD.js → interpolation-DbcWWD5r.js} +3635 -3115
  30. package/dist/interpolation-DbcWWD5r.js.map +1 -0
  31. package/dist/lib/ConnectedMotionGroup.d.ts +0 -1
  32. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -1
  33. package/dist/lib/MotionStreamConnection.d.ts +0 -1
  34. package/dist/lib/MotionStreamConnection.d.ts.map +1 -1
  35. package/dist/themes/createDarkTheme.d.ts.map +1 -1
  36. package/dist/themes/themeTypes.d.ts +0 -4
  37. package/dist/themes/themeTypes.d.ts.map +1 -1
  38. package/dist/{theming-BKpqgTRM.js → theming-CljdqiO8.js} +2745 -2703
  39. package/dist/theming-CljdqiO8.js.map +1 -0
  40. package/dist/theming-DgOebzEE.cjs +115 -0
  41. package/dist/theming-DgOebzEE.cjs.map +1 -0
  42. package/package.json +1 -6
  43. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +29 -18
  44. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +12 -95
  45. package/src/components/3d-viewport/TrajectoryRenderer.tsx +11 -11
  46. package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
  47. package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
  48. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +2 -2
  49. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
  50. package/src/index.ts +0 -1
  51. package/src/lib/ConnectedMotionGroup.ts +0 -5
  52. package/src/lib/MotionStreamConnection.ts +0 -5
  53. package/src/themes/createDarkTheme.ts +1 -22
  54. package/src/themes/themeTypes.ts +0 -3
  55. package/dist/LoadingCover-B3UN1lnU.js +0 -81
  56. package/dist/LoadingCover-B3UN1lnU.js.map +0 -1
  57. package/dist/LoadingCover-DXcsXWDy.cjs +0 -2
  58. package/dist/LoadingCover-DXcsXWDy.cjs.map +0 -1
  59. package/dist/MotionGroupVisualizer-7Mw9PINy.js.map +0 -1
  60. package/dist/MotionGroupVisualizer-C0ll-LQF.cjs +0 -2
  61. package/dist/MotionGroupVisualizer-C0ll-LQF.cjs.map +0 -1
  62. package/dist/WandelscriptEditor-6sAoniLC.cjs +0 -2
  63. package/dist/WandelscriptEditor-6sAoniLC.cjs.map +0 -1
  64. package/dist/WandelscriptEditor-kWC2VyG_.js +0 -140
  65. package/dist/WandelscriptEditor-kWC2VyG_.js.map +0 -1
  66. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts +0 -16
  67. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts.map +0 -1
  68. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts +0 -45
  69. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +0 -1
  70. package/dist/externalizeComponent-B98tgTPP.cjs +0 -24
  71. package/dist/externalizeComponent-B98tgTPP.cjs.map +0 -1
  72. package/dist/externalizeComponent-BOqKMZMc.js +0 -526
  73. package/dist/externalizeComponent-BOqKMZMc.js.map +0 -1
  74. package/dist/interpolation-B8AcxfdD.js.map +0 -1
  75. package/dist/interpolation-SWzo5zr4.cjs +0 -20
  76. package/dist/interpolation-SWzo5zr4.cjs.map +0 -1
  77. package/dist/theming-BKpqgTRM.js.map +0 -1
  78. package/dist/theming-CatQaIl_.cjs +0 -115
  79. package/dist/theming-CatQaIl_.cjs.map +0 -1
  80. package/dist/wandelscript.cjs.js +0 -2
  81. package/dist/wandelscript.cjs.js.map +0 -1
  82. package/dist/wandelscript.d.ts +0 -2
  83. package/dist/wandelscript.d.ts.map +0 -1
  84. package/dist/wandelscript.es.js +0 -5
  85. package/dist/wandelscript.es.js.map +0 -1
  86. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +0 -142
  87. package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +0 -62
  88. package/src/wandelscript.ts +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wandelbots/wandelbots-js-react-components",
3
- "version": "4.7.1",
3
+ "version": "4.7.2-pr.feat-RB-3348-remove-v1-usage.553.eede090",
4
4
  "description": "React UI toolkit for building applications on top of the Wandelbots platform",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -26,11 +26,6 @@
26
26
  "types": "./dist/3d.d.ts",
27
27
  "import": "./dist/3d.es.js",
28
28
  "require": "./dist/3d.cjs.js"
29
- },
30
- "./wandelscript": {
31
- "types": "./dist/wandelscript.d.ts",
32
- "import": "./dist/wandelscript.es.js",
33
- "require": "./dist/wandelscript.cjs.js"
34
29
  }
35
30
  },
36
31
  "types": "./dist/index.d.ts",
@@ -1,4 +1,4 @@
1
- import type { CoordinateSystem } from "@wandelbots/nova-js/v1"
1
+ import type { CoordinateSystem } from "@wandelbots/nova-js/v2"
2
2
  import type { ReactNode } from "react"
3
3
  import { Quaternion, Vector3 } from "three"
4
4
 
@@ -14,28 +14,39 @@ export const CoordinateSystemTransform = ({
14
14
  children: ReactNode
15
15
  }) => {
16
16
  const position = new Vector3(
17
- (coordinateSystem?.position?.x ?? 0) / 1000,
18
- (coordinateSystem?.position?.y ?? 0) / 1000,
19
- (coordinateSystem?.position?.z ?? 0) / 1000,
17
+ (coordinateSystem?.position?.[0] ?? 0) / 1000,
18
+ (coordinateSystem?.position?.[1] ?? 0) / 1000,
19
+ (coordinateSystem?.position?.[2] ?? 0) / 1000,
20
20
  )
21
21
 
22
- let rotation = coordinateSystem?.rotation
23
- const rotationType = rotation?.type
24
- if (rotationType && rotationType !== "ROTATION_VECTOR") {
25
- console.warn(
26
- `Unsupported rotation type ${rotationType}. Only ROTATION_VECTOR is supported.`,
22
+ const orientationType = coordinateSystem?.orientation_type
23
+
24
+ let quaternion: Quaternion
25
+
26
+ if (orientationType === "QUATERNION") {
27
+ quaternion = new Quaternion(
28
+ coordinateSystem?.orientation?.[0] ?? 0,
29
+ coordinateSystem?.orientation?.[1] ?? 0,
30
+ coordinateSystem?.orientation?.[2] ?? 0,
31
+ coordinateSystem?.orientation?.[3] ?? 1,
27
32
  )
28
- rotation = { type: "ROTATION_VECTOR", angles: [0, 0, 0, 0] }
33
+ } else {
34
+ if (orientationType && orientationType !== "ROTATION_VECTOR") {
35
+ console.warn(
36
+ `Unsupported orientation type ${orientationType}. Only ROTATION_VECTOR and QUATERNION are supported.`,
37
+ )
38
+ }
39
+ // Default to ROTATION_VECTOR
40
+ const rotationVector = new Vector3(
41
+ coordinateSystem?.orientation?.[0] ?? 0,
42
+ coordinateSystem?.orientation?.[1] ?? 0,
43
+ coordinateSystem?.orientation?.[2] ?? 0,
44
+ )
45
+ const magnitude = rotationVector.length()
46
+ const axis = rotationVector.normalize()
47
+ quaternion = new Quaternion().setFromAxisAngle(axis, magnitude)
29
48
  }
30
49
 
31
- const rotationVector = new Vector3(
32
- rotation?.angles[0] ?? 0,
33
- rotation?.angles[1] ?? 0,
34
- rotation?.angles[2] ?? 0,
35
- )
36
- const magnitude = rotationVector.length()
37
- const axis = rotationVector.normalize()
38
- const quaternion = new Quaternion().setFromAxisAngle(axis, magnitude)
39
50
  return (
40
51
  <group position={position} quaternion={quaternion}>
41
52
  {children}
@@ -12,12 +12,11 @@ import type {
12
12
  Capsule,
13
13
  RectangularCapsule,
14
14
  } from "@wandelbots/nova-js/v2"
15
- import type { Geometry, SafetySetupSafetyZone } from "@wandelbots/nova-js/v1"
16
15
 
17
16
  import { dhParametersToPlaneSize, orientationToQuaternion, verticesToCoplanarity } from "../utils/converters"
18
17
 
19
18
  export type SafetyZonesRendererProps = {
20
- safetyZones: SafetySetupSafetyZone[] | MotionGroupDescription["safety_zones"]
19
+ safetyZones: MotionGroupDescription["safety_zones"]
21
20
  dhParameters?: DHParameter[]
22
21
  } & ThreeElements["group"]
23
22
 
@@ -45,14 +44,6 @@ export function SafetyZonesRenderer({
45
44
  */
46
45
  const planeSize = dhParametersToPlaneSize(dhParameters ?? [])
47
46
 
48
- /**
49
- * Warning during runtime stating the deprecation of the V1 safety zones
50
- */
51
- useEffect(() => {
52
- Array.isArray(safetyZones) &&
53
- console.warn("SafetyZonesRenderer: The support of V1 safety zones is deprecated. Please migrate to V2 safety zones.")
54
- }, [safetyZones])
55
-
56
47
  /**
57
48
  * Helper function to render plane, sphere, and capsule meshes
58
49
  * @param id number
@@ -134,13 +125,18 @@ export function SafetyZonesRenderer({
134
125
  * Basically a rounded box with a rectangular cross-section.
135
126
  */
136
127
  case "rectangular_capsule": {
137
- const shape = (zone.shape as RectangularCapsule)
128
+ const shape = zone.shape as RectangularCapsule
138
129
  const rcRadius = shape.radius / 1000
139
130
  const width = shape.sphere_center_distance_x / 1000
140
131
  const height = shape.sphere_center_distance_y / 1000
141
132
  const depth = rcRadius * 2
142
133
 
143
- geometry = <primitive object={new RoundedBoxGeometry(width, height, depth, 2, rcRadius)} attach="geometry" />
134
+ geometry = (
135
+ <primitive
136
+ object={new RoundedBoxGeometry(width, height, depth, 2, rcRadius)}
137
+ attach="geometry"
138
+ />
139
+ )
144
140
  break
145
141
  }
146
142
 
@@ -158,98 +154,19 @@ export function SafetyZonesRenderer({
158
154
  quaternion={orientationToQuaternion(orientation)}
159
155
  >
160
156
  {geometry}
161
- <meshStandardMaterial
162
- {...materialProps}
163
- polygonOffsetFactor={-id}
164
- />
157
+ <meshStandardMaterial {...materialProps} polygonOffsetFactor={-id} />
165
158
  </mesh>
166
159
  )
167
160
  }
168
161
 
169
162
  /**
170
- * Helper function to render V2 safety zones
163
+ * Helper variable render safety zones
171
164
  */
172
- const renderV2SafetyZones = () => {
165
+ const renderedSafetyZones = useMemo(() => {
173
166
  return Object.values(safetyZones ?? {}).map((zone: Collider, index: number) => {
174
167
  return renderMesh(index, zone)
175
168
  })
176
- }
177
-
178
- /**
179
- * Helper function to V1 safety zones
180
- * @deprecated this render function is to be seen as a temporary measure, as the support
181
- * for the V1 safety zones is to be removed in the future
182
- */
183
- const renderV1SafetyZones = () => {
184
- if (Array.isArray(safetyZones)) {
185
- return (safetyZones as SafetySetupSafetyZone[]).map((zone: SafetySetupSafetyZone, index) => {
186
- let geometries: Geometry[] = []
187
- if (zone.geometry) {
188
- if (zone.geometry.compound) {
189
- geometries = zone.geometry.compound.child_geometries
190
- } else if (zone.geometry.convex_hull) {
191
- geometries = [zone.geometry]
192
- }
193
- }
194
-
195
- return geometries.map((geometry, i) => {
196
- if (!geometry.convex_hull) return null
197
-
198
- const vertices = geometry.convex_hull.vertices.map(
199
- (v) => new THREE.Vector3(v.x / 1000, v.y / 1000, v.z / 1000),
200
- )
201
-
202
- // Check if the vertices are on the same plane and only define a plane
203
- // Algorithm has troubles with vertices that are on the same plane so we
204
- // add a new vertex slightly moved along the normal direction
205
- const coplanarityResult = verticesToCoplanarity(vertices)
206
-
207
- if (coplanarityResult.isCoplanar && coplanarityResult.normal) {
208
- // Add a new vertex slightly moved along the normal direction
209
- const offset = 0.0001
210
- const newVertex = new THREE.Vector3().addVectors(
211
- vertices[0],
212
- coplanarityResult.normal.multiplyScalar(offset),
213
- )
214
- vertices.push(newVertex)
215
- }
216
-
217
- let convexGeometry
218
- try {
219
- convexGeometry = new ConvexGeometry(vertices)
220
- } catch (error) {
221
- console.log("Error creating ConvexGeometry:", error)
222
- return null
223
- }
224
- return (
225
- <mesh key={`${index}-${i}`} geometry={convexGeometry}>
226
- <meshStandardMaterial
227
- key={index}
228
- attach="material"
229
- color="#009f4d"
230
- opacity={0.2}
231
- depthTest={false}
232
- depthWrite={false}
233
- transparent
234
- polygonOffset
235
- polygonOffsetFactor={-i}
236
- />
237
- </mesh>
238
- )
239
- })
240
- })
241
- }
242
- return null
243
- }
244
-
245
- /**
246
- * Helper variable to render both api versions of safety zones
247
- */
248
- const renderedSafetyZones = useMemo(() => {
249
- return Array.isArray(safetyZones)
250
- ? renderV1SafetyZones()
251
- : renderV2SafetyZones()
252
- }, [safetyZones, renderV1SafetyZones, renderV2SafetyZones])
169
+ }, [safetyZones])
253
170
 
254
171
  return (
255
172
  <group {...props}>
@@ -1,23 +1,23 @@
1
1
  import { Line } from "@react-three/drei"
2
- import type { GetTrajectoryResponse } from "@wandelbots/nova-js/v1"
2
+ import type { Pose } from "@wandelbots/nova-js/v2"
3
3
  import * as THREE from "three"
4
4
 
5
5
  export type TrajectoryRendererProps = {
6
- trajectory: GetTrajectoryResponse
6
+ trajectory: Pose[]
7
7
  } & React.JSX.IntrinsicElements["group"]
8
8
 
9
9
  export function TrajectoryRenderer({
10
- trajectory,
11
- ...props
12
- }: TrajectoryRendererProps) {
10
+ trajectory,
11
+ ...props
12
+ }: TrajectoryRendererProps) {
13
13
  const points =
14
- trajectory.trajectory
15
- ?.map((point) => {
16
- if (point.tcp_pose) {
14
+ trajectory
15
+ ?.map((pose: Pose) => {
16
+ if (pose.position?.length) {
17
17
  return new THREE.Vector3(
18
- point.tcp_pose.position.x / 1000,
19
- point.tcp_pose.position.z / 1000,
20
- -point.tcp_pose.position.y / 1000,
18
+ pose.position[0] / 1000,
19
+ pose.position[2] / 1000,
20
+ -pose.position[1] / 1000,
21
21
  )
22
22
  }
23
23
  return null
@@ -1,5 +1,5 @@
1
1
  import type { ThreeElements } from "@react-three/fiber"
2
- import type { Collider } from "@wandelbots/nova-js/v1"
2
+ import type { Collider } from "@wandelbots/nova-js/v2"
3
3
  import ColliderElement from "./ColliderElement"
4
4
 
5
5
  export type MeshChildrenProvider = (
@@ -1,4 +1,4 @@
1
- import type { Collider } from "@wandelbots/nova-js/v1"
1
+ import type { Collider } from "@wandelbots/nova-js/v2"
2
2
  import type React from "react"
3
3
  import * as THREE from "three"
4
4
  import { colliderShapeToBufferGeometry } from "./colliderShapeToBufferGeometry"
@@ -1,10 +1,10 @@
1
- import type { CollisionScene } from "@wandelbots/nova-js/v1"
1
+ import type { CollisionSetup } from "@wandelbots/nova-api/v2"
2
2
  import ColliderCollection, {
3
3
  type MeshChildrenProvider,
4
4
  } from "./ColliderCollection"
5
5
 
6
6
  type CollisionSceneRendererProps = {
7
- scene: CollisionScene
7
+ scene: CollisionSetup
8
8
  meshChildrenProvider: MeshChildrenProvider
9
9
  }
10
10
 
@@ -1,4 +1,4 @@
1
- import type { ColliderShape } from "@wandelbots/nova-js/v1"
1
+ import type { ColliderShape } from "@wandelbots/nova-js/v2"
2
2
  import * as THREE from "three"
3
3
  import { ConvexGeometry } from "three-stdlib"
4
4
 
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  // Re-export all sub-entry points
2
2
  export * from "./3d"
3
3
  export * from "./core"
4
- export * from "./wandelscript"
@@ -258,11 +258,6 @@ export class ConnectedMotionGroup {
258
258
  return this.description.motion_group_model
259
259
  }
260
260
 
261
- get wandelscriptIdentifier() {
262
- const num = this.motionGroupId.split("@")[0]
263
- return `${this.controllerId.replace(/-/g, "_")}_${num}`
264
- }
265
-
266
261
  /** Jogging velocity in radians for rotation and joint movement */
267
262
  get joggingVelocityRads() {
268
263
  return (this.joggingVelocity * Math.PI) / 180
@@ -170,11 +170,6 @@ export class MotionStreamConnection {
170
170
  return this.controller.controller
171
171
  }
172
172
 
173
- get wandelscriptIdentifier() {
174
- const num = this.motionGroupId.split("@")[0]
175
- return `${this.controllerId.replace(/-/g, "_")}_${num}`
176
- }
177
-
178
173
  get joints() {
179
174
  return this.initialMotionState.joint_position.map((_, i) => {
180
175
  return {
@@ -338,28 +338,7 @@ export function createDarkTheme(): Theme {
338
338
  VelocitySlider: {
339
339
  sliderLegendColor: baseTheme.palette.text.primary,
340
340
  },
341
- },
342
- WandelscriptEditor: {
343
- monacoTheme: {
344
- base: "vs-dark",
345
- inherit: true,
346
- rules: [
347
- {
348
- token: "keyword",
349
- foreground: "#b349a9ff",
350
- },
351
- ],
352
- colors: {
353
- "editor.background": rgbToHex(
354
- baseTheme.palette.backgroundPaperElevation?.[5] ?? "",
355
- ),
356
- "editor.foreground": "#d4d4d4",
357
- "editorLineNumber.foreground": "#797979",
358
- "editorLineNumber.activeForeground": "#e9e9e9",
359
- "editor.lineHighlightBorder": "#e9e9e911",
360
- },
361
- },
362
- },
341
+ }
363
342
  },
364
343
  } as Theme
365
344
  }
@@ -48,9 +48,6 @@ interface NovaComponentsExtension {
48
48
  sliderLegendColor?: string
49
49
  }
50
50
  }
51
- WandelscriptEditor?: {
52
- monacoTheme: editor.IStandaloneThemeData
53
- }
54
51
  }
55
52
  }
56
53
 
@@ -1,81 +0,0 @@
1
- import { t as l, j as t } from "./externalizeComponent-BOqKMZMc.js";
2
- import { useTheme as c, Stack as i, CircularProgress as g, capitalize as d } from "@mui/material";
3
- import { lowerFirst as u } from "lodash-es";
4
- import { useState as f, useEffect as x } from "react";
5
- import { AxiosError as a } from "axios";
6
- function T(e, r) {
7
- throw new Error(r + ` ${JSON.stringify(e)}`);
8
- }
9
- function h(e) {
10
- var r, s, o, n;
11
- return e instanceof a && e.code === "ERR_NETWORK" ? "Failed to connect to the server. Please check your internet connection." : e instanceof a && e.response ? `${(r = e.response) == null ? void 0 : r.status} ${(s = e.response) == null ? void 0 : s.statusText} from ${(o = e.response) == null ? void 0 : o.config.url}: ${JSON.stringify((n = e.response) == null ? void 0 : n.data)}` : e instanceof Error ? e.message : `Unexpected error: ${l(e) || e}`;
12
- }
13
- const k = (e) => {
14
- const r = e.softTimeout || 3e3, [s, o] = f(!1), n = c();
15
- return x(() => {
16
- const m = setTimeout(() => {
17
- o(!0);
18
- }, r);
19
- return () => clearTimeout(m);
20
- }), /* @__PURE__ */ t.jsx(
21
- i,
22
- {
23
- width: "100%",
24
- height: "100%",
25
- alignItems: "center",
26
- justifyContent: "center",
27
- sx: { color: n.palette.text.primary },
28
- children: e.error ? /* @__PURE__ */ t.jsx(
29
- w,
30
- {
31
- loadingMessage: e.message,
32
- error: e.error
33
- }
34
- ) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
35
- /* @__PURE__ */ t.jsx(g, { sx: { marginBottom: "24px" } }),
36
- !!e.message && /* @__PURE__ */ t.jsx("div", { children: e.message }),
37
- /* @__PURE__ */ t.jsx(
38
- i,
39
- {
40
- sx: {
41
- visibility: s ? "visible" : "hidden",
42
- marginTop: "1rem",
43
- color: n.palette.text.secondary
44
- },
45
- children: "This is taking longer than expected..."
46
- }
47
- )
48
- ] })
49
- }
50
- );
51
- }, w = (e) => {
52
- const r = h(e.error), s = e.error instanceof Error ? e.error.stack : null, o = c();
53
- return /* @__PURE__ */ t.jsxs(
54
- i,
55
- {
56
- sx: {
57
- maxHeight: "100%",
58
- maxWidth: "min(100%, 800px)",
59
- padding: 2,
60
- overflow: "auto",
61
- color: o.palette.error.main,
62
- "& pre": {
63
- whiteSpace: "pre-wrap",
64
- wordBreak: "break-word",
65
- paddingBottom: "3rem"
66
- }
67
- },
68
- children: [
69
- (e.loadingMessage ? `Error while ${u(d(e.loadingMessage))} - ` : "") + r,
70
- /* @__PURE__ */ t.jsx("br", {}),
71
- s && /* @__PURE__ */ t.jsx("pre", { children: s })
72
- ]
73
- }
74
- );
75
- };
76
- export {
77
- k as L,
78
- w as a,
79
- T as b
80
- };
81
- //# sourceMappingURL=LoadingCover-B3UN1lnU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover-B3UN1lnU.js","sources":["../src/components/utils/errorHandling.ts","../src/components/LoadingCover.tsx"],"sourcesContent":["import { AxiosError } from \"axios\"\nimport { tryStringifyJson } from \"./converters\"\n\n// Please note: These helper functions also exist in nova.js\n// (with slightly different formatting), and will be unified\n// at some point in the future.\n\nexport function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function makeShortErrorMessage(err: unknown) {\n if (err instanceof AxiosError && err.code === \"ERR_NETWORK\") {\n return \"Failed to connect to the server. Please check your internet connection.\"\n } else if (err instanceof AxiosError && err.response) {\n return `${err.response?.status} ${err.response?.statusText}: ${JSON.stringify(err.response?.data)}`\n } else if (err instanceof Error) {\n return err.message\n } else {\n return `Unexpected error: ${err}`\n }\n}\n\nexport function assertUnreachable(x: never, msg: string): never {\n throw new Error(msg + ` ${JSON.stringify(x)}`)\n}\n\nexport function makeErrorMessage(err: unknown) {\n if (err instanceof AxiosError && err.code === \"ERR_NETWORK\") {\n return \"Failed to connect to the server. Please check your internet connection.\"\n } else if (err instanceof AxiosError && err.response) {\n return `${err.response?.status} ${err.response?.statusText} from ${err.response?.config.url}: ${JSON.stringify(err.response?.data)}`\n } else if (err instanceof Error) {\n return err.message\n } else {\n return `Unexpected error: ${tryStringifyJson(err) || err}`\n }\n}\n","import { capitalize, CircularProgress, Stack, useTheme } from \"@mui/material\"\nimport { lowerFirst } from \"lodash-es\"\nimport { useEffect, useState } from \"react\"\nimport { makeErrorMessage } from \"./utils/errorHandling\"\n\nexport const LoadingCover = (props: {\n message?: string\n error?: unknown\n softTimeout?: number\n}) => {\n const softTimeout = props.softTimeout || 3000\n\n const [showSlowLoadingMessage, setShowSlowLoadingMessage] = useState(false)\n const theme = useTheme()\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setShowSlowLoadingMessage(true)\n }, softTimeout)\n\n return () => clearTimeout(timeout)\n })\n\n return (\n <Stack\n width=\"100%\"\n height=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{ color: theme.palette.text.primary }}\n >\n {props.error ? (\n <LoadingErrorMessage\n loadingMessage={props.message}\n error={props.error}\n />\n ) : (\n <>\n <CircularProgress sx={{ marginBottom: \"24px\" }} />\n {!!props.message && <div>{props.message}</div>}\n <Stack\n sx={{\n visibility: showSlowLoadingMessage ? \"visible\" : \"hidden\",\n marginTop: \"1rem\",\n color: theme.palette.text.secondary,\n }}\n >\n {\"This is taking longer than expected...\"}\n </Stack>\n </>\n )}\n </Stack>\n )\n}\n\nexport const LoadingErrorMessage = (props: {\n loadingMessage?: string\n error: unknown\n}) => {\n const errorMessage = makeErrorMessage(props.error)\n const stack = props.error instanceof Error ? props.error.stack : null\n const theme = useTheme()\n\n return (\n <Stack\n sx={{\n maxHeight: \"100%\",\n maxWidth: \"min(100%, 800px)\",\n padding: 2,\n overflow: \"auto\",\n color: theme.palette.error.main,\n \"& pre\": {\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n paddingBottom: \"3rem\",\n },\n }}\n >\n {(props.loadingMessage\n ? `Error while ${lowerFirst(capitalize(props.loadingMessage))} - `\n : \"\") + errorMessage}\n <br />\n {stack && <pre>{stack}</pre>}\n </Stack>\n )\n}\n"],"names":["assertUnreachable","x","msg","makeErrorMessage","err","AxiosError","_a","_b","_c","_d","tryStringifyJson","LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","stack","lowerFirst","capitalize"],"mappings":";;;;;AAuBO,SAASA,EAAkBC,GAAUC,GAAoB;AAC9D,QAAM,IAAI,MAAMA,IAAM,IAAI,KAAK,UAAUD,CAAC,CAAC,EAAE;AAC/C;AAEO,SAASE,EAAiBC,GAAc;;AAC7C,SAAIA,aAAeC,KAAcD,EAAI,SAAS,gBACrC,4EACEA,aAAeC,KAAcD,EAAI,WACnC,IAAGE,IAAAF,EAAI,aAAJ,gBAAAE,EAAc,MAAM,KAAIC,IAAAH,EAAI,aAAJ,gBAAAG,EAAc,UAAU,UAASC,IAAAJ,EAAI,aAAJ,gBAAAI,EAAc,OAAO,GAAG,KAAK,KAAK,WAAUC,IAAAL,EAAI,aAAJ,gBAAAK,EAAc,IAAI,CAAC,KACzHL,aAAe,QACjBA,EAAI,UAEJ,qBAAqBM,EAAiBN,CAAG,KAAKA,CAAG;AAE5D;AChCO,MAAMO,IAAe,CAACC,MAIvB;AACJ,QAAMC,IAAcD,EAAM,eAAe,KAEnC,CAACE,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpEC,IAAQC,EAAA;AAEd,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,WAAW,MAAM;AAC/B,MAAAL,EAA0B,EAAI;AAAA,IAChC,GAAGF,CAAW;AAEd,WAAO,MAAM,aAAaO,CAAO;AAAA,EACnC,CAAC,GAGCC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,IAAI,EAAE,OAAOL,EAAM,QAAQ,KAAK,QAAA;AAAA,MAE/B,YAAM,QACLI,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,gBAAgBX,EAAM;AAAA,UACtB,OAAOA,EAAM;AAAA,QAAA;AAAA,MAAA,IAGfY,gBAAAA,EAAAA,KAAAC,YAAA,EACE,UAAA;AAAA,QAAAJ,gBAAAA,EAAAA,IAACK,GAAA,EAAiB,IAAI,EAAE,cAAc,UAAU;AAAA,QAC/C,CAAC,CAACd,EAAM,WAAWS,gBAAAA,EAAAA,IAAC,OAAA,EAAK,YAAM,SAAQ;AAAA,QACxCA,gBAAAA,EAAAA;AAAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,YAAYR,IAAyB,YAAY;AAAA,cACjD,WAAW;AAAA,cACX,OAAOG,EAAM,QAAQ,KAAK;AAAA,YAAA;AAAA,YAG3B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR,GAEaM,IAAsB,CAACX,MAG9B;AACJ,QAAMe,IAAexB,EAAiBS,EAAM,KAAK,GAC3CgB,IAAQhB,EAAM,iBAAiB,QAAQA,EAAM,MAAM,QAAQ,MAC3DK,IAAQC,EAAA;AAEd,SACEM,gBAAAA,EAAAA;AAAAA,IAACF;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAOL,EAAM,QAAQ,MAAM;AAAA,QAC3B,SAAS;AAAA,UACP,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MAGA,UAAA;AAAA,SAAAL,EAAM,iBACJ,eAAeiB,EAAWC,EAAWlB,EAAM,cAAc,CAAC,CAAC,QAC3D,MAAMe;AAAA,8BACT,MAAA,EAAG;AAAA,QACHC,KAASP,gBAAAA,EAAAA,IAAC,OAAA,EAAK,UAAAO,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG5B;"}
@@ -1,2 +0,0 @@
1
- "use strict";const t=require("./externalizeComponent-B98tgTPP.cjs"),o=require("@mui/material"),u=require("lodash-es"),a=require("react"),c=require("axios");function m(e,s){throw new Error(s+` ${JSON.stringify(e)}`)}function g(e){var s,r,n,i;return e instanceof c.AxiosError&&e.code==="ERR_NETWORK"?"Failed to connect to the server. Please check your internet connection.":e instanceof c.AxiosError&&e.response?`${(s=e.response)==null?void 0:s.status} ${(r=e.response)==null?void 0:r.statusText} from ${(n=e.response)==null?void 0:n.config.url}: ${JSON.stringify((i=e.response)==null?void 0:i.data)}`:e instanceof Error?e.message:`Unexpected error: ${t.tryStringifyJson(e)||e}`}const d=e=>{const s=e.softTimeout||3e3,[r,n]=a.useState(!1),i=o.useTheme();return a.useEffect(()=>{const l=setTimeout(()=>{n(!0)},s);return()=>clearTimeout(l)}),t.jsxRuntimeExports.jsx(o.Stack,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",sx:{color:i.palette.text.primary},children:e.error?t.jsxRuntimeExports.jsx(x,{loadingMessage:e.message,error:e.error}):t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(o.CircularProgress,{sx:{marginBottom:"24px"}}),!!e.message&&t.jsxRuntimeExports.jsx("div",{children:e.message}),t.jsxRuntimeExports.jsx(o.Stack,{sx:{visibility:r?"visible":"hidden",marginTop:"1rem",color:i.palette.text.secondary},children:"This is taking longer than expected..."})]})})},x=e=>{const s=g(e.error),r=e.error instanceof Error?e.error.stack:null,n=o.useTheme();return t.jsxRuntimeExports.jsxs(o.Stack,{sx:{maxHeight:"100%",maxWidth:"min(100%, 800px)",padding:2,overflow:"auto",color:n.palette.error.main,"& pre":{whiteSpace:"pre-wrap",wordBreak:"break-word",paddingBottom:"3rem"}},children:[(e.loadingMessage?`Error while ${u.lowerFirst(o.capitalize(e.loadingMessage))} - `:"")+s,t.jsxRuntimeExports.jsx("br",{}),r&&t.jsxRuntimeExports.jsx("pre",{children:r})]})};exports.LoadingCover=d;exports.LoadingErrorMessage=x;exports.assertUnreachable=m;
2
- //# sourceMappingURL=LoadingCover-DXcsXWDy.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover-DXcsXWDy.cjs","sources":["../src/components/utils/errorHandling.ts","../src/components/LoadingCover.tsx"],"sourcesContent":["import { AxiosError } from \"axios\"\nimport { tryStringifyJson } from \"./converters\"\n\n// Please note: These helper functions also exist in nova.js\n// (with slightly different formatting), and will be unified\n// at some point in the future.\n\nexport function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function makeShortErrorMessage(err: unknown) {\n if (err instanceof AxiosError && err.code === \"ERR_NETWORK\") {\n return \"Failed to connect to the server. Please check your internet connection.\"\n } else if (err instanceof AxiosError && err.response) {\n return `${err.response?.status} ${err.response?.statusText}: ${JSON.stringify(err.response?.data)}`\n } else if (err instanceof Error) {\n return err.message\n } else {\n return `Unexpected error: ${err}`\n }\n}\n\nexport function assertUnreachable(x: never, msg: string): never {\n throw new Error(msg + ` ${JSON.stringify(x)}`)\n}\n\nexport function makeErrorMessage(err: unknown) {\n if (err instanceof AxiosError && err.code === \"ERR_NETWORK\") {\n return \"Failed to connect to the server. Please check your internet connection.\"\n } else if (err instanceof AxiosError && err.response) {\n return `${err.response?.status} ${err.response?.statusText} from ${err.response?.config.url}: ${JSON.stringify(err.response?.data)}`\n } else if (err instanceof Error) {\n return err.message\n } else {\n return `Unexpected error: ${tryStringifyJson(err) || err}`\n }\n}\n","import { capitalize, CircularProgress, Stack, useTheme } from \"@mui/material\"\nimport { lowerFirst } from \"lodash-es\"\nimport { useEffect, useState } from \"react\"\nimport { makeErrorMessage } from \"./utils/errorHandling\"\n\nexport const LoadingCover = (props: {\n message?: string\n error?: unknown\n softTimeout?: number\n}) => {\n const softTimeout = props.softTimeout || 3000\n\n const [showSlowLoadingMessage, setShowSlowLoadingMessage] = useState(false)\n const theme = useTheme()\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setShowSlowLoadingMessage(true)\n }, softTimeout)\n\n return () => clearTimeout(timeout)\n })\n\n return (\n <Stack\n width=\"100%\"\n height=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{ color: theme.palette.text.primary }}\n >\n {props.error ? (\n <LoadingErrorMessage\n loadingMessage={props.message}\n error={props.error}\n />\n ) : (\n <>\n <CircularProgress sx={{ marginBottom: \"24px\" }} />\n {!!props.message && <div>{props.message}</div>}\n <Stack\n sx={{\n visibility: showSlowLoadingMessage ? \"visible\" : \"hidden\",\n marginTop: \"1rem\",\n color: theme.palette.text.secondary,\n }}\n >\n {\"This is taking longer than expected...\"}\n </Stack>\n </>\n )}\n </Stack>\n )\n}\n\nexport const LoadingErrorMessage = (props: {\n loadingMessage?: string\n error: unknown\n}) => {\n const errorMessage = makeErrorMessage(props.error)\n const stack = props.error instanceof Error ? props.error.stack : null\n const theme = useTheme()\n\n return (\n <Stack\n sx={{\n maxHeight: \"100%\",\n maxWidth: \"min(100%, 800px)\",\n padding: 2,\n overflow: \"auto\",\n color: theme.palette.error.main,\n \"& pre\": {\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n paddingBottom: \"3rem\",\n },\n }}\n >\n {(props.loadingMessage\n ? `Error while ${lowerFirst(capitalize(props.loadingMessage))} - `\n : \"\") + errorMessage}\n <br />\n {stack && <pre>{stack}</pre>}\n </Stack>\n )\n}\n"],"names":["assertUnreachable","x","msg","makeErrorMessage","err","AxiosError","_a","_b","_c","_d","tryStringifyJson","LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","stack","lowerFirst","capitalize"],"mappings":"4JAuBO,SAASA,EAAkBC,EAAUC,EAAoB,CAC9D,MAAM,IAAI,MAAMA,EAAM,IAAI,KAAK,UAAUD,CAAC,CAAC,EAAE,CAC/C,CAEO,SAASE,EAAiBC,EAAc,aAC7C,OAAIA,aAAeC,EAAAA,YAAcD,EAAI,OAAS,cACrC,0EACEA,aAAeC,cAAcD,EAAI,SACnC,IAAGE,EAAAF,EAAI,WAAJ,YAAAE,EAAc,MAAM,KAAIC,EAAAH,EAAI,WAAJ,YAAAG,EAAc,UAAU,UAASC,EAAAJ,EAAI,WAAJ,YAAAI,EAAc,OAAO,GAAG,KAAK,KAAK,WAAUC,EAAAL,EAAI,WAAJ,YAAAK,EAAc,IAAI,CAAC,GACzHL,aAAe,MACjBA,EAAI,QAEJ,qBAAqBM,EAAAA,iBAAiBN,CAAG,GAAKA,CAAG,EAE5D,CChCO,MAAMO,EAAgBC,GAIvB,CACJ,MAAMC,EAAcD,EAAM,aAAe,IAEnC,CAACE,EAAwBC,CAAyB,EAAIC,EAAAA,SAAS,EAAK,EACpEC,EAAQC,EAAAA,SAAA,EAEdC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAU,WAAW,IAAM,CAC/BL,EAA0B,EAAI,CAChC,EAAGF,CAAW,EAEd,MAAO,IAAM,aAAaO,CAAO,CACnC,CAAC,EAGCC,EAAAA,kBAAAA,IAACC,EAAAA,MAAA,CACC,MAAM,OACN,OAAO,OACP,WAAW,SACX,eAAe,SACf,GAAI,CAAE,MAAOL,EAAM,QAAQ,KAAK,OAAA,EAE/B,WAAM,MACLI,EAAAA,kBAAAA,IAACE,EAAA,CACC,eAAgBX,EAAM,QACtB,MAAOA,EAAM,KAAA,CAAA,EAGfY,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAJ,EAAAA,kBAAAA,IAACK,EAAAA,iBAAA,CAAiB,GAAI,CAAE,aAAc,QAAU,EAC/C,CAAC,CAACd,EAAM,SAAWS,EAAAA,kBAAAA,IAAC,MAAA,CAAK,WAAM,QAAQ,EACxCA,EAAAA,kBAAAA,IAACC,EAAAA,MAAA,CACC,GAAI,CACF,WAAYR,EAAyB,UAAY,SACjD,UAAW,OACX,MAAOG,EAAM,QAAQ,KAAK,SAAA,EAG3B,SAAA,wCAAA,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAIR,EAEaM,EAAuBX,GAG9B,CACJ,MAAMe,EAAexB,EAAiBS,EAAM,KAAK,EAC3CgB,EAAQhB,EAAM,iBAAiB,MAAQA,EAAM,MAAM,MAAQ,KAC3DK,EAAQC,EAAAA,SAAA,EAEd,OACEM,EAAAA,kBAAAA,KAACF,EAAAA,MAAA,CACC,GAAI,CACF,UAAW,OACX,SAAU,mBACV,QAAS,EACT,SAAU,OACV,MAAOL,EAAM,QAAQ,MAAM,KAC3B,QAAS,CACP,WAAY,WACZ,UAAW,aACX,cAAe,MAAA,CACjB,EAGA,SAAA,EAAAL,EAAM,eACJ,eAAeiB,EAAAA,WAAWC,EAAAA,WAAWlB,EAAM,cAAc,CAAC,CAAC,MAC3D,IAAMe,0BACT,KAAA,EAAG,EACHC,GAASP,EAAAA,kBAAAA,IAAC,MAAA,CAAK,SAAAO,CAAA,CAAM,CAAA,CAAA,CAAA,CAG5B"}