@wandelbots/wandelbots-js-react-components 3.4.0-pr.feat-add-yaskawa-gp200s.438.0503e4b → 3.4.0-pr.feat-yaskawa-gp200s.437.1b5737e
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 +61 -10
- package/dist/3d.cjs.js +2 -0
- package/dist/3d.cjs.js.map +1 -0
- package/dist/3d.d.ts +11 -0
- package/dist/3d.d.ts.map +1 -0
- package/dist/3d.es.js +16 -0
- package/dist/3d.es.js.map +1 -0
- package/dist/LoadingCover-Dr9hDTku.js +87 -0
- package/dist/LoadingCover-Dr9hDTku.js.map +1 -0
- package/dist/LoadingCover-r2yhJZF9.cjs +2 -0
- package/dist/LoadingCover-r2yhJZF9.cjs.map +1 -0
- package/dist/WandelscriptEditor-Dj7TBCkF.cjs +2 -0
- package/dist/WandelscriptEditor-Dj7TBCkF.cjs.map +1 -0
- package/dist/WandelscriptEditor-DnJvITTA.js +140 -0
- package/dist/WandelscriptEditor-DnJvITTA.js.map +1 -0
- package/dist/auth0-spa-js.production.esm-9WdmjTxR.js +1429 -0
- package/dist/auth0-spa-js.production.esm-9WdmjTxR.js.map +1 -0
- package/dist/auth0-spa-js.production.esm-BcLLh1tx.cjs +5 -0
- package/dist/auth0-spa-js.production.esm-BcLLh1tx.cjs.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.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +1 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +1 -1
- package/dist/components/ProgramStateIndicator.d.ts +3 -3
- package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
- package/dist/components/RobotCard.d.ts +4 -3
- package/dist/components/RobotCard.d.ts.map +1 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +7 -0
- package/dist/components/jogging/JoggingBlocked.d.ts.map +1 -0
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts +1 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
- package/dist/components/jogging/JoggingStore.d.ts +10 -5
- package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts +2 -2
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
- package/dist/components/jogging/PoseJointValues.d.ts +1 -2
- package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
- package/dist/components/robots/DHRobot.d.ts.map +1 -1
- package/dist/components/robots/Robot.d.ts +1 -1
- package/dist/components/robots/Robot.d.ts.map +1 -1
- package/dist/components/robots/RobotAnimator.d.ts +2 -2
- package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
- package/dist/components/robots/SupportedRobot.d.ts +3 -3
- package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts +1 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts +2 -2
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyBar.d.ts +3 -3
- package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts +2 -2
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
- package/dist/components/utils/errorHandling.d.ts.map +1 -1
- package/dist/components/utils/errorHandling.test.d.ts +2 -0
- package/dist/components/utils/errorHandling.test.d.ts.map +1 -0
- package/dist/core.cjs.js +2 -0
- package/dist/core.cjs.js.map +1 -0
- package/dist/core.d.ts +33 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.es.js +54 -0
- package/dist/core.es.js.map +1 -0
- package/dist/index-CAib4NKw.js +2261 -0
- package/dist/index-CAib4NKw.js.map +1 -0
- package/dist/index-CqMZL0FV.cjs +2 -0
- package/dist/index-CqMZL0FV.cjs.map +1 -0
- package/dist/index-CxasuX80.js +5212 -0
- package/dist/index-CxasuX80.js.map +1 -0
- package/dist/index-DxwppshT.cjs +29 -0
- package/dist/index-DxwppshT.cjs.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +3 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +69 -0
- package/dist/index.es.js.map +1 -0
- package/dist/lib/ConnectedMotionGroup.d.ts +90 -0
- package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -0
- package/dist/lib/JoggerConnection.d.ts +113 -0
- package/dist/lib/JoggerConnection.d.ts.map +1 -0
- package/dist/lib/JoggerConnection.test.d.ts +2 -0
- package/dist/lib/JoggerConnection.test.d.ts.map +1 -0
- package/dist/lib/MotionStreamConnection.d.ts +24 -0
- package/dist/lib/MotionStreamConnection.d.ts.map +1 -0
- package/dist/lib/MotionStreamConnection.test.d.ts +2 -0
- package/dist/lib/MotionStreamConnection.test.d.ts.map +1 -0
- package/dist/lib/motionStateUpdate.d.ts +7 -0
- package/dist/lib/motionStateUpdate.d.ts.map +1 -0
- package/dist/lib/motionStateUpdate.test.d.ts +2 -0
- package/dist/lib/motionStateUpdate.test.d.ts.map +1 -0
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs +2 -0
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs.map +1 -0
- package/dist/manufacturerHomePositions-CgaG5vaK.js +976 -0
- package/dist/manufacturerHomePositions-CgaG5vaK.js.map +1 -0
- package/dist/theming-BQcKj8Gp.cjs +133 -0
- package/dist/theming-BQcKj8Gp.cjs.map +1 -0
- package/dist/theming-Bafjg0Wg.js +23460 -0
- package/dist/theming-Bafjg0Wg.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 +49 -21
- package/src/3d.ts +15 -0
- package/src/components/3d-viewport/CoordinateSystemTransform.tsx +1 -1
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +1 -2
- 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 +1 -1
- package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
- package/src/components/AppHeader.md +1 -1
- package/src/components/ProgramStateIndicator.tsx +3 -6
- package/src/components/RobotCard.tsx +4 -7
- package/src/components/jogging/JoggingBlocked.tsx +37 -0
- package/src/components/jogging/JoggingCartesianTab.tsx +13 -11
- package/src/components/jogging/JoggingJointLimitDetector.tsx +2 -2
- package/src/components/jogging/JoggingJointTab.tsx +4 -4
- package/src/components/jogging/JoggingOptions.tsx +6 -5
- package/src/components/jogging/JoggingPanel.tsx +6 -3
- package/src/components/jogging/JoggingStore.ts +66 -39
- package/src/components/jogging/PoseCartesianValues.tsx +3 -4
- package/src/components/jogging/PoseJointValues.tsx +3 -4
- package/src/components/robots/DHRobot.tsx +2 -3
- package/src/components/robots/Robot.tsx +1 -1
- package/src/components/robots/RobotAnimator.test.tsx +7 -22
- package/src/components/robots/RobotAnimator.tsx +8 -13
- package/src/components/robots/SupportedRobot.tsx +3 -6
- package/src/components/robots/manufacturerHomePositions.ts +1 -1
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +4 -2
- package/src/components/safetyBar/OperationModeIndicator.tsx +7 -5
- package/src/components/safetyBar/SafetyBar.tsx +3 -6
- package/src/components/safetyBar/SafetyStateIndicator.tsx +9 -7
- package/src/components/utils/errorHandling.test.ts +41 -0
- package/src/components/utils/errorHandling.ts +4 -0
- package/src/core.ts +33 -0
- package/src/i18n/locales/de/translations.json +3 -0
- package/src/i18n/locales/en/translations.json +3 -0
- package/src/index.ts +4 -43
- package/src/lib/ConnectedMotionGroup.ts +444 -0
- package/src/lib/JoggerConnection.test.ts +120 -0
- package/src/lib/JoggerConnection.ts +674 -0
- package/src/lib/MotionStreamConnection.test.ts +23 -0
- package/src/lib/MotionStreamConnection.ts +189 -0
- package/src/lib/motionStateUpdate.test.ts +28 -0
- package/src/lib/motionStateUpdate.ts +117 -0
- package/src/wandelscript.ts +2 -0
- package/dist/auth0-spa-js.production.esm-1QXzndwB.js +0 -950
- package/dist/auth0-spa-js.production.esm-1QXzndwB.js.map +0 -1
- package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs +0 -5
- package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs.map +0 -1
- package/dist/index.cjs +0 -155
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -34927
- package/dist/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,19 +6,61 @@ React UI components for building robotics applications on the [Wandelbots Nova p
|
|
|
6
6
|
|
|
7
7
|
Built with TypeScript, Material-UI, and React Three Fiber. Provides robot control interfaces, 3D visualizations, and automation components that integrate with the Nova ecosystem.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Interactive Documentation
|
|
10
|
+
|
|
11
|
+
See the [Storybook](https://wandelbotsgmbh.github.io/wandelbots-js-react-components) for interactive examples and API documentation.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
10
14
|
|
|
11
15
|
```bash
|
|
12
|
-
npm install @wandelbots/wandelbots-js-react-components
|
|
16
|
+
npm install @wandelbots/wandelbots-js-react-components react react-dom @mui/material @emotion/react @emotion/styled
|
|
13
17
|
```
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
Some modules require extra dependencies, like three.js. If you don't need 3D rendering in your application, always import from `/core`.
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
```typescript
|
|
22
|
+
import {
|
|
23
|
+
SafetyBar,
|
|
24
|
+
JoggingPanel,
|
|
25
|
+
DataGrid,
|
|
26
|
+
Timer,
|
|
27
|
+
} from "@wandelbots/wandelbots-js-react-components/core"
|
|
28
|
+
```
|
|
18
29
|
|
|
19
|
-
|
|
30
|
+
For 3D-enabled components, use `/3d`:
|
|
20
31
|
|
|
21
|
-
|
|
32
|
+
```typescript
|
|
33
|
+
import { Robot, RobotCard } from "@wandelbots/wandelbots-js-react-components/3d"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For the code editor, use `/wandelscript`:
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import { WandelscriptEditor } from "@wandelbots/wandelbots-js-react-components/wandelscript"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can also import from the top-level package, but then you'll need to provide all optional dependencies:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install @wandelbots/wandelbots-js-react-components \
|
|
46
|
+
react react-dom \
|
|
47
|
+
@mui/material @mui/icons-material @emotion/react @emotion/styled \
|
|
48
|
+
three @react-three/fiber @react-three/drei three-stdlib \
|
|
49
|
+
@monaco-editor/react shiki @shikijs/monaco
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Available Entry Points:**
|
|
53
|
+
|
|
54
|
+
| Entry Point | Components | Required Peer Dependencies |
|
|
55
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
56
|
+
| **Main** (`.`) | All components | React 18+, MUI v6/v7, @emotion/react, @emotion/styled, @mui/icons-material + all below |
|
|
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 |
|
|
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 |
|
|
60
|
+
|
|
61
|
+
## 2.x to 3.x Migration Guide
|
|
62
|
+
|
|
63
|
+
See [Migration Guide](https://wandelbotsgmbh.github.io/wandelbots-js-react-components/?path=/docs/migration-guide--docs) for assistance.
|
|
22
64
|
|
|
23
65
|
## Components
|
|
24
66
|
|
|
@@ -30,7 +72,7 @@ Manual robot control interfaces.
|
|
|
30
72
|
|
|
31
73
|
- Dual-mode operation (Cartesian & Joint space)
|
|
32
74
|
- Real-time velocity control
|
|
33
|
-
- Multiple coordinate systems support
|
|
75
|
+
- Multiple coordinate systems support (Robot base or Tool)
|
|
34
76
|
|
|
35
77
|
**Individual Jogging Controls**
|
|
36
78
|
|
|
@@ -152,15 +194,24 @@ Components integrate with the Wandelbots Nova ecosystem:
|
|
|
152
194
|
|
|
153
195
|
### Prerequisites
|
|
154
196
|
|
|
197
|
+
**Required for all entry points:**
|
|
198
|
+
|
|
155
199
|
- React 18+ or 19+
|
|
156
200
|
- Material-UI v6 or v7
|
|
157
201
|
- @emotion/react and @emotion/styled
|
|
158
202
|
|
|
159
|
-
###
|
|
203
|
+
### Additional Peer Dependencies
|
|
204
|
+
|
|
205
|
+
**For `/3d` (3D visualization components):**
|
|
206
|
+
|
|
207
|
+
- three
|
|
208
|
+
- @react-three/fiber
|
|
209
|
+
- @react-three/drei
|
|
210
|
+
- three-stdlib
|
|
160
211
|
|
|
161
|
-
|
|
212
|
+
**For `/wandelscript` (code editor):**
|
|
162
213
|
|
|
163
|
-
|
|
214
|
+
- @monaco-editor/react
|
|
164
215
|
|
|
165
216
|
## Development
|
|
166
217
|
|
package/dist/3d.cjs.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manufacturerHomePositions-Ca80ycLi.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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3d.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/3d.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { C as o, M as r, P as t, b as s, R as n, S as d, c as R, T as f, a as C, d as i, e as l, g as u } from "./manufacturerHomePositions-CgaG5vaK.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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3d.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { A as a, j as t } from "./index-CAib4NKw.js";
|
|
2
|
+
import { useTheme as c, Stack as i, CircularProgress as m, 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
|
+
function h(e) {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.stringify(e);
|
|
8
|
+
} catch {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function S(e, r) {
|
|
13
|
+
throw new Error(r + ` ${JSON.stringify(e)}`);
|
|
14
|
+
}
|
|
15
|
+
function x(e) {
|
|
16
|
+
var r, s, o, n;
|
|
17
|
+
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}`;
|
|
18
|
+
}
|
|
19
|
+
const T = (e) => {
|
|
20
|
+
const r = e.softTimeout || 3e3, [s, o] = u(!1), n = c();
|
|
21
|
+
return f(() => {
|
|
22
|
+
const l = setTimeout(() => {
|
|
23
|
+
o(!0);
|
|
24
|
+
}, r);
|
|
25
|
+
return () => clearTimeout(l);
|
|
26
|
+
}), /* @__PURE__ */ t.jsx(
|
|
27
|
+
i,
|
|
28
|
+
{
|
|
29
|
+
width: "100%",
|
|
30
|
+
height: "100%",
|
|
31
|
+
alignItems: "center",
|
|
32
|
+
justifyContent: "center",
|
|
33
|
+
sx: { color: n.palette.text.primary },
|
|
34
|
+
children: e.error ? /* @__PURE__ */ t.jsx(
|
|
35
|
+
w,
|
|
36
|
+
{
|
|
37
|
+
loadingMessage: e.message,
|
|
38
|
+
error: e.error
|
|
39
|
+
}
|
|
40
|
+
) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
|
|
41
|
+
/* @__PURE__ */ t.jsx(m, { sx: { marginBottom: "24px" } }),
|
|
42
|
+
!!e.message && /* @__PURE__ */ t.jsx("div", { children: e.message }),
|
|
43
|
+
/* @__PURE__ */ t.jsx(
|
|
44
|
+
i,
|
|
45
|
+
{
|
|
46
|
+
sx: {
|
|
47
|
+
visibility: s ? "visible" : "hidden",
|
|
48
|
+
marginTop: "1rem",
|
|
49
|
+
color: n.palette.text.secondary
|
|
50
|
+
},
|
|
51
|
+
children: "This is taking longer than expected..."
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
] })
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}, w = (e) => {
|
|
58
|
+
const r = x(e.error), s = e.error instanceof Error ? e.error.stack : null, o = c();
|
|
59
|
+
return /* @__PURE__ */ t.jsxs(
|
|
60
|
+
i,
|
|
61
|
+
{
|
|
62
|
+
sx: {
|
|
63
|
+
maxHeight: "100%",
|
|
64
|
+
maxWidth: "min(100%, 800px)",
|
|
65
|
+
padding: 2,
|
|
66
|
+
overflow: "auto",
|
|
67
|
+
color: o.palette.error.main,
|
|
68
|
+
"& pre": {
|
|
69
|
+
whiteSpace: "pre-wrap",
|
|
70
|
+
wordBreak: "break-word",
|
|
71
|
+
paddingBottom: "3rem"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
children: [
|
|
75
|
+
(e.loadingMessage ? `Error while ${d(g(e.loadingMessage))} - ` : "") + r,
|
|
76
|
+
/* @__PURE__ */ t.jsx("br", {}),
|
|
77
|
+
s && /* @__PURE__ */ t.jsx("pre", { children: s })
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
export {
|
|
83
|
+
T as L,
|
|
84
|
+
w as a,
|
|
85
|
+
S as b
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=LoadingCover-Dr9hDTku.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingCover-Dr9hDTku.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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const t=require("./index-DxwppshT.cjs"),n=require("@mui/material"),x=require("lodash-es"),a=require("react");function l(e){try{return JSON.stringify(e)}catch{return}}function m(e,s){throw new Error(s+` ${JSON.stringify(e)}`)}function g(e){var s,r,o,i;return e instanceof t.AxiosError&&e.code==="ERR_NETWORK"?"Failed to connect to the server. Please check your internet connection.":e instanceof t.AxiosError&&e.response?`${(s=e.response)==null?void 0:s.status} ${(r=e.response)==null?void 0:r.statusText} from ${(o=e.response)==null?void 0:o.config.url}: ${JSON.stringify((i=e.response)==null?void 0:i.data)}`:e instanceof Error?e.message:`Unexpected error: ${l(e)||e}`}const d=e=>{const s=e.softTimeout||3e3,[r,o]=a.useState(!1),i=n.useTheme();return a.useEffect(()=>{const u=setTimeout(()=>{o(!0)},s);return()=>clearTimeout(u)}),t.jsxRuntimeExports.jsx(n.Stack,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",sx:{color:i.palette.text.primary},children:e.error?t.jsxRuntimeExports.jsx(c,{loadingMessage:e.message,error:e.error}):t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(n.CircularProgress,{sx:{marginBottom:"24px"}}),!!e.message&&t.jsxRuntimeExports.jsx("div",{children:e.message}),t.jsxRuntimeExports.jsx(n.Stack,{sx:{visibility:r?"visible":"hidden",marginTop:"1rem",color:i.palette.text.secondary},children:"This is taking longer than expected..."})]})})},c=e=>{const s=g(e.error),r=e.error instanceof Error?e.error.stack:null,o=n.useTheme();return t.jsxRuntimeExports.jsxs(n.Stack,{sx:{maxHeight:"100%",maxWidth:"min(100%, 800px)",padding:2,overflow:"auto",color:o.palette.error.main,"& pre":{whiteSpace:"pre-wrap",wordBreak:"break-word",paddingBottom:"3rem"}},children:[(e.loadingMessage?`Error while ${x.lowerFirst(n.capitalize(e.loadingMessage))} - `:"")+s,t.jsxRuntimeExports.jsx("br",{}),r&&t.jsxRuntimeExports.jsx("pre",{children:r})]})};exports.LoadingCover=d;exports.LoadingErrorMessage=c;exports.assertUnreachable=m;
|
|
2
|
+
//# sourceMappingURL=LoadingCover-r2yhJZF9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingCover-r2yhJZF9.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":"0HAgBO,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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var w=Object.create;var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var v=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of f(t))!b.call(e,i)&&i!==n&&p(e,i,{get:()=>t[i],enumerable:!(s=k(t,i))||s.enumerable});return e};var c=(e,t,n)=>(n=e!=null?w(x(e)):{},v(t||!e||!e.__esModule?p(n,"default",{value:e,enumerable:!0}):n,e));const r=require("./index-DxwppshT.cjs"),u=require("react"),T=require("@mui/material"),y=require("./LoadingCover-r2yhJZF9.cjs"),C={$schema:"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",name:"wandelscript",patterns:[{include:"#keywords"},{include:"#strings"},{include:"#comments"},{include:"#functions"}],repository:{keywords:{patterns:[{name:"keyword.control.flow.wandelscript",match:"\\b(move|via|to|interrupt|def|False|True|for|if|else|elif|while|return|switch|activate|deactivate|print|and|or|not)\\b"}]},strings:{name:"string.quoted.double.wandelscript",begin:'"',end:'"',patterns:[{name:"constant.character.escape.wandelscript",match:"\\\\."}]},comments:{patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.wandelscript"}},end:"$",name:"comment.line.number-sign.wandelscript"}]},functions:{patterns:[{match:"[a-zA-Z_-]+\\(",name:"entity.name.function.wandelscript"}]}},scopeName:"source.wandelscript"},E=u.lazy(()=>import("@monaco-editor/react"));let l=null;async function S(){if(!l){const[{createHighlighter:e},{shikiToMonaco:t}]=await Promise.all([import("shiki"),import("@shikijs/monaco")]);l={shiki:await e({langs:[C],themes:["dark-plus","light-plus"]}),shikiToMonaco:t}}return l}const j=r.externalizeComponent(e=>{const t=T.useTheme(),[n,s]=u.useState("dark-plus"),i=t.palette.mode==="dark"?"dark-plus":"light-plus";async function g(a){var m,d;a.languages.register({id:"wandelscript"}),a.languages.setLanguageConfiguration("wandelscript",{comments:{lineComment:"#"},brackets:[["(",")"],["[","]"]],autoClosingPairs:[{open:"[",close:"]"},{open:"(",close:")"}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"}]});const{shiki:o,shikiToMonaco:h}=await S();h(o,a),a.editor.defineTheme(i,((d=(m=t.componentsExt)==null?void 0:m.WandelscriptEditor)==null?void 0:d.monacoTheme)??{base:t.palette.mode==="dark"?"vs-dark":"vs",inherit:!0,rules:[],colors:{}}),e.monacoSetup&&e.monacoSetup(a),s(i)}return r.jsxRuntimeExports.jsx(u.Suspense,{fallback:r.jsxRuntimeExports.jsx(y.LoadingCover,{}),children:r.jsxRuntimeExports.jsx(E,{value:e.code,onMount:(a,o)=>{g(o)},onChange:e.onChange,defaultLanguage:"wandelscript",theme:n,options:{minimap:{enabled:!1},wordWrap:"on",automaticLayout:!0,...e.monacoOptions}})})});exports.WandelscriptEditor=j;
|
|
2
|
+
//# sourceMappingURL=WandelscriptEditor-Dj7TBCkF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WandelscriptEditor-Dj7TBCkF.cjs","sources":["../src/components/wandelscript-editor/wandelscript.tmLanguage.ts","../src/components/wandelscript-editor/WandelscriptEditor.tsx"],"sourcesContent":["export default {\n $schema:\n \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n name: \"wandelscript\",\n patterns: [\n {\n include: \"#keywords\",\n },\n {\n include: \"#strings\",\n },\n {\n include: \"#comments\",\n },\n {\n include: \"#functions\",\n },\n ],\n repository: {\n keywords: {\n patterns: [\n {\n name: \"keyword.control.flow.wandelscript\",\n match:\n \"\\\\b(move|via|to|interrupt|def|False|True|for|if|else|elif|while|return|switch|activate|deactivate|print|and|or|not)\\\\b\",\n },\n ],\n },\n strings: {\n name: \"string.quoted.double.wandelscript\",\n begin: '\"',\n end: '\"',\n patterns: [\n {\n name: \"constant.character.escape.wandelscript\",\n match: \"\\\\\\\\.\",\n },\n ],\n },\n comments: {\n patterns: [\n {\n begin: \"#\",\n beginCaptures: {\n \"0\": { name: \"punctuation.definition.comment.wandelscript\" },\n },\n end: \"$\",\n name: \"comment.line.number-sign.wandelscript\",\n },\n ],\n },\n functions: {\n patterns: [\n {\n match: \"[a-zA-Z_-]+\\\\(\",\n name: \"entity.name.function.wandelscript\",\n },\n ],\n },\n },\n scopeName: \"source.wandelscript\",\n}\n","import type { Monaco } from \"@monaco-editor/react\"\nimport { lazy, Suspense, useState } from \"react\"\nimport type {\n BundledLanguage,\n BundledTheme,\n HighlighterGeneric,\n ShikiInternal,\n} from \"shiki\"\n\nimport { useTheme } from \"@mui/material\"\nimport type { editor } from \"monaco-editor\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { LoadingCover } from \"../LoadingCover\"\nimport wandelscriptTextmateGrammar from \"./wandelscript.tmLanguage\"\n\ntype WandelscriptEditorProps = {\n /** The current Wandelscript content of the code editor (controlled component) */\n code?: string\n /** What to do when the user edits the code */\n onChange?: (\n code: string | undefined,\n ev: editor.IModelContentChangedEvent,\n ) => void\n /** Options for monaco editor */\n monacoOptions?: editor.IEditorOptions\n /** Callback to further configure monaco on startup if needed */\n monacoSetup?: (monaco: Monaco) => void\n}\n\nconst Editor = lazy(() => import(\"@monaco-editor/react\"))\n\nlet preparedShiki: {\n shiki: HighlighterGeneric<BundledLanguage, BundledTheme>\n shikiToMonaco: (\n shiki: HighlighterGeneric<BundledLanguage, BundledTheme>,\n monaco: Monaco,\n ) => void\n} | null = null\n\nasync function getShiki() {\n if (!preparedShiki) {\n const [{ createHighlighter }, { shikiToMonaco }] = await Promise.all([\n import(\"shiki\"),\n import(\"@shikijs/monaco\"),\n ])\n\n const shiki = await createHighlighter({\n // Our textmate grammar doesn't quite conform to the expected type\n // here; I'm not sure what the missing properties mean exactly\n langs: [wandelscriptTextmateGrammar as any],\n themes: [\"dark-plus\", \"light-plus\"],\n })\n\n preparedShiki = {\n shiki,\n shikiToMonaco: shikiToMonaco as unknown as (\n shiki: ShikiInternal<any, any>,\n monaco: typeof import(\"monaco-editor\"),\n ) => void,\n }\n }\n\n return preparedShiki\n}\n\n/** A Monaco (VSCode-style) embedded code editor with Wandelscript syntax highlighting */\nexport const WandelscriptEditor = externalizeComponent(\n (props: WandelscriptEditorProps) => {\n const theme = useTheme()\n const [activeShikiTheme, setActiveShikiTheme] =\n useState<BundledTheme>(\"dark-plus\")\n const targetShikiTheme =\n theme.palette.mode === \"dark\" ? \"dark-plus\" : \"light-plus\"\n\n async function setupEditor(monaco: Monaco) {\n // Register and configure the Wandelscript language\n monaco.languages.register({ id: \"wandelscript\" })\n\n monaco.languages.setLanguageConfiguration(\"wandelscript\", {\n comments: {\n lineComment: \"#\",\n },\n brackets: [\n [\"(\", \")\"],\n [\"[\", \"]\"],\n ],\n autoClosingPairs: [\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n ],\n surroundingPairs: [\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n ],\n })\n\n const { shiki, shikiToMonaco } = await getShiki()\n\n // Monaco doesn't support TextMate grammar config directly, so we\n // use Shiki as an intermediary\n shikiToMonaco(shiki, monaco)\n\n // Override the generated shiki theme to use shiki syntax highlighting\n // but vscode colors\n monaco.editor.defineTheme(\n targetShikiTheme,\n theme.componentsExt?.WandelscriptEditor?.monacoTheme ?? {\n base: theme.palette.mode === \"dark\" ? \"vs-dark\" : \"vs\",\n inherit: true,\n rules: [],\n colors: {},\n },\n )\n\n if (props.monacoSetup) {\n props.monacoSetup(monaco)\n }\n\n setActiveShikiTheme(targetShikiTheme)\n }\n\n return (\n <Suspense fallback={<LoadingCover />}>\n <Editor\n value={props.code}\n onMount={(_editor, monaco) => {\n setupEditor(monaco)\n }}\n onChange={props.onChange}\n defaultLanguage=\"wandelscript\"\n theme={activeShikiTheme}\n options={{\n minimap: { enabled: false },\n wordWrap: \"on\",\n automaticLayout: true,\n ...props.monacoOptions,\n }}\n />\n </Suspense>\n )\n },\n)\n"],"names":["wandelscriptTextmateGrammar","Editor","lazy","preparedShiki","getShiki","createHighlighter","shikiToMonaco","WandelscriptEditor","externalizeComponent","props","theme","useTheme","activeShikiTheme","setActiveShikiTheme","useState","targetShikiTheme","setupEditor","monaco","shiki","_b","_a","jsx","Suspense","LoadingCover","_editor"],"mappings":"ulBAAAA,EAAe,CACb,QACE,iFACF,KAAM,eACN,SAAU,CACR,CACE,QAAS,WAAA,EAEX,CACE,QAAS,UAAA,EAEX,CACE,QAAS,WAAA,EAEX,CACE,QAAS,YAAA,CACX,EAEF,WAAY,CACV,SAAU,CACR,SAAU,CACR,CACE,KAAM,oCACN,MACE,wHAAA,CACJ,CACF,EAEF,QAAS,CACP,KAAM,oCACN,MAAO,IACP,IAAK,IACL,SAAU,CACR,CACE,KAAM,yCACN,MAAO,OAAA,CACT,CACF,EAEF,SAAU,CACR,SAAU,CACR,CACE,MAAO,IACP,cAAe,CACb,EAAK,CAAE,KAAM,6CAAA,CAA8C,EAE7D,IAAK,IACL,KAAM,uCAAA,CACR,CACF,EAEF,UAAW,CACT,SAAU,CACR,CACE,MAAO,iBACP,KAAM,mCAAA,CACR,CACF,CACF,EAEF,UAAW,qBACb,EChCMC,EAASC,EAAAA,KAAK,IAAM,OAAO,sBAAsB,CAAC,EAExD,IAAIC,EAMO,KAEX,eAAeC,GAAW,CACxB,GAAI,CAACD,EAAe,CAClB,KAAM,CAAC,CAAE,kBAAAE,GAAqB,CAAE,cAAAC,EAAe,EAAI,MAAM,QAAQ,IAAI,CACnE,OAAO,OAAO,EACd,OAAO,iBAAiB,CAAA,CACzB,EASDH,EAAgB,CACd,MARY,MAAME,EAAkB,CAGpC,MAAO,CAACL,CAAkC,EAC1C,OAAQ,CAAC,YAAa,YAAY,CAAA,CACnC,EAIC,cAAAM,CAAA,CAKJ,CAEA,OAAOH,CACT,CAGO,MAAMI,EAAqBC,EAAAA,qBAC/BC,GAAmC,CAClC,MAAMC,EAAQC,EAAAA,SAAA,EACR,CAACC,EAAkBC,CAAmB,EAC1CC,EAAAA,SAAuB,WAAW,EAC9BC,EACJL,EAAM,QAAQ,OAAS,OAAS,YAAc,aAEhD,eAAeM,EAAYC,EAAgB,SAEzCA,EAAO,UAAU,SAAS,CAAE,GAAI,eAAgB,EAEhDA,EAAO,UAAU,yBAAyB,eAAgB,CACxD,SAAU,CACR,YAAa,GAAA,EAEf,SAAU,CACR,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,CAAA,EAEX,iBAAkB,CAChB,CAAE,KAAM,IAAK,MAAO,GAAA,EACpB,CAAE,KAAM,IAAK,MAAO,GAAA,CAAI,EAE1B,iBAAkB,CAChB,CAAE,KAAM,IAAK,MAAO,GAAA,EACpB,CAAE,KAAM,IAAK,MAAO,GAAA,CAAI,CAC1B,CACD,EAED,KAAM,CAAE,MAAAC,EAAO,cAAAZ,CAAA,EAAkB,MAAMF,EAAA,EAIvCE,EAAcY,EAAOD,CAAM,EAI3BA,EAAO,OAAO,YACZF,IACAI,GAAAC,EAAAV,EAAM,gBAAN,YAAAU,EAAqB,qBAArB,YAAAD,EAAyC,cAAe,CACtD,KAAMT,EAAM,QAAQ,OAAS,OAAS,UAAY,KAClD,QAAS,GACT,MAAO,CAAA,EACP,OAAQ,CAAA,CAAC,CACX,EAGED,EAAM,aACRA,EAAM,YAAYQ,CAAM,EAG1BJ,EAAoBE,CAAgB,CACtC,CAEA,OACEM,EAAAA,kBAAAA,IAACC,EAAAA,SAAA,CAAS,SAAUD,EAAAA,kBAAAA,IAACE,iBAAa,EAChC,SAAAF,EAAAA,kBAAAA,IAACpB,EAAA,CACC,MAAOQ,EAAM,KACb,QAAS,CAACe,EAASP,IAAW,CAC5BD,EAAYC,CAAM,CACpB,EACA,SAAUR,EAAM,SAChB,gBAAgB,eAChB,MAAOG,EACP,QAAS,CACP,QAAS,CAAE,QAAS,EAAA,EACpB,SAAU,KACV,gBAAiB,GACjB,GAAGH,EAAM,aAAA,CACX,CAAA,EAEJ,CAEJ,CACF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { e as p, j as i } from "./index-CAib4NKw.js";
|
|
2
|
+
import { lazy as h, useState as g, Suspense as w } from "react";
|
|
3
|
+
import { useTheme as f } from "@mui/material";
|
|
4
|
+
import { L as k } from "./LoadingCover-Dr9hDTku.js";
|
|
5
|
+
const b = {
|
|
6
|
+
$schema: "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
|
7
|
+
name: "wandelscript",
|
|
8
|
+
patterns: [
|
|
9
|
+
{
|
|
10
|
+
include: "#keywords"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
include: "#strings"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
include: "#comments"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
include: "#functions"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
repository: {
|
|
23
|
+
keywords: {
|
|
24
|
+
patterns: [
|
|
25
|
+
{
|
|
26
|
+
name: "keyword.control.flow.wandelscript",
|
|
27
|
+
match: "\\b(move|via|to|interrupt|def|False|True|for|if|else|elif|while|return|switch|activate|deactivate|print|and|or|not)\\b"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
strings: {
|
|
32
|
+
name: "string.quoted.double.wandelscript",
|
|
33
|
+
begin: '"',
|
|
34
|
+
end: '"',
|
|
35
|
+
patterns: [
|
|
36
|
+
{
|
|
37
|
+
name: "constant.character.escape.wandelscript",
|
|
38
|
+
match: "\\\\."
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
comments: {
|
|
43
|
+
patterns: [
|
|
44
|
+
{
|
|
45
|
+
begin: "#",
|
|
46
|
+
beginCaptures: {
|
|
47
|
+
0: { name: "punctuation.definition.comment.wandelscript" }
|
|
48
|
+
},
|
|
49
|
+
end: "$",
|
|
50
|
+
name: "comment.line.number-sign.wandelscript"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
functions: {
|
|
55
|
+
patterns: [
|
|
56
|
+
{
|
|
57
|
+
match: "[a-zA-Z_-]+\\(",
|
|
58
|
+
name: "entity.name.function.wandelscript"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
scopeName: "source.wandelscript"
|
|
64
|
+
}, v = h(() => import("@monaco-editor/react"));
|
|
65
|
+
let s = null;
|
|
66
|
+
async function T() {
|
|
67
|
+
if (!s) {
|
|
68
|
+
const [{ createHighlighter: e }, { shikiToMonaco: n }] = await Promise.all([
|
|
69
|
+
import("shiki"),
|
|
70
|
+
import("@shikijs/monaco")
|
|
71
|
+
]);
|
|
72
|
+
s = {
|
|
73
|
+
shiki: await e({
|
|
74
|
+
// Our textmate grammar doesn't quite conform to the expected type
|
|
75
|
+
// here; I'm not sure what the missing properties mean exactly
|
|
76
|
+
langs: [b],
|
|
77
|
+
themes: ["dark-plus", "light-plus"]
|
|
78
|
+
}),
|
|
79
|
+
shikiToMonaco: n
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return s;
|
|
83
|
+
}
|
|
84
|
+
const j = p(
|
|
85
|
+
(e) => {
|
|
86
|
+
const n = f(), [o, l] = g("dark-plus"), r = n.palette.mode === "dark" ? "dark-plus" : "light-plus";
|
|
87
|
+
async function u(t) {
|
|
88
|
+
var c, m;
|
|
89
|
+
t.languages.register({ id: "wandelscript" }), t.languages.setLanguageConfiguration("wandelscript", {
|
|
90
|
+
comments: {
|
|
91
|
+
lineComment: "#"
|
|
92
|
+
},
|
|
93
|
+
brackets: [
|
|
94
|
+
["(", ")"],
|
|
95
|
+
["[", "]"]
|
|
96
|
+
],
|
|
97
|
+
autoClosingPairs: [
|
|
98
|
+
{ open: "[", close: "]" },
|
|
99
|
+
{ open: "(", close: ")" }
|
|
100
|
+
],
|
|
101
|
+
surroundingPairs: [
|
|
102
|
+
{ open: "[", close: "]" },
|
|
103
|
+
{ open: "(", close: ")" }
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
const { shiki: a, shikiToMonaco: d } = await T();
|
|
107
|
+
d(a, t), t.editor.defineTheme(
|
|
108
|
+
r,
|
|
109
|
+
((m = (c = n.componentsExt) == null ? void 0 : c.WandelscriptEditor) == null ? void 0 : m.monacoTheme) ?? {
|
|
110
|
+
base: n.palette.mode === "dark" ? "vs-dark" : "vs",
|
|
111
|
+
inherit: !0,
|
|
112
|
+
rules: [],
|
|
113
|
+
colors: {}
|
|
114
|
+
}
|
|
115
|
+
), e.monacoSetup && e.monacoSetup(t), l(r);
|
|
116
|
+
}
|
|
117
|
+
return /* @__PURE__ */ i.jsx(w, { fallback: /* @__PURE__ */ i.jsx(k, {}), children: /* @__PURE__ */ i.jsx(
|
|
118
|
+
v,
|
|
119
|
+
{
|
|
120
|
+
value: e.code,
|
|
121
|
+
onMount: (t, a) => {
|
|
122
|
+
u(a);
|
|
123
|
+
},
|
|
124
|
+
onChange: e.onChange,
|
|
125
|
+
defaultLanguage: "wandelscript",
|
|
126
|
+
theme: o,
|
|
127
|
+
options: {
|
|
128
|
+
minimap: { enabled: !1 },
|
|
129
|
+
wordWrap: "on",
|
|
130
|
+
automaticLayout: !0,
|
|
131
|
+
...e.monacoOptions
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
) });
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
export {
|
|
138
|
+
j as W
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=WandelscriptEditor-DnJvITTA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WandelscriptEditor-DnJvITTA.js","sources":["../src/components/wandelscript-editor/wandelscript.tmLanguage.ts","../src/components/wandelscript-editor/WandelscriptEditor.tsx"],"sourcesContent":["export default {\n $schema:\n \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n name: \"wandelscript\",\n patterns: [\n {\n include: \"#keywords\",\n },\n {\n include: \"#strings\",\n },\n {\n include: \"#comments\",\n },\n {\n include: \"#functions\",\n },\n ],\n repository: {\n keywords: {\n patterns: [\n {\n name: \"keyword.control.flow.wandelscript\",\n match:\n \"\\\\b(move|via|to|interrupt|def|False|True|for|if|else|elif|while|return|switch|activate|deactivate|print|and|or|not)\\\\b\",\n },\n ],\n },\n strings: {\n name: \"string.quoted.double.wandelscript\",\n begin: '\"',\n end: '\"',\n patterns: [\n {\n name: \"constant.character.escape.wandelscript\",\n match: \"\\\\\\\\.\",\n },\n ],\n },\n comments: {\n patterns: [\n {\n begin: \"#\",\n beginCaptures: {\n \"0\": { name: \"punctuation.definition.comment.wandelscript\" },\n },\n end: \"$\",\n name: \"comment.line.number-sign.wandelscript\",\n },\n ],\n },\n functions: {\n patterns: [\n {\n match: \"[a-zA-Z_-]+\\\\(\",\n name: \"entity.name.function.wandelscript\",\n },\n ],\n },\n },\n scopeName: \"source.wandelscript\",\n}\n","import type { Monaco } from \"@monaco-editor/react\"\nimport { lazy, Suspense, useState } from \"react\"\nimport type {\n BundledLanguage,\n BundledTheme,\n HighlighterGeneric,\n ShikiInternal,\n} from \"shiki\"\n\nimport { useTheme } from \"@mui/material\"\nimport type { editor } from \"monaco-editor\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { LoadingCover } from \"../LoadingCover\"\nimport wandelscriptTextmateGrammar from \"./wandelscript.tmLanguage\"\n\ntype WandelscriptEditorProps = {\n /** The current Wandelscript content of the code editor (controlled component) */\n code?: string\n /** What to do when the user edits the code */\n onChange?: (\n code: string | undefined,\n ev: editor.IModelContentChangedEvent,\n ) => void\n /** Options for monaco editor */\n monacoOptions?: editor.IEditorOptions\n /** Callback to further configure monaco on startup if needed */\n monacoSetup?: (monaco: Monaco) => void\n}\n\nconst Editor = lazy(() => import(\"@monaco-editor/react\"))\n\nlet preparedShiki: {\n shiki: HighlighterGeneric<BundledLanguage, BundledTheme>\n shikiToMonaco: (\n shiki: HighlighterGeneric<BundledLanguage, BundledTheme>,\n monaco: Monaco,\n ) => void\n} | null = null\n\nasync function getShiki() {\n if (!preparedShiki) {\n const [{ createHighlighter }, { shikiToMonaco }] = await Promise.all([\n import(\"shiki\"),\n import(\"@shikijs/monaco\"),\n ])\n\n const shiki = await createHighlighter({\n // Our textmate grammar doesn't quite conform to the expected type\n // here; I'm not sure what the missing properties mean exactly\n langs: [wandelscriptTextmateGrammar as any],\n themes: [\"dark-plus\", \"light-plus\"],\n })\n\n preparedShiki = {\n shiki,\n shikiToMonaco: shikiToMonaco as unknown as (\n shiki: ShikiInternal<any, any>,\n monaco: typeof import(\"monaco-editor\"),\n ) => void,\n }\n }\n\n return preparedShiki\n}\n\n/** A Monaco (VSCode-style) embedded code editor with Wandelscript syntax highlighting */\nexport const WandelscriptEditor = externalizeComponent(\n (props: WandelscriptEditorProps) => {\n const theme = useTheme()\n const [activeShikiTheme, setActiveShikiTheme] =\n useState<BundledTheme>(\"dark-plus\")\n const targetShikiTheme =\n theme.palette.mode === \"dark\" ? \"dark-plus\" : \"light-plus\"\n\n async function setupEditor(monaco: Monaco) {\n // Register and configure the Wandelscript language\n monaco.languages.register({ id: \"wandelscript\" })\n\n monaco.languages.setLanguageConfiguration(\"wandelscript\", {\n comments: {\n lineComment: \"#\",\n },\n brackets: [\n [\"(\", \")\"],\n [\"[\", \"]\"],\n ],\n autoClosingPairs: [\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n ],\n surroundingPairs: [\n { open: \"[\", close: \"]\" },\n { open: \"(\", close: \")\" },\n ],\n })\n\n const { shiki, shikiToMonaco } = await getShiki()\n\n // Monaco doesn't support TextMate grammar config directly, so we\n // use Shiki as an intermediary\n shikiToMonaco(shiki, monaco)\n\n // Override the generated shiki theme to use shiki syntax highlighting\n // but vscode colors\n monaco.editor.defineTheme(\n targetShikiTheme,\n theme.componentsExt?.WandelscriptEditor?.monacoTheme ?? {\n base: theme.palette.mode === \"dark\" ? \"vs-dark\" : \"vs\",\n inherit: true,\n rules: [],\n colors: {},\n },\n )\n\n if (props.monacoSetup) {\n props.monacoSetup(monaco)\n }\n\n setActiveShikiTheme(targetShikiTheme)\n }\n\n return (\n <Suspense fallback={<LoadingCover />}>\n <Editor\n value={props.code}\n onMount={(_editor, monaco) => {\n setupEditor(monaco)\n }}\n onChange={props.onChange}\n defaultLanguage=\"wandelscript\"\n theme={activeShikiTheme}\n options={{\n minimap: { enabled: false },\n wordWrap: \"on\",\n automaticLayout: true,\n ...props.monacoOptions,\n }}\n />\n </Suspense>\n )\n },\n)\n"],"names":["wandelscriptTextmateGrammar","Editor","lazy","preparedShiki","getShiki","createHighlighter","shikiToMonaco","WandelscriptEditor","externalizeComponent","props","theme","useTheme","activeShikiTheme","setActiveShikiTheme","useState","targetShikiTheme","setupEditor","monaco","shiki","_b","_a","jsx","Suspense","LoadingCover","_editor"],"mappings":"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"}
|