@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.
Files changed (165) hide show
  1. package/README.md +61 -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-Dr9hDTku.js +87 -0
  9. package/dist/LoadingCover-Dr9hDTku.js.map +1 -0
  10. package/dist/LoadingCover-r2yhJZF9.cjs +2 -0
  11. package/dist/LoadingCover-r2yhJZF9.cjs.map +1 -0
  12. package/dist/WandelscriptEditor-Dj7TBCkF.cjs +2 -0
  13. package/dist/WandelscriptEditor-Dj7TBCkF.cjs.map +1 -0
  14. package/dist/WandelscriptEditor-DnJvITTA.js +140 -0
  15. package/dist/WandelscriptEditor-DnJvITTA.js.map +1 -0
  16. package/dist/auth0-spa-js.production.esm-9WdmjTxR.js +1429 -0
  17. package/dist/auth0-spa-js.production.esm-9WdmjTxR.js.map +1 -0
  18. package/dist/auth0-spa-js.production.esm-BcLLh1tx.cjs +5 -0
  19. package/dist/auth0-spa-js.production.esm-BcLLh1tx.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 +4 -3
  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/Robot.d.ts +1 -1
  49. package/dist/components/robots/Robot.d.ts.map +1 -1
  50. package/dist/components/robots/RobotAnimator.d.ts +2 -2
  51. package/dist/components/robots/RobotAnimator.d.ts.map +1 -1
  52. package/dist/components/robots/SupportedRobot.d.ts +3 -3
  53. package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
  54. package/dist/components/robots/manufacturerHomePositions.d.ts +1 -1
  55. package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -1
  56. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
  57. package/dist/components/safetyBar/OperationModeIndicator.d.ts +2 -2
  58. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
  59. package/dist/components/safetyBar/SafetyBar.d.ts +3 -3
  60. package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
  61. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +2 -2
  62. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
  63. package/dist/components/utils/errorHandling.d.ts.map +1 -1
  64. package/dist/components/utils/errorHandling.test.d.ts +2 -0
  65. package/dist/components/utils/errorHandling.test.d.ts.map +1 -0
  66. package/dist/core.cjs.js +2 -0
  67. package/dist/core.cjs.js.map +1 -0
  68. package/dist/core.d.ts +33 -0
  69. package/dist/core.d.ts.map +1 -0
  70. package/dist/core.es.js +54 -0
  71. package/dist/core.es.js.map +1 -0
  72. package/dist/index-CAib4NKw.js +2261 -0
  73. package/dist/index-CAib4NKw.js.map +1 -0
  74. package/dist/index-CqMZL0FV.cjs +2 -0
  75. package/dist/index-CqMZL0FV.cjs.map +1 -0
  76. package/dist/index-CxasuX80.js +5212 -0
  77. package/dist/index-CxasuX80.js.map +1 -0
  78. package/dist/index-DxwppshT.cjs +29 -0
  79. package/dist/index-DxwppshT.cjs.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/lib/ConnectedMotionGroup.d.ts +90 -0
  87. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -0
  88. package/dist/lib/JoggerConnection.d.ts +113 -0
  89. package/dist/lib/JoggerConnection.d.ts.map +1 -0
  90. package/dist/lib/JoggerConnection.test.d.ts +2 -0
  91. package/dist/lib/JoggerConnection.test.d.ts.map +1 -0
  92. package/dist/lib/MotionStreamConnection.d.ts +24 -0
  93. package/dist/lib/MotionStreamConnection.d.ts.map +1 -0
  94. package/dist/lib/MotionStreamConnection.test.d.ts +2 -0
  95. package/dist/lib/MotionStreamConnection.test.d.ts.map +1 -0
  96. package/dist/lib/motionStateUpdate.d.ts +7 -0
  97. package/dist/lib/motionStateUpdate.d.ts.map +1 -0
  98. package/dist/lib/motionStateUpdate.test.d.ts +2 -0
  99. package/dist/lib/motionStateUpdate.test.d.ts.map +1 -0
  100. package/dist/manufacturerHomePositions-Ca80ycLi.cjs +2 -0
  101. package/dist/manufacturerHomePositions-Ca80ycLi.cjs.map +1 -0
  102. package/dist/manufacturerHomePositions-CgaG5vaK.js +976 -0
  103. package/dist/manufacturerHomePositions-CgaG5vaK.js.map +1 -0
  104. package/dist/theming-BQcKj8Gp.cjs +133 -0
  105. package/dist/theming-BQcKj8Gp.cjs.map +1 -0
  106. package/dist/theming-Bafjg0Wg.js +23460 -0
  107. package/dist/theming-Bafjg0Wg.js.map +1 -0
  108. package/dist/wandelscript.cjs.js +2 -0
  109. package/dist/wandelscript.cjs.js.map +1 -0
  110. package/dist/wandelscript.d.ts +2 -0
  111. package/dist/wandelscript.d.ts.map +1 -0
  112. package/dist/wandelscript.es.js +5 -0
  113. package/dist/wandelscript.es.js.map +1 -0
  114. package/package.json +49 -21
  115. package/src/3d.ts +15 -0
  116. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +1 -1
  117. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +1 -2
  118. package/src/components/3d-viewport/collider/ColliderCollection.tsx +1 -1
  119. package/src/components/3d-viewport/collider/ColliderElement.tsx +1 -1
  120. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +1 -1
  121. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +1 -1
  122. package/src/components/AppHeader.md +1 -1
  123. package/src/components/ProgramStateIndicator.tsx +3 -6
  124. package/src/components/RobotCard.tsx +4 -7
  125. package/src/components/jogging/JoggingBlocked.tsx +37 -0
  126. package/src/components/jogging/JoggingCartesianTab.tsx +13 -11
  127. package/src/components/jogging/JoggingJointLimitDetector.tsx +2 -2
  128. package/src/components/jogging/JoggingJointTab.tsx +4 -4
  129. package/src/components/jogging/JoggingOptions.tsx +6 -5
  130. package/src/components/jogging/JoggingPanel.tsx +6 -3
  131. package/src/components/jogging/JoggingStore.ts +66 -39
  132. package/src/components/jogging/PoseCartesianValues.tsx +3 -4
  133. package/src/components/jogging/PoseJointValues.tsx +3 -4
  134. package/src/components/robots/DHRobot.tsx +2 -3
  135. package/src/components/robots/Robot.tsx +1 -1
  136. package/src/components/robots/RobotAnimator.test.tsx +7 -22
  137. package/src/components/robots/RobotAnimator.tsx +8 -13
  138. package/src/components/robots/SupportedRobot.tsx +3 -6
  139. package/src/components/robots/manufacturerHomePositions.ts +1 -1
  140. package/src/components/safetyBar/ControllerTypeIndicator.tsx +4 -2
  141. package/src/components/safetyBar/OperationModeIndicator.tsx +7 -5
  142. package/src/components/safetyBar/SafetyBar.tsx +3 -6
  143. package/src/components/safetyBar/SafetyStateIndicator.tsx +9 -7
  144. package/src/components/utils/errorHandling.test.ts +41 -0
  145. package/src/components/utils/errorHandling.ts +4 -0
  146. package/src/core.ts +33 -0
  147. package/src/i18n/locales/de/translations.json +3 -0
  148. package/src/i18n/locales/en/translations.json +3 -0
  149. package/src/index.ts +4 -43
  150. package/src/lib/ConnectedMotionGroup.ts +444 -0
  151. package/src/lib/JoggerConnection.test.ts +120 -0
  152. package/src/lib/JoggerConnection.ts +674 -0
  153. package/src/lib/MotionStreamConnection.test.ts +23 -0
  154. package/src/lib/MotionStreamConnection.ts +189 -0
  155. package/src/lib/motionStateUpdate.test.ts +28 -0
  156. package/src/lib/motionStateUpdate.ts +117 -0
  157. package/src/wandelscript.ts +2 -0
  158. package/dist/auth0-spa-js.production.esm-1QXzndwB.js +0 -950
  159. package/dist/auth0-spa-js.production.esm-1QXzndwB.js.map +0 -1
  160. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs +0 -5
  161. package/dist/auth0-spa-js.production.esm-BLRAk7Yh.cjs.map +0 -1
  162. package/dist/index.cjs +0 -155
  163. package/dist/index.cjs.map +0 -1
  164. package/dist/index.js +0 -34927
  165. 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-Dj7TBCkF.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-DnJvITTA.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": "3.4.0-pr.feat-add-yaskawa-gp200s.438.0503e4b",
3
+ "version": "3.4.0-pr.feat-yaskawa-gp200s.437.1b5737e",
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",
@@ -50,17 +66,19 @@
50
66
  "devDependencies": {
51
67
  "@emotion/react": "^11.14.0",
52
68
  "@emotion/styled": "^11.14.0",
69
+ "@monaco-editor/react": "^4.7.0",
53
70
  "@mui/icons-material": "^7.1.1",
54
71
  "@mui/material": "^7.1.1",
55
72
  "@react-three/drei": "^10.2.0",
56
73
  "@react-three/fiber": "^9.1.2",
57
- "@rollup/plugin-commonjs": "^28.0.2",
74
+ "@rollup/plugin-commonjs": "^29.0.0",
58
75
  "@rollup/plugin-json": "^6.1.0",
59
76
  "@rollup/plugin-node-resolve": "^16.0.0",
60
77
  "@rollup/plugin-terser": "^0.4.4",
61
78
  "@rollup/plugin-typescript": "^12.1.2",
62
- "@storybook/addon-docs": "^10.0.1",
63
- "@storybook/react-vite": "^10.0.1",
79
+ "@shikijs/monaco": "^3.1.0",
80
+ "@storybook/addon-docs": "^10.1.7",
81
+ "@storybook/react-vite": "^10.1.10",
64
82
  "@storybook/test-runner": "^0.24.1",
65
83
  "@svgr/rollup": "^8.1.0",
66
84
  "@testing-library/jest-dom": "^6.6.3",
@@ -68,19 +86,19 @@
68
86
  "@testing-library/user-event": "^14.6.1",
69
87
  "@types/lodash-es": "^4.17.12",
70
88
  "@types/react": "^19.1.8",
71
- "@types/three": "^0.174.0",
89
+ "@types/three": "^0.182.0",
72
90
  "@vitejs/plugin-react": "^4.3.4",
73
- "@wandelbots/nova-js": "^2.1.0",
91
+ "@wandelbots/nova-js": "3.3.1",
74
92
  "add": "^2.0.6",
75
- "eslint-plugin-storybook": "^10.0.1",
76
- "glob": "^11.0.1",
93
+ "eslint-plugin-storybook": "^10.1.10",
94
+ "glob": "^13.0.0",
77
95
  "http-server": "^14.1.1",
78
96
  "husky": "^9.1.7",
79
97
  "i18next": "^25.2.1",
80
98
  "jest-simple-dot-reporter": "^1.0.5",
81
99
  "jest-summary-reporter": "^0.0.2",
82
- "jsdom": "^26.1.0",
83
- "monaco-editor": "^0.52.2",
100
+ "jsdom": "^27.4.0",
101
+ "monaco-editor": "^0.55.1",
84
102
  "nodemon": "^3.1.9",
85
103
  "npm-run-all": "^4.1.5",
86
104
  "postcss": "^8.5.3",
@@ -95,9 +113,10 @@
95
113
  "rollup-plugin-peer-deps-external": "^2.2.4",
96
114
  "rollup-plugin-postcss": "^4.0.2",
97
115
  "semantic-release": "^24.2.3",
98
- "storybook": "^10.0.1",
116
+ "shiki": "^3.1.0",
117
+ "storybook": "^10.1.11",
99
118
  "storybook-preset-inline-svg": "^1.0.1",
100
- "three": "^0.174.0",
119
+ "three": "^0.182.0",
101
120
  "three-stdlib": "^2.35.14",
102
121
  "ts-dedent": "^2.2.0",
103
122
  "typescript": "^5.8.2",
@@ -105,24 +124,36 @@
105
124
  "vite": "^6.2.0",
106
125
  "vite-plugin-svgr": "^4.3.0",
107
126
  "vitest": "^3.0.7",
108
- "wait-on": "^8.0.2"
127
+ "wait-on": "^9.0.3"
109
128
  },
110
129
  "peerDependencies": {
111
130
  "@emotion/react": "^11.11.1",
112
131
  "@emotion/styled": "^11.11.0",
132
+ "@monaco-editor/react": "^4.7.0",
113
133
  "@mui/icons-material": "^6 || ^7",
114
134
  "@mui/material": "^6 || ^7",
115
135
  "@react-three/drei": "^9.122.0 || ^10",
116
136
  "@react-three/fiber": "^8 || ^9",
137
+ "@shikijs/monaco": "^3.1.0",
117
138
  "react": "^18.0.0 || ^19.0.0",
118
139
  "react-dom": "^18.0.0 || ^19.0.0",
119
- "three": ">=0.174",
140
+ "shiki": "^3.1.0",
141
+ "three": ">=0.182",
120
142
  "three-stdlib": ">=2"
121
143
  },
122
144
  "peerDependenciesMeta": {
123
145
  "react-dom": {
124
146
  "optional": true
125
147
  },
148
+ "@monaco-editor/react": {
149
+ "optional": true
150
+ },
151
+ "@shikijs/monaco": {
152
+ "optional": true
153
+ },
154
+ "shiki": {
155
+ "optional": true
156
+ },
126
157
  "@react-three/drei": {
127
158
  "optional": true
128
159
  },
@@ -137,17 +168,14 @@
137
168
  }
138
169
  },
139
170
  "dependencies": {
140
- "@monaco-editor/react": "^4.7.0",
141
171
  "@mui/x-charts": "^8.9.0",
142
- "@mui/x-data-grid": "^8.10.1",
143
- "@shikijs/monaco": "^3.1.0",
172
+ "@mui/x-data-grid": "^8.23.0",
144
173
  "i18next-browser-languagedetector": "^8.0.4",
145
174
  "lodash-es": "^4.17.21",
146
175
  "mobx": "^6.13.6",
147
176
  "mobx-react-lite": "^4.1.0",
148
177
  "react-error-boundary": "^6.0.0",
149
- "react-i18next": "^15.5.2",
150
- "shiki": "^3.1.0"
178
+ "react-i18next": "^15.5.2"
151
179
  },
152
180
  "overrides": {
153
181
  "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 */
@@ -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
  },