@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.
Files changed (77) hide show
  1. package/README.md +18 -0
  2. package/dist/3d.cjs.js +1 -1
  3. package/dist/3d.es.js +1 -1
  4. package/dist/{LoadingCover-Dr9hDTku.js → LoadingCover-6gWr11KP.js} +11 -10
  5. package/dist/{LoadingCover-Dr9hDTku.js.map → LoadingCover-6gWr11KP.js.map} +1 -1
  6. package/dist/LoadingCover-CukpS_aj.cjs +2 -0
  7. package/dist/{LoadingCover-r2yhJZF9.cjs.map → LoadingCover-CukpS_aj.cjs.map} +1 -1
  8. package/dist/{WandelscriptEditor-DnJvITTA.js → WandelscriptEditor-7eN-Yw7m.js} +3 -3
  9. package/dist/{WandelscriptEditor-DnJvITTA.js.map → WandelscriptEditor-7eN-Yw7m.js.map} +1 -1
  10. package/dist/WandelscriptEditor-D6_vS5Uk.cjs +2 -0
  11. package/dist/{WandelscriptEditor-Dj7TBCkF.cjs.map → WandelscriptEditor-D6_vS5Uk.cjs.map} +1 -1
  12. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js +3877 -0
  13. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js.map +1 -0
  14. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs +5 -0
  15. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs.map +1 -0
  16. package/dist/components/RobotCard.d.ts +1 -1
  17. package/dist/components/RobotCard.d.ts.map +1 -1
  18. package/dist/components/robots/GenericRobot.d.ts +2 -2
  19. package/dist/components/robots/GenericRobot.d.ts.map +1 -1
  20. package/dist/components/robots/Robot.d.ts +1 -1
  21. package/dist/components/robots/Robot.d.ts.map +1 -1
  22. package/dist/components/robots/SupportedRobot.d.ts +1 -1
  23. package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
  24. package/dist/components/robots/robotModelLogic.d.ts +1 -1
  25. package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
  26. package/dist/core.cjs.js +1 -1
  27. package/dist/core.es.js +4 -4
  28. package/dist/externalizeComponent-CkVWk2F_.cjs +24 -0
  29. package/dist/externalizeComponent-CkVWk2F_.cjs.map +1 -0
  30. package/dist/externalizeComponent-Dc3fViZA.js +489 -0
  31. package/dist/externalizeComponent-Dc3fViZA.js.map +1 -0
  32. package/dist/index.cjs.js +1 -1
  33. package/dist/index.es.js +6 -6
  34. package/dist/interpolation-DAXKfoDS.cjs +20 -0
  35. package/dist/interpolation-DAXKfoDS.cjs.map +1 -0
  36. package/dist/interpolation-DcPbemBD.js +6924 -0
  37. package/dist/interpolation-DcPbemBD.js.map +1 -0
  38. package/dist/lib/JoggerConnection.d.ts.map +1 -1
  39. package/dist/{manufacturerHomePositions-CgaG5vaK.js → manufacturerHomePositions-BaS-GAxw.js} +331 -282
  40. package/dist/manufacturerHomePositions-BaS-GAxw.js.map +1 -0
  41. package/dist/manufacturerHomePositions-cD52vnEi.cjs +2 -0
  42. package/dist/manufacturerHomePositions-cD52vnEi.cjs.map +1 -0
  43. package/dist/{theming-Coh4zx7d.js → theming-B7ojcJTM.js} +4802 -6245
  44. package/dist/theming-B7ojcJTM.js.map +1 -0
  45. package/dist/theming-C9apy9Ov.cjs +115 -0
  46. package/dist/theming-C9apy9Ov.cjs.map +1 -0
  47. package/dist/wandelscript.cjs.js +1 -1
  48. package/dist/wandelscript.es.js +1 -1
  49. package/package.json +14 -4
  50. package/src/components/RobotCard.tsx +1 -1
  51. package/src/components/robots/GenericRobot.tsx +56 -13
  52. package/src/components/robots/Robot.tsx +1 -1
  53. package/src/components/robots/SupportedRobot.tsx +10 -2
  54. package/src/components/robots/robotModelLogic.ts +40 -6
  55. package/src/env.d.ts +3 -0
  56. package/src/lib/JoggerConnection.ts +10 -10
  57. package/src/lib/MotionStreamConnection.ts +1 -1
  58. package/dist/LoadingCover-r2yhJZF9.cjs +0 -2
  59. package/dist/WandelscriptEditor-Dj7TBCkF.cjs +0 -2
  60. package/dist/auth0-spa-js.production.esm-DL9f1uDJ.js +0 -1438
  61. package/dist/auth0-spa-js.production.esm-DL9f1uDJ.js.map +0 -1
  62. package/dist/auth0-spa-js.production.esm-DTiWXa87.cjs +0 -5
  63. package/dist/auth0-spa-js.production.esm-DTiWXa87.cjs.map +0 -1
  64. package/dist/index-CAib4NKw.js +0 -2261
  65. package/dist/index-CAib4NKw.js.map +0 -1
  66. package/dist/index-CqMZL0FV.cjs +0 -2
  67. package/dist/index-CqMZL0FV.cjs.map +0 -1
  68. package/dist/index-CxasuX80.js +0 -5212
  69. package/dist/index-CxasuX80.js.map +0 -1
  70. package/dist/index-DxwppshT.cjs +0 -29
  71. package/dist/index-DxwppshT.cjs.map +0 -1
  72. package/dist/manufacturerHomePositions-Ca80ycLi.cjs +0 -2
  73. package/dist/manufacturerHomePositions-Ca80ycLi.cjs.map +0 -1
  74. package/dist/manufacturerHomePositions-CgaG5vaK.js.map +0 -1
  75. package/dist/theming-Coh4zx7d.js.map +0 -1
  76. package/dist/theming-D4ztsmTr.cjs +0 -133
  77. package/dist/theming-D4ztsmTr.cjs.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./WandelscriptEditor-Dj7TBCkF.cjs");exports.WandelscriptEditor=t.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
@@ -1,4 +1,4 @@
1
- import { W as t } from "./WandelscriptEditor-DnJvITTA.js";
1
+ import { W as t } from "./WandelscriptEditor-7eN-Yw7m.js";
2
2
  export {
3
3
  t as WandelscriptEditor
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wandelbots/wandelbots-js-react-components",
3
- "version": "3.5.1",
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.4.1",
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
- "i18next-browser-languagedetector": "^8.0.4",
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
- export function GenericRobot({
23
- modelURL,
24
- flangeRef,
25
- postModelRender,
26
- ...props
27
- }: RobotModelProps) {
28
- const { gltf } = parseRobotModel(
29
- useGLTF(modelURL),
30
- modelURL.split("/").pop() || modelURL,
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
- [modelURL],
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={getModel(modelFromController)}
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
- export function defaultGetModel(modelFromController: string): string {
6
- let useVersion = version
7
- if (version.startsWith("0.")) {
8
- useVersion = ""
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
- return `https://cdn.jsdelivr.net/gh/wandelbotsgmbh/wandelbots-js-react-components${useVersion ? `@${useVersion}` : ""}/public/models/${modelFromController}.glb`
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
@@ -0,0 +1,3 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ // Ensure ImportMeta.env types from Vite are available to TypeScript.
@@ -390,14 +390,14 @@ export class JoggerConnection {
390
390
  axis: "x" | "y" | "z"
391
391
  direction: "-" | "+"
392
392
  motion:
393
- | {
394
- type: "rotate"
395
- distanceRads: number
396
- }
397
- | {
398
- type: "translate"
399
- distanceMm: number
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
- result?.message ||
563
- "Failed to execute trajectory, unknown error",
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