@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.
- package/README.md +25 -4
- package/dist/3d.cjs.js +2 -1
- package/dist/3d.cjs.js.map +1 -0
- package/dist/3d.es.js +19 -0
- package/dist/3d.es.js.map +1 -0
- package/dist/LoadingCover-B3UN1lnU.js +81 -0
- package/dist/LoadingCover-B3UN1lnU.js.map +1 -0
- package/dist/LoadingCover-DXcsXWDy.cjs +2 -0
- package/dist/LoadingCover-DXcsXWDy.cjs.map +1 -0
- package/dist/MotionGroupVisualizer-BoO_BDsJ.js +1407 -0
- package/dist/MotionGroupVisualizer-BoO_BDsJ.js.map +1 -0
- package/dist/MotionGroupVisualizer-ylYruUuf.cjs +2 -0
- package/dist/MotionGroupVisualizer-ylYruUuf.cjs.map +1 -0
- package/dist/WandelscriptEditor-6sAoniLC.cjs +2 -0
- package/dist/WandelscriptEditor-6sAoniLC.cjs.map +1 -0
- package/dist/WandelscriptEditor-kWC2VyG_.js +140 -0
- package/dist/WandelscriptEditor-kWC2VyG_.js.map +1 -0
- package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs +5 -0
- package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs.map +1 -0
- package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js +4217 -0
- package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js.map +1 -0
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +2 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +2 -2
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +2 -2
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
- package/dist/components/jogging/JoggingStore.d.ts +11 -5
- package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
- package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts +16 -0
- package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts.map +1 -0
- package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts +45 -0
- package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +1 -0
- package/dist/core.cjs.js +2 -1
- package/dist/core.cjs.js.map +1 -0
- package/dist/core.es.js +54 -0
- package/dist/core.es.js.map +1 -0
- package/dist/externalizeComponent-B98tgTPP.cjs +24 -0
- package/dist/externalizeComponent-B98tgTPP.cjs.map +1 -0
- package/dist/externalizeComponent-BOqKMZMc.js +526 -0
- package/dist/externalizeComponent-BOqKMZMc.js.map +1 -0
- package/dist/index.cjs.js +2 -1
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +72 -0
- package/dist/index.es.js.map +1 -0
- package/dist/interpolation-CkcF45RM.js +7167 -0
- package/dist/interpolation-CkcF45RM.js.map +1 -0
- package/dist/interpolation-Cz4R9uG8.cjs +20 -0
- package/dist/interpolation-Cz4R9uG8.cjs.map +1 -0
- package/dist/lib/ConnectedMotionGroup.d.ts +1 -0
- package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -1
- package/dist/lib/MotionStreamConnection.d.ts +1 -0
- package/dist/lib/MotionStreamConnection.d.ts.map +1 -1
- package/dist/themes/createDarkTheme.d.ts.map +1 -1
- package/dist/themes/themeTypes.d.ts +4 -0
- package/dist/themes/themeTypes.d.ts.map +1 -1
- package/dist/theming-BgfhMFqK.cjs +115 -0
- package/dist/theming-BgfhMFqK.cjs.map +1 -0
- package/dist/theming-BnMMTVZV.js +22360 -0
- package/dist/theming-BnMMTVZV.js.map +1 -0
- package/dist/wandelscript.cjs.js +2 -0
- package/dist/wandelscript.cjs.js.map +1 -0
- package/dist/wandelscript.d.ts +2 -0
- package/dist/wandelscript.d.ts.map +1 -0
- package/dist/wandelscript.es.js +5 -0
- package/dist/wandelscript.es.js.map +1 -0
- package/package.json +31 -22
- package/src/components/3d-viewport/CoordinateSystemTransform.tsx +18 -29
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +151 -24
- package/src/components/3d-viewport/TrajectoryRenderer.tsx +8 -8
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
- package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
- package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +2 -2
- package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
- package/src/components/jogging/JoggingStore.ts +5 -5
- package/src/components/utils/interpolation.test.ts +3 -3
- package/src/components/wandelscript-editor/WandelscriptEditor.tsx +142 -0
- package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +62 -0
- package/src/index.ts +1 -0
- package/src/lib/ConnectedMotionGroup.ts +5 -0
- package/src/lib/MotionStreamConnection.ts +5 -0
- package/src/themes/createDarkTheme.ts +22 -1
- package/src/themes/themeTypes.ts +5 -0
- package/src/wandelscript.ts +2 -0
- package/dist/3d-BOCs0RwR.cjs +0 -2
- package/dist/3d-BOCs0RwR.cjs.map +0 -1
- package/dist/3d-BTtdSlR9.js +0 -1206
- package/dist/3d-BTtdSlR9.js.map +0 -1
- package/dist/3d.esm.js +0 -2
- package/dist/auth0-spa-js.production.esm-8ppNz0la.js +0 -5007
- package/dist/auth0-spa-js.production.esm-8ppNz0la.js.map +0 -1
- package/dist/auth0-spa-js.production.esm-cNFf2AtX.cjs +0 -5
- package/dist/auth0-spa-js.production.esm-cNFf2AtX.cjs.map +0 -1
- package/dist/core-DtLSGTAb.js +0 -18258
- package/dist/core-DtLSGTAb.js.map +0 -1
- package/dist/core-DufB-Zu5.cjs +0 -52
- package/dist/core-DufB-Zu5.cjs.map +0 -1
- package/dist/core.esm.js +0 -3
- package/dist/index.esm.js +0 -4
- package/dist/interpolation-BmgrXVQ7.js +0 -5859
- package/dist/interpolation-BmgrXVQ7.js.map +0 -1
- package/dist/interpolation-Cz29Pgpr.cjs +0 -8
- 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
|
|
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
|
|
236
|
-
pnpm
|
|
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
|
|
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
|
|
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"}
|