@wandelbots/wandelbots-js-react-components 1.29.1 → 1.30.0

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 (260) hide show
  1. package/dist/index.cjs +30 -30
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +5281 -5097
  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/SelectableFab.d.ts.map +1 -0
  14. package/dist/src/components/ThemeSelect.d.ts.map +1 -0
  15. package/dist/src/components/TransparentOverlay.d.ts.map +1 -0
  16. package/dist/{components → src/components}/VelocitySlider.d.ts +8 -1
  17. package/dist/src/components/VelocitySlider.d.ts.map +1 -0
  18. package/dist/src/components/experimental/utils/AdornedSelect.d.ts +8 -0
  19. package/dist/src/components/experimental/utils/AdornedSelect.d.ts.map +1 -0
  20. package/dist/src/components/jogging/JoggingActivationRequired.d.ts.map +1 -0
  21. package/dist/{components → src/components}/jogging/JoggingCartesianAxisControl.d.ts +3 -2
  22. package/dist/src/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -0
  23. package/dist/src/components/jogging/JoggingCartesianTab.d.ts.map +1 -0
  24. package/dist/src/components/jogging/JoggingFreedriveTab.d.ts.map +1 -0
  25. package/dist/{components → src/components}/jogging/JoggingJointLimitDetector.d.ts +1 -1
  26. package/dist/src/components/jogging/JoggingJointLimitDetector.d.ts.map +1 -0
  27. package/dist/src/components/jogging/JoggingJointRotationControl.d.ts.map +1 -0
  28. package/dist/src/components/jogging/JoggingJointTab.d.ts.map +1 -0
  29. package/dist/{components → src/components}/jogging/JoggingOptions.d.ts +1 -1
  30. package/dist/src/components/jogging/JoggingOptions.d.ts.map +1 -0
  31. package/dist/{components → src/components}/jogging/JoggingPanel.d.ts +3 -0
  32. package/dist/src/components/jogging/JoggingPanel.d.ts.map +1 -0
  33. package/dist/{components → src/components}/jogging/JoggingStore.d.ts +5 -3
  34. package/dist/src/components/jogging/JoggingStore.d.ts.map +1 -0
  35. package/dist/src/components/jogging/JoggingToggleButtonGroup.d.ts +2 -0
  36. package/dist/src/components/jogging/JoggingToggleButtonGroup.d.ts.map +1 -0
  37. package/dist/src/components/jogging/JoggingVelocitySlider.d.ts.map +1 -0
  38. package/dist/src/components/jogging/PoseCartesianValues.d.ts +7 -0
  39. package/dist/src/components/jogging/PoseCartesianValues.d.ts.map +1 -0
  40. package/dist/src/components/jogging/PoseJointValues.d.ts +7 -0
  41. package/dist/src/components/jogging/PoseJointValues.d.ts.map +1 -0
  42. package/dist/src/components/modal/NoMotionGroupModal.d.ts.map +1 -0
  43. package/dist/src/components/robots/ABB_1200_07_7.d.ts.map +1 -0
  44. package/dist/src/components/robots/ABB_1300_115_10.d.ts.map +1 -0
  45. package/dist/src/components/robots/AxisConfig.d.ts.map +1 -0
  46. package/dist/src/components/robots/DHRobot.d.ts.map +1 -0
  47. package/dist/src/components/robots/FANUC_ARC_Mate_100iD.d.ts.map +1 -0
  48. package/dist/src/components/robots/FANUC_ARC_Mate_120iD.d.ts.map +1 -0
  49. package/dist/src/components/robots/FANUC_CRX10iA.d.ts.map +1 -0
  50. package/dist/src/components/robots/FANUC_CRX10iAL.d.ts.map +1 -0
  51. package/dist/src/components/robots/FANUC_CRX20iAL.d.ts.map +1 -0
  52. package/dist/src/components/robots/FANUC_CRX25iA.d.ts.map +1 -0
  53. package/dist/src/components/robots/FANUC_CRX25iAL.d.ts.map +1 -0
  54. package/dist/src/components/robots/FANUC_LR_Mate_200iD.d.ts.map +1 -0
  55. package/dist/src/components/robots/FANUC_LR_Mate_200iD4S.d.ts.map +1 -0
  56. package/dist/src/components/robots/FANUC_LR_Mate_200iD7L.d.ts.map +1 -0
  57. package/dist/src/components/robots/KUKA_KR16_R2010_2.d.ts.map +1 -0
  58. package/dist/src/components/robots/KUKA_KR210_R2700.d.ts.map +1 -0
  59. package/dist/src/components/robots/KUKA_KR270_R2700.d.ts.map +1 -0
  60. package/dist/src/components/robots/KUKA_KR6_R700_2.d.ts.map +1 -0
  61. package/dist/src/components/robots/Robot.d.ts.map +1 -0
  62. package/dist/src/components/robots/RobotAnimator.d.ts.map +1 -0
  63. package/dist/src/components/robots/SupportedRobot.d.ts.map +1 -0
  64. package/dist/src/components/robots/UniversalRobots_UR10CB.d.ts.map +1 -0
  65. package/dist/src/components/robots/UniversalRobots_UR10e.d.ts.map +1 -0
  66. package/dist/src/components/robots/UniversalRobots_UR3CB.d.ts.map +1 -0
  67. package/dist/src/components/robots/UniversalRobots_UR3e.d.ts.map +1 -0
  68. package/dist/src/components/robots/UniversalRobots_UR5CB.d.ts.map +1 -0
  69. package/dist/src/components/robots/UniversalRobots_UR5e.d.ts.map +1 -0
  70. package/dist/src/components/robots/Yaskawa_AR1440.d.ts.map +1 -0
  71. package/dist/src/components/robots/Yaskawa_AR1730.d.ts.map +1 -0
  72. package/dist/src/components/robots/Yaskawa_AR2010.d.ts.map +1 -0
  73. package/dist/src/components/robots/Yaskawa_AR3120.d.ts.map +1 -0
  74. package/dist/src/components/robots/Yaskawa_AR900.d.ts.map +1 -0
  75. package/dist/src/components/robots/Yaskawa_GP50.d.ts.map +1 -0
  76. package/dist/src/components/robots/types.d.ts.map +1 -0
  77. package/dist/src/components/utils/converters.d.ts.map +1 -0
  78. package/dist/src/components/utils/errorHandling.d.ts.map +1 -0
  79. package/dist/src/components/utils/hooks.d.ts.map +1 -0
  80. package/dist/src/components/utils/robotTreeQuery.d.ts.map +1 -0
  81. package/dist/src/components/wandelscript-editor/WandelscriptEditor.d.ts.map +1 -0
  82. package/dist/src/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +1 -0
  83. package/dist/src/externalizeComponent.d.ts.map +1 -0
  84. package/dist/src/i18n/config.d.ts.map +1 -0
  85. package/dist/src/icons/index.d.ts.map +1 -0
  86. package/dist/{index.d.ts → src/index.d.ts} +2 -0
  87. package/dist/src/index.d.ts.map +1 -0
  88. package/dist/src/themes/createDarkTheme.d.ts.map +1 -0
  89. package/dist/src/themes/createLightTheme.d.ts.map +1 -0
  90. package/dist/{themes → src/themes}/themeTypes.d.ts +6 -1
  91. package/dist/src/themes/themeTypes.d.ts.map +1 -0
  92. package/dist/src/themes/theming.d.ts.map +1 -0
  93. package/package.json +1 -1
  94. package/src/components/CopyableText.tsx +69 -12
  95. package/src/components/LoadingCover.tsx +4 -2
  96. package/src/components/VelocitySlider.tsx +47 -18
  97. package/src/components/experimental/utils/AdornedSelect.tsx +42 -0
  98. package/src/components/jogging/JoggingCartesianAxisControl.tsx +84 -51
  99. package/src/components/jogging/JoggingCartesianTab.tsx +97 -107
  100. package/src/components/jogging/JoggingJointLimitDetector.tsx +4 -1
  101. package/src/components/jogging/JoggingJointRotationControl.tsx +41 -22
  102. package/src/components/jogging/JoggingJointTab.tsx +34 -43
  103. package/src/components/jogging/JoggingOptions.tsx +110 -136
  104. package/src/components/jogging/JoggingPanel.tsx +17 -9
  105. package/src/components/jogging/JoggingStore.ts +5 -2
  106. package/src/components/jogging/JoggingToggleButtonGroup.tsx +25 -0
  107. package/src/components/jogging/JoggingVelocitySlider.tsx +18 -20
  108. package/src/components/jogging/PoseCartesianValues.tsx +43 -0
  109. package/src/components/jogging/PoseJointValues.tsx +40 -0
  110. package/src/components/robots/SupportedRobot.tsx +7 -1
  111. package/src/components/robots/UniversalRobots_UR10e.tsx +231 -171
  112. package/src/i18n/locales/de/translations.json +3 -1
  113. package/src/i18n/locales/en/translations.json +3 -1
  114. package/src/icons/jog-minus.svg +5 -0
  115. package/src/icons/jog-plus.svg +9 -0
  116. package/src/index.ts +2 -0
  117. package/src/themes/createDarkTheme.ts +19 -4
  118. package/src/themes/themeTypes.ts +6 -1
  119. package/dist/Setup.d.ts.map +0 -1
  120. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +0 -1
  121. package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +0 -1
  122. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +0 -1
  123. package/dist/components/ConsoleFilter.d.ts.map +0 -1
  124. package/dist/components/CopyableText.d.ts.map +0 -1
  125. package/dist/components/LoadingButton.d.ts.map +0 -1
  126. package/dist/components/LoadingCover.d.ts.map +0 -1
  127. package/dist/components/SelectableFab.d.ts.map +0 -1
  128. package/dist/components/ThemeSelect.d.ts.map +0 -1
  129. package/dist/components/TransparentOverlay.d.ts.map +0 -1
  130. package/dist/components/VelocitySlider.d.ts.map +0 -1
  131. package/dist/components/jogging/JoggingActivationRequired.d.ts.map +0 -1
  132. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +0 -1
  133. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +0 -1
  134. package/dist/components/jogging/JoggingCartesianValues.d.ts +0 -7
  135. package/dist/components/jogging/JoggingCartesianValues.d.ts.map +0 -1
  136. package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +0 -1
  137. package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +0 -1
  138. package/dist/components/jogging/JoggingJointRotationControl.d.ts.map +0 -1
  139. package/dist/components/jogging/JoggingJointTab.d.ts.map +0 -1
  140. package/dist/components/jogging/JoggingJointValues.d.ts +0 -7
  141. package/dist/components/jogging/JoggingJointValues.d.ts.map +0 -1
  142. package/dist/components/jogging/JoggingOptions.d.ts.map +0 -1
  143. package/dist/components/jogging/JoggingPanel.d.ts.map +0 -1
  144. package/dist/components/jogging/JoggingStore.d.ts.map +0 -1
  145. package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +0 -1
  146. package/dist/components/modal/NoMotionGroupModal.d.ts.map +0 -1
  147. package/dist/components/robots/ABB_1200_07_7.d.ts.map +0 -1
  148. package/dist/components/robots/ABB_1300_115_10.d.ts.map +0 -1
  149. package/dist/components/robots/AxisConfig.d.ts.map +0 -1
  150. package/dist/components/robots/DHRobot.d.ts.map +0 -1
  151. package/dist/components/robots/FANUC_ARC_Mate_100iD.d.ts.map +0 -1
  152. package/dist/components/robots/FANUC_ARC_Mate_120iD.d.ts.map +0 -1
  153. package/dist/components/robots/FANUC_CRX10iA.d.ts.map +0 -1
  154. package/dist/components/robots/FANUC_CRX10iAL.d.ts.map +0 -1
  155. package/dist/components/robots/FANUC_CRX20iAL.d.ts.map +0 -1
  156. package/dist/components/robots/FANUC_CRX25iA.d.ts.map +0 -1
  157. package/dist/components/robots/FANUC_CRX25iAL.d.ts.map +0 -1
  158. package/dist/components/robots/FANUC_LR_Mate_200iD.d.ts.map +0 -1
  159. package/dist/components/robots/FANUC_LR_Mate_200iD4S.d.ts.map +0 -1
  160. package/dist/components/robots/FANUC_LR_Mate_200iD7L.d.ts.map +0 -1
  161. package/dist/components/robots/KUKA_KR16_R2010_2.d.ts.map +0 -1
  162. package/dist/components/robots/KUKA_KR210_R2700.d.ts.map +0 -1
  163. package/dist/components/robots/KUKA_KR270_R2700.d.ts.map +0 -1
  164. package/dist/components/robots/KUKA_KR6_R700_2.d.ts.map +0 -1
  165. package/dist/components/robots/Robot.d.ts.map +0 -1
  166. package/dist/components/robots/RobotAnimator.d.ts.map +0 -1
  167. package/dist/components/robots/SupportedRobot.d.ts.map +0 -1
  168. package/dist/components/robots/UniversalRobots_UR10CB.d.ts.map +0 -1
  169. package/dist/components/robots/UniversalRobots_UR10e.d.ts.map +0 -1
  170. package/dist/components/robots/UniversalRobots_UR3CB.d.ts.map +0 -1
  171. package/dist/components/robots/UniversalRobots_UR3e.d.ts.map +0 -1
  172. package/dist/components/robots/UniversalRobots_UR5CB.d.ts.map +0 -1
  173. package/dist/components/robots/UniversalRobots_UR5e.d.ts.map +0 -1
  174. package/dist/components/robots/Yaskawa_AR1440.d.ts.map +0 -1
  175. package/dist/components/robots/Yaskawa_AR1730.d.ts.map +0 -1
  176. package/dist/components/robots/Yaskawa_AR2010.d.ts.map +0 -1
  177. package/dist/components/robots/Yaskawa_AR3120.d.ts.map +0 -1
  178. package/dist/components/robots/Yaskawa_AR900.d.ts.map +0 -1
  179. package/dist/components/robots/Yaskawa_GP50.d.ts.map +0 -1
  180. package/dist/components/robots/types.d.ts.map +0 -1
  181. package/dist/components/utils/converters.d.ts.map +0 -1
  182. package/dist/components/utils/errorHandling.d.ts.map +0 -1
  183. package/dist/components/utils/hooks.d.ts.map +0 -1
  184. package/dist/components/utils/robotTreeQuery.d.ts.map +0 -1
  185. package/dist/components/wandelscript-editor/WandelscriptEditor.d.ts.map +0 -1
  186. package/dist/components/wandelscript-editor/wandelscript.tmLanguage.d.ts.map +0 -1
  187. package/dist/externalizeComponent.d.ts.map +0 -1
  188. package/dist/i18n/config.d.ts.map +0 -1
  189. package/dist/icons/index.d.ts.map +0 -1
  190. package/dist/index.d.ts.map +0 -1
  191. package/dist/themes/createDarkTheme.d.ts.map +0 -1
  192. package/dist/themes/createLightTheme.d.ts.map +0 -1
  193. package/dist/themes/themeTypes.d.ts.map +0 -1
  194. package/dist/themes/theming.d.ts.map +0 -1
  195. package/src/components/jogging/JoggingCartesianValues.tsx +0 -50
  196. package/src/components/jogging/JoggingJointValues.tsx +0 -45
  197. /package/dist/{Setup.d.ts → src/Setup.d.ts} +0 -0
  198. /package/dist/{components → src/components}/3d-viewport/CoordinateSystemTransform.d.ts +0 -0
  199. /package/dist/{components → src/components}/3d-viewport/PresetEnvironment.d.ts +0 -0
  200. /package/dist/{components → src/components}/3d-viewport/SafetyZonesRenderer.d.ts +0 -0
  201. /package/dist/{components → src/components}/ConsoleFilter.d.ts +0 -0
  202. /package/dist/{components → src/components}/CopyableText.d.ts +0 -0
  203. /package/dist/{components → src/components}/LoadingButton.d.ts +0 -0
  204. /package/dist/{components → src/components}/LoadingCover.d.ts +0 -0
  205. /package/dist/{components → src/components}/SelectableFab.d.ts +0 -0
  206. /package/dist/{components → src/components}/ThemeSelect.d.ts +0 -0
  207. /package/dist/{components → src/components}/TransparentOverlay.d.ts +0 -0
  208. /package/dist/{components → src/components}/jogging/JoggingActivationRequired.d.ts +0 -0
  209. /package/dist/{components → src/components}/jogging/JoggingCartesianTab.d.ts +0 -0
  210. /package/dist/{components → src/components}/jogging/JoggingFreedriveTab.d.ts +0 -0
  211. /package/dist/{components → src/components}/jogging/JoggingJointRotationControl.d.ts +0 -0
  212. /package/dist/{components → src/components}/jogging/JoggingJointTab.d.ts +0 -0
  213. /package/dist/{components → src/components}/jogging/JoggingVelocitySlider.d.ts +0 -0
  214. /package/dist/{components → src/components}/modal/NoMotionGroupModal.d.ts +0 -0
  215. /package/dist/{components → src/components}/robots/ABB_1200_07_7.d.ts +0 -0
  216. /package/dist/{components → src/components}/robots/ABB_1300_115_10.d.ts +0 -0
  217. /package/dist/{components → src/components}/robots/AxisConfig.d.ts +0 -0
  218. /package/dist/{components → src/components}/robots/DHRobot.d.ts +0 -0
  219. /package/dist/{components → src/components}/robots/FANUC_ARC_Mate_100iD.d.ts +0 -0
  220. /package/dist/{components → src/components}/robots/FANUC_ARC_Mate_120iD.d.ts +0 -0
  221. /package/dist/{components → src/components}/robots/FANUC_CRX10iA.d.ts +0 -0
  222. /package/dist/{components → src/components}/robots/FANUC_CRX10iAL.d.ts +0 -0
  223. /package/dist/{components → src/components}/robots/FANUC_CRX20iAL.d.ts +0 -0
  224. /package/dist/{components → src/components}/robots/FANUC_CRX25iA.d.ts +0 -0
  225. /package/dist/{components → src/components}/robots/FANUC_CRX25iAL.d.ts +0 -0
  226. /package/dist/{components → src/components}/robots/FANUC_LR_Mate_200iD.d.ts +0 -0
  227. /package/dist/{components → src/components}/robots/FANUC_LR_Mate_200iD4S.d.ts +0 -0
  228. /package/dist/{components → src/components}/robots/FANUC_LR_Mate_200iD7L.d.ts +0 -0
  229. /package/dist/{components → src/components}/robots/KUKA_KR16_R2010_2.d.ts +0 -0
  230. /package/dist/{components → src/components}/robots/KUKA_KR210_R2700.d.ts +0 -0
  231. /package/dist/{components → src/components}/robots/KUKA_KR270_R2700.d.ts +0 -0
  232. /package/dist/{components → src/components}/robots/KUKA_KR6_R700_2.d.ts +0 -0
  233. /package/dist/{components → src/components}/robots/Robot.d.ts +0 -0
  234. /package/dist/{components → src/components}/robots/RobotAnimator.d.ts +0 -0
  235. /package/dist/{components → src/components}/robots/SupportedRobot.d.ts +0 -0
  236. /package/dist/{components → src/components}/robots/UniversalRobots_UR10CB.d.ts +0 -0
  237. /package/dist/{components → src/components}/robots/UniversalRobots_UR10e.d.ts +0 -0
  238. /package/dist/{components → src/components}/robots/UniversalRobots_UR3CB.d.ts +0 -0
  239. /package/dist/{components → src/components}/robots/UniversalRobots_UR3e.d.ts +0 -0
  240. /package/dist/{components → src/components}/robots/UniversalRobots_UR5CB.d.ts +0 -0
  241. /package/dist/{components → src/components}/robots/UniversalRobots_UR5e.d.ts +0 -0
  242. /package/dist/{components → src/components}/robots/Yaskawa_AR1440.d.ts +0 -0
  243. /package/dist/{components → src/components}/robots/Yaskawa_AR1730.d.ts +0 -0
  244. /package/dist/{components → src/components}/robots/Yaskawa_AR2010.d.ts +0 -0
  245. /package/dist/{components → src/components}/robots/Yaskawa_AR3120.d.ts +0 -0
  246. /package/dist/{components → src/components}/robots/Yaskawa_AR900.d.ts +0 -0
  247. /package/dist/{components → src/components}/robots/Yaskawa_GP50.d.ts +0 -0
  248. /package/dist/{components → src/components}/robots/types.d.ts +0 -0
  249. /package/dist/{components → src/components}/utils/converters.d.ts +0 -0
  250. /package/dist/{components → src/components}/utils/errorHandling.d.ts +0 -0
  251. /package/dist/{components → src/components}/utils/hooks.d.ts +0 -0
  252. /package/dist/{components → src/components}/utils/robotTreeQuery.d.ts +0 -0
  253. /package/dist/{components → src/components}/wandelscript-editor/WandelscriptEditor.d.ts +0 -0
  254. /package/dist/{components → src/components}/wandelscript-editor/wandelscript.tmLanguage.d.ts +0 -0
  255. /package/dist/{externalizeComponent.d.ts → src/externalizeComponent.d.ts} +0 -0
  256. /package/dist/{i18n → src/i18n}/config.d.ts +0 -0
  257. /package/dist/{icons → src/icons}/index.d.ts +0 -0
  258. /package/dist/{themes → src/themes}/createDarkTheme.d.ts +0 -0
  259. /package/dist/{themes → src/themes}/createLightTheme.d.ts +0 -0
  260. /package/dist/{themes → src/themes}/theming.d.ts +0 -0
@@ -1,155 +1,129 @@
1
- import {
2
- InputLabel,
3
- MenuItem,
4
- Select,
5
- Stack,
6
- ToggleButton,
7
- ToggleButtonGroup,
8
- } from "@mui/material"
1
+ import { Box, MenuItem } from "@mui/material"
9
2
  import { observer } from "mobx-react-lite"
10
3
  import { useTranslation } from "react-i18next"
11
- import OrientationCoordSysIcon from "../../icons/orientation-coord-system.svg"
12
- import OrientationToolIcon from "../../icons/orientation-tool.svg"
13
- import type { IncrementOptionId, JoggingStore } from "./JoggingStore"
4
+ import AdornedSelect from "../experimental/utils/AdornedSelect"
5
+ import {
6
+ ORIENTATION_IDS,
7
+ type IncrementOptionId,
8
+ type JoggingStore,
9
+ type OrientationId,
10
+ } from "./JoggingStore"
14
11
 
15
12
  export const JoggingOptions = observer(({ store }: { store: JoggingStore }) => {
16
13
  const { t } = useTranslation()
17
14
 
18
- function onOrientationChange(
19
- _event: React.MouseEvent<HTMLElement>,
20
- newOrientation: string,
21
- ) {
22
- if (newOrientation === "coordsys" || newOrientation === "tool")
23
- store.setSelectedOrientation(newOrientation)
15
+ function translateOrientation(orientation: OrientationId): string {
16
+ switch (orientation) {
17
+ case "coordsys":
18
+ return t("Jogging.Orientation.coordsys")
19
+ case "tool":
20
+ return t("Jogging.Orientation.tool")
21
+ default:
22
+ return orientation
23
+ }
24
24
  }
25
25
 
26
26
  return (
27
- <>
28
- <Stack
29
- direction={"row"}
30
- alignItems={"center"}
31
- spacing={2}
32
- sx={{
33
- padding: "6px 16px",
34
- "& label": {
35
- opacity: 0.7,
36
- fontSize: "12px",
37
- marginBottom: "4px",
38
- },
27
+ <Box
28
+ sx={{
29
+ display: "grid",
30
+ gap: "16px",
31
+ gridTemplateColumns: "1fr 1fr",
32
+ gridTemplateRows: "min-height min-height",
33
+ "& label": {
34
+ opacity: 0.7,
35
+ fontSize: "12px",
36
+ marginBottom: "4px",
37
+ },
38
+ }}
39
+ >
40
+ {/* Coordinate system */}
41
+ <AdornedSelect
42
+ labelId="jogging-coord-select"
43
+ labelValue={"Coordinate Sys."}
44
+ value={store.selectedCoordSystemId}
45
+ size="small"
46
+ variant="filled"
47
+ displayEmpty={true}
48
+ onChange={(event) => {
49
+ store.setSelectedCoordSystemId(event.target.value as string)
39
50
  }}
51
+ disabled={store.isLocked}
40
52
  >
41
- {/* Coordinate system */}
42
- <Stack width="50%">
43
- <InputLabel id="jogging-coord-select">{"Coordinate Sys."}</InputLabel>
44
- <Select
45
- labelId="jogging-coord-select"
46
- value={store.selectedCoordSystemId}
47
- size="small"
48
- variant="filled"
49
- displayEmpty={true}
50
- onChange={(event) => {
51
- store.setSelectedCoordSystemId(event.target.value as string)
52
- }}
53
- disabled={store.isLocked}
54
- >
55
- {store.coordSystems.map((cs) => (
56
- <MenuItem key={cs.coordinate_system} value={cs.coordinate_system}>
57
- {/* Distinguish coordinate systems with the same name */}
58
- {cs.name && store.coordSystemCountByName[cs.name] > 1
59
- ? `${cs.name} / ${cs.coordinate_system}`
60
- : cs.name || cs.coordinate_system}
61
- </MenuItem>
62
- ))}
63
- </Select>
64
- </Stack>
53
+ {store.coordSystems.map((cs) => (
54
+ <MenuItem key={cs.coordinate_system} value={cs.coordinate_system}>
55
+ {/* Distinguish coordinate systems with the same name */}
56
+ {cs.name && store.coordSystemCountByName[cs.name] > 1
57
+ ? `${cs.name} / ${cs.coordinate_system}`
58
+ : cs.name || cs.coordinate_system}
59
+ </MenuItem>
60
+ ))}
61
+ </AdornedSelect>
65
62
 
66
- {/* TCP selection */}
67
- <Stack width="50%">
68
- <InputLabel id="jogging-tcp-select">TCP</InputLabel>
69
- <Select
70
- labelId="jogging-tcp-select"
71
- value={store.selectedTcpId}
72
- size="small"
73
- variant="filled"
74
- onChange={(event) => {
75
- store.setSelectedTcpId(event.target.value as string)
76
- }}
77
- disabled={store.isLocked}
78
- >
79
- {store.tcps.map((tcp) => (
80
- <MenuItem key={tcp.id} value={tcp.id}>
81
- {tcp.id}
82
- </MenuItem>
83
- ))}
84
- </Select>
85
- </Stack>
86
- </Stack>
63
+ {/* TCP selection */}
87
64
 
88
- <Stack
89
- direction={"row"}
90
- alignItems={"center"}
91
- spacing={2}
92
- sx={{
93
- padding: "6px 16px",
94
- "& label": {
95
- opacity: 0.7,
96
- fontSize: "12px",
97
- marginBottom: "4px",
98
- },
65
+ <AdornedSelect
66
+ labelId="jogging-tcp-select"
67
+ labelValue="TCP"
68
+ value={store.selectedTcpId}
69
+ size="small"
70
+ variant="filled"
71
+ onChange={(event) => {
72
+ store.setSelectedTcpId(event.target.value as string)
99
73
  }}
74
+ disabled={store.isLocked}
100
75
  >
101
- {/* Orientation */}
102
- <Stack width="50%">
103
- <InputLabel id="orientation-select">
104
- {t("Jogging.Cartesian.Orientation.lb")}
105
- </InputLabel>
106
- <ToggleButtonGroup
107
- value={store.selectedOrientation}
108
- onChange={onOrientationChange}
109
- exclusive
110
- aria-labelledby="orientation-select"
111
- disabled={store.isLocked}
112
- >
113
- <ToggleButton value="coordsys" sx={{ flexGrow: 1 }}>
114
- <OrientationCoordSysIcon />
115
- </ToggleButton>
116
- <ToggleButton value="tool" sx={{ flexGrow: 1 }}>
117
- <OrientationToolIcon />
118
- </ToggleButton>
119
- </ToggleButtonGroup>
120
- </Stack>
76
+ {store.tcps.map((tcp) => (
77
+ <MenuItem key={tcp.id} value={tcp.id}>
78
+ {tcp.id}
79
+ </MenuItem>
80
+ ))}
81
+ </AdornedSelect>
121
82
 
122
- {/* Increment selection */}
123
- <Stack width="50%">
124
- <InputLabel id="jogging-increment-select">{"Increment"}</InputLabel>
125
- <Select
126
- labelId="jogging-increment-select"
127
- size="small"
128
- variant="filled"
129
- value={store.activeDiscreteIncrement?.id || "continuous"}
130
- onChange={(event) => {
131
- store.setSelectedIncrementId(
132
- event.target.value as IncrementOptionId,
133
- )
134
- }}
135
- disabled={store.isLocked}
136
- >
137
- <MenuItem key="continuous" value="continuous">
138
- {t("Jogging.Increment.Continuous.dd")}
139
- </MenuItem>
83
+ {/* Orientation */}
84
+ <AdornedSelect
85
+ labelValue={t("Jogging.Cartesian.Orientation.lb")}
86
+ id="orientation-select"
87
+ labelId="orientation-select"
88
+ value={store.selectedOrientation}
89
+ onChange={(event) => {
90
+ store.setSelectedOrientation(event.target.value as OrientationId)
91
+ }}
92
+ disabled={store.isLocked}
93
+ >
94
+ {ORIENTATION_IDS.map((orientationId) => (
95
+ <MenuItem key={orientationId} value={orientationId}>
96
+ {translateOrientation(orientationId)}
97
+ </MenuItem>
98
+ ))}
99
+ </AdornedSelect>
100
+
101
+ {/* Increment selection */}
102
+ <AdornedSelect
103
+ labelValue={"Increment"}
104
+ labelId="jogging-increment-select"
105
+ size="small"
106
+ variant="filled"
107
+ value={store.activeDiscreteIncrement?.id || "continuous"}
108
+ onChange={(event) => {
109
+ store.setSelectedIncrementId(event.target.value as IncrementOptionId)
110
+ }}
111
+ disabled={store.isLocked}
112
+ >
113
+ <MenuItem key="continuous" value="continuous">
114
+ {t("Jogging.Increment.Continuous.dd")}
115
+ </MenuItem>
140
116
 
141
- {store.selectedOrientation === "tool"
142
- ? null
143
- : store.discreteIncrementOptions.map((inc) => (
144
- <MenuItem key={inc.id} value={inc.id}>
145
- {store.currentMotionType === "translate"
146
- ? `${inc.mm}mm`
147
- : `${inc.degrees}°`}
148
- </MenuItem>
149
- ))}
150
- </Select>
151
- </Stack>
152
- </Stack>
153
- </>
117
+ {store.selectedOrientation === "tool"
118
+ ? null
119
+ : store.discreteIncrementOptions.map((inc) => (
120
+ <MenuItem key={inc.id} value={inc.id}>
121
+ {store.currentMotionType === "translate"
122
+ ? `${inc.mm}mm`
123
+ : `${inc.degrees}°`}
124
+ </MenuItem>
125
+ ))}
126
+ </AdornedSelect>
127
+ </Box>
154
128
  )
155
129
  })
@@ -1,4 +1,4 @@
1
- import { Stack, Tab, Tabs } from "@mui/material"
1
+ import { Stack, Tab, Tabs, type SxProps } from "@mui/material"
2
2
  import { NovaClient } from "@wandelbots/wandelbots-js"
3
3
  import { isString } from "lodash-es"
4
4
  import { runInAction } from "mobx"
@@ -11,6 +11,8 @@ import { JoggingCartesianTab } from "./JoggingCartesianTab"
11
11
  import { JoggingJointTab } from "./JoggingJointTab"
12
12
  import { JoggingStore } from "./JoggingStore"
13
13
 
14
+ export type JoggingPanelTabId = "cartesian" | "joint"
15
+
14
16
  export type JoggingPanelProps = {
15
17
  /** Either an existing NovaClient or the base url of a deployed Nova instance */
16
18
  nova: NovaClient | string
@@ -22,6 +24,7 @@ export type JoggingPanelProps = {
22
24
  children?: React.ReactNode
23
25
  /** Set this to true to disable jogging UI temporarily e.g. when a program is executing */
24
26
  locked?: boolean
27
+ sx?: SxProps
25
28
  }
26
29
 
27
30
  /**
@@ -80,16 +83,16 @@ export const JoggingPanel = externalizeComponent(
80
83
  <Stack
81
84
  sx={{
82
85
  maxWidth: "460px",
83
- minWidth: "350px",
84
- overflowY: "auto",
86
+ minWidth: "320px",
85
87
  position: "relative",
86
- height: "100%",
88
+ ...props.sx,
87
89
  }}
88
90
  >
89
91
  {state.joggingStore ? (
90
- <JoggingPanelInner store={state.joggingStore}>
91
- {props.children}
92
- </JoggingPanelInner>
92
+ <JoggingPanelInner
93
+ store={state.joggingStore}
94
+ children={props.children}
95
+ ></JoggingPanelInner>
93
96
  ) : (
94
97
  <LoadingCover message="Loading jogging" error={state.loadingError} />
95
98
  )}
@@ -105,6 +108,7 @@ const JoggingPanelInner = observer(
105
108
  }: {
106
109
  store: JoggingStore
107
110
  children?: React.ReactNode
111
+ childrenJoint?: React.ReactNode
108
112
  }) => {
109
113
  // Jogger is only active as long as the tab is focused
110
114
  useEffect(() => {
@@ -155,7 +159,7 @@ const JoggingPanelInner = observer(
155
159
  }
156
160
 
157
161
  return (
158
- <Stack flexGrow={1} height="100%">
162
+ <Stack flexGrow={1} sx={{ overflow: "hidden" }}>
159
163
  {/* Tab selection */}
160
164
  <Tabs
161
165
  value={store.tabIndex}
@@ -173,7 +177,11 @@ const JoggingPanelInner = observer(
173
177
  </Tabs>
174
178
 
175
179
  {/* Current tab content */}
176
- <Stack flexGrow={1} position="relative">
180
+ <Stack
181
+ flexGrow={1}
182
+ position="relative"
183
+ sx={{ overflowY: "auto", overflowX: "hidden" }}
184
+ >
177
185
  {renderTabContent()}
178
186
  </Stack>
179
187
  </Stack>
@@ -31,6 +31,9 @@ export type DiscreteIncrementOption = (typeof discreteIncrementOptions)[number]
31
31
  export type IncrementOption = (typeof incrementOptions)[number]
32
32
  export type IncrementOptionId = IncrementOption["id"]
33
33
 
34
+ export const ORIENTATION_IDS = ["coordsys", "tool"]
35
+ export type OrientationId = (typeof ORIENTATION_IDS)[number]
36
+
34
37
  export class JoggingStore {
35
38
  selectedTabId: "cartesian" | "joint" | "debug" = "cartesian"
36
39
 
@@ -69,7 +72,7 @@ export class JoggingStore {
69
72
  * When in tool orientation, the robot moves in a direction relative to the
70
73
  * attached tool rotation.
71
74
  */
72
- selectedOrientation: "coordsys" | "tool" = "coordsys"
75
+ selectedOrientation: OrientationId = "coordsys"
73
76
 
74
77
  /**
75
78
  * Id of selected increment amount for jogging. Options are defined by robot pad.
@@ -426,7 +429,7 @@ export class JoggingStore {
426
429
  this.selectedTcpId = id
427
430
  }
428
431
 
429
- setSelectedOrientation(orientation: "coordsys" | "tool") {
432
+ setSelectedOrientation(orientation: OrientationId) {
430
433
  this.selectedOrientation = orientation
431
434
  }
432
435
 
@@ -0,0 +1,25 @@
1
+ import { styled, ToggleButtonGroup } from "@mui/material"
2
+
3
+ export const JoggingToggleButtonGroup = styled(ToggleButtonGroup)(
4
+ ({ theme }) => ({
5
+ "&.MuiToggleButtonGroup-root": {
6
+ background: theme.palette.backgroundPaperElevation?.[8],
7
+ borderRadius: "8px",
8
+ padding: "4px",
9
+ gap: "4px",
10
+ button: {
11
+ border: "none",
12
+ borderRadius: "4px",
13
+ flex: "1 1 0px",
14
+ minWidth: 0,
15
+ "&.MuiToggleButtonGroup-firstButton": {
16
+ borderRadius: "8px 4px 4px 8px",
17
+ },
18
+
19
+ "&.MuiToggleButtonGroup-lastButton": {
20
+ borderRadius: "4px 8px 8px 4px",
21
+ },
22
+ },
23
+ },
24
+ }),
25
+ )
@@ -1,7 +1,6 @@
1
- import { Stack } from "@mui/material"
2
1
  import { observer, useLocalObservable } from "mobx-react-lite"
3
2
  import { useTranslation } from "react-i18next"
4
- import { VelocitySlider } from "../VelocitySlider"
3
+ import { VelocitySlider, VelocitySliderLabel } from "../VelocitySlider"
5
4
  import type { JoggingStore } from "./JoggingStore"
6
5
 
7
6
  export const JoggingVelocitySlider = observer(
@@ -12,32 +11,31 @@ export const JoggingVelocitySlider = observer(
12
11
  get valueLabelFormat() {
13
12
  if (store.currentMotionType === "translate") {
14
13
  return (value: number) =>
15
- `v=${t("Jogging.Cartesian.Translation.velocityMmPerSec.lb", { amount: value })}`
14
+ `v = ${t("Jogging.Cartesian.Translation.velocityMmPerSec.lb", { amount: value })}`
16
15
  } else {
17
16
  return (value: number) =>
18
- `v=${t("Jogging.Cartesian.Rotation.velocityDegPerSec.lb", { amount: value })}`
17
+ `v = ${t("Jogging.Cartesian.Rotation.velocityDegPerSec.lb", { amount: value })}`
19
18
  }
20
19
  },
21
20
  }))
22
21
 
23
22
  return (
24
- <Stack
25
- sx={{
26
- margin: "0px 20px",
27
- marginBottom: "6px",
28
- }}
29
- >
30
- <Stack sx={{ width: "380px", maxWidth: "90%", margin: "auto" }}>
31
- <VelocitySlider
32
- velocity={store.velocityInCurrentUnits}
33
- min={store.minVelocityInCurrentUnits}
34
- max={store.maxVelocityInCurrentUnits}
35
- onVelocityChange={store.setVelocityFromSlider}
36
- disabled={store.isLocked}
37
- valueLabelFormat={state.valueLabelFormat}
23
+ <VelocitySlider
24
+ velocity={store.velocityInCurrentUnits}
25
+ min={store.minVelocityInCurrentUnits}
26
+ max={store.maxVelocityInCurrentUnits}
27
+ onVelocityChange={store.setVelocityFromSlider}
28
+ disabled={store.isLocked}
29
+ renderValue={(value) => (
30
+ <VelocitySliderLabel
31
+ value={state.valueLabelFormat(value)}
32
+ sx={{
33
+ minWidth:
34
+ store.currentMotionType === "translate" ? "111px" : "90px",
35
+ }}
38
36
  />
39
- </Stack>
40
- </Stack>
37
+ )}
38
+ />
41
39
  )
42
40
  },
43
41
  )
@@ -0,0 +1,43 @@
1
+ import { Stack } from "@mui/material"
2
+ import {
3
+ MotionStreamConnection,
4
+ poseToWandelscriptString,
5
+ } from "@wandelbots/wandelbots-js"
6
+ import { observer } from "mobx-react-lite"
7
+ import { useRef } from "react"
8
+ import { CopyableText } from "../CopyableText"
9
+ import { useAnimationFrame } from "../utils/hooks"
10
+
11
+ export const PoseCartesianValues = observer(
12
+ ({ motionStream }: { motionStream: MotionStreamConnection }) => {
13
+ const poseHolderRef = useRef<HTMLDivElement>(null)
14
+
15
+ function getCurrentPoseString() {
16
+ const tcpPose = motionStream.rapidlyChangingMotionState.tcp_pose
17
+ if (!tcpPose) return ""
18
+ return poseToWandelscriptString(tcpPose)
19
+ }
20
+
21
+ useAnimationFrame(() => {
22
+ if (!poseHolderRef.current) {
23
+ return
24
+ }
25
+ const newPoseContent = getCurrentPoseString()
26
+ if (poseHolderRef.current.textContent === newPoseContent) {
27
+ return
28
+ }
29
+
30
+ poseHolderRef.current.textContent = newPoseContent
31
+ })
32
+
33
+ return (
34
+ <Stack
35
+ alignItems="left"
36
+ spacing={2}
37
+ sx={{ flexGrow: 1, minWidth: 0, overflow: "hidden" }}
38
+ >
39
+ <CopyableText value={getCurrentPoseString()} ref={poseHolderRef} />
40
+ </Stack>
41
+ )
42
+ },
43
+ )
@@ -0,0 +1,40 @@
1
+ import { Stack } from "@mui/material"
2
+ import type { MotionStreamConnection } from "@wandelbots/wandelbots-js"
3
+ import { observer } from "mobx-react-lite"
4
+ import { useRef } from "react"
5
+ import { CopyableText } from "../CopyableText"
6
+ import { useAnimationFrame } from "../utils/hooks"
7
+
8
+ export const PoseJointValues = observer(
9
+ ({ motionStream }: { motionStream: MotionStreamConnection }) => {
10
+ const poseHolderRef = useRef<HTMLDivElement>(null)
11
+
12
+ function getCurrentPoseString() {
13
+ const { joints } =
14
+ motionStream.rapidlyChangingMotionState.state.joint_position
15
+ return `[${joints.map((j) => parseFloat(j.toFixed(4))).join(", ")}]`
16
+ }
17
+
18
+ useAnimationFrame(() => {
19
+ if (!poseHolderRef.current) {
20
+ return
21
+ }
22
+
23
+ const newPoseContent = getCurrentPoseString()
24
+ if (poseHolderRef.current.textContent === newPoseContent) {
25
+ return
26
+ }
27
+ poseHolderRef.current.textContent = newPoseContent
28
+ })
29
+
30
+ return (
31
+ <Stack
32
+ alignItems="left"
33
+ spacing={2}
34
+ sx={{ flexGrow: 1, minWidth: 0, overflow: "hidden" }}
35
+ >
36
+ <CopyableText value={getCurrentPoseString()} ref={poseHolderRef} />
37
+ </Stack>
38
+ )
39
+ },
40
+ )
@@ -28,6 +28,8 @@ import { Yaskawa_AR3120 } from "./Yaskawa_AR3120"
28
28
  import { Yaskawa_AR900 } from "./Yaskawa_AR900"
29
29
  import { Yaskawa_GP50 } from "./Yaskawa_GP50"
30
30
 
31
+ import { version } from "../../../package.json"
32
+
31
33
  import type { GroupProps } from "@react-three/fiber"
32
34
  import type {
33
35
  DHParameter,
@@ -58,7 +60,11 @@ export type SupportedRobotProps = {
58
60
  } & GroupProps
59
61
 
60
62
  export function defaultGetModel(modelFromController: string): string {
61
- return `https://cdn.jsdelivr.net/gh/wandelbotsgmbh/wandelbots-js-react-components/public/models/${modelFromController}.glb`
63
+ let useVersion = version
64
+ if (version.startsWith("0.")) {
65
+ useVersion = ""
66
+ }
67
+ return `https://cdn.jsdelivr.net/gh/wandelbotsgmbh/wandelbots-js-react-components${useVersion ? `@${useVersion}` : ""}/public/models/${modelFromController}.glb`
62
68
  }
63
69
 
64
70
  export const SupportedRobot = externalizeComponent(