@wandelbots/wandelbots-js-react-components 2.59.0-pr.dev-fix-flaky-task.488.1957fef → 2.59.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 (172) hide show
  1. package/README.md +10 -107
  2. package/dist/auth0-spa-js.production.esm-1QXzndwB.js +950 -0
  3. package/dist/auth0-spa-js.production.esm-1QXzndwB.js.map +1 -0
  4. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs +5 -0
  5. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs.map +1 -0
  6. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
  7. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
  8. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  9. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
  10. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
  11. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
  12. package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +1 -1
  13. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +1 -1
  14. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -1
  15. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
  16. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +1 -1
  17. package/dist/components/ProgramStateIndicator.d.ts +3 -3
  18. package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
  19. package/dist/components/RobotCard.d.ts +4 -5
  20. package/dist/components/RobotCard.d.ts.map +1 -1
  21. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
  22. package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
  23. package/dist/components/jogging/JoggingPanel.d.ts +1 -1
  24. package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
  25. package/dist/components/jogging/JoggingStore.d.ts +5 -10
  26. package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
  27. package/dist/components/jogging/PoseCartesianValues.d.ts +2 -2
  28. package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
  29. package/dist/components/jogging/PoseJointValues.d.ts +2 -1
  30. package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
  31. package/dist/components/robots/DHRobot.d.ts.map +1 -1
  32. package/dist/components/robots/GenericRobot.d.ts +2 -2
  33. package/dist/components/robots/GenericRobot.d.ts.map +1 -1
  34. package/dist/components/robots/Robot.d.ts +2 -4
  35. package/dist/components/robots/Robot.d.ts.map +1 -1
  36. package/dist/components/robots/RobotAnimator.d.ts +2 -2
  37. package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
  38. package/dist/components/robots/SupportedRobot.d.ts +4 -4
  39. package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
  40. package/dist/components/robots/manufacturerHomePositions.d.ts +1 -1
  41. package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -1
  42. package/dist/components/robots/robotModelLogic.d.ts +1 -11
  43. package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
  44. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
  45. package/dist/components/safetyBar/OperationModeIndicator.d.ts +2 -2
  46. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
  47. package/dist/components/safetyBar/SafetyBar.d.ts +3 -3
  48. package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
  49. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +2 -2
  50. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
  51. package/dist/components/utils/errorHandling.d.ts.map +1 -1
  52. package/dist/index.cjs +160 -0
  53. package/dist/index.cjs.map +1 -0
  54. package/dist/index.d.ts +39 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +36825 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +32 -70
  59. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +1 -1
  60. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +2 -1
  61. package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
  62. package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
  63. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +1 -1
  64. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
  65. package/src/components/AppHeader.md +1 -1
  66. package/src/components/ProgramStateIndicator.tsx +6 -3
  67. package/src/components/RobotCard.tsx +8 -5
  68. package/src/components/jogging/JoggingCartesianTab.tsx +11 -13
  69. package/src/components/jogging/JoggingJointLimitDetector.tsx +2 -2
  70. package/src/components/jogging/JoggingJointTab.tsx +4 -4
  71. package/src/components/jogging/JoggingOptions.tsx +5 -6
  72. package/src/components/jogging/JoggingPanel.tsx +3 -6
  73. package/src/components/jogging/JoggingStore.ts +39 -66
  74. package/src/components/jogging/PoseCartesianValues.tsx +4 -3
  75. package/src/components/jogging/PoseJointValues.tsx +4 -3
  76. package/src/components/robots/DHRobot.tsx +3 -2
  77. package/src/components/robots/GenericRobot.tsx +36 -97
  78. package/src/components/robots/Robot.tsx +2 -4
  79. package/src/components/robots/RobotAnimator.test.tsx +22 -7
  80. package/src/components/robots/RobotAnimator.tsx +14 -9
  81. package/src/components/robots/SupportedRobot.tsx +9 -14
  82. package/src/components/robots/manufacturerHomePositions.ts +1 -1
  83. package/src/components/robots/robotModelLogic.ts +6 -75
  84. package/src/components/safetyBar/ControllerTypeIndicator.tsx +2 -4
  85. package/src/components/safetyBar/OperationModeIndicator.tsx +5 -7
  86. package/src/components/safetyBar/SafetyBar.tsx +6 -3
  87. package/src/components/safetyBar/SafetyStateIndicator.tsx +7 -9
  88. package/src/components/utils/errorHandling.ts +0 -4
  89. package/src/i18n/locales/de/translations.json +0 -3
  90. package/src/i18n/locales/en/translations.json +0 -3
  91. package/src/index.ts +43 -4
  92. package/dist/3d.cjs.js +0 -2
  93. package/dist/3d.cjs.js.map +0 -1
  94. package/dist/3d.d.ts +0 -11
  95. package/dist/3d.d.ts.map +0 -1
  96. package/dist/3d.es.js +0 -16
  97. package/dist/3d.es.js.map +0 -1
  98. package/dist/LoadingCover-6gWr11KP.js +0 -88
  99. package/dist/LoadingCover-6gWr11KP.js.map +0 -1
  100. package/dist/LoadingCover-CukpS_aj.cjs +0 -2
  101. package/dist/LoadingCover-CukpS_aj.cjs.map +0 -1
  102. package/dist/WandelscriptEditor-7eN-Yw7m.js +0 -140
  103. package/dist/WandelscriptEditor-7eN-Yw7m.js.map +0 -1
  104. package/dist/WandelscriptEditor-D6_vS5Uk.cjs +0 -2
  105. package/dist/WandelscriptEditor-D6_vS5Uk.cjs.map +0 -1
  106. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js +0 -3877
  107. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js.map +0 -1
  108. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs +0 -5
  109. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs.map +0 -1
  110. package/dist/components/jogging/JoggingBlocked.d.ts +0 -7
  111. package/dist/components/jogging/JoggingBlocked.d.ts.map +0 -1
  112. package/dist/components/utils/errorHandling.test.d.ts +0 -2
  113. package/dist/components/utils/errorHandling.test.d.ts.map +0 -1
  114. package/dist/core.cjs.js +0 -2
  115. package/dist/core.cjs.js.map +0 -1
  116. package/dist/core.d.ts +0 -33
  117. package/dist/core.d.ts.map +0 -1
  118. package/dist/core.es.js +0 -54
  119. package/dist/core.es.js.map +0 -1
  120. package/dist/externalizeComponent-CkVWk2F_.cjs +0 -24
  121. package/dist/externalizeComponent-CkVWk2F_.cjs.map +0 -1
  122. package/dist/externalizeComponent-Dc3fViZA.js +0 -489
  123. package/dist/externalizeComponent-Dc3fViZA.js.map +0 -1
  124. package/dist/index.cjs.js +0 -2
  125. package/dist/index.cjs.js.map +0 -1
  126. package/dist/index.es.js +0 -69
  127. package/dist/index.es.js.map +0 -1
  128. package/dist/interpolation-DAXKfoDS.cjs +0 -20
  129. package/dist/interpolation-DAXKfoDS.cjs.map +0 -1
  130. package/dist/interpolation-DcPbemBD.js +0 -6924
  131. package/dist/interpolation-DcPbemBD.js.map +0 -1
  132. package/dist/lib/ConnectedMotionGroup.d.ts +0 -90
  133. package/dist/lib/ConnectedMotionGroup.d.ts.map +0 -1
  134. package/dist/lib/JoggerConnection.d.ts +0 -113
  135. package/dist/lib/JoggerConnection.d.ts.map +0 -1
  136. package/dist/lib/JoggerConnection.test.d.ts +0 -2
  137. package/dist/lib/JoggerConnection.test.d.ts.map +0 -1
  138. package/dist/lib/MotionStreamConnection.d.ts +0 -24
  139. package/dist/lib/MotionStreamConnection.d.ts.map +0 -1
  140. package/dist/lib/MotionStreamConnection.test.d.ts +0 -2
  141. package/dist/lib/MotionStreamConnection.test.d.ts.map +0 -1
  142. package/dist/lib/motionStateUpdate.d.ts +0 -7
  143. package/dist/lib/motionStateUpdate.d.ts.map +0 -1
  144. package/dist/lib/motionStateUpdate.test.d.ts +0 -2
  145. package/dist/lib/motionStateUpdate.test.d.ts.map +0 -1
  146. package/dist/manufacturerHomePositions-BD6C5qZJ.js +0 -1040
  147. package/dist/manufacturerHomePositions-BD6C5qZJ.js.map +0 -1
  148. package/dist/manufacturerHomePositions-DRNjU1pU.cjs +0 -2
  149. package/dist/manufacturerHomePositions-DRNjU1pU.cjs.map +0 -1
  150. package/dist/theming-CPShzNuV.cjs +0 -115
  151. package/dist/theming-CPShzNuV.cjs.map +0 -1
  152. package/dist/theming-Hr605E6v.js +0 -22336
  153. package/dist/theming-Hr605E6v.js.map +0 -1
  154. package/dist/wandelscript.cjs.js +0 -2
  155. package/dist/wandelscript.cjs.js.map +0 -1
  156. package/dist/wandelscript.d.ts +0 -2
  157. package/dist/wandelscript.d.ts.map +0 -1
  158. package/dist/wandelscript.es.js +0 -5
  159. package/dist/wandelscript.es.js.map +0 -1
  160. package/src/3d.ts +0 -15
  161. package/src/components/jogging/JoggingBlocked.tsx +0 -37
  162. package/src/components/utils/errorHandling.test.ts +0 -41
  163. package/src/core.ts +0 -33
  164. package/src/env.d.ts +0 -3
  165. package/src/lib/ConnectedMotionGroup.ts +0 -444
  166. package/src/lib/JoggerConnection.test.ts +0 -120
  167. package/src/lib/JoggerConnection.ts +0 -674
  168. package/src/lib/MotionStreamConnection.test.ts +0 -23
  169. package/src/lib/MotionStreamConnection.ts +0 -189
  170. package/src/lib/motionStateUpdate.test.ts +0 -28
  171. package/src/lib/motionStateUpdate.ts +0 -117
  172. package/src/wandelscript.ts +0 -2
@@ -1,82 +1,13 @@
1
- import { NovaClient } from "@wandelbots/nova-js/v2"
2
1
  import type { Object3D } from "three"
3
2
  import type { GLTF } from "three-stdlib"
3
+ import { version } from "../../../package.json"
4
4
 
5
- const modelCache = new Map<string, Promise<string>>()
6
-
7
- /**
8
- * Revoke a cached model's object URL to prevent memory leaks.
9
- * Call this when a component unmounts or no longer needs the model.
10
- */
11
- export async function revokeModelUrl(modelFromController: string): Promise<void> {
12
- const urlPromise = modelCache.get(modelFromController)
13
- if (!urlPromise) return
14
-
15
- try {
16
- const url = await urlPromise
17
- URL.revokeObjectURL(url)
18
- } catch (e) {
19
- // Ignore errors - URL may already be revoked
20
- }
21
- modelCache.delete(modelFromController)
22
- }
23
-
24
- /**
25
- * Revoke all cached model object URLs and clear the cache.
26
- * Useful for cleanup on app teardown.
27
- */
28
- export async function revokeAllModelUrls(): Promise<void> {
29
- const entries = Array.from(modelCache.entries())
30
- await Promise.allSettled(
31
- entries.map(async ([key, urlPromise]) => {
32
- try {
33
- const url = await urlPromise
34
- URL.revokeObjectURL(url)
35
- } catch (e) {
36
- // Ignore errors
37
- }
38
- })
39
- )
40
- modelCache.clear()
41
- }
42
-
43
- export async function defaultGetModel(modelFromController: string): Promise<string> {
44
- // Check cache first
45
- if (modelCache.has(modelFromController)) {
46
- return modelCache.get(modelFromController)!
5
+ export function defaultGetModel(modelFromController: string): string {
6
+ let useVersion = version
7
+ if (version.startsWith("0.")) {
8
+ useVersion = ""
47
9
  }
48
-
49
- // Create the promise and cache it immediately to prevent duplicate calls
50
- const modelPromise = (async () => {
51
- const instanceUrl = import.meta.env.WANDELAPI_BASE_URL
52
- const nova = new NovaClient({ instanceUrl })
53
-
54
- // Configure axios to handle binary responses for GLB files
55
- const apiInstance = nova.api.motionGroupModels as any
56
- if (apiInstance.axios?.interceptors) {
57
- apiInstance.axios.interceptors.request.use((config: any) => {
58
- if (config.url?.includes('/glb')) {
59
- config.responseType = 'blob'
60
- }
61
- return config
62
- })
63
- }
64
-
65
- try {
66
- const file = await nova.api.motionGroupModels.getMotionGroupGlbModel(modelFromController)
67
-
68
- // Create object URL from the file and return it
69
- const url = URL.createObjectURL(file)
70
- return url
71
- } catch (error) {
72
- console.error("Failed to fetch model:", error)
73
- throw error
74
- }
75
- })()
76
-
77
- // Cache the promise
78
- modelCache.set(modelFromController, modelPromise)
79
- return modelPromise
10
+ return `https://cdn.jsdelivr.net/gh/wandelbotsgmbh/wandelbots-js-react-components${useVersion ? `@${useVersion}` : ""}/public/models/${modelFromController}.glb`
80
11
  }
81
12
 
82
13
  /**
@@ -1,6 +1,5 @@
1
1
  import { useTheme, type PopoverOrigin } from "@mui/material"
2
2
  import { observer } from "mobx-react-lite"
3
- import { useId } from "react"
4
3
  import { Trans, useTranslation } from "react-i18next"
5
4
  import ControllerTypePhysicalIcon from "./icons/controller-type-physical.svg"
6
5
  import ControllerTypeVirtualIcon from "./icons/controller-type-virtual.svg"
@@ -23,13 +22,12 @@ export const ControllerTypeIndicator = observer(
23
22
  compact,
24
23
  }: ControllerTypeIndicatorProps) => {
25
24
  const theme = useTheme()
26
- const componentId = useId()
27
25
  const { t } = useTranslation()
28
26
 
29
27
  if (isVirtual) {
30
28
  return (
31
29
  <IndicatorWithExplanation
32
- id={`motion-group-virtual-${componentId}`}
30
+ id="motion-group-virtual"
33
31
  icon={ControllerTypeVirtualIcon}
34
32
  color={theme.palette.tertiary.main}
35
33
  name={t("SafetyBar.ControllerType.Virtual.lb")}
@@ -54,7 +52,7 @@ export const ControllerTypeIndicator = observer(
54
52
 
55
53
  return (
56
54
  <IndicatorWithExplanation
57
- id={`motion-group-physical-${componentId}`}
55
+ id="motion-group-physical"
58
56
  icon={ControllerTypePhysicalIcon}
59
57
  color={theme.palette.primary.main}
60
58
  name={t("SafetyBar.ControllerType.Physical.lb")}
@@ -1,7 +1,6 @@
1
1
  import { useTheme, type PopoverOrigin } from "@mui/material"
2
- import type { OperationMode } from "@wandelbots/nova-js/v2"
2
+ import type { RobotControllerStateOperationModeEnum } from "@wandelbots/nova-js/v1"
3
3
  import { observer } from "mobx-react-lite"
4
- import { useId } from "react"
5
4
  import { Trans, useTranslation } from "react-i18next"
6
5
  import OperationModeAutomaticIcon from "./icons/operation-mode-automatic.svg"
7
6
  import OperationModeErrorIcon from "./icons/operation-mode-error.svg"
@@ -9,7 +8,7 @@ import OperationModeManualIcon from "./icons/operation-mode-manual.svg"
9
8
  import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
10
9
 
11
10
  interface OperationModeIndicatorProps {
12
- operationMode: OperationMode
11
+ operationMode: RobotControllerStateOperationModeEnum
13
12
  anchorOrigin?: PopoverOrigin
14
13
  transformOrigin?: PopoverOrigin
15
14
  compact: boolean
@@ -24,13 +23,12 @@ export const OperationModeIndicator = observer(
24
23
  }: OperationModeIndicatorProps) => {
25
24
  const { t } = useTranslation()
26
25
  const theme = useTheme()
27
- const componentId = useId()
28
26
 
29
27
  switch (operationMode) {
30
28
  case "OPERATION_MODE_AUTO":
31
29
  return (
32
30
  <IndicatorWithExplanation
33
- id={`operation-mode-auto-${componentId}`}
31
+ id="operation-mode-auto"
34
32
  icon={OperationModeAutomaticIcon}
35
33
  title={t("SafetyBar.OperationMode.ti")}
36
34
  name={t("SafetyBar.OperationMode.Automatic.ti")}
@@ -51,7 +49,7 @@ export const OperationModeIndicator = observer(
51
49
  case "OPERATION_MODE_MANUAL_T2": {
52
50
  return (
53
51
  <IndicatorWithExplanation
54
- id={`operation-mode-manual-${componentId}`}
52
+ id="operation-mode-manual"
55
53
  icon={OperationModeManualIcon}
56
54
  color={theme.palette.warning.main}
57
55
  title={t("SafetyBar.OperationMode.ti")}
@@ -73,7 +71,7 @@ export const OperationModeIndicator = observer(
73
71
  default:
74
72
  return (
75
73
  <IndicatorWithExplanation
76
- id={`operation-mode-error-${componentId}`}
74
+ id="operation-mode-error"
77
75
  icon={OperationModeErrorIcon}
78
76
  color={theme.palette.warning.main}
79
77
  title={t("SafetyBar.OperationMode.ti")}
@@ -1,5 +1,8 @@
1
1
  import { Divider, Stack, type PopoverOrigin } from "@mui/material"
2
- import type { OperationMode, SafetyStateType } from "@wandelbots/nova-js/v2"
2
+ import type {
3
+ RobotControllerStateOperationModeEnum,
4
+ RobotControllerStateSafetyStateEnum,
5
+ } from "@wandelbots/nova-js/v1"
3
6
  import { observer } from "mobx-react-lite"
4
7
  import { externalizeComponent } from "../../externalizeComponent"
5
8
  import { ControllerTypeIndicator } from "./ControllerTypeIndicator"
@@ -9,8 +12,8 @@ import { SafetyStateIndicator } from "./SafetyStateIndicator"
9
12
  export interface SafetyBarProps {
10
13
  isVirtual: boolean
11
14
  motionGroupId: string
12
- operationMode: OperationMode
13
- safetyState: SafetyStateType
15
+ operationMode: RobotControllerStateOperationModeEnum
16
+ safetyState: RobotControllerStateSafetyStateEnum
14
17
  anchorOrigin?: PopoverOrigin
15
18
  transformOrigin?: PopoverOrigin
16
19
  compact?: boolean
@@ -1,7 +1,6 @@
1
1
  import { useTheme, type PopoverOrigin } from "@mui/material"
2
- import type { SafetyStateType } from "@wandelbots/nova-js/v2"
2
+ import type { RobotControllerStateSafetyStateEnum } from "@wandelbots/nova-js/v1"
3
3
  import { observer } from "mobx-react-lite"
4
- import { useId } from "react"
5
4
  import { Trans, useTranslation } from "react-i18next"
6
5
  import { assertUnreachable } from "../utils/errorHandling"
7
6
  import SafetyStateErrorIcon from "./icons/safety-state-error.svg"
@@ -12,7 +11,7 @@ import SafetyStateStopIcon from "./icons/safety-state-stop.svg"
12
11
  import { IndicatorWithExplanation } from "./IndicatorWithExplanation"
13
12
 
14
13
  interface SafetyStateIndicatorProps {
15
- safetyState: SafetyStateType
14
+ safetyState: RobotControllerStateSafetyStateEnum
16
15
  anchorOrigin?: PopoverOrigin
17
16
  transformOrigin?: PopoverOrigin
18
17
  compact: boolean
@@ -27,14 +26,13 @@ export const SafetyStateIndicator = observer(
27
26
  }: SafetyStateIndicatorProps) => {
28
27
  const { t } = useTranslation()
29
28
  const theme = useTheme()
30
- const componentId = useId()
31
29
 
32
30
  switch (safetyState) {
33
31
  // Normal state, robot can move
34
32
  case "SAFETY_STATE_NORMAL":
35
33
  return (
36
34
  <IndicatorWithExplanation
37
- id={`safety-state-normal-${componentId}`}
35
+ id="safety-state-normal"
38
36
  title={t("SafetyBar.SafetyState.ti")}
39
37
  name={t("SafetyBar.SafetyState.Normal.lb")}
40
38
  label={compact ? null : t("SafetyBar.SafetyState.Normal.lb")}
@@ -56,7 +54,7 @@ export const SafetyStateIndicator = observer(
56
54
  case "SAFETY_STATE_ROBOT_EMERGENCY_STOP":
57
55
  return (
58
56
  <IndicatorWithExplanation
59
- id={`safety-state-estop-${componentId}`}
57
+ id="safety-state-estop"
60
58
  title={t("SafetyBar.SafetyState.ti")}
61
59
  name={t("SafetyBar.SafetyState.Estop.lb")}
62
60
  label={compact ? null : t("SafetyBar.SafetyState.Estop.lb")}
@@ -83,7 +81,7 @@ export const SafetyStateIndicator = observer(
83
81
  case "SAFETY_STATE_STOP":
84
82
  return (
85
83
  <IndicatorWithExplanation
86
- id={`safety-state-stop-${componentId}`}
84
+ id="safety-state-stop"
87
85
  icon={SafetyStateStopIcon}
88
86
  title={t("SafetyBar.SafetyState.ti")}
89
87
  name={t("SafetyBar.SafetyState.Stop.lb")}
@@ -110,7 +108,7 @@ export const SafetyStateIndicator = observer(
110
108
  case "SAFETY_STATE_VIOLATION":
111
109
  return (
112
110
  <IndicatorWithExplanation
113
- id={`safety-state-manual-action-required-${componentId}`}
111
+ id="safety-state-manual-action-required"
114
112
  icon={SafetyStateManualActionRequiredIcon}
115
113
  color={theme.palette.warning.main}
116
114
  title={t("SafetyBar.SafetyState.ti")}
@@ -137,7 +135,7 @@ export const SafetyStateIndicator = observer(
137
135
  case "SAFETY_STATE_FAULT":
138
136
  return (
139
137
  <IndicatorWithExplanation
140
- id={`safety-state-error-${componentId}`}
138
+ id="safety-state-error"
141
139
  icon={SafetyStateErrorIcon}
142
140
  color={theme.palette.error.main}
143
141
  title={t("SafetyBar.SafetyState.ti")}
@@ -1,10 +1,6 @@
1
1
  import { AxiosError } from "axios"
2
2
  import { tryStringifyJson } from "./converters"
3
3
 
4
- // Please note: These helper functions also exist in nova.js
5
- // (with slightly different formatting), and will be unified
6
- // at some point in the future.
7
-
8
4
  export function delay(ms: number) {
9
5
  return new Promise((resolve) => setTimeout(resolve, ms))
10
6
  }
@@ -4,9 +4,6 @@
4
4
  "Jogging.Velocity.lb": "Geschwindigkeit",
5
5
  "General.degree.variable": "{{amount}}°",
6
6
  "General.mm.variable": "{{amount}} mm",
7
- "Jogging.Blocked.ti": "Verbindung blockiert",
8
- "Jogging.Blocked.lb": "Ein anderer Client kontrolliert das Jogging.",
9
- "Jogging.Blocked.Reenable.bt": "Neu verbinden",
10
7
  "Jogging.Cartesian.MotionType.lb": "Bewegungstyp",
11
8
  "Jogging.Cartesian.Translation.bt": "Translation",
12
9
  "Jogging.Cartesian.Rotation.bt": "Rotation",
@@ -4,9 +4,6 @@
4
4
  "Jogging.Velocity.lb": "Velocity",
5
5
  "General.degree.variable": "{{amount}}°",
6
6
  "General.mm.variable": "{{amount}} mm",
7
- "Jogging.Blocked.ti": "Connection blocked",
8
- "Jogging.Blocked.lb": "Another client is currently controlling the jogging.",
9
- "Jogging.Blocked.Reenable.bt": "Reconnect",
10
7
  "Jogging.Cartesian.MotionType.lb": "Motion type",
11
8
  "Jogging.Cartesian.Translation.bt": "Translation",
12
9
  "Jogging.Cartesian.Rotation.bt": "Rotation",
package/src/index.ts CHANGED
@@ -1,4 +1,43 @@
1
- // Re-export all sub-entry points
2
- export * from "./3d"
3
- export * from "./core"
4
- export * from "./wandelscript"
1
+ export { default as CollisionSceneRenderer } from "./components/3d-viewport/collider/CollisionSceneRenderer"
2
+ export * from "./components/3d-viewport/PresetEnvironment"
3
+ export * from "./components/3d-viewport/SafetyZonesRenderer"
4
+ export * from "./components/3d-viewport/TrajectoryRenderer"
5
+ export * from "./components/AppHeader"
6
+ export * from "./components/CycleTimer"
7
+ export * from "./components/Timer"
8
+ export * from "./components/DataGrid"
9
+ export * from "./components/jogging/JoggingCartesianAxisControl"
10
+ export * from "./components/jogging/JoggingJointRotationControl"
11
+ export * from "./components/jogging/JoggingPanel"
12
+ export { JoggingStore } from "./components/jogging/JoggingStore"
13
+ export * from "./components/jogging/PoseCartesianValues"
14
+ export * from "./components/jogging/PoseJointValues"
15
+ export * from "./components/LoadingCover"
16
+ export * from "./components/LogPanel"
17
+ export { LogStore } from "./components/LogStore"
18
+ export * from "./components/LogViewer"
19
+ export * from "./components/modal/NoMotionGroupModal"
20
+ export * from "./components/ProgramControl"
21
+ export * from "./components/ProgramStateIndicator"
22
+ export * from "./components/RobotCard"
23
+ export * from "./components/RobotListItem"
24
+ export * from "./components/robots/AxisConfig"
25
+ export {
26
+ MANUFACTURER_HOME_CONFIGS,
27
+ extractManufacturer,
28
+ getDefaultHomeConfig,
29
+ } from "./components/robots/manufacturerHomePositions"
30
+ export * from "./components/robots/Robot"
31
+ export { defaultGetModel } from "./components/robots/robotModelLogic"
32
+ export * from "./components/robots/SupportedRobot"
33
+ export * from "./components/RobotSetupReadinessIndicator"
34
+ export * from "./components/safetyBar/SafetyBar"
35
+ export * from "./components/SelectableFab"
36
+ export * from "./components/TabBar"
37
+ export * from "./components/utils/hooks"
38
+ export * from "./components/utils/interpolation"
39
+ export * from "./components/VelocitySlider"
40
+ export * from "./components/wandelscript-editor/WandelscriptEditor"
41
+ export * from "./i18n/config"
42
+ export * from "./themes/themeTypes"
43
+ export { createNovaMuiTheme } from "./themes/theming"
package/dist/3d.cjs.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manufacturerHomePositions-DRNjU1pU.cjs");exports.CollisionSceneRenderer=e.CollisionSceneRenderer;exports.MANUFACTURER_HOME_CONFIGS=e.MANUFACTURER_HOME_CONFIGS;exports.PresetEnvironment=e.PresetEnvironment;exports.Robot=e.Robot;exports.RobotCard=e.RobotCard;exports.SafetyZonesRenderer=e.SafetyZonesRenderer;exports.SupportedRobot=e.SupportedRobot;exports.TrajectoryRenderer=e.TrajectoryRenderer;exports.defaultAxisConfig=e.defaultAxisConfig;exports.defaultGetModel=e.defaultGetModel;exports.extractManufacturer=e.extractManufacturer;exports.getDefaultHomeConfig=e.getDefaultHomeConfig;
2
- //# sourceMappingURL=3d.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"3d.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/3d.d.ts DELETED
@@ -1,11 +0,0 @@
1
- export { default as CollisionSceneRenderer } from "./components/3d-viewport/collider/CollisionSceneRenderer";
2
- export * from "./components/3d-viewport/PresetEnvironment";
3
- export * from "./components/3d-viewport/SafetyZonesRenderer";
4
- export * from "./components/3d-viewport/TrajectoryRenderer";
5
- export * from "./components/RobotCard";
6
- export * from "./components/robots/AxisConfig";
7
- export { MANUFACTURER_HOME_CONFIGS, extractManufacturer, getDefaultHomeConfig, } from "./components/robots/manufacturerHomePositions";
8
- export * from "./components/robots/Robot";
9
- export { defaultGetModel } from "./components/robots/robotModelLogic";
10
- export * from "./components/robots/SupportedRobot";
11
- //# sourceMappingURL=3d.d.ts.map
package/dist/3d.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"3d.d.ts","sourceRoot":"","sources":["../src/3d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0DAA0D,CAAA;AAC5G,cAAc,4CAA4C,CAAA;AAC1D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA;AAC9C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,+CAA+C,CAAA;AACtD,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,cAAc,oCAAoC,CAAA"}
package/dist/3d.es.js DELETED
@@ -1,16 +0,0 @@
1
- import { C as o, M as r, P as t, R as s, a as n, S as d, b as R, T as f, d as C, c as i, e as l, g as u } from "./manufacturerHomePositions-BD6C5qZJ.js";
2
- export {
3
- o as CollisionSceneRenderer,
4
- r as MANUFACTURER_HOME_CONFIGS,
5
- t as PresetEnvironment,
6
- s as Robot,
7
- n as RobotCard,
8
- d as SafetyZonesRenderer,
9
- R as SupportedRobot,
10
- f as TrajectoryRenderer,
11
- C as defaultAxisConfig,
12
- i as defaultGetModel,
13
- l as extractManufacturer,
14
- u as getDefaultHomeConfig
15
- };
16
- //# sourceMappingURL=3d.es.js.map
package/dist/3d.es.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"3d.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,88 +0,0 @@
1
- import { j as t } from "./externalizeComponent-Dc3fViZA.js";
2
- import { useTheme as c, Stack as i, CircularProgress as l, capitalize as g } from "@mui/material";
3
- import { lowerFirst as d } from "lodash-es";
4
- import { useState as u, useEffect as f } from "react";
5
- import { AxiosError as a } from "axios";
6
- function h(e) {
7
- try {
8
- return JSON.stringify(e);
9
- } catch {
10
- return;
11
- }
12
- }
13
- function T(e, r) {
14
- throw new Error(r + ` ${JSON.stringify(e)}`);
15
- }
16
- function x(e) {
17
- var r, s, o, n;
18
- 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: ${h(e) || e}`;
19
- }
20
- const k = (e) => {
21
- const r = e.softTimeout || 3e3, [s, o] = u(!1), n = c();
22
- return f(() => {
23
- const m = setTimeout(() => {
24
- o(!0);
25
- }, r);
26
- return () => clearTimeout(m);
27
- }), /* @__PURE__ */ t.jsx(
28
- i,
29
- {
30
- width: "100%",
31
- height: "100%",
32
- alignItems: "center",
33
- justifyContent: "center",
34
- sx: { color: n.palette.text.primary },
35
- children: e.error ? /* @__PURE__ */ t.jsx(
36
- w,
37
- {
38
- loadingMessage: e.message,
39
- error: e.error
40
- }
41
- ) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
42
- /* @__PURE__ */ t.jsx(l, { sx: { marginBottom: "24px" } }),
43
- !!e.message && /* @__PURE__ */ t.jsx("div", { children: e.message }),
44
- /* @__PURE__ */ t.jsx(
45
- i,
46
- {
47
- sx: {
48
- visibility: s ? "visible" : "hidden",
49
- marginTop: "1rem",
50
- color: n.palette.text.secondary
51
- },
52
- children: "This is taking longer than expected..."
53
- }
54
- )
55
- ] })
56
- }
57
- );
58
- }, w = (e) => {
59
- const r = x(e.error), s = e.error instanceof Error ? e.error.stack : null, o = c();
60
- return /* @__PURE__ */ t.jsxs(
61
- i,
62
- {
63
- sx: {
64
- maxHeight: "100%",
65
- maxWidth: "min(100%, 800px)",
66
- padding: 2,
67
- overflow: "auto",
68
- color: o.palette.error.main,
69
- "& pre": {
70
- whiteSpace: "pre-wrap",
71
- wordBreak: "break-word",
72
- paddingBottom: "3rem"
73
- }
74
- },
75
- children: [
76
- (e.loadingMessage ? `Error while ${d(g(e.loadingMessage))} - ` : "") + r,
77
- /* @__PURE__ */ t.jsx("br", {}),
78
- s && /* @__PURE__ */ t.jsx("pre", { children: s })
79
- ]
80
- }
81
- );
82
- };
83
- export {
84
- k as L,
85
- w as a,
86
- T as b
87
- };
88
- //# sourceMappingURL=LoadingCover-6gWr11KP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover-6gWr11KP.js","sources":["../src/components/utils/converters.ts","../src/components/utils/errorHandling.ts","../src/components/LoadingCover.tsx"],"sourcesContent":["export function radiansToDegree(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n","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":["tryStringifyJson","json","assertUnreachable","x","msg","makeErrorMessage","err","AxiosError","_a","_b","_c","_d","LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","stack","lowerFirst","capitalize"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const t=require("./externalizeComponent-CkVWk2F_.cjs"),o=require("@mui/material"),l=require("lodash-es"),a=require("react"),c=require("axios");function m(e){try{return JSON.stringify(e)}catch{return}}function g(e,r){throw new Error(r+` ${JSON.stringify(e)}`)}function d(e){var r,s,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?`${(r=e.response)==null?void 0:r.status} ${(s=e.response)==null?void 0:s.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: ${m(e)||e}`}const h=e=>{const r=e.softTimeout||3e3,[s,n]=a.useState(!1),i=o.useTheme();return a.useEffect(()=>{const x=setTimeout(()=>{n(!0)},r);return()=>clearTimeout(x)}),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(u,{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:s?"visible":"hidden",marginTop:"1rem",color:i.palette.text.secondary},children:"This is taking longer than expected..."})]})})},u=e=>{const r=d(e.error),s=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 ${l.lowerFirst(o.capitalize(e.loadingMessage))} - `:"")+r,t.jsxRuntimeExports.jsx("br",{}),s&&t.jsxRuntimeExports.jsx("pre",{children:s})]})};exports.LoadingCover=h;exports.LoadingErrorMessage=u;exports.assertUnreachable=g;
2
- //# sourceMappingURL=LoadingCover-CukpS_aj.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover-CukpS_aj.cjs","sources":["../src/components/utils/converters.ts","../src/components/utils/errorHandling.ts","../src/components/LoadingCover.tsx"],"sourcesContent":["export function radiansToDegree(radians: number): number {\n return radians * (180 / Math.PI)\n}\n\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180)\n}\n\nexport function tryParseJson(json: unknown): any {\n try {\n return JSON.parse(json as string)\n } catch {\n return undefined\n }\n}\n\nexport function tryStringifyJson(json: unknown): string | undefined {\n try {\n return JSON.stringify(json)\n } catch {\n return undefined\n }\n}\n","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":["tryStringifyJson","json","assertUnreachable","x","msg","makeErrorMessage","err","AxiosError","_a","_b","_c","_d","LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","stack","lowerFirst","capitalize"],"mappings":"4JAgBO,SAASA,EAAiBC,EAAmC,CAClE,GAAI,CACF,OAAO,KAAK,UAAUA,CAAI,CAC5B,MAAQ,CACN,MACF,CACF,CCCO,SAASC,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,qBAAqBN,EAAiBM,CAAG,GAAKA,CAAG,EAE5D,CChCO,MAAMM,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,EAAevB,EAAiBQ,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"}