@wandelbots/wandelbots-js-react-components 2.58.0 → 2.59.0-pr.dev-fix-flaky-task.488.1957fef

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 (172) hide show
  1. package/README.md +107 -10
  2. package/dist/3d.cjs.js +2 -0
  3. package/dist/3d.cjs.js.map +1 -0
  4. package/dist/3d.d.ts +11 -0
  5. package/dist/3d.d.ts.map +1 -0
  6. package/dist/3d.es.js +16 -0
  7. package/dist/3d.es.js.map +1 -0
  8. package/dist/LoadingCover-6gWr11KP.js +88 -0
  9. package/dist/LoadingCover-6gWr11KP.js.map +1 -0
  10. package/dist/LoadingCover-CukpS_aj.cjs +2 -0
  11. package/dist/LoadingCover-CukpS_aj.cjs.map +1 -0
  12. package/dist/WandelscriptEditor-7eN-Yw7m.js +140 -0
  13. package/dist/WandelscriptEditor-7eN-Yw7m.js.map +1 -0
  14. package/dist/WandelscriptEditor-D6_vS5Uk.cjs +2 -0
  15. package/dist/WandelscriptEditor-D6_vS5Uk.cjs.map +1 -0
  16. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js +3877 -0
  17. package/dist/auth0-spa-js.production.esm-BMSlxZC5.js.map +1 -0
  18. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs +5 -0
  19. package/dist/auth0-spa-js.production.esm-DZ6lsBvD.cjs.map +1 -0
  20. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -1
  21. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
  22. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  23. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -1
  24. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -1
  25. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -1
  26. package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +1 -1
  27. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +1 -1
  28. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -1
  29. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -1
  30. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +1 -1
  31. package/dist/components/ProgramStateIndicator.d.ts +3 -3
  32. package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
  33. package/dist/components/RobotCard.d.ts +5 -4
  34. package/dist/components/RobotCard.d.ts.map +1 -1
  35. package/dist/components/jogging/JoggingBlocked.d.ts +7 -0
  36. package/dist/components/jogging/JoggingBlocked.d.ts.map +1 -0
  37. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -1
  38. package/dist/components/jogging/JoggingOptions.d.ts.map +1 -1
  39. package/dist/components/jogging/JoggingPanel.d.ts +1 -1
  40. package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
  41. package/dist/components/jogging/JoggingStore.d.ts +10 -5
  42. package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
  43. package/dist/components/jogging/PoseCartesianValues.d.ts +2 -2
  44. package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
  45. package/dist/components/jogging/PoseJointValues.d.ts +1 -2
  46. package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
  47. package/dist/components/robots/DHRobot.d.ts.map +1 -1
  48. package/dist/components/robots/GenericRobot.d.ts +2 -2
  49. package/dist/components/robots/GenericRobot.d.ts.map +1 -1
  50. package/dist/components/robots/Robot.d.ts +4 -2
  51. package/dist/components/robots/Robot.d.ts.map +1 -1
  52. package/dist/components/robots/RobotAnimator.d.ts +2 -2
  53. package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
  54. package/dist/components/robots/SupportedRobot.d.ts +4 -4
  55. package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
  56. package/dist/components/robots/manufacturerHomePositions.d.ts +1 -1
  57. package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -1
  58. package/dist/components/robots/robotModelLogic.d.ts +11 -1
  59. package/dist/components/robots/robotModelLogic.d.ts.map +1 -1
  60. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
  61. package/dist/components/safetyBar/OperationModeIndicator.d.ts +2 -2
  62. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
  63. package/dist/components/safetyBar/SafetyBar.d.ts +3 -3
  64. package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
  65. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +2 -2
  66. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
  67. package/dist/components/utils/errorHandling.d.ts.map +1 -1
  68. package/dist/components/utils/errorHandling.test.d.ts +2 -0
  69. package/dist/components/utils/errorHandling.test.d.ts.map +1 -0
  70. package/dist/core.cjs.js +2 -0
  71. package/dist/core.cjs.js.map +1 -0
  72. package/dist/core.d.ts +33 -0
  73. package/dist/core.d.ts.map +1 -0
  74. package/dist/core.es.js +54 -0
  75. package/dist/core.es.js.map +1 -0
  76. package/dist/externalizeComponent-CkVWk2F_.cjs +24 -0
  77. package/dist/externalizeComponent-CkVWk2F_.cjs.map +1 -0
  78. package/dist/externalizeComponent-Dc3fViZA.js +489 -0
  79. package/dist/externalizeComponent-Dc3fViZA.js.map +1 -0
  80. package/dist/index.cjs.js +2 -0
  81. package/dist/index.cjs.js.map +1 -0
  82. package/dist/index.d.ts +3 -39
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.es.js +69 -0
  85. package/dist/index.es.js.map +1 -0
  86. package/dist/interpolation-DAXKfoDS.cjs +20 -0
  87. package/dist/interpolation-DAXKfoDS.cjs.map +1 -0
  88. package/dist/interpolation-DcPbemBD.js +6924 -0
  89. package/dist/interpolation-DcPbemBD.js.map +1 -0
  90. package/dist/lib/ConnectedMotionGroup.d.ts +90 -0
  91. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -0
  92. package/dist/lib/JoggerConnection.d.ts +113 -0
  93. package/dist/lib/JoggerConnection.d.ts.map +1 -0
  94. package/dist/lib/JoggerConnection.test.d.ts +2 -0
  95. package/dist/lib/JoggerConnection.test.d.ts.map +1 -0
  96. package/dist/lib/MotionStreamConnection.d.ts +24 -0
  97. package/dist/lib/MotionStreamConnection.d.ts.map +1 -0
  98. package/dist/lib/MotionStreamConnection.test.d.ts +2 -0
  99. package/dist/lib/MotionStreamConnection.test.d.ts.map +1 -0
  100. package/dist/lib/motionStateUpdate.d.ts +7 -0
  101. package/dist/lib/motionStateUpdate.d.ts.map +1 -0
  102. package/dist/lib/motionStateUpdate.test.d.ts +2 -0
  103. package/dist/lib/motionStateUpdate.test.d.ts.map +1 -0
  104. package/dist/manufacturerHomePositions-BD6C5qZJ.js +1040 -0
  105. package/dist/manufacturerHomePositions-BD6C5qZJ.js.map +1 -0
  106. package/dist/manufacturerHomePositions-DRNjU1pU.cjs +2 -0
  107. package/dist/manufacturerHomePositions-DRNjU1pU.cjs.map +1 -0
  108. package/dist/theming-CPShzNuV.cjs +115 -0
  109. package/dist/theming-CPShzNuV.cjs.map +1 -0
  110. package/dist/theming-Hr605E6v.js +22336 -0
  111. package/dist/theming-Hr605E6v.js.map +1 -0
  112. package/dist/wandelscript.cjs.js +2 -0
  113. package/dist/wandelscript.cjs.js.map +1 -0
  114. package/dist/wandelscript.d.ts +2 -0
  115. package/dist/wandelscript.d.ts.map +1 -0
  116. package/dist/wandelscript.es.js +5 -0
  117. package/dist/wandelscript.es.js.map +1 -0
  118. package/package.json +70 -32
  119. package/src/3d.ts +15 -0
  120. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +1 -1
  121. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +1 -2
  122. package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
  123. package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
  124. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +1 -1
  125. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
  126. package/src/components/AppHeader.md +1 -1
  127. package/src/components/ProgramStateIndicator.tsx +3 -6
  128. package/src/components/RobotCard.tsx +5 -8
  129. package/src/components/jogging/JoggingBlocked.tsx +37 -0
  130. package/src/components/jogging/JoggingCartesianTab.tsx +13 -11
  131. package/src/components/jogging/JoggingJointLimitDetector.tsx +2 -2
  132. package/src/components/jogging/JoggingJointTab.tsx +4 -4
  133. package/src/components/jogging/JoggingOptions.tsx +6 -5
  134. package/src/components/jogging/JoggingPanel.tsx +6 -3
  135. package/src/components/jogging/JoggingStore.ts +66 -39
  136. package/src/components/jogging/PoseCartesianValues.tsx +3 -4
  137. package/src/components/jogging/PoseJointValues.tsx +3 -4
  138. package/src/components/robots/DHRobot.tsx +2 -3
  139. package/src/components/robots/GenericRobot.tsx +97 -36
  140. package/src/components/robots/Robot.tsx +4 -2
  141. package/src/components/robots/RobotAnimator.test.tsx +7 -22
  142. package/src/components/robots/RobotAnimator.tsx +31 -21
  143. package/src/components/robots/SupportedRobot.tsx +14 -9
  144. package/src/components/robots/manufacturerHomePositions.ts +1 -1
  145. package/src/components/robots/robotModelLogic.ts +75 -6
  146. package/src/components/safetyBar/ControllerTypeIndicator.tsx +4 -2
  147. package/src/components/safetyBar/OperationModeIndicator.tsx +7 -5
  148. package/src/components/safetyBar/SafetyBar.tsx +3 -6
  149. package/src/components/safetyBar/SafetyStateIndicator.tsx +9 -7
  150. package/src/components/utils/errorHandling.test.ts +41 -0
  151. package/src/components/utils/errorHandling.ts +4 -0
  152. package/src/core.ts +33 -0
  153. package/src/env.d.ts +3 -0
  154. package/src/i18n/locales/de/translations.json +3 -0
  155. package/src/i18n/locales/en/translations.json +3 -0
  156. package/src/index.ts +4 -43
  157. package/src/lib/ConnectedMotionGroup.ts +444 -0
  158. package/src/lib/JoggerConnection.test.ts +120 -0
  159. package/src/lib/JoggerConnection.ts +674 -0
  160. package/src/lib/MotionStreamConnection.test.ts +23 -0
  161. package/src/lib/MotionStreamConnection.ts +189 -0
  162. package/src/lib/motionStateUpdate.test.ts +28 -0
  163. package/src/lib/motionStateUpdate.ts +117 -0
  164. package/src/wandelscript.ts +2 -0
  165. package/dist/auth0-spa-js.production.esm-1QXzndwB.js +0 -950
  166. package/dist/auth0-spa-js.production.esm-1QXzndwB.js.map +0 -1
  167. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs +0 -5
  168. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs.map +0 -1
  169. package/dist/index.cjs +0 -155
  170. package/dist/index.cjs.map +0 -1
  171. package/dist/index.js +0 -34927
  172. package/dist/index.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./WandelscriptEditor-D6_vS5Uk.cjs");exports.WandelscriptEditor=t.WandelscriptEditor;
2
+ //# sourceMappingURL=wandelscript.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wandelscript.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./components/wandelscript-editor/WandelscriptEditor";
2
+ //# sourceMappingURL=wandelscript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wandelscript.d.ts","sourceRoot":"","sources":["../src/wandelscript.ts"],"names":[],"mappings":"AACA,cAAc,qDAAqD,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { W as t } from "./WandelscriptEditor-7eN-Yw7m.js";
2
+ export {
3
+ t as WandelscriptEditor
4
+ };
5
+ //# sourceMappingURL=wandelscript.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wandelscript.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wandelbots/wandelbots-js-react-components",
3
- "version": "2.58.0",
3
+ "version": "2.59.0-pr.dev-fix-flaky-task.488.1957fef",
4
4
  "description": "React UI toolkit for building applications on top of the Wandelbots platform",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -13,8 +13,24 @@
13
13
  "main": "./dist/index.cjs",
14
14
  "exports": {
15
15
  ".": {
16
- "import": "./dist/index.js",
17
- "require": "./dist/index.cjs"
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.es.js",
18
+ "require": "./dist/index.cjs.js"
19
+ },
20
+ "./core": {
21
+ "types": "./dist/core.d.ts",
22
+ "import": "./dist/core.es.js",
23
+ "require": "./dist/core.cjs.js"
24
+ },
25
+ "./3d": {
26
+ "types": "./dist/3d.d.ts",
27
+ "import": "./dist/3d.es.js",
28
+ "require": "./dist/3d.cjs.js"
29
+ },
30
+ "./wandelscript": {
31
+ "types": "./dist/wandelscript.d.ts",
32
+ "import": "./dist/wandelscript.es.js",
33
+ "require": "./dist/wandelscript.cjs.js"
18
34
  }
19
35
  },
20
36
  "types": "./dist/index.d.ts",
@@ -34,7 +50,8 @@
34
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",
35
51
  "build": "rimraf dist && vite build && tsc --declaration --emitDeclarationOnly",
36
52
  "build-storybook": "storybook build",
37
- "prepare": "husky || true"
53
+ "prepare": "husky || true",
54
+ "td": "tsx scripts/td-wrapper.ts"
38
55
  },
39
56
  "repository": {
40
57
  "type": "git",
@@ -47,40 +64,46 @@
47
64
  ],
48
65
  "author": "Wandelbots",
49
66
  "license": "Apache-2.0",
67
+ "engines": {
68
+ "node": ">=18.14.0",
69
+ "npm": ">=8.0.0"
70
+ },
50
71
  "devDependencies": {
51
72
  "@emotion/react": "^11.14.0",
52
73
  "@emotion/styled": "^11.14.0",
53
- "@mui/icons-material": "^7.1.1",
54
- "@mui/material": "^7.1.1",
74
+ "@monaco-editor/react": "^4.7.0",
75
+ "@mui/icons-material": "^7.3.7",
76
+ "@mui/material": "^7.3.7",
55
77
  "@react-three/drei": "^10.2.0",
56
78
  "@react-three/fiber": "^9.1.2",
57
- "@rollup/plugin-commonjs": "^28.0.2",
79
+ "@rollup/plugin-commonjs": "^29.0.0",
58
80
  "@rollup/plugin-json": "^6.1.0",
59
81
  "@rollup/plugin-node-resolve": "^16.0.0",
60
82
  "@rollup/plugin-terser": "^0.4.4",
61
83
  "@rollup/plugin-typescript": "^12.1.2",
62
- "@storybook/addon-docs": "^10.0.1",
63
- "@storybook/react-vite": "^10.0.1",
84
+ "@shikijs/monaco": "^3.1.0",
85
+ "@storybook/addon-docs": "^10.2.3",
86
+ "@storybook/react-vite": "^10.2.3",
64
87
  "@storybook/test-runner": "^0.24.1",
65
88
  "@svgr/rollup": "^8.1.0",
66
89
  "@testing-library/jest-dom": "^6.6.3",
67
- "@testing-library/react": "^16.3.0",
90
+ "@testing-library/react": "^16.3.2",
68
91
  "@testing-library/user-event": "^14.6.1",
69
92
  "@types/lodash-es": "^4.17.12",
70
93
  "@types/react": "^19.1.8",
71
- "@types/three": "^0.174.0",
94
+ "@types/three": "^0.182.0",
72
95
  "@vitejs/plugin-react": "^4.3.4",
73
- "@wandelbots/nova-js": "^2.1.0",
96
+ "@wandelbots/nova-js": "^3.5.0",
74
97
  "add": "^2.0.6",
75
- "eslint-plugin-storybook": "^10.0.1",
76
- "glob": "^11.0.1",
98
+ "eslint-plugin-storybook": "^10.1.10",
99
+ "glob": "^13.0.0",
77
100
  "http-server": "^14.1.1",
78
101
  "husky": "^9.1.7",
79
- "i18next": "^25.2.1",
102
+ "i18next": "^25.7.4",
80
103
  "jest-simple-dot-reporter": "^1.0.5",
81
104
  "jest-summary-reporter": "^0.0.2",
82
- "jsdom": "^26.1.0",
83
- "monaco-editor": "^0.52.2",
105
+ "jsdom": "^27.4.0",
106
+ "monaco-editor": "^0.55.1",
84
107
  "nodemon": "^3.1.9",
85
108
  "npm-run-all": "^4.1.5",
86
109
  "postcss": "^8.5.3",
@@ -89,40 +112,54 @@
89
112
  "react": "^19.1.0",
90
113
  "react-dom": "^19.1.0",
91
114
  "rimraf": "^6.0.1",
92
- "rollup": "^4.34.9",
115
+ "rollup": "^4.55.1",
93
116
  "rollup-plugin-dts": "^6.1.1",
94
117
  "rollup-plugin-gltf": "^4.0.0",
95
118
  "rollup-plugin-peer-deps-external": "^2.2.4",
96
119
  "rollup-plugin-postcss": "^4.0.2",
97
- "semantic-release": "^24.2.3",
98
- "storybook": "^10.0.1",
99
- "storybook-preset-inline-svg": "^1.0.1",
100
- "three": "^0.174.0",
120
+ "semantic-release": "^25.0.2",
121
+ "shiki": "^3.1.0",
122
+ "storybook": "^10.2.3",
123
+ "storybook-preset-inline-svg": "^2.0.0",
124
+ "three": "^0.182.0",
101
125
  "three-stdlib": "^2.35.14",
102
126
  "ts-dedent": "^2.2.0",
127
+ "tsx": "^4.21.0",
103
128
  "typescript": "^5.8.2",
104
129
  "unplugin": "^1.15.0",
105
130
  "vite": "^6.2.0",
106
131
  "vite-plugin-svgr": "^4.3.0",
107
132
  "vitest": "^3.0.7",
108
- "wait-on": "^8.0.2"
133
+ "wait-on": "^9.0.3"
109
134
  },
110
135
  "peerDependencies": {
111
136
  "@emotion/react": "^11.11.1",
112
137
  "@emotion/styled": "^11.11.0",
138
+ "@monaco-editor/react": "^4.7.0",
113
139
  "@mui/icons-material": "^6 || ^7",
114
140
  "@mui/material": "^6 || ^7",
115
141
  "@react-three/drei": "^9.122.0 || ^10",
116
142
  "@react-three/fiber": "^8 || ^9",
143
+ "@shikijs/monaco": "^3.1.0",
117
144
  "react": "^18.0.0 || ^19.0.0",
118
145
  "react-dom": "^18.0.0 || ^19.0.0",
119
- "three": ">=0.174",
146
+ "shiki": "^3.1.0",
147
+ "three": ">=0.182",
120
148
  "three-stdlib": ">=2"
121
149
  },
122
150
  "peerDependenciesMeta": {
123
151
  "react-dom": {
124
152
  "optional": true
125
153
  },
154
+ "@monaco-editor/react": {
155
+ "optional": true
156
+ },
157
+ "@shikijs/monaco": {
158
+ "optional": true
159
+ },
160
+ "shiki": {
161
+ "optional": true
162
+ },
126
163
  "@react-three/drei": {
127
164
  "optional": true
128
165
  },
@@ -137,17 +174,18 @@
137
174
  }
138
175
  },
139
176
  "dependencies": {
140
- "@monaco-editor/react": "^4.7.0",
141
- "@mui/x-charts": "^8.9.0",
142
- "@mui/x-data-grid": "^8.10.1",
143
- "@shikijs/monaco": "^3.1.0",
144
- "i18next-browser-languagedetector": "^8.0.4",
177
+ "@mui/x-charts": "^8.27.0",
178
+ "@mui/x-data-grid": "^8.27.0",
179
+ "@wandelbots/nova-js": "3.5.0",
180
+ "axios": "^1.13.2",
181
+ "dotenv": "^17.2.3",
182
+ "i18next-browser-languagedetector": "^8.2.0",
145
183
  "lodash-es": "^4.17.21",
146
184
  "mobx": "^6.13.6",
147
185
  "mobx-react-lite": "^4.1.0",
148
- "react-error-boundary": "^6.0.0",
149
- "react-i18next": "^15.5.2",
150
- "shiki": "^3.1.0"
186
+ "react-error-boundary": "^6.0.3",
187
+ "react-i18next": "^16.5.2",
188
+ "username": "^7.0.0"
151
189
  },
152
190
  "overrides": {
153
191
  "storybook": "$storybook"
package/src/3d.ts ADDED
@@ -0,0 +1,15 @@
1
+ // 3D viewport and Three.js-based components
2
+ export { default as CollisionSceneRenderer } from "./components/3d-viewport/collider/CollisionSceneRenderer"
3
+ export * from "./components/3d-viewport/PresetEnvironment"
4
+ export * from "./components/3d-viewport/SafetyZonesRenderer"
5
+ export * from "./components/3d-viewport/TrajectoryRenderer"
6
+ export * from "./components/RobotCard"
7
+ export * from "./components/robots/AxisConfig"
8
+ export {
9
+ MANUFACTURER_HOME_CONFIGS,
10
+ extractManufacturer,
11
+ getDefaultHomeConfig,
12
+ } from "./components/robots/manufacturerHomePositions"
13
+ export * from "./components/robots/Robot"
14
+ export { defaultGetModel } from "./components/robots/robotModelLogic"
15
+ export * from "./components/robots/SupportedRobot"
@@ -1,4 +1,4 @@
1
- import type { CoordinateSystem } from "@wandelbots/nova-api/v1"
1
+ import type { CoordinateSystem } from "@wandelbots/nova-js/v1"
2
2
  import type { ReactNode } from "react"
3
3
  import { Quaternion, Vector3 } from "three"
4
4
 
@@ -1,6 +1,5 @@
1
1
  import { type ThreeElements } from "@react-three/fiber"
2
- import type { Geometry } from "@wandelbots/nova-api/v1"
3
- import type { SafetySetupSafetyZone } from "@wandelbots/nova-js/v1"
2
+ import type { Geometry, SafetySetupSafetyZone } from "@wandelbots/nova-js/v1"
4
3
  import * as THREE from "three"
5
4
  import { ConvexGeometry } from "three-stdlib"
6
5
 
@@ -1,5 +1,5 @@
1
1
  import type { ThreeElements } from "@react-three/fiber"
2
- import type { Collider } from "@wandelbots/nova-api/v1"
2
+ import type { Collider } from "@wandelbots/nova-js/v1"
3
3
  import ColliderElement from "./ColliderElement"
4
4
 
5
5
  export type MeshChildrenProvider = (
@@ -1,4 +1,4 @@
1
- import type { Collider } from "@wandelbots/nova-api/v1"
1
+ import type { Collider } from "@wandelbots/nova-js/v1"
2
2
  import type React from "react"
3
3
  import * as THREE from "three"
4
4
  import { colliderShapeToBufferGeometry } from "./colliderShapeToBufferGeometry"
@@ -1,4 +1,4 @@
1
- import type { CollisionScene } from "@wandelbots/nova-api/v1"
1
+ import type { CollisionScene } from "@wandelbots/nova-js/v1"
2
2
  import ColliderCollection, {
3
3
  type MeshChildrenProvider,
4
4
  } from "./ColliderCollection"
@@ -1,4 +1,4 @@
1
- import type { ColliderShape } from "@wandelbots/nova-api/v1"
1
+ import type { ColliderShape } from "@wandelbots/nova-js/v1"
2
2
  import * as THREE from "three"
3
3
  import { ConvexGeometry } from "three-stdlib"
4
4
 
@@ -16,7 +16,7 @@ A navigation header component that displays the current application's icon and n
16
16
  import {
17
17
  AppHeader,
18
18
  type AppItem,
19
- } from "@wandelbots/wandelbots-js-react-components"
19
+ } from "@wandelbots/wandelbots-js-react-components/core"
20
20
  import { Home, Settings, Person } from "@mui/icons-material"
21
21
 
22
22
  const apps: AppItem[] = [
@@ -1,8 +1,5 @@
1
1
  import { Chip, Typography, useTheme } from "@mui/material"
2
- import type {
3
- RobotControllerStateOperationModeEnum,
4
- RobotControllerStateSafetyStateEnum,
5
- } from "@wandelbots/nova-js/v1"
2
+ import type { OperationMode, SafetyStateType } from "@wandelbots/nova-js/v2"
6
3
  import { observer } from "mobx-react-lite"
7
4
  import { useTranslation } from "react-i18next"
8
5
  import { externalizeComponent } from "../externalizeComponent"
@@ -12,9 +9,9 @@ export interface ProgramStateIndicatorProps {
12
9
  /** The current state of the program */
13
10
  programState: ProgramState
14
11
  /** The current safety state of the robot controller */
15
- safetyState: RobotControllerStateSafetyStateEnum
12
+ safetyState: SafetyStateType
16
13
  /** The current operation mode of the robot controller */
17
- operationMode: RobotControllerStateOperationModeEnum
14
+ operationMode: OperationMode
18
15
  /** Additional CSS class name */
19
16
  className?: string
20
17
  }
@@ -1,16 +1,13 @@
1
1
  import { Box, Button, Card, Divider, Typography, useTheme } from "@mui/material"
2
2
  import { Bounds } from "@react-three/drei"
3
3
  import { Canvas } from "@react-three/fiber"
4
- import type {
5
- ConnectedMotionGroup,
6
- RobotControllerStateOperationModeEnum,
7
- RobotControllerStateSafetyStateEnum,
8
- } from "@wandelbots/nova-js/v1"
4
+ import type { OperationMode, SafetyStateType } from "@wandelbots/nova-js/v2"
9
5
  import { observer } from "mobx-react-lite"
10
6
  import { useCallback, useEffect, useRef, useState } from "react"
11
7
  import { useTranslation } from "react-i18next"
12
8
  import type { Group } from "three"
13
9
  import { externalizeComponent } from "../externalizeComponent"
10
+ import type { ConnectedMotionGroup } from "../lib/ConnectedMotionGroup"
14
11
  import { PresetEnvironment } from "./3d-viewport/PresetEnvironment"
15
12
  import type { ProgramState } from "./ProgramControl"
16
13
  import { ProgramStateIndicator } from "./ProgramStateIndicator"
@@ -22,9 +19,9 @@ export interface RobotCardProps {
22
19
  /** Current program state */
23
20
  programState: ProgramState
24
21
  /** Current safety state of the robot controller */
25
- safetyState: RobotControllerStateSafetyStateEnum
22
+ safetyState: SafetyStateType
26
23
  /** Current operation mode of the robot controller */
27
- operationMode: RobotControllerStateOperationModeEnum
24
+ operationMode: OperationMode
28
25
  /** Whether the "Drive to Home" button should be enabled */
29
26
  driveToHomeEnabled?: boolean
30
27
  /** Callback fired when "Drive to Home" button is pressed */
@@ -55,7 +52,7 @@ export interface RobotCardProps {
55
52
  flangeRef?: React.Ref<Group>
56
53
  postModelRender?: () => void
57
54
  transparentColor?: string
58
- getModel?: (modelFromController: string) => string
55
+ getModel?: (modelFromController: string) => Promise<string>
59
56
  }>
60
57
  /** Custom component to render in the content area (optional) */
61
58
  customContentComponent?: React.ComponentType<Record<string, unknown>>
@@ -0,0 +1,37 @@
1
+ import { Alert, AlertTitle, Backdrop, Button, Stack } from "@mui/material"
2
+ import { observer } from "mobx-react-lite"
3
+ import { useTranslation } from "react-i18next"
4
+ import { type JoggingStore } from "./JoggingStore"
5
+
6
+ export const JoggingBlocked = observer(({ store }: { store: JoggingStore }) => {
7
+ const { t } = useTranslation()
8
+
9
+ return (
10
+ <Backdrop
11
+ open={true}
12
+ sx={{
13
+ position: "absolute",
14
+ zIndex: (theme) => theme.zIndex.drawer + 1,
15
+ color: "#fff",
16
+ background: "rgba(15, 15, 15, 0.88)",
17
+ justifyContent: "flex-start",
18
+ alignItems: "flex-start",
19
+ }}
20
+ >
21
+ <Stack sx={{ m: 2, width: "100%" }}>
22
+ <Alert severity="error" sx={{ mb: 2 }}>
23
+ <AlertTitle>{t("Jogging.Blocked.ti")}</AlertTitle>
24
+ {t("Jogging.Blocked.lb")}
25
+ </Alert>
26
+
27
+ <Button
28
+ variant="contained"
29
+ color="secondary"
30
+ onClick={() => store.unblock()}
31
+ >
32
+ {t("Jogging.Blocked.Reenable.bt")}
33
+ </Button>
34
+ </Stack>
35
+ </Backdrop>
36
+ )
37
+ })
@@ -6,13 +6,18 @@ import {
6
6
  useTheme,
7
7
  type Theme,
8
8
  } from "@mui/material"
9
- import { degreesToRadians, radiansToDegrees } from "@wandelbots/nova-js"
9
+ import {
10
+ degreesToRadians,
11
+ radiansToDegrees,
12
+ XYZ_TO_VECTOR,
13
+ } from "@wandelbots/nova-js"
10
14
  import { observer } from "mobx-react-lite"
11
15
  import { useTranslation } from "react-i18next"
12
16
  import XAxisIcon from "../../icons/axis-x.svg"
13
17
  import YAxisIcon from "../../icons/axis-y.svg"
14
18
  import ZAxisIcon from "../../icons/axis-z.svg"
15
19
  import RotationIcon from "../../icons/rotation.svg"
20
+ import type { Vector3Simple } from "../../lib/JoggerConnection"
16
21
  import { useReaction } from "../utils/hooks"
17
22
  import { JoggingCartesianAxisControl } from "./JoggingCartesianAxisControl"
18
23
  import { JoggingJointLimitDetector } from "./JoggingJointLimitDetector"
@@ -56,7 +61,7 @@ export const JoggingCartesianTab = observer(
56
61
  () => {
57
62
  store.jogger.motionStream.motionStateSocket.changeUrl(
58
63
  store.jogger.nova.makeWebsocketURL(
59
- `/motion-groups/${store.jogger.motionGroupId}/state-stream?tcp=${store.selectedTcpId}&response_coordinate_system=${store.selectedCoordSystemId}`,
64
+ `/controllers/${store.jogger.motionStream.controllerId}/motion-groups/${store.jogger.motionGroupId}/state-stream?tcp=${store.selectedTcpId}`,
60
65
  ),
61
66
  )
62
67
  },
@@ -70,8 +75,8 @@ export const JoggingCartesianTab = observer(
70
75
  const jogger = await store.activate()
71
76
 
72
77
  const tcpPose = jogger.motionStream.rapidlyChangingMotionState.tcp_pose
73
- const jointPosition =
74
- jogger.motionStream.rapidlyChangingMotionState.state.joint_position
78
+ const jointPosition = jogger.motionStream.rapidlyChangingMotionState
79
+ .joint_position as Vector3Simple
75
80
  if (!tcpPose) return
76
81
 
77
82
  await store.withMotionLock(async () => {
@@ -117,13 +122,13 @@ export const JoggingCartesianTab = observer(
117
122
  }
118
123
 
119
124
  if (opts.motionType === "translate") {
120
- await store.jogger.startTCPTranslation({
125
+ await store.jogger.translateTCP({
121
126
  axis: opts.axis,
122
127
  direction: opts.direction,
123
128
  velocityMmPerSec: store.translationVelocityMmPerSec,
124
129
  })
125
130
  } else {
126
- await store.jogger.startTCPRotation({
131
+ await store.jogger.rotateTCP({
127
132
  axis: opts.axis,
128
133
  direction: opts.direction,
129
134
  velocityRadsPerSec: store.rotationVelocityRadsPerSec,
@@ -189,10 +194,7 @@ export const JoggingCartesianTab = observer(
189
194
  return (
190
195
  <Stack flexGrow={1} gap={2} sx={{ padding: "18px 24px" }}>
191
196
  <Stack gap={2}>
192
- {/* Jogging options */}
193
197
  <JoggingOptions store={store} />
194
-
195
- {/* Velocity slider */}
196
198
  <JoggingVelocitySlider store={store} />
197
199
  <Divider />
198
200
  </Stack>
@@ -257,7 +259,7 @@ export const JoggingCartesianTab = observer(
257
259
  getDisplayedValue={() =>
258
260
  formatMM(
259
261
  store.jogger.motionStream.rapidlyChangingMotionState
260
- .tcp_pose?.position[axis.id] || 0,
262
+ .tcp_pose?.position?.[XYZ_TO_VECTOR[axis.id]] || 0,
261
263
  )
262
264
  }
263
265
  startJogging={(direction: "-" | "+") =>
@@ -301,7 +303,7 @@ export const JoggingCartesianTab = observer(
301
303
  getDisplayedValue={() =>
302
304
  formatDegrees(
303
305
  store.jogger.motionStream.rapidlyChangingMotionState
304
- .tcp_pose?.orientation?.[axis.id] || 0,
306
+ .tcp_pose?.orientation?.[XYZ_TO_VECTOR[axis.id]] || 0,
305
307
  )
306
308
  }
307
309
  startJogging={(direction: "-" | "+") =>
@@ -17,14 +17,14 @@ export const JoggingJointLimitDetector = ({
17
17
  const { t } = useTranslation()
18
18
 
19
19
  const [jointLimitsReached, setJointLimitsReached] = useState(
20
- store.jogger.motionStream.rapidlyChangingMotionState.state
20
+ store.jogger.motionStream.rapidlyChangingMotionState
21
21
  .joint_limit_reached.limit_reached,
22
22
  )
23
23
  const jointLimitsReachedRef = useRef(jointLimitsReached)
24
24
 
25
25
  useAnimationFrame(() => {
26
26
  const newLimitsReached =
27
- store.jogger.motionStream.rapidlyChangingMotionState.state
27
+ store.jogger.motionStream.rapidlyChangingMotionState
28
28
  .joint_limit_reached.limit_reached
29
29
 
30
30
  if (!isEqual(jointLimitsReachedRef.current, newLimitsReached)) {
@@ -16,7 +16,7 @@ export const JoggingJointTab = observer(
16
16
  }) {
17
17
  await store.activate()
18
18
 
19
- await store.jogger.startJointRotation({
19
+ await store.jogger.rotateJoints({
20
20
  joint: opts.joint,
21
21
  direction: opts.direction,
22
22
  velocityRadsPerSec: store.rotationVelocityRadsPerSec,
@@ -37,12 +37,12 @@ export const JoggingJointTab = observer(
37
37
  justifyContent="center"
38
38
  alignItems="stretch"
39
39
  sx={{ flexGrow: "1" }}
40
- id="JointControls"
41
40
  >
42
41
  <Stack alignItems="center" gap="24px">
43
42
  {store.jogger.motionStream.joints.map((joint) => {
44
43
  const jointLimits =
45
- store.motionGroupSpec.mechanical_joint_limits?.[joint.index]
44
+ store.motionGroupDescription.operation_limits.auto_limits
45
+ ?.joints?.[joint.index]?.position
46
46
  const lowerLimitDegs =
47
47
  jointLimits?.lower_limit !== undefined
48
48
  ? radiansToDegrees(jointLimits.lower_limit)
@@ -80,7 +80,7 @@ export const JoggingJointTab = observer(
80
80
  getValueDegs={() => {
81
81
  const value =
82
82
  store.jogger.motionStream.rapidlyChangingMotionState
83
- .state.joint_position.joints[joint.index]
83
+ .joint_position[joint.index]
84
84
  return value !== undefined
85
85
  ? radiansToDegrees(value)
86
86
  : undefined
@@ -1,5 +1,6 @@
1
1
  import { Box, MenuItem } from "@mui/material"
2
2
  import { observer } from "mobx-react-lite"
3
+ import { useId } from "react"
3
4
  import { useTranslation } from "react-i18next"
4
5
  import AdornedSelect from "../experimental/utils/AdornedSelect"
5
6
  import {
@@ -11,6 +12,7 @@ import {
11
12
 
12
13
  export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
13
14
  const { t } = useTranslation()
15
+ const componentId = useId()
14
16
  const joggingOptions: React.ReactElement[] = []
15
17
 
16
18
  function translateOrientation(orientation: OrientationId): string {
@@ -28,7 +30,7 @@ export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
28
30
  joggingOptions.push(
29
31
  <AdornedSelect
30
32
  key="coord"
31
- labelId="jogging-coord-select"
33
+ labelId={`jogging-coord-select-${componentId}`}
32
34
  labelValue={t("Jogging.CoordinateSystem.hlb")}
33
35
  value={store.selectedCoordSystemId}
34
36
  size="small"
@@ -54,7 +56,7 @@ export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
54
56
  joggingOptions.push(
55
57
  <AdornedSelect
56
58
  key="tcp"
57
- labelId="jogging-tcp-select"
59
+ labelId={`jogging-tcp-select-${componentId}`}
58
60
  labelValue="TCP"
59
61
  value={store.selectedTcpId}
60
62
  size="small"
@@ -78,8 +80,7 @@ export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
78
80
  <AdornedSelect
79
81
  key="orientation"
80
82
  labelValue={t("Jogging.Cartesian.Orientation.lb")}
81
- id="orientation-select"
82
- labelId="orientation-select"
83
+ labelId={`orientation-select-${componentId}`}
83
84
  value={store.selectedOrientation}
84
85
  onChange={(event) =>
85
86
  store.setSelectedOrientation(event.target.value as OrientationId)
@@ -100,7 +101,7 @@ export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
100
101
  <AdornedSelect
101
102
  key="increment"
102
103
  labelValue={t("Jogging.Increment.hlb")}
103
- labelId="jogging-increment-select"
104
+ labelId={`jogging-increment-select-${componentId}`}
104
105
  size="small"
105
106
  variant="filled"
106
107
  value={store.activeDiscreteIncrement?.id || "continuous"}
@@ -1,14 +1,16 @@
1
1
  import MoveIcon from "@mui/icons-material/OpenWith"
2
2
  import ShareIcon from "@mui/icons-material/Share"
3
3
  import { Stack, Tab, Tabs, type SxProps } from "@mui/material"
4
- import { NovaClient } from "@wandelbots/nova-js/v1"
4
+ import { NovaClient } from "@wandelbots/nova-js/v2"
5
5
  import { isString } from "lodash-es"
6
6
  import { runInAction } from "mobx"
7
7
  import { observer, useLocalObservable } from "mobx-react-lite"
8
8
  import { useEffect } from "react"
9
9
  import { useTranslation } from "react-i18next"
10
10
  import { externalizeComponent } from "../../externalizeComponent"
11
+ import { JoggerConnection } from "../../lib/JoggerConnection"
11
12
  import { LoadingCover } from "../LoadingCover"
13
+ import { JoggingBlocked } from "./JoggingBlocked"
12
14
  import { JoggingCartesianTab } from "./JoggingCartesianTab"
13
15
  import { JoggingJointTab } from "./JoggingJointTab"
14
16
  import { JoggingStore } from "./JoggingStore"
@@ -58,7 +60,7 @@ export const JoggingPanel = externalizeComponent(
58
60
  try {
59
61
  let joggingStore = props.store
60
62
  if (!joggingStore) {
61
- const jogger = await nova.connectJogger(props.motionGroupId)
63
+ const jogger = await JoggerConnection.open(nova, props.motionGroupId)
62
64
  joggingStore = await JoggingStore.loadFor(jogger)
63
65
  }
64
66
  runInAction(() => {
@@ -181,7 +183,6 @@ const JoggingPanelInner = observer(
181
183
  )
182
184
  })}
183
185
  </Tabs>
184
-
185
186
  {/* Current tab content */}
186
187
  <Stack
187
188
  flexGrow={1}
@@ -190,6 +191,8 @@ const JoggingPanelInner = observer(
190
191
  >
191
192
  {renderTabContent()}
192
193
  </Stack>
194
+ {/* Overlay when jogging connection is blocked */}
195
+ {store.blocked && <JoggingBlocked store={store} />}
193
196
  </Stack>
194
197
  )
195
198
  },