@wandelbots/wandelbots-js-react-components 4.7.2-pr.dev-RB-3348-v1-clean-up.560.cbf9c17 → 4.7.2-pr.dev-pnpm.561.db587f1

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 (109) hide show
  1. package/README.md +25 -4
  2. package/dist/3d.cjs.js +2 -1
  3. package/dist/3d.cjs.js.map +1 -0
  4. package/dist/3d.es.js +19 -0
  5. package/dist/3d.es.js.map +1 -0
  6. package/dist/LoadingCover-B3UN1lnU.js +81 -0
  7. package/dist/LoadingCover-B3UN1lnU.js.map +1 -0
  8. package/dist/LoadingCover-DXcsXWDy.cjs +2 -0
  9. package/dist/LoadingCover-DXcsXWDy.cjs.map +1 -0
  10. package/dist/MotionGroupVisualizer-BoO_BDsJ.js +1407 -0
  11. package/dist/MotionGroupVisualizer-BoO_BDsJ.js.map +1 -0
  12. package/dist/MotionGroupVisualizer-ylYruUuf.cjs +2 -0
  13. package/dist/MotionGroupVisualizer-ylYruUuf.cjs.map +1 -0
  14. package/dist/WandelscriptEditor-6sAoniLC.cjs +2 -0
  15. package/dist/WandelscriptEditor-6sAoniLC.cjs.map +1 -0
  16. package/dist/WandelscriptEditor-kWC2VyG_.js +140 -0
  17. package/dist/WandelscriptEditor-kWC2VyG_.js.map +1 -0
  18. package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs +5 -0
  19. package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs.map +1 -0
  20. package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js +4217 -0
  21. package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js.map +1 -0
  22. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
  23. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
  24. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +2 -1
  25. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  26. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +2 -2
  27. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +1 -1
  28. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
  29. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
  30. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +2 -2
  31. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
  32. package/dist/components/jogging/JoggingStore.d.ts +11 -5
  33. package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
  34. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts +16 -0
  35. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts.map +1 -0
  36. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts +45 -0
  37. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +1 -0
  38. package/dist/core.cjs.js +2 -1
  39. package/dist/core.cjs.js.map +1 -0
  40. package/dist/core.es.js +54 -0
  41. package/dist/core.es.js.map +1 -0
  42. package/dist/externalizeComponent-B98tgTPP.cjs +24 -0
  43. package/dist/externalizeComponent-B98tgTPP.cjs.map +1 -0
  44. package/dist/externalizeComponent-BOqKMZMc.js +526 -0
  45. package/dist/externalizeComponent-BOqKMZMc.js.map +1 -0
  46. package/dist/index.cjs.js +2 -1
  47. package/dist/index.cjs.js.map +1 -0
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.es.js +72 -0
  51. package/dist/index.es.js.map +1 -0
  52. package/dist/interpolation-CkcF45RM.js +7167 -0
  53. package/dist/interpolation-CkcF45RM.js.map +1 -0
  54. package/dist/interpolation-Cz4R9uG8.cjs +20 -0
  55. package/dist/interpolation-Cz4R9uG8.cjs.map +1 -0
  56. package/dist/lib/ConnectedMotionGroup.d.ts +1 -0
  57. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -1
  58. package/dist/lib/MotionStreamConnection.d.ts +1 -0
  59. package/dist/lib/MotionStreamConnection.d.ts.map +1 -1
  60. package/dist/themes/createDarkTheme.d.ts.map +1 -1
  61. package/dist/themes/themeTypes.d.ts +4 -0
  62. package/dist/themes/themeTypes.d.ts.map +1 -1
  63. package/dist/theming-BgfhMFqK.cjs +115 -0
  64. package/dist/theming-BgfhMFqK.cjs.map +1 -0
  65. package/dist/theming-BnMMTVZV.js +22360 -0
  66. package/dist/theming-BnMMTVZV.js.map +1 -0
  67. package/dist/wandelscript.cjs.js +2 -0
  68. package/dist/wandelscript.cjs.js.map +1 -0
  69. package/dist/wandelscript.d.ts +2 -0
  70. package/dist/wandelscript.d.ts.map +1 -0
  71. package/dist/wandelscript.es.js +5 -0
  72. package/dist/wandelscript.es.js.map +1 -0
  73. package/package.json +31 -22
  74. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +18 -29
  75. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +151 -24
  76. package/src/components/3d-viewport/TrajectoryRenderer.tsx +8 -8
  77. package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
  78. package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
  79. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +2 -2
  80. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
  81. package/src/components/jogging/JoggingStore.ts +5 -5
  82. package/src/components/utils/interpolation.test.ts +3 -3
  83. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +142 -0
  84. package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +62 -0
  85. package/src/index.ts +1 -0
  86. package/src/lib/ConnectedMotionGroup.ts +5 -0
  87. package/src/lib/MotionStreamConnection.ts +5 -0
  88. package/src/themes/createDarkTheme.ts +22 -1
  89. package/src/themes/themeTypes.ts +5 -0
  90. package/src/wandelscript.ts +2 -0
  91. package/dist/3d-BOCs0RwR.cjs +0 -2
  92. package/dist/3d-BOCs0RwR.cjs.map +0 -1
  93. package/dist/3d-BTtdSlR9.js +0 -1206
  94. package/dist/3d-BTtdSlR9.js.map +0 -1
  95. package/dist/3d.esm.js +0 -2
  96. package/dist/auth0-spa-js.production.esm-8ppNz0la.js +0 -5007
  97. package/dist/auth0-spa-js.production.esm-8ppNz0la.js.map +0 -1
  98. package/dist/auth0-spa-js.production.esm-cNFf2AtX.cjs +0 -5
  99. package/dist/auth0-spa-js.production.esm-cNFf2AtX.cjs.map +0 -1
  100. package/dist/core-DtLSGTAb.js +0 -18258
  101. package/dist/core-DtLSGTAb.js.map +0 -1
  102. package/dist/core-DufB-Zu5.cjs +0 -52
  103. package/dist/core-DufB-Zu5.cjs.map +0 -1
  104. package/dist/core.esm.js +0 -3
  105. package/dist/index.esm.js +0 -4
  106. package/dist/interpolation-BmgrXVQ7.js +0 -5859
  107. package/dist/interpolation-BmgrXVQ7.js.map +0 -1
  108. package/dist/interpolation-Cz29Pgpr.cjs +0 -8
  109. package/dist/interpolation-Cz29Pgpr.cjs.map +0 -1
package/README.md CHANGED
@@ -33,6 +33,12 @@ For 3D-enabled components, use `/3d`:
33
33
  import { Robot, RobotCard } from "@wandelbots/wandelbots-js-react-components/3d"
34
34
  ```
35
35
 
36
+ For the code editor, use `/wandelscript`:
37
+
38
+ ```typescript
39
+ import { WandelscriptEditor } from "@wandelbots/wandelbots-js-react-components/wandelscript"
40
+ ```
41
+
36
42
  You can also import from the top-level package, but then you'll need to provide all optional dependencies:
37
43
 
38
44
  ```bash
@@ -50,6 +56,7 @@ pnpm add @wandelbots/wandelbots-js-react-components \
50
56
  | **Main** (`.`) | All components | React 18+, MUI v6/v7, @emotion/react, @emotion/styled, @mui/icons-material + all below |
51
57
  | **`/core`** | Base components (AppHeader, ProgramControl, SafetyBar, VelocitySlider, JoggingPanel, DataGrid, Timer, themes, i18n, etc.) | React 18+, MUI v6/v7, @emotion/react, @emotion/styled, @mui/icons-material |
52
58
  | **`/3d`** | 3D visualization (Robot, RobotCard, CollisionSceneRenderer, SafetyZonesRenderer, TrajectoryRenderer) | All from `/core` + three, @react-three/fiber, @react-three/drei, three-stdlib |
59
+ | **`/wandelscript`** | Code editor (WandelscriptEditor) | All from `/core` + @monaco-editor/react, shiki, @shikijs/monaco |
53
60
 
54
61
  ## 4.x Core Changes
55
62
 
@@ -139,6 +146,16 @@ Safety components for production environments.
139
146
  - Real-time safety monitoring
140
147
  - Emergency stop integration
141
148
 
149
+ ### Code Editing
150
+
151
+ Code editing capabilities for robot programming.
152
+
153
+ **[WandelscriptEditor](https://wandelbotsgmbh.github.io/wandelbots-js-react-components/?path=/docs/wandelscript-wandelscripteditor--docs)** - Code editor
154
+
155
+ - Monaco editor integration
156
+ - Wandelscript syntax highlighting
157
+ - IntelliSense support
158
+
142
159
  ### Data & Interface Components
143
160
 
144
161
  UI components for data display and user interaction.
@@ -213,6 +230,10 @@ Components integrate with the Wandelbots Nova ecosystem:
213
230
  - @react-three/drei
214
231
  - three-stdlib
215
232
 
233
+ **For `/wandelscript` (code editor):**
234
+
235
+ - @monaco-editor/react
236
+
216
237
  ## Development
217
238
 
218
239
  To set up the project for development:
@@ -221,7 +242,7 @@ To set up the project for development:
221
242
  git clone https://github.com/wandelbotsgmbh/wandelbots-js-react-components.git
222
243
  cd wandelbots-js-react-components
223
244
  pnpm install
224
- pnpm run dev # Start Storybook development server
245
+ pnpm dev # Start Storybook development server
225
246
  ```
226
247
 
227
248
  ## Robot Model Testing
@@ -232,8 +253,8 @@ View Robot Models in web view:
232
253
  git clone https://github.com/wandelbotsgmbh/wandelbots-js-react-components.git
233
254
  cd wandelbots-js-react-components
234
255
  pnpm install
235
- pnpm run td <instanceProviderURL> # instanceProviderURL can be provided via an instanceProviderConfig.json file. The entire command can be substituted by writing a nova instance ip into a file named .env.local
236
- pnpm run dev # Start Storybook development server
256
+ pnpm td <instanceProviderURL> # instanceProviderURL can be provided via an instanceProviderConfig.json file. The entire command can be substituted by writing a nova instance ip into a file named .env.local
257
+ pnpm dev # Start Storybook development server
237
258
  ```
238
259
 
239
260
  instanceProviderConfig.json file:
@@ -254,7 +275,7 @@ CELL_ID=cell
254
275
  Build and test the package locally:
255
276
 
256
277
  ```bash
257
- pnpm run build
278
+ pnpm build
258
279
  pnpm pack
259
280
  pnpm add /path/to/wandelbots-wandelbots-js-react-components-x.x.x.tgz
260
281
  ```
package/dist/3d.cjs.js CHANGED
@@ -1 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./3d-BOCs0RwR.cjs`);exports.CollisionSceneRenderer=e.h,exports.LinearAxis=e.a,exports.MANUFACTURER_HOME_CONFIGS=e.n,exports.MotionGroupVisualizer=e.t,exports.PresetEnvironment=e.m,exports.Robot=e.l,exports.RobotCard=e.c,exports.SafetyZonesRenderer=e.p,exports.SupportedLinearAxis=e.o,exports.SupportedRobot=e.u,exports.TrajectoryRenderer=e.f,exports.defaultAxisConfig=e.s,exports.defaultGetModel=e.d,exports.extractManufacturer=e.r,exports.getDefaultHomeConfig=e.i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MotionGroupVisualizer-ylYruUuf.cjs");exports.CollisionSceneRenderer=e.CollisionSceneRenderer;exports.LinearAxis=e.LinearAxis;exports.MANUFACTURER_HOME_CONFIGS=e.MANUFACTURER_HOME_CONFIGS;exports.MotionGroupVisualizer=e.MotionGroupVisualizer;exports.PresetEnvironment=e.PresetEnvironment;exports.Robot=e.Robot;exports.RobotCard=e.RobotCard;exports.SafetyZonesRenderer=e.SafetyZonesRenderer;exports.SupportedLinearAxis=e.SupportedLinearAxis;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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/3d.es.js ADDED
@@ -0,0 +1,19 @@
1
+ import { C as o, L as r, M as s, h as t, P as n, b as i, R as d, S as f, c as u, f as R, T as l, a as C, d as p, e as M, g as S } from "./MotionGroupVisualizer-BoO_BDsJ.js";
2
+ export {
3
+ o as CollisionSceneRenderer,
4
+ r as LinearAxis,
5
+ s as MANUFACTURER_HOME_CONFIGS,
6
+ t as MotionGroupVisualizer,
7
+ n as PresetEnvironment,
8
+ i as Robot,
9
+ d as RobotCard,
10
+ f as SafetyZonesRenderer,
11
+ u as SupportedLinearAxis,
12
+ R as SupportedRobot,
13
+ l as TrajectoryRenderer,
14
+ C as defaultAxisConfig,
15
+ p as defaultGetModel,
16
+ M as extractManufacturer,
17
+ S as getDefaultHomeConfig
18
+ };
19
+ //# sourceMappingURL=3d.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,81 @@
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
@@ -0,0 +1 @@
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;"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
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"}