@wandelbots/wandelbots-js-react-components 1.11.1 → 1.11.3

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 (231) hide show
  1. package/dist/index.cjs +29 -29
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +3109 -3065
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/Setup.d.ts.map +1 -0
  6. package/dist/src/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -0
  7. package/dist/src/components/3d-viewport/PresetEnvironment.d.ts.map +1 -0
  8. package/dist/src/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -0
  9. package/dist/src/components/ConsoleFilter.d.ts.map +1 -0
  10. package/dist/src/components/CopyableText.d.ts.map +1 -0
  11. package/dist/src/components/LoadingButton.d.ts.map +1 -0
  12. package/dist/src/components/LoadingCover.d.ts.map +1 -0
  13. package/dist/src/components/ThemeSelect.d.ts.map +1 -0
  14. package/dist/src/components/VelocitySlider.d.ts.map +1 -0
  15. package/dist/src/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -0
  16. package/dist/src/components/jogging/JoggingCartesianTab.d.ts.map +1 -0
  17. package/dist/src/components/jogging/JoggingCartesianValues.d.ts.map +1 -0
  18. package/dist/src/components/jogging/JoggingFreedriveTab.d.ts.map +1 -0
  19. package/dist/src/components/jogging/JoggingJointLimitDetector.d.ts.map +1 -0
  20. package/dist/src/components/jogging/JoggingJointRotationControl.d.ts.map +1 -0
  21. package/dist/src/components/jogging/JoggingJointTab.d.ts.map +1 -0
  22. package/dist/src/components/jogging/JoggingJointValues.d.ts.map +1 -0
  23. package/dist/src/components/jogging/JoggingOptions.d.ts.map +1 -0
  24. package/dist/{components → src/components}/jogging/JoggingPanel.d.ts +8 -5
  25. package/dist/src/components/jogging/JoggingPanel.d.ts.map +1 -0
  26. package/dist/src/components/jogging/JoggingStore.d.ts.map +1 -0
  27. package/dist/src/components/jogging/JoggingVelocitySlider.d.ts.map +1 -0
  28. package/dist/src/components/modal/NoMotionGroupModal.d.ts.map +1 -0
  29. package/dist/src/components/robots/ABB_1200_07_7.d.ts.map +1 -0
  30. package/dist/src/components/robots/AxisConfig.d.ts.map +1 -0
  31. package/dist/src/components/robots/DHRobot.d.ts.map +1 -0
  32. package/dist/src/components/robots/FANUC_ARC_Mate_100iD.d.ts.map +1 -0
  33. package/dist/src/components/robots/FANUC_ARC_Mate_120iD.d.ts.map +1 -0
  34. package/dist/src/components/robots/FANUC_CRX10iA.d.ts.map +1 -0
  35. package/dist/src/components/robots/FANUC_CRX20iAL.d.ts.map +1 -0
  36. package/dist/src/components/robots/FANUC_CRX25iA.d.ts.map +1 -0
  37. package/dist/src/components/robots/FANUC_CRX25iAL.d.ts.map +1 -0
  38. package/dist/src/components/robots/KUKA_KR210_R2700.d.ts.map +1 -0
  39. package/dist/src/components/robots/KUKA_KR270_R2700.d.ts.map +1 -0
  40. package/dist/src/components/robots/Robot.d.ts.map +1 -0
  41. package/dist/src/components/robots/RobotAnimator.d.ts.map +1 -0
  42. package/dist/{components → src/components}/robots/SupportedRobot.d.ts +1 -1
  43. package/dist/src/components/robots/SupportedRobot.d.ts.map +1 -0
  44. package/dist/src/components/robots/UniversalRobots_UR10.d.ts.map +1 -0
  45. package/dist/src/components/robots/UniversalRobots_UR10e.d.ts.map +1 -0
  46. package/dist/src/components/robots/UniversalRobots_UR3.d.ts.map +1 -0
  47. package/dist/src/components/robots/UniversalRobots_UR3e.d.ts.map +1 -0
  48. package/dist/src/components/robots/UniversalRobots_UR5.d.ts.map +1 -0
  49. package/dist/src/components/robots/UniversalRobots_UR5e.d.ts.map +1 -0
  50. package/dist/src/components/robots/Yaskawa_AR1440.d.ts.map +1 -0
  51. package/dist/src/components/robots/Yaskawa_AR1730.d.ts.map +1 -0
  52. package/dist/src/components/robots/Yaskawa_AR2010.d.ts.map +1 -0
  53. package/dist/src/components/robots/Yaskawa_AR3120.d.ts.map +1 -0
  54. package/dist/src/components/robots/Yaskawa_AR900.d.ts.map +1 -0
  55. package/dist/src/components/utils/converters.d.ts.map +1 -0
  56. package/dist/src/components/utils/errorHandling.d.ts.map +1 -0
  57. package/dist/src/components/utils/hooks.d.ts.map +1 -0
  58. package/dist/src/components/utils/robotTreeQuery.d.ts.map +1 -0
  59. package/dist/src/components/wandelscript-editor/WandelscriptEditor.d.ts.map +1 -0
  60. package/dist/src/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +1 -0
  61. package/dist/src/externalizeComponent.d.ts +7 -0
  62. package/dist/src/externalizeComponent.d.ts.map +1 -0
  63. package/dist/src/i18n/config.d.ts.map +1 -0
  64. package/dist/src/icons/index.d.ts.map +1 -0
  65. package/dist/src/index.d.ts +14 -0
  66. package/dist/src/index.d.ts.map +1 -0
  67. package/dist/src/themes/color.d.ts.map +1 -0
  68. package/dist/src/themes/theming.d.ts.map +1 -0
  69. package/dist/{components/jogging → stories}/JoggingCartesianAxisControl.stories.d.ts +1 -1
  70. package/dist/stories/JoggingCartesianAxisControl.stories.d.ts.map +1 -0
  71. package/dist/{components/jogging → stories}/JoggingJointRotationControl.stories.d.ts +1 -1
  72. package/dist/stories/JoggingJointRotationControl.stories.d.ts.map +1 -0
  73. package/dist/{components/jogging → stories}/JoggingPanel.stories.d.ts +1 -1
  74. package/dist/stories/JoggingPanel.stories.d.ts.map +1 -0
  75. package/dist/{components → stories}/LoadingButton.stories.d.ts +1 -1
  76. package/dist/stories/LoadingButton.stories.d.ts.map +1 -0
  77. package/dist/stories/SafetyZonesRenderer.stories.d.ts +147 -0
  78. package/dist/stories/SafetyZonesRenderer.stories.d.ts.map +1 -0
  79. package/dist/{components/robots → stories}/SupportedRobot.stories.d.ts +2 -2
  80. package/dist/stories/SupportedRobot.stories.d.ts.map +1 -0
  81. package/dist/{components → stories}/VelocitySlider.stories.d.ts +1 -1
  82. package/dist/stories/VelocitySlider.stories.d.ts.map +1 -0
  83. package/dist/{components/wandelscript-editor → stories}/WandelscriptEditor.stories.d.ts +1 -1
  84. package/dist/stories/WandelscriptEditor.stories.d.ts.map +1 -0
  85. package/dist/stories/novaTheme.stories.d.ts.map +1 -0
  86. package/package.json +5 -6
  87. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +51 -0
  88. package/src/components/VelocitySlider.tsx +1 -1
  89. package/src/components/jogging/JoggingCartesianAxisControl.tsx +98 -95
  90. package/src/components/jogging/JoggingJointRotationControl.tsx +182 -177
  91. package/src/components/jogging/JoggingPanel.tsx +106 -90
  92. package/src/components/modal/NoMotionGroupModal.tsx +70 -62
  93. package/src/components/robots/SupportedRobot.tsx +191 -188
  94. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +98 -100
  95. package/src/externalizeComponent.tsx +8 -6
  96. package/src/index.ts +10 -42
  97. package/dist/Setup.d.ts.map +0 -1
  98. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +0 -1
  99. package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +0 -1
  100. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +0 -1
  101. package/dist/components/ConsoleFilter.d.ts.map +0 -1
  102. package/dist/components/CopyableText.d.ts.map +0 -1
  103. package/dist/components/LoadingButton.d.ts.map +0 -1
  104. package/dist/components/LoadingButton.stories.d.ts.map +0 -1
  105. package/dist/components/LoadingCover.d.ts.map +0 -1
  106. package/dist/components/ThemeSelect.d.ts.map +0 -1
  107. package/dist/components/VelocitySlider.d.ts.map +0 -1
  108. package/dist/components/VelocitySlider.stories.d.ts.map +0 -1
  109. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +0 -1
  110. package/dist/components/jogging/JoggingCartesianAxisControl.stories.d.ts.map +0 -1
  111. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +0 -1
  112. package/dist/components/jogging/JoggingCartesianValues.d.ts.map +0 -1
  113. package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +0 -1
  114. package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +0 -1
  115. package/dist/components/jogging/JoggingJointRotationControl.d.ts.map +0 -1
  116. package/dist/components/jogging/JoggingJointRotationControl.stories.d.ts.map +0 -1
  117. package/dist/components/jogging/JoggingJointTab.d.ts.map +0 -1
  118. package/dist/components/jogging/JoggingJointValues.d.ts.map +0 -1
  119. package/dist/components/jogging/JoggingOptions.d.ts.map +0 -1
  120. package/dist/components/jogging/JoggingPanel.d.ts.map +0 -1
  121. package/dist/components/jogging/JoggingPanel.stories.d.ts.map +0 -1
  122. package/dist/components/jogging/JoggingStore.d.ts.map +0 -1
  123. package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +0 -1
  124. package/dist/components/modal/NoMotionGroupModal.d.ts.map +0 -1
  125. package/dist/components/robots/ABB_1200_07_7.d.ts.map +0 -1
  126. package/dist/components/robots/AxisConfig.d.ts.map +0 -1
  127. package/dist/components/robots/DHRobot.d.ts.map +0 -1
  128. package/dist/components/robots/FANUC_ARC_Mate_100iD.d.ts.map +0 -1
  129. package/dist/components/robots/FANUC_ARC_Mate_120iD.d.ts.map +0 -1
  130. package/dist/components/robots/FANUC_CRX10iA.d.ts.map +0 -1
  131. package/dist/components/robots/FANUC_CRX20iAL.d.ts.map +0 -1
  132. package/dist/components/robots/FANUC_CRX25iA.d.ts.map +0 -1
  133. package/dist/components/robots/FANUC_CRX25iAL.d.ts.map +0 -1
  134. package/dist/components/robots/KUKA_KR210_R2700.d.ts.map +0 -1
  135. package/dist/components/robots/KUKA_KR270_R2700.d.ts.map +0 -1
  136. package/dist/components/robots/Robot.d.ts.map +0 -1
  137. package/dist/components/robots/RobotAnimator.d.ts.map +0 -1
  138. package/dist/components/robots/SupportedRobot.d.ts.map +0 -1
  139. package/dist/components/robots/SupportedRobot.stories.d.ts.map +0 -1
  140. package/dist/components/robots/UniversalRobots_UR10.d.ts.map +0 -1
  141. package/dist/components/robots/UniversalRobots_UR10e.d.ts.map +0 -1
  142. package/dist/components/robots/UniversalRobots_UR3.d.ts.map +0 -1
  143. package/dist/components/robots/UniversalRobots_UR3e.d.ts.map +0 -1
  144. package/dist/components/robots/UniversalRobots_UR5.d.ts.map +0 -1
  145. package/dist/components/robots/UniversalRobots_UR5e.d.ts.map +0 -1
  146. package/dist/components/robots/Yaskawa_AR1440.d.ts.map +0 -1
  147. package/dist/components/robots/Yaskawa_AR1730.d.ts.map +0 -1
  148. package/dist/components/robots/Yaskawa_AR2010.d.ts.map +0 -1
  149. package/dist/components/robots/Yaskawa_AR3120.d.ts.map +0 -1
  150. package/dist/components/robots/Yaskawa_AR900.d.ts.map +0 -1
  151. package/dist/components/utils/converters.d.ts.map +0 -1
  152. package/dist/components/utils/errorHandling.d.ts.map +0 -1
  153. package/dist/components/utils/hooks.d.ts.map +0 -1
  154. package/dist/components/utils/robotTreeQuery.d.ts.map +0 -1
  155. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts.map +0 -1
  156. package/dist/components/wandelscript-editor/WandelscriptEditor.stories.d.ts.map +0 -1
  157. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +0 -1
  158. package/dist/externalizeComponent.d.ts +0 -7
  159. package/dist/externalizeComponent.d.ts.map +0 -1
  160. package/dist/i18n/config.d.ts.map +0 -1
  161. package/dist/icons/index.d.ts.map +0 -1
  162. package/dist/index.d.ts +0 -54
  163. package/dist/index.d.ts.map +0 -1
  164. package/dist/themes/color.d.ts.map +0 -1
  165. package/dist/themes/novaTheme.stories.d.ts.map +0 -1
  166. package/dist/themes/theming.d.ts.map +0 -1
  167. package/src/components/LoadingButton.stories.tsx +0 -54
  168. package/src/components/VelocitySlider.stories.tsx +0 -27
  169. package/src/components/jogging/JoggingCartesianAxisControl.stories.tsx +0 -41
  170. package/src/components/jogging/JoggingJointRotationControl.stories.tsx +0 -50
  171. package/src/components/jogging/JoggingPanel.stories.tsx +0 -29
  172. package/src/components/robots/SupportedRobot.stories.tsx +0 -130
  173. package/src/components/wandelscript-editor/WandelscriptEditor.stories.tsx +0 -45
  174. package/src/themes/novaTheme.stories.tsx +0 -77
  175. /package/dist/{Setup.d.ts → src/Setup.d.ts} +0 -0
  176. /package/dist/{components → src/components}/3d-viewport/CoordinateSystemTransform.d.ts +0 -0
  177. /package/dist/{components → src/components}/3d-viewport/PresetEnvironment.d.ts +0 -0
  178. /package/dist/{components → src/components}/3d-viewport/SafetyZonesRenderer.d.ts +0 -0
  179. /package/dist/{components → src/components}/ConsoleFilter.d.ts +0 -0
  180. /package/dist/{components → src/components}/CopyableText.d.ts +0 -0
  181. /package/dist/{components → src/components}/LoadingButton.d.ts +0 -0
  182. /package/dist/{components → src/components}/LoadingCover.d.ts +0 -0
  183. /package/dist/{components → src/components}/ThemeSelect.d.ts +0 -0
  184. /package/dist/{components → src/components}/VelocitySlider.d.ts +0 -0
  185. /package/dist/{components → src/components}/jogging/JoggingCartesianAxisControl.d.ts +0 -0
  186. /package/dist/{components → src/components}/jogging/JoggingCartesianTab.d.ts +0 -0
  187. /package/dist/{components → src/components}/jogging/JoggingCartesianValues.d.ts +0 -0
  188. /package/dist/{components → src/components}/jogging/JoggingFreedriveTab.d.ts +0 -0
  189. /package/dist/{components → src/components}/jogging/JoggingJointLimitDetector.d.ts +0 -0
  190. /package/dist/{components → src/components}/jogging/JoggingJointRotationControl.d.ts +0 -0
  191. /package/dist/{components → src/components}/jogging/JoggingJointTab.d.ts +0 -0
  192. /package/dist/{components → src/components}/jogging/JoggingJointValues.d.ts +0 -0
  193. /package/dist/{components → src/components}/jogging/JoggingOptions.d.ts +0 -0
  194. /package/dist/{components → src/components}/jogging/JoggingStore.d.ts +0 -0
  195. /package/dist/{components → src/components}/jogging/JoggingVelocitySlider.d.ts +0 -0
  196. /package/dist/{components → src/components}/modal/NoMotionGroupModal.d.ts +0 -0
  197. /package/dist/{components → src/components}/robots/ABB_1200_07_7.d.ts +0 -0
  198. /package/dist/{components → src/components}/robots/AxisConfig.d.ts +0 -0
  199. /package/dist/{components → src/components}/robots/DHRobot.d.ts +0 -0
  200. /package/dist/{components → src/components}/robots/FANUC_ARC_Mate_100iD.d.ts +0 -0
  201. /package/dist/{components → src/components}/robots/FANUC_ARC_Mate_120iD.d.ts +0 -0
  202. /package/dist/{components → src/components}/robots/FANUC_CRX10iA.d.ts +0 -0
  203. /package/dist/{components → src/components}/robots/FANUC_CRX20iAL.d.ts +0 -0
  204. /package/dist/{components → src/components}/robots/FANUC_CRX25iA.d.ts +0 -0
  205. /package/dist/{components → src/components}/robots/FANUC_CRX25iAL.d.ts +0 -0
  206. /package/dist/{components → src/components}/robots/KUKA_KR210_R2700.d.ts +0 -0
  207. /package/dist/{components → src/components}/robots/KUKA_KR270_R2700.d.ts +0 -0
  208. /package/dist/{components → src/components}/robots/Robot.d.ts +0 -0
  209. /package/dist/{components → src/components}/robots/RobotAnimator.d.ts +0 -0
  210. /package/dist/{components → src/components}/robots/UniversalRobots_UR10.d.ts +0 -0
  211. /package/dist/{components → src/components}/robots/UniversalRobots_UR10e.d.ts +0 -0
  212. /package/dist/{components → src/components}/robots/UniversalRobots_UR3.d.ts +0 -0
  213. /package/dist/{components → src/components}/robots/UniversalRobots_UR3e.d.ts +0 -0
  214. /package/dist/{components → src/components}/robots/UniversalRobots_UR5.d.ts +0 -0
  215. /package/dist/{components → src/components}/robots/UniversalRobots_UR5e.d.ts +0 -0
  216. /package/dist/{components → src/components}/robots/Yaskawa_AR1440.d.ts +0 -0
  217. /package/dist/{components → src/components}/robots/Yaskawa_AR1730.d.ts +0 -0
  218. /package/dist/{components → src/components}/robots/Yaskawa_AR2010.d.ts +0 -0
  219. /package/dist/{components → src/components}/robots/Yaskawa_AR3120.d.ts +0 -0
  220. /package/dist/{components → src/components}/robots/Yaskawa_AR900.d.ts +0 -0
  221. /package/dist/{components → src/components}/utils/converters.d.ts +0 -0
  222. /package/dist/{components → src/components}/utils/errorHandling.d.ts +0 -0
  223. /package/dist/{components → src/components}/utils/hooks.d.ts +0 -0
  224. /package/dist/{components → src/components}/utils/robotTreeQuery.d.ts +0 -0
  225. /package/dist/{components → src/components}/wandelscript-editor/WandelscriptEditor.d.ts +0 -0
  226. /package/dist/{components → src/components}/wandelscript-editor/wandelscript.tmLanguage.d.ts +0 -0
  227. /package/dist/{i18n → src/i18n}/config.d.ts +0 -0
  228. /package/dist/{icons → src/icons}/index.d.ts +0 -0
  229. /package/dist/{themes → src/themes}/color.d.ts +0 -0
  230. /package/dist/{themes → src/themes}/theming.d.ts +0 -0
  231. /package/dist/{themes → stories}/novaTheme.stories.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wandelbots/wandelbots-js-react-components",
3
- "version": "1.11.1",
3
+ "version": "1.11.3",
4
4
  "description": "React UI toolkit for building applications on top of the Wandelbots platform",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -49,9 +49,8 @@
49
49
  "@rollup/plugin-node-resolve": "^15.2.3",
50
50
  "@rollup/plugin-terser": "^0.4.4",
51
51
  "@rollup/plugin-typescript": "^11.1.6",
52
+ "@storybook/addon-docs": "^8.2.9",
52
53
  "@storybook/addon-essentials": "^8.2.9",
53
- "@storybook/addon-interactions": "^8.2.9",
54
- "@storybook/addon-links": "^8.2.9",
55
54
  "@storybook/blocks": "^8.2.9",
56
55
  "@storybook/react": "^8.2.9",
57
56
  "@storybook/react-vite": "^8.2.9",
@@ -80,7 +79,7 @@
80
79
  "storybook-preset-inline-svg": "^1.0.1",
81
80
  "tslib": "^2.6.3",
82
81
  "typescript": "^5.5.4",
83
- "vite": "^5.3.5",
82
+ "vite": "^5.4.2",
84
83
  "vite-plugin-svgr": "^4.2.0",
85
84
  "vitest": "^2.0.5"
86
85
  },
@@ -106,13 +105,13 @@
106
105
  "@mui/icons-material": "^5.16.6",
107
106
  "@mui/lab": "^5.0.0-alpha.173",
108
107
  "@shikijs/monaco": "^1.12.0",
108
+ "@wandelbots/wandelbots-js": "^1.8.0",
109
109
  "i18next-browser-languagedetector": "^8.0.0",
110
110
  "lodash-es": "^4.17.21",
111
111
  "mobx": "^6.13.1",
112
112
  "mobx-react-lite": "^4.0.7",
113
113
  "react-error-boundary": "^4.0.13",
114
114
  "react-i18next": "^15.0.0",
115
- "shiki": "^1.12.0",
116
- "@wandelbots/wandelbots-js": "^1.8.0"
115
+ "shiki": "^1.12.0"
117
116
  }
118
117
  }
@@ -8,6 +8,41 @@ export type SafetyZonesRendererProps = {
8
8
  safetyZones: SafetySetupSafetyZone[]
9
9
  } & GroupProps
10
10
 
11
+ interface CoplanarityResult {
12
+ isCoplanar: boolean
13
+ normal?: THREE.Vector3
14
+ }
15
+
16
+ function areVerticesCoplanar(vertices: THREE.Vector3[]): CoplanarityResult {
17
+ if (vertices.length < 3) {
18
+ console.log("Not enough vertices to define a plane")
19
+ return { isCoplanar: false }
20
+ }
21
+
22
+ // Convert Vector3d to THREE.Vector3
23
+ const v0 = new THREE.Vector3(vertices[0].x, vertices[0].y, vertices[0].z)
24
+ const v1 = new THREE.Vector3(vertices[1].x, vertices[1].y, vertices[1].z)
25
+ const v2 = new THREE.Vector3(vertices[2].x, vertices[2].y, vertices[2].z)
26
+
27
+ const vector1 = new THREE.Vector3().subVectors(v1, v0)
28
+ const vector2 = new THREE.Vector3().subVectors(v2, v0)
29
+ const normal = new THREE.Vector3().crossVectors(vector1, vector2).normalize()
30
+
31
+ // Check if all remaining vertices lie on the same plane
32
+ for (let i = 3; i < vertices.length; i++) {
33
+ const vi = new THREE.Vector3(vertices[i].x, vertices[i].y, vertices[i].z)
34
+ const vector = new THREE.Vector3().subVectors(vi, v0)
35
+ const dotProduct = normal.dot(vector)
36
+ if (Math.abs(dotProduct) > 1e-6) {
37
+ // Allowing a small tolerance
38
+ console.log("Vertices are not on the same plane")
39
+ return { isCoplanar: false }
40
+ }
41
+ }
42
+
43
+ return { isCoplanar: true, normal }
44
+ }
45
+
11
46
  export function SafetyZonesRenderer({
12
47
  safetyZones,
13
48
  ...props
@@ -30,6 +65,22 @@ export function SafetyZonesRenderer({
30
65
  const vertices = geometry.convex_hull.vertices.map(
31
66
  (v) => new THREE.Vector3(v.x / 1000, v.y / 1000, v.z / 1000),
32
67
  )
68
+
69
+ // Check if the vertices are on the same plane and only define a plane
70
+ // Algorithm has troubles with vertices that are on the same plane so we
71
+ // add a new vertex slightly moved along the normal direction
72
+ const coplanarityResult = areVerticesCoplanar(vertices)
73
+
74
+ if (coplanarityResult.isCoplanar && coplanarityResult.normal) {
75
+ // Add a new vertex slightly moved along the normal direction
76
+ const offset = 0.0001 // Adjust the offset as needed
77
+ const newVertex = new THREE.Vector3().addVectors(
78
+ vertices[0],
79
+ coplanarityResult.normal.multiplyScalar(offset),
80
+ )
81
+ vertices.push(newVertex)
82
+ }
83
+
33
84
  let convexGeometry
34
85
  try {
35
86
  convexGeometry = new ConvexGeometry(vertices)
@@ -1,7 +1,7 @@
1
1
  import Slider from "@mui/material/Slider"
2
2
  import isNumber from "lodash-es/isNumber"
3
3
  import { observer } from "mobx-react-lite"
4
- import { Stack, Typography, useTheme } from "@mui/material"
4
+ import { Typography, useTheme } from "@mui/material"
5
5
 
6
6
  type VelocitySliderProps = {
7
7
  min: number
@@ -3,6 +3,7 @@ import Stack from "@mui/material/Stack"
3
3
  import { observer } from "mobx-react-lite"
4
4
  import { useRef, type ReactNode } from "react"
5
5
  import { useAnimationFrame } from "../utils/hooks"
6
+ import { externalizeComponent } from "../../externalizeComponent"
6
7
 
7
8
  type JoggingCartesianAxisControlProps = {
8
9
  color?: string
@@ -13,115 +14,117 @@ type JoggingCartesianAxisControlProps = {
13
14
  disabled?: boolean
14
15
  } & React.ComponentProps<typeof Stack>
15
16
 
16
- export const JoggingCartesianAxisControl = observer(
17
- ({
18
- color,
19
- label,
20
- getDisplayedValue,
21
- startJogging,
22
- stopJogging,
23
- disabled,
24
- ...rest
25
- }: JoggingCartesianAxisControlProps) => {
26
- useAnimationFrame(() => {
27
- const displayValue = getDisplayedValue()
28
- const element = valueContainerRef.current
29
- if (!element) return
17
+ export const JoggingCartesianAxisControl = externalizeComponent(
18
+ observer(
19
+ ({
20
+ color,
21
+ label,
22
+ getDisplayedValue,
23
+ startJogging,
24
+ stopJogging,
25
+ disabled,
26
+ ...rest
27
+ }: JoggingCartesianAxisControlProps) => {
28
+ useAnimationFrame(() => {
29
+ const displayValue = getDisplayedValue()
30
+ const element = valueContainerRef.current
31
+ if (!element) return
30
32
 
31
- element.textContent = displayValue
32
- })
33
+ element.textContent = displayValue
34
+ })
33
35
 
34
- const valueContainerRef = useRef<HTMLParagraphElement>(null)
36
+ const valueContainerRef = useRef<HTMLParagraphElement>(null)
35
37
 
36
- color = color || "#F14D42"
38
+ color = color || "#F14D42"
37
39
 
38
- function onPointerDownMinus(ev: React.PointerEvent) {
39
- // Stop right click from triggering jog
40
- if (ev.button === 0) startJogging("-")
41
- }
40
+ function onPointerDownMinus(ev: React.PointerEvent) {
41
+ // Stop right click from triggering jog
42
+ if (ev.button === 0) startJogging("-")
43
+ }
42
44
 
43
- function onPointerDownPlus(ev: React.PointerEvent) {
44
- if (ev.button === 0) startJogging("+")
45
- }
45
+ function onPointerDownPlus(ev: React.PointerEvent) {
46
+ if (ev.button === 0) startJogging("+")
47
+ }
46
48
 
47
- return (
48
- <Stack height="72px" direction="row" {...rest}>
49
- <Button
50
- onPointerDown={onPointerDownMinus}
51
- onPointerUp={stopJogging}
52
- onPointerOut={stopJogging}
53
- disabled={disabled}
54
- sx={{
55
- width: "105px",
56
- backgroundColor: color,
57
- color: "white",
58
- alignContent: "center",
59
- fontSize: "37px",
60
- borderRadius: "16px 0px 0px 16px",
61
-
62
- ":hover": {
63
- color: "white",
49
+ return (
50
+ <Stack height="72px" direction="row" {...rest}>
51
+ <Button
52
+ onPointerDown={onPointerDownMinus}
53
+ onPointerUp={stopJogging}
54
+ onPointerOut={stopJogging}
55
+ disabled={disabled}
56
+ sx={{
57
+ width: "105px",
64
58
  backgroundColor: color,
65
- },
66
- }}
67
- >
68
- {"-"}
69
- </Button>
59
+ color: "white",
60
+ alignContent: "center",
61
+ fontSize: "37px",
62
+ borderRadius: "16px 0px 0px 16px",
63
+
64
+ ":hover": {
65
+ color: "white",
66
+ backgroundColor: color,
67
+ },
68
+ }}
69
+ >
70
+ {"-"}
71
+ </Button>
70
72
 
71
- <Stack
72
- spacing="6px"
73
- sx={{
74
- width: "184px",
75
- backgroundColor: color,
76
- alignItems: "center",
77
- justifyContent: "center",
78
- opacity: "0.9",
79
- }}
80
- >
81
73
  <Stack
82
- height="22px"
83
- direction="row"
84
- alignItems="center"
85
- justifyItems="center"
86
- spacing={1}
87
- sx={{ userSelect: "none", color: "white" }}
74
+ spacing="6px"
75
+ sx={{
76
+ width: "184px",
77
+ backgroundColor: color,
78
+ alignItems: "center",
79
+ justifyContent: "center",
80
+ opacity: "0.9",
81
+ }}
88
82
  >
89
- {label}
83
+ <Stack
84
+ height="22px"
85
+ direction="row"
86
+ alignItems="center"
87
+ justifyItems="center"
88
+ spacing={1}
89
+ sx={{ userSelect: "none", color: "white" }}
90
+ >
91
+ {label}
92
+ </Stack>
93
+ <Typography
94
+ height="22px"
95
+ sx={{
96
+ fontSize: "15px",
97
+ color: "white",
98
+ }}
99
+ ref={valueContainerRef}
100
+ >
101
+ {getDisplayedValue()}
102
+ </Typography>
90
103
  </Stack>
91
- <Typography
92
- height="22px"
104
+
105
+ <Button
106
+ onPointerDown={onPointerDownPlus}
107
+ onPointerUp={stopJogging}
108
+ onPointerOut={stopJogging}
109
+ disabled={disabled}
93
110
  sx={{
94
- fontSize: "15px",
111
+ width: "105px",
112
+ backgroundColor: color,
95
113
  color: "white",
114
+ alignContent: "center",
115
+ fontSize: "37px",
116
+ borderRadius: "0px 16px 16px 0px",
117
+
118
+ ":hover": {
119
+ color: "white",
120
+ backgroundColor: color,
121
+ },
96
122
  }}
97
- ref={valueContainerRef}
98
123
  >
99
- {getDisplayedValue()}
100
- </Typography>
124
+ {"+"}
125
+ </Button>
101
126
  </Stack>
102
-
103
- <Button
104
- onPointerDown={onPointerDownPlus}
105
- onPointerUp={stopJogging}
106
- onPointerOut={stopJogging}
107
- disabled={disabled}
108
- sx={{
109
- width: "105px",
110
- backgroundColor: color,
111
- color: "white",
112
- alignContent: "center",
113
- fontSize: "37px",
114
- borderRadius: "0px 16px 16px 0px",
115
-
116
- ":hover": {
117
- color: "white",
118
- backgroundColor: color,
119
- },
120
- }}
121
- >
122
- {"+"}
123
- </Button>
124
- </Stack>
125
- )
126
- },
127
+ )
128
+ },
129
+ ),
127
130
  )