@wandelbots/wandelbots-js-react-components 3.5.1 → 3.6.0-pr.feat-model-retrieval-from-rdp.463.3cb7d2e
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 +18 -0
- package/dist/3d.cjs.js +1 -1
- package/dist/3d.es.js +1 -1
- package/dist/{LoadingCover-Dr9hDTku.js → LoadingCover-6gWr11KP.js} +11 -10
- package/dist/{LoadingCover-Dr9hDTku.js.map → LoadingCover-6gWr11KP.js.map} +1 -1
- package/dist/LoadingCover-CukpS_aj.cjs +2 -0
- package/dist/{LoadingCover-r2yhJZF9.cjs.map → LoadingCover-CukpS_aj.cjs.map} +1 -1
- package/dist/{WandelscriptEditor-DnJvITTA.js → WandelscriptEditor-7eN-Yw7m.js} +3 -3
- package/dist/{WandelscriptEditor-DnJvITTA.js.map → WandelscriptEditor-7eN-Yw7m.js.map} +1 -1
- package/dist/WandelscriptEditor-D6_vS5Uk.cjs +2 -0
- package/dist/{WandelscriptEditor-Dj7TBCkF.cjs.map → WandelscriptEditor-D6_vS5Uk.cjs.map} +1 -1
- package/dist/auth0-spa-js.production.esm-BMSlxZC5.js +3877 -0
- package/dist/auth0-spa-js.production.esm-BMSlxZC5.js.map +1 -0
- package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs +5 -0
- package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs.map +1 -0
- package/dist/components/RobotCard.d.ts +1 -1
- package/dist/components/RobotCard.d.ts.map +1 -1
- package/dist/components/robots/GenericRobot.d.ts +2 -2
- package/dist/components/robots/GenericRobot.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/SupportedRobot.d.ts +1 -1
- package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
- package/dist/components/robots/robotModelLogic.d.ts +1 -1
- package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
- package/dist/core.cjs.js +1 -1
- package/dist/core.es.js +4 -4
- package/dist/externalizeComponent-CkVWk2F_.cjs +24 -0
- package/dist/externalizeComponent-CkVWk2F_.cjs.map +1 -0
- package/dist/externalizeComponent-Dc3fViZA.js +489 -0
- package/dist/externalizeComponent-Dc3fViZA.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +6 -6
- package/dist/interpolation-DAXKfoDS.cjs +20 -0
- package/dist/interpolation-DAXKfoDS.cjs.map +1 -0
- package/dist/interpolation-DcPbemBD.js +6924 -0
- package/dist/interpolation-DcPbemBD.js.map +1 -0
- package/dist/lib/JoggerConnection.d.ts.map +1 -1
- package/dist/{manufacturerHomePositions-CgaG5vaK.js → manufacturerHomePositions-BaS-GAxw.js} +331 -282
- package/dist/manufacturerHomePositions-BaS-GAxw.js.map +1 -0
- package/dist/manufacturerHomePositions-cD52vnEi.cjs +2 -0
- package/dist/manufacturerHomePositions-cD52vnEi.cjs.map +1 -0
- package/dist/{theming-Coh4zx7d.js → theming-B7ojcJTM.js} +4802 -6245
- package/dist/theming-B7ojcJTM.js.map +1 -0
- package/dist/theming-C9apy9Ov.cjs +115 -0
- package/dist/theming-C9apy9Ov.cjs.map +1 -0
- package/dist/wandelscript.cjs.js +1 -1
- package/dist/wandelscript.es.js +1 -1
- package/package.json +14 -4
- package/src/components/RobotCard.tsx +1 -1
- package/src/components/robots/GenericRobot.tsx +56 -13
- package/src/components/robots/Robot.tsx +1 -1
- package/src/components/robots/SupportedRobot.tsx +10 -2
- package/src/components/robots/robotModelLogic.ts +40 -6
- package/src/env.d.ts +3 -0
- package/src/lib/JoggerConnection.ts +10 -10
- package/src/lib/MotionStreamConnection.ts +1 -1
- package/dist/LoadingCover-r2yhJZF9.cjs +0 -2
- package/dist/WandelscriptEditor-Dj7TBCkF.cjs +0 -2
- package/dist/auth0-spa-js.production.esm-DL9f1uDJ.js +0 -1438
- package/dist/auth0-spa-js.production.esm-DL9f1uDJ.js.map +0 -1
- package/dist/auth0-spa-js.production.esm-DTiWXa87.cjs +0 -5
- package/dist/auth0-spa-js.production.esm-DTiWXa87.cjs.map +0 -1
- package/dist/index-CAib4NKw.js +0 -2261
- package/dist/index-CAib4NKw.js.map +0 -1
- package/dist/index-CqMZL0FV.cjs +0 -2
- package/dist/index-CqMZL0FV.cjs.map +0 -1
- package/dist/index-CxasuX80.js +0 -5212
- package/dist/index-CxasuX80.js.map +0 -1
- package/dist/index-DxwppshT.cjs +0 -29
- package/dist/index-DxwppshT.cjs.map +0 -1
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs +0 -2
- package/dist/manufacturerHomePositions-Ca80ycLi.cjs.map +0 -1
- package/dist/manufacturerHomePositions-CgaG5vaK.js.map +0 -1
- package/dist/theming-Coh4zx7d.js.map +0 -1
- package/dist/theming-D4ztsmTr.cjs +0 -133
- package/dist/theming-D4ztsmTr.cjs.map +0 -1
package/dist/wandelscript.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./WandelscriptEditor-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./WandelscriptEditor-D6_vS5Uk.cjs");exports.WandelscriptEditor=t.WandelscriptEditor;
|
|
2
2
|
//# sourceMappingURL=wandelscript.cjs.js.map
|
package/dist/wandelscript.es.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wandelbots/wandelbots-js-react-components",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0-pr.feat-model-retrieval-from-rdp.463.3cb7d2e",
|
|
4
4
|
"description": "React UI toolkit for building applications on top of the Wandelbots platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -50,7 +50,8 @@
|
|
|
50
50
|
"ci:test:runner": "wait-on tcp:127.0.0.1:9009 && test-storybook --url http://127.0.0.1:9009 --index-json --browsers chromium",
|
|
51
51
|
"build": "rimraf dist && vite build && tsc --declaration --emitDeclarationOnly",
|
|
52
52
|
"build-storybook": "storybook build",
|
|
53
|
-
"prepare": "husky || true"
|
|
53
|
+
"prepare": "husky || true",
|
|
54
|
+
"td": "tsx scripts/test-deploy.ts"
|
|
54
55
|
},
|
|
55
56
|
"repository": {
|
|
56
57
|
"type": "git",
|
|
@@ -63,6 +64,10 @@
|
|
|
63
64
|
],
|
|
64
65
|
"author": "Wandelbots",
|
|
65
66
|
"license": "Apache-2.0",
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=18.14.0",
|
|
69
|
+
"npm": ">=8.0.0"
|
|
70
|
+
},
|
|
66
71
|
"devDependencies": {
|
|
67
72
|
"@emotion/react": "^11.14.0",
|
|
68
73
|
"@emotion/styled": "^11.14.0",
|
|
@@ -88,7 +93,7 @@
|
|
|
88
93
|
"@types/react": "^19.1.8",
|
|
89
94
|
"@types/three": "^0.182.0",
|
|
90
95
|
"@vitejs/plugin-react": "^4.3.4",
|
|
91
|
-
"@wandelbots/nova-js": "^3.
|
|
96
|
+
"@wandelbots/nova-js": "^3.5.0",
|
|
92
97
|
"add": "^2.0.6",
|
|
93
98
|
"eslint-plugin-storybook": "^10.1.10",
|
|
94
99
|
"glob": "^13.0.0",
|
|
@@ -119,6 +124,7 @@
|
|
|
119
124
|
"three": "^0.182.0",
|
|
120
125
|
"three-stdlib": "^2.35.14",
|
|
121
126
|
"ts-dedent": "^2.2.0",
|
|
127
|
+
"tsx": "^4.21.0",
|
|
122
128
|
"typescript": "^5.8.2",
|
|
123
129
|
"unplugin": "^1.15.0",
|
|
124
130
|
"vite": "^6.2.0",
|
|
@@ -170,7 +176,11 @@
|
|
|
170
176
|
"dependencies": {
|
|
171
177
|
"@mui/x-charts": "8.24.0",
|
|
172
178
|
"@mui/x-data-grid": "8.24.0",
|
|
173
|
-
"
|
|
179
|
+
"@wandelbots/nova-api": "26.1.0-rc.2",
|
|
180
|
+
"@wandelbots/nova-js": "3.5.0",
|
|
181
|
+
"axios": "^1.13.2",
|
|
182
|
+
"dotenv": "^17.2.3",
|
|
183
|
+
"i18next-browser-languagedetector": "^8.2.0",
|
|
174
184
|
"lodash-es": "^4.17.21",
|
|
175
185
|
"mobx": "^6.13.6",
|
|
176
186
|
"mobx-react-lite": "^4.1.0",
|
|
@@ -52,7 +52,7 @@ export interface RobotCardProps {
|
|
|
52
52
|
flangeRef?: React.Ref<Group>
|
|
53
53
|
postModelRender?: () => void
|
|
54
54
|
transparentColor?: string
|
|
55
|
-
getModel?: (modelFromController: string) => string
|
|
55
|
+
getModel?: (modelFromController: string) => Promise<string>
|
|
56
56
|
}>
|
|
57
57
|
/** Custom component to render in the content area (optional) */
|
|
58
58
|
customContentComponent?: React.ComponentType<Record<string, unknown>>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useGLTF } from "@react-three/drei"
|
|
2
2
|
import type { ThreeElements } from "@react-three/fiber"
|
|
3
|
-
import React, { useCallback } from "react"
|
|
3
|
+
import React, { useCallback, useEffect, useState } from "react"
|
|
4
4
|
import type { Group, Mesh } from "three"
|
|
5
5
|
import { type Object3D } from "three"
|
|
6
6
|
import { isFlange, parseRobotModel } from "./robotModelLogic"
|
|
7
7
|
|
|
8
8
|
export type RobotModelProps = {
|
|
9
|
-
modelURL: string
|
|
9
|
+
modelURL: string | Promise<string>
|
|
10
10
|
/**
|
|
11
11
|
* Called after a robot model has been loaded and
|
|
12
12
|
* rendered into the threejs scene
|
|
@@ -19,16 +19,19 @@ function isMesh(node: Object3D): node is Mesh {
|
|
|
19
19
|
return node.type === "Mesh"
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
)
|
|
22
|
+
// Separate component that only renders when we have a valid URL
|
|
23
|
+
function LoadedRobotModel({
|
|
24
|
+
url,
|
|
25
|
+
flangeRef,
|
|
26
|
+
postModelRender,
|
|
27
|
+
...props
|
|
28
|
+
}: {
|
|
29
|
+
url: string
|
|
30
|
+
flangeRef?: React.Ref<Group>
|
|
31
|
+
postModelRender?: () => void
|
|
32
|
+
} & ThreeElements["group"]) {
|
|
33
|
+
const gltfResult = useGLTF(url)
|
|
34
|
+
const { gltf } = parseRobotModel(gltfResult, 'robot.glb')
|
|
32
35
|
|
|
33
36
|
const groupRef: React.RefCallback<Group> = useCallback(
|
|
34
37
|
(group) => {
|
|
@@ -36,7 +39,7 @@ export function GenericRobot({
|
|
|
36
39
|
postModelRender()
|
|
37
40
|
}
|
|
38
41
|
},
|
|
39
|
-
[
|
|
42
|
+
[postModelRender],
|
|
40
43
|
)
|
|
41
44
|
|
|
42
45
|
function renderNode(node: Object3D): React.ReactNode {
|
|
@@ -72,3 +75,43 @@ export function GenericRobot({
|
|
|
72
75
|
</group>
|
|
73
76
|
)
|
|
74
77
|
}
|
|
78
|
+
|
|
79
|
+
export function GenericRobot({
|
|
80
|
+
modelURL,
|
|
81
|
+
flangeRef,
|
|
82
|
+
postModelRender,
|
|
83
|
+
...props
|
|
84
|
+
}: RobotModelProps) {
|
|
85
|
+
const [resolvedURL, setResolvedURL] = useState<string | null>(null)
|
|
86
|
+
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
const resolveURL = async () => {
|
|
89
|
+
try {
|
|
90
|
+
if (typeof modelURL === 'string') {
|
|
91
|
+
setResolvedURL(modelURL)
|
|
92
|
+
} else {
|
|
93
|
+
const url = await modelURL
|
|
94
|
+
setResolvedURL(url)
|
|
95
|
+
}
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error('Failed to resolve model URL:', error)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
resolveURL()
|
|
102
|
+
}, [modelURL])
|
|
103
|
+
|
|
104
|
+
// Don't render until we have a resolved URL
|
|
105
|
+
if (!resolvedURL) {
|
|
106
|
+
return null // Loading state
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<LoadedRobotModel
|
|
111
|
+
url={resolvedURL}
|
|
112
|
+
flangeRef={flangeRef}
|
|
113
|
+
postModelRender={postModelRender}
|
|
114
|
+
{...props}
|
|
115
|
+
/>
|
|
116
|
+
)
|
|
117
|
+
}
|
|
@@ -7,7 +7,7 @@ import { SupportedRobot } from "./SupportedRobot"
|
|
|
7
7
|
|
|
8
8
|
export type RobotProps = {
|
|
9
9
|
connectedMotionGroup: ConnectedMotionGroup
|
|
10
|
-
getModel?: (modelFromController: string) => string
|
|
10
|
+
getModel?: (modelFromController: string) => Promise<string>
|
|
11
11
|
flangeRef?: React.Ref<Group>
|
|
12
12
|
transparentColor?: string
|
|
13
13
|
postModelRender?: () => void
|
|
@@ -22,7 +22,7 @@ export type SupportedRobotProps = {
|
|
|
22
22
|
modelFromController: string
|
|
23
23
|
dhParameters: DHParameter[]
|
|
24
24
|
flangeRef?: React.Ref<THREE.Group>
|
|
25
|
-
getModel?: (modelFromController: string) => string
|
|
25
|
+
getModel?: (modelFromController: string) => Promise<string> | undefined
|
|
26
26
|
postModelRender?: () => void
|
|
27
27
|
transparentColor?: string
|
|
28
28
|
} & ThreeElements["group"]
|
|
@@ -77,7 +77,15 @@ export const SupportedRobot = externalizeComponent(
|
|
|
77
77
|
dhParameters={dhParameters}
|
|
78
78
|
>
|
|
79
79
|
<GenericRobot
|
|
80
|
-
modelURL={
|
|
80
|
+
modelURL={(() => {
|
|
81
|
+
const result = getModel(modelFromController)
|
|
82
|
+
if (!result) {
|
|
83
|
+
const mockBlob = new Blob([], { type: 'model/gltf-binary' })
|
|
84
|
+
const mockFile = new File([mockBlob], `${modelFromController}.glb`, { type: 'model/gltf-binary' })
|
|
85
|
+
return Promise.resolve(URL.createObjectURL(mockFile))
|
|
86
|
+
}
|
|
87
|
+
return result
|
|
88
|
+
})()}
|
|
81
89
|
postModelRender={postModelRender}
|
|
82
90
|
flangeRef={flangeRef}
|
|
83
91
|
{...props}
|
|
@@ -1,13 +1,47 @@
|
|
|
1
|
+
import { NovaClient } from "@wandelbots/nova-js/v2"
|
|
1
2
|
import type { Object3D } from "three"
|
|
2
3
|
import type { GLTF } from "three-stdlib"
|
|
3
|
-
import { version } from "../../../package.json"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const modelCache = new Map<string, Promise<string>>()
|
|
6
|
+
|
|
7
|
+
export async function defaultGetModel(modelFromController: string): Promise<string> {
|
|
8
|
+
// Check cache first
|
|
9
|
+
if (modelCache.has(modelFromController)) {
|
|
10
|
+
return modelCache.get(modelFromController)!
|
|
9
11
|
}
|
|
10
|
-
|
|
12
|
+
|
|
13
|
+
// Create the promise and cache it immediately to prevent duplicate calls
|
|
14
|
+
const modelPromise = (async () => {
|
|
15
|
+
const instanceUrl = import.meta.env.WANDELAPI_BASE_URL || import.meta.env.VITE_NOVA_INSTANCE_URL
|
|
16
|
+
|
|
17
|
+
const nova = new NovaClient({ instanceUrl })
|
|
18
|
+
|
|
19
|
+
// Configure axios to handle binary responses for GLB files
|
|
20
|
+
const apiInstance = nova.api.motionGroupModels as any
|
|
21
|
+
if (apiInstance.axios?.interceptors) {
|
|
22
|
+
apiInstance.axios.interceptors.request.use((config: any) => {
|
|
23
|
+
if (config.url?.includes('/glb')) {
|
|
24
|
+
config.responseType = 'blob'
|
|
25
|
+
}
|
|
26
|
+
return config
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
const file = await nova.api.motionGroupModels.getMotionGroupGlbModel(modelFromController)
|
|
32
|
+
|
|
33
|
+
// Create object URL from the file and return it
|
|
34
|
+
const url = URL.createObjectURL(file)
|
|
35
|
+
return url
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error("Failed to fetch model:", error)
|
|
38
|
+
throw error
|
|
39
|
+
}
|
|
40
|
+
})()
|
|
41
|
+
|
|
42
|
+
// Cache the promise
|
|
43
|
+
modelCache.set(modelFromController, modelPromise)
|
|
44
|
+
return modelPromise
|
|
11
45
|
}
|
|
12
46
|
|
|
13
47
|
/**
|
package/src/env.d.ts
ADDED
|
@@ -390,14 +390,14 @@ export class JoggerConnection {
|
|
|
390
390
|
axis: "x" | "y" | "z"
|
|
391
391
|
direction: "-" | "+"
|
|
392
392
|
motion:
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
393
|
+
| {
|
|
394
|
+
type: "rotate"
|
|
395
|
+
distanceRads: number
|
|
396
|
+
}
|
|
397
|
+
| {
|
|
398
|
+
type: "translate"
|
|
399
|
+
distanceMm: number
|
|
400
|
+
}
|
|
401
401
|
}) {
|
|
402
402
|
const commands: MotionCommand[] = []
|
|
403
403
|
|
|
@@ -559,8 +559,8 @@ export class JoggerConnection {
|
|
|
559
559
|
} else {
|
|
560
560
|
throw new Error(
|
|
561
561
|
result?.add_trajectory_error?.message ||
|
|
562
|
-
|
|
563
|
-
|
|
562
|
+
result?.message ||
|
|
563
|
+
"Failed to execute trajectory, unknown error",
|
|
564
564
|
)
|
|
565
565
|
}
|
|
566
566
|
}
|
|
@@ -31,7 +31,7 @@ export class MotionStreamConnection {
|
|
|
31
31
|
const controller =
|
|
32
32
|
await nova.api.controller.getCurrentRobotControllerState(controllerId)
|
|
33
33
|
const motionGroup = controller?.motion_groups.find(
|
|
34
|
-
(mg) => mg.motion_group === motionGroupId,
|
|
34
|
+
(mg: MotionGroupState) => mg.motion_group === motionGroupId,
|
|
35
35
|
)
|
|
36
36
|
if (!controller || !motionGroup) {
|
|
37
37
|
throw new Error(
|
|
@@ -1,2 +0,0 @@
|
|
|
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
|
|
@@ -1,2 +0,0 @@
|
|
|
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
|