@wandelbots/wandelbots-js-react-components 5.5.1-pr.fix-standardize-output.591.60112ee → 5.5.1

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 (874) hide show
  1. package/dist/3d.cjs +2 -1
  2. package/dist/3d.cjs.map +1 -0
  3. package/dist/3d.d.ts +1 -0
  4. package/dist/3d.d.ts.map +1 -0
  5. package/dist/3d.js +1 -0
  6. package/dist/3d.js.map +1 -0
  7. package/dist/Setup.d.ts +1 -0
  8. package/dist/Setup.d.ts.map +1 -0
  9. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -0
  10. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -0
  11. package/dist/components/3d-viewport/PresetEnvironment.cjs +1 -0
  12. package/dist/components/3d-viewport/PresetEnvironment.cjs.map +1 -0
  13. package/dist/components/3d-viewport/PresetEnvironment.d.ts +1 -0
  14. package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +1 -0
  15. package/dist/components/3d-viewport/PresetEnvironment.js +1 -0
  16. package/dist/components/3d-viewport/PresetEnvironment.js.map +1 -0
  17. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs +2 -1
  18. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs.map +1 -0
  19. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -0
  20. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -0
  21. package/dist/components/3d-viewport/SafetyZonesRenderer.js +1 -0
  22. package/dist/components/3d-viewport/SafetyZonesRenderer.js.map +1 -0
  23. package/dist/components/3d-viewport/TrajectoryRenderer.cjs +1 -0
  24. package/dist/components/3d-viewport/TrajectoryRenderer.cjs.map +1 -0
  25. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +1 -0
  26. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +1 -0
  27. package/dist/components/3d-viewport/TrajectoryRenderer.js +1 -0
  28. package/dist/components/3d-viewport/TrajectoryRenderer.js.map +1 -0
  29. package/dist/components/3d-viewport/collider/ColliderCollection.cjs +2 -1
  30. package/dist/components/3d-viewport/collider/ColliderCollection.cjs.map +1 -0
  31. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +1 -0
  32. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +1 -0
  33. package/dist/components/3d-viewport/collider/ColliderCollection.js +1 -0
  34. package/dist/components/3d-viewport/collider/ColliderCollection.js.map +1 -0
  35. package/dist/components/3d-viewport/collider/ColliderElement.cjs +2 -1
  36. package/dist/components/3d-viewport/collider/ColliderElement.cjs.map +1 -0
  37. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +1 -0
  38. package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +1 -0
  39. package/dist/components/3d-viewport/collider/ColliderElement.js +1 -0
  40. package/dist/components/3d-viewport/collider/ColliderElement.js.map +1 -0
  41. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs +2 -1
  42. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs.map +1 -0
  43. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +1 -0
  44. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +1 -0
  45. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js +1 -0
  46. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js.map +1 -0
  47. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs +1 -0
  48. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs.map +1 -0
  49. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +1 -0
  50. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +1 -0
  51. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js +1 -0
  52. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js.map +1 -0
  53. package/dist/components/AppHeader.cjs +2 -1
  54. package/dist/components/AppHeader.cjs.map +1 -0
  55. package/dist/components/AppHeader.d.ts +1 -0
  56. package/dist/components/AppHeader.d.ts.map +1 -0
  57. package/dist/components/AppHeader.js +34 -40
  58. package/dist/components/AppHeader.js.map +1 -0
  59. package/dist/components/ConsoleFilter.cjs +1 -0
  60. package/dist/components/ConsoleFilter.cjs.map +1 -0
  61. package/dist/components/ConsoleFilter.d.ts +1 -0
  62. package/dist/components/ConsoleFilter.d.ts.map +1 -0
  63. package/dist/components/ConsoleFilter.js +1 -0
  64. package/dist/components/ConsoleFilter.js.map +1 -0
  65. package/dist/components/CopyableText.cjs +1 -0
  66. package/dist/components/CopyableText.cjs.map +1 -0
  67. package/dist/components/CopyableText.d.ts +1 -0
  68. package/dist/components/CopyableText.d.ts.map +1 -0
  69. package/dist/components/CopyableText.js +1 -0
  70. package/dist/components/CopyableText.js.map +1 -0
  71. package/dist/components/CycleTimer/CycleTimer.d.ts +1 -0
  72. package/dist/components/CycleTimer/CycleTimer.d.ts.map +1 -0
  73. package/dist/components/CycleTimer/DefaultVariant.cjs +2 -1
  74. package/dist/components/CycleTimer/DefaultVariant.cjs.map +1 -0
  75. package/dist/components/CycleTimer/DefaultVariant.d.ts +1 -0
  76. package/dist/components/CycleTimer/DefaultVariant.d.ts.map +1 -0
  77. package/dist/components/CycleTimer/DefaultVariant.js +1 -0
  78. package/dist/components/CycleTimer/DefaultVariant.js.map +1 -0
  79. package/dist/components/CycleTimer/SmallVariant.cjs +1 -0
  80. package/dist/components/CycleTimer/SmallVariant.cjs.map +1 -0
  81. package/dist/components/CycleTimer/SmallVariant.d.ts +1 -0
  82. package/dist/components/CycleTimer/SmallVariant.d.ts.map +1 -0
  83. package/dist/components/CycleTimer/SmallVariant.js +1 -0
  84. package/dist/components/CycleTimer/SmallVariant.js.map +1 -0
  85. package/dist/components/CycleTimer/index.cjs +2 -1
  86. package/dist/components/CycleTimer/index.cjs.map +1 -0
  87. package/dist/components/CycleTimer/index.d.ts +1 -0
  88. package/dist/components/CycleTimer/index.d.ts.map +1 -0
  89. package/dist/components/CycleTimer/index.js +2 -1
  90. package/dist/components/CycleTimer/index.js.map +1 -0
  91. package/dist/components/CycleTimer/types.d.ts +1 -0
  92. package/dist/components/CycleTimer/types.d.ts.map +1 -0
  93. package/dist/components/CycleTimer/useAnimations.cjs +1 -0
  94. package/dist/components/CycleTimer/useAnimations.cjs.map +1 -0
  95. package/dist/components/CycleTimer/useAnimations.d.ts +1 -0
  96. package/dist/components/CycleTimer/useAnimations.d.ts.map +1 -0
  97. package/dist/components/CycleTimer/useAnimations.js +2 -9
  98. package/dist/components/CycleTimer/useAnimations.js.map +1 -0
  99. package/dist/components/CycleTimer/useTimerLogic.cjs +2 -1
  100. package/dist/components/CycleTimer/useTimerLogic.cjs.map +1 -0
  101. package/dist/components/CycleTimer/useTimerLogic.d.ts +1 -0
  102. package/dist/components/CycleTimer/useTimerLogic.d.ts.map +1 -0
  103. package/dist/components/CycleTimer/useTimerLogic.js +1 -0
  104. package/dist/components/CycleTimer/useTimerLogic.js.map +1 -0
  105. package/dist/components/CycleTimer/utils.cjs +2 -1
  106. package/dist/components/CycleTimer/utils.cjs.map +1 -0
  107. package/dist/components/CycleTimer/utils.d.ts +1 -0
  108. package/dist/components/CycleTimer/utils.d.ts.map +1 -0
  109. package/dist/components/CycleTimer/utils.js +11 -19
  110. package/dist/components/CycleTimer/utils.js.map +1 -0
  111. package/dist/components/CycleTimer.cjs +1 -0
  112. package/dist/components/CycleTimer.cjs.map +1 -0
  113. package/dist/components/CycleTimer.d.ts +1 -0
  114. package/dist/components/CycleTimer.d.ts.map +1 -0
  115. package/dist/components/CycleTimer.js +1 -0
  116. package/dist/components/CycleTimer.js.map +1 -0
  117. package/dist/components/DataGrid.cjs +2 -1
  118. package/dist/components/DataGrid.cjs.map +1 -0
  119. package/dist/components/DataGrid.d.ts +1 -0
  120. package/dist/components/DataGrid.d.ts.map +1 -0
  121. package/dist/components/DataGrid.js +2 -1
  122. package/dist/components/DataGrid.js.map +1 -0
  123. package/dist/components/LoadingCover.cjs +2 -1
  124. package/dist/components/LoadingCover.cjs.map +1 -0
  125. package/dist/components/LoadingCover.d.ts +1 -0
  126. package/dist/components/LoadingCover.d.ts.map +1 -0
  127. package/dist/components/LoadingCover.js +1 -0
  128. package/dist/components/LoadingCover.js.map +1 -0
  129. package/dist/components/LogPanel.cjs +2 -1
  130. package/dist/components/LogPanel.cjs.map +1 -0
  131. package/dist/components/LogPanel.d.ts +1 -0
  132. package/dist/components/LogPanel.d.ts.map +1 -0
  133. package/dist/components/LogPanel.js +2 -1
  134. package/dist/components/LogPanel.js.map +1 -0
  135. package/dist/components/LogStore.cjs +1 -0
  136. package/dist/components/LogStore.cjs.map +1 -0
  137. package/dist/components/LogStore.d.ts +1 -0
  138. package/dist/components/LogStore.d.ts.map +1 -0
  139. package/dist/components/LogStore.js +1 -0
  140. package/dist/components/LogStore.js.map +1 -0
  141. package/dist/components/LogViewer.cjs +2 -1
  142. package/dist/components/LogViewer.cjs.map +1 -0
  143. package/dist/components/LogViewer.d.ts +1 -0
  144. package/dist/components/LogViewer.d.ts.map +1 -0
  145. package/dist/components/LogViewer.js +2 -1
  146. package/dist/components/LogViewer.js.map +1 -0
  147. package/dist/components/ProgramControl.cjs +2 -1
  148. package/dist/components/ProgramControl.cjs.map +1 -0
  149. package/dist/components/ProgramControl.d.ts +1 -0
  150. package/dist/components/ProgramControl.d.ts.map +1 -0
  151. package/dist/components/ProgramControl.js +7 -6
  152. package/dist/components/ProgramControl.js.map +1 -0
  153. package/dist/components/ProgramStateIndicator.cjs +2 -1
  154. package/dist/components/ProgramStateIndicator.cjs.map +1 -0
  155. package/dist/components/ProgramStateIndicator.d.ts +1 -0
  156. package/dist/components/ProgramStateIndicator.d.ts.map +1 -0
  157. package/dist/components/ProgramStateIndicator.js +29 -28
  158. package/dist/components/ProgramStateIndicator.js.map +1 -0
  159. package/dist/components/RobotCard.cjs +2 -1
  160. package/dist/components/RobotCard.cjs.map +1 -0
  161. package/dist/components/RobotCard.d.ts +1 -0
  162. package/dist/components/RobotCard.d.ts.map +1 -0
  163. package/dist/components/RobotCard.js +2 -1
  164. package/dist/components/RobotCard.js.map +1 -0
  165. package/dist/components/RobotListItem.cjs +2 -1
  166. package/dist/components/RobotListItem.cjs.map +1 -0
  167. package/dist/components/RobotListItem.d.ts +1 -0
  168. package/dist/components/RobotListItem.d.ts.map +1 -0
  169. package/dist/components/RobotListItem.js +26 -25
  170. package/dist/components/RobotListItem.js.map +1 -0
  171. package/dist/components/RobotSetupReadinessIndicator.cjs +2 -1
  172. package/dist/components/RobotSetupReadinessIndicator.cjs.map +1 -0
  173. package/dist/components/RobotSetupReadinessIndicator.d.ts +1 -0
  174. package/dist/components/RobotSetupReadinessIndicator.d.ts.map +1 -0
  175. package/dist/components/RobotSetupReadinessIndicator.js +2 -1
  176. package/dist/components/RobotSetupReadinessIndicator.js.map +1 -0
  177. package/dist/components/RobotSetupReadinessIndicator.test.d.ts +2 -0
  178. package/dist/components/RobotSetupReadinessIndicator.test.d.ts.map +1 -0
  179. package/dist/components/SelectableFab.cjs +1 -0
  180. package/dist/components/SelectableFab.cjs.map +1 -0
  181. package/dist/components/SelectableFab.d.ts +1 -0
  182. package/dist/components/SelectableFab.d.ts.map +1 -0
  183. package/dist/components/SelectableFab.js +1 -0
  184. package/dist/components/SelectableFab.js.map +1 -0
  185. package/dist/components/TabBar.cjs +2 -1
  186. package/dist/components/TabBar.cjs.map +1 -0
  187. package/dist/components/TabBar.d.ts +1 -0
  188. package/dist/components/TabBar.d.ts.map +1 -0
  189. package/dist/components/TabBar.js +2 -1
  190. package/dist/components/TabBar.js.map +1 -0
  191. package/dist/components/ThemeSelect.d.ts +1 -0
  192. package/dist/components/ThemeSelect.d.ts.map +1 -0
  193. package/dist/components/Timer/Timer.d.ts +1 -0
  194. package/dist/components/Timer/Timer.d.ts.map +1 -0
  195. package/dist/components/Timer/TimerDefaultVariant.cjs +1 -0
  196. package/dist/components/Timer/TimerDefaultVariant.cjs.map +1 -0
  197. package/dist/components/Timer/TimerDefaultVariant.d.ts +1 -0
  198. package/dist/components/Timer/TimerDefaultVariant.d.ts.map +1 -0
  199. package/dist/components/Timer/TimerDefaultVariant.js +1 -0
  200. package/dist/components/Timer/TimerDefaultVariant.js.map +1 -0
  201. package/dist/components/Timer/TimerSmallVariant.cjs +1 -0
  202. package/dist/components/Timer/TimerSmallVariant.cjs.map +1 -0
  203. package/dist/components/Timer/TimerSmallVariant.d.ts +1 -0
  204. package/dist/components/Timer/TimerSmallVariant.d.ts.map +1 -0
  205. package/dist/components/Timer/TimerSmallVariant.js +1 -0
  206. package/dist/components/Timer/TimerSmallVariant.js.map +1 -0
  207. package/dist/components/Timer/index.cjs +2 -1
  208. package/dist/components/Timer/index.cjs.map +1 -0
  209. package/dist/components/Timer/index.d.ts +1 -0
  210. package/dist/components/Timer/index.d.ts.map +1 -0
  211. package/dist/components/Timer/index.js +12 -11
  212. package/dist/components/Timer/index.js.map +1 -0
  213. package/dist/components/Timer/types.d.ts +1 -0
  214. package/dist/components/Timer/types.d.ts.map +1 -0
  215. package/dist/components/Timer/useTimerAnimations.cjs +1 -0
  216. package/dist/components/Timer/useTimerAnimations.cjs.map +1 -0
  217. package/dist/components/Timer/useTimerAnimations.d.ts +1 -0
  218. package/dist/components/Timer/useTimerAnimations.d.ts.map +1 -0
  219. package/dist/components/Timer/useTimerAnimations.js +2 -5
  220. package/dist/components/Timer/useTimerAnimations.js.map +1 -0
  221. package/dist/components/Timer/useTimerLogic.cjs +1 -0
  222. package/dist/components/Timer/useTimerLogic.cjs.map +1 -0
  223. package/dist/components/Timer/useTimerLogic.d.ts +1 -0
  224. package/dist/components/Timer/useTimerLogic.d.ts.map +1 -0
  225. package/dist/components/Timer/useTimerLogic.js +1 -0
  226. package/dist/components/Timer/useTimerLogic.js.map +1 -0
  227. package/dist/components/Timer/utils.cjs +2 -1
  228. package/dist/components/Timer/utils.cjs.map +1 -0
  229. package/dist/components/Timer/utils.d.ts +1 -0
  230. package/dist/components/Timer/utils.d.ts.map +1 -0
  231. package/dist/components/Timer/utils.js +10 -10
  232. package/dist/components/Timer/utils.js.map +1 -0
  233. package/dist/components/Timer.cjs +1 -0
  234. package/dist/components/Timer.cjs.map +1 -0
  235. package/dist/components/Timer.d.ts +1 -0
  236. package/dist/components/Timer.d.ts.map +1 -0
  237. package/dist/components/Timer.js +1 -0
  238. package/dist/components/Timer.js.map +1 -0
  239. package/dist/components/TransparentOverlay.d.ts +1 -0
  240. package/dist/components/TransparentOverlay.d.ts.map +1 -0
  241. package/dist/components/VelocitySlider.cjs +1 -0
  242. package/dist/components/VelocitySlider.cjs.map +1 -0
  243. package/dist/components/VelocitySlider.d.ts +1 -0
  244. package/dist/components/VelocitySlider.d.ts.map +1 -0
  245. package/dist/components/VelocitySlider.js +1 -0
  246. package/dist/components/VelocitySlider.js.map +1 -0
  247. package/dist/components/experimental/utils/AdornedSelect.cjs +1 -0
  248. package/dist/components/experimental/utils/AdornedSelect.cjs.map +1 -0
  249. package/dist/components/experimental/utils/AdornedSelect.d.ts +1 -0
  250. package/dist/components/experimental/utils/AdornedSelect.d.ts.map +1 -0
  251. package/dist/components/experimental/utils/AdornedSelect.js +1 -0
  252. package/dist/components/experimental/utils/AdornedSelect.js.map +1 -0
  253. package/dist/components/jogging/JoggingBlocked.cjs +1 -0
  254. package/dist/components/jogging/JoggingBlocked.cjs.map +1 -0
  255. package/dist/components/jogging/JoggingBlocked.d.ts +1 -0
  256. package/dist/components/jogging/JoggingBlocked.d.ts.map +1 -0
  257. package/dist/components/jogging/JoggingBlocked.js +1 -0
  258. package/dist/components/jogging/JoggingBlocked.js.map +1 -0
  259. package/dist/components/jogging/JoggingCartesianAxisControl.cjs +2 -1
  260. package/dist/components/jogging/JoggingCartesianAxisControl.cjs.map +1 -0
  261. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts +1 -0
  262. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -0
  263. package/dist/components/jogging/JoggingCartesianAxisControl.js +20 -18
  264. package/dist/components/jogging/JoggingCartesianAxisControl.js.map +1 -0
  265. package/dist/components/jogging/JoggingCartesianTab.cjs +2 -1
  266. package/dist/components/jogging/JoggingCartesianTab.cjs.map +1 -0
  267. package/dist/components/jogging/JoggingCartesianTab.d.ts +1 -0
  268. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +1 -0
  269. package/dist/components/jogging/JoggingCartesianTab.js +41 -37
  270. package/dist/components/jogging/JoggingCartesianTab.js.map +1 -0
  271. package/dist/components/jogging/JoggingFreedriveTab.d.ts +1 -0
  272. package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +1 -0
  273. package/dist/components/jogging/JoggingJointLimitDetector.cjs +1 -0
  274. package/dist/components/jogging/JoggingJointLimitDetector.cjs.map +1 -0
  275. package/dist/components/jogging/JoggingJointLimitDetector.d.ts +1 -0
  276. package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +1 -0
  277. package/dist/components/jogging/JoggingJointLimitDetector.js +1 -0
  278. package/dist/components/jogging/JoggingJointLimitDetector.js.map +1 -0
  279. package/dist/components/jogging/JoggingJointTab.cjs +2 -1
  280. package/dist/components/jogging/JoggingJointTab.cjs.map +1 -0
  281. package/dist/components/jogging/JoggingJointTab.d.ts +1 -0
  282. package/dist/components/jogging/JoggingJointTab.d.ts.map +1 -0
  283. package/dist/components/jogging/JoggingJointTab.js +1 -0
  284. package/dist/components/jogging/JoggingJointTab.js.map +1 -0
  285. package/dist/components/jogging/JoggingJointValueControl.cjs +2 -1
  286. package/dist/components/jogging/JoggingJointValueControl.cjs.map +1 -0
  287. package/dist/components/jogging/JoggingJointValueControl.d.ts +1 -0
  288. package/dist/components/jogging/JoggingJointValueControl.d.ts.map +1 -0
  289. package/dist/components/jogging/JoggingJointValueControl.js +2 -1
  290. package/dist/components/jogging/JoggingJointValueControl.js.map +1 -0
  291. package/dist/components/jogging/JoggingOptions.cjs +2 -1
  292. package/dist/components/jogging/JoggingOptions.cjs.map +1 -0
  293. package/dist/components/jogging/JoggingOptions.d.ts +1 -0
  294. package/dist/components/jogging/JoggingOptions.d.ts.map +1 -0
  295. package/dist/components/jogging/JoggingOptions.js +1 -0
  296. package/dist/components/jogging/JoggingOptions.js.map +1 -0
  297. package/dist/components/jogging/JoggingPanel.cjs +2 -1
  298. package/dist/components/jogging/JoggingPanel.cjs.map +1 -0
  299. package/dist/components/jogging/JoggingPanel.d.ts +1 -0
  300. package/dist/components/jogging/JoggingPanel.d.ts.map +1 -0
  301. package/dist/components/jogging/JoggingPanel.js +119 -21
  302. package/dist/components/jogging/JoggingPanel.js.map +1 -0
  303. package/dist/components/jogging/JoggingPanel.test.d.ts +2 -0
  304. package/dist/components/jogging/JoggingPanel.test.d.ts.map +1 -0
  305. package/dist/components/jogging/JoggingStore.cjs +1 -0
  306. package/dist/components/jogging/JoggingStore.cjs.map +1 -0
  307. package/dist/components/jogging/JoggingStore.d.ts +1 -0
  308. package/dist/components/jogging/JoggingStore.d.ts.map +1 -0
  309. package/dist/components/jogging/JoggingStore.js +1 -0
  310. package/dist/components/jogging/JoggingStore.js.map +1 -0
  311. package/dist/components/jogging/JoggingToggleButtonGroup.cjs +1 -0
  312. package/dist/components/jogging/JoggingToggleButtonGroup.cjs.map +1 -0
  313. package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +1 -0
  314. package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +1 -0
  315. package/dist/components/jogging/JoggingToggleButtonGroup.js +1 -0
  316. package/dist/components/jogging/JoggingToggleButtonGroup.js.map +1 -0
  317. package/dist/components/jogging/JoggingVelocitySlider.cjs +1 -0
  318. package/dist/components/jogging/JoggingVelocitySlider.cjs.map +1 -0
  319. package/dist/components/jogging/JoggingVelocitySlider.d.ts +1 -0
  320. package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +1 -0
  321. package/dist/components/jogging/JoggingVelocitySlider.js +1 -0
  322. package/dist/components/jogging/JoggingVelocitySlider.js.map +1 -0
  323. package/dist/components/jogging/PoseCartesianValues.cjs +2 -1
  324. package/dist/components/jogging/PoseCartesianValues.cjs.map +1 -0
  325. package/dist/components/jogging/PoseCartesianValues.d.ts +1 -0
  326. package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -0
  327. package/dist/components/jogging/PoseCartesianValues.js +5 -4
  328. package/dist/components/jogging/PoseCartesianValues.js.map +1 -0
  329. package/dist/components/jogging/PoseJointValues.cjs +2 -1
  330. package/dist/components/jogging/PoseJointValues.cjs.map +1 -0
  331. package/dist/components/jogging/PoseJointValues.d.ts +1 -0
  332. package/dist/components/jogging/PoseJointValues.d.ts.map +1 -0
  333. package/dist/components/jogging/PoseJointValues.js +2 -1
  334. package/dist/components/jogging/PoseJointValues.js.map +1 -0
  335. package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts +11 -0
  336. package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts.map +1 -0
  337. package/dist/components/modal/NoMotionGroupModal.cjs +1 -0
  338. package/dist/components/modal/NoMotionGroupModal.cjs.map +1 -0
  339. package/dist/components/modal/NoMotionGroupModal.d.ts +1 -0
  340. package/dist/components/modal/NoMotionGroupModal.d.ts.map +1 -0
  341. package/dist/components/modal/NoMotionGroupModal.js +1 -0
  342. package/dist/components/modal/NoMotionGroupModal.js.map +1 -0
  343. package/dist/components/robots/AxisConfig.cjs +1 -0
  344. package/dist/components/robots/AxisConfig.cjs.map +1 -0
  345. package/dist/components/robots/AxisConfig.d.ts +1 -0
  346. package/dist/components/robots/AxisConfig.d.ts.map +1 -0
  347. package/dist/components/robots/AxisConfig.js +1 -0
  348. package/dist/components/robots/AxisConfig.js.map +1 -0
  349. package/dist/components/robots/DHLinearAxis.cjs +2 -1
  350. package/dist/components/robots/DHLinearAxis.cjs.map +1 -0
  351. package/dist/components/robots/DHLinearAxis.d.ts +1 -0
  352. package/dist/components/robots/DHLinearAxis.d.ts.map +1 -0
  353. package/dist/components/robots/DHLinearAxis.js +1 -0
  354. package/dist/components/robots/DHLinearAxis.js.map +1 -0
  355. package/dist/components/robots/DHRobot.cjs +2 -1
  356. package/dist/components/robots/DHRobot.cjs.map +1 -0
  357. package/dist/components/robots/DHRobot.d.ts +1 -0
  358. package/dist/components/robots/DHRobot.d.ts.map +1 -0
  359. package/dist/components/robots/DHRobot.js +1 -0
  360. package/dist/components/robots/DHRobot.js.map +1 -0
  361. package/dist/components/robots/GenericRobot.cjs +1 -0
  362. package/dist/components/robots/GenericRobot.cjs.map +1 -0
  363. package/dist/components/robots/GenericRobot.d.ts +1 -0
  364. package/dist/components/robots/GenericRobot.d.ts.map +1 -0
  365. package/dist/components/robots/GenericRobot.js +1 -0
  366. package/dist/components/robots/GenericRobot.js.map +1 -0
  367. package/dist/components/robots/LinearAxis.cjs +2 -1
  368. package/dist/components/robots/LinearAxis.cjs.map +1 -0
  369. package/dist/components/robots/LinearAxis.d.ts +1 -0
  370. package/dist/components/robots/LinearAxis.d.ts.map +1 -0
  371. package/dist/components/robots/LinearAxis.js +1 -0
  372. package/dist/components/robots/LinearAxis.js.map +1 -0
  373. package/dist/components/robots/LinearAxisAnimator.cjs +2 -1
  374. package/dist/components/robots/LinearAxisAnimator.cjs.map +1 -0
  375. package/dist/components/robots/LinearAxisAnimator.d.ts +1 -0
  376. package/dist/components/robots/LinearAxisAnimator.d.ts.map +1 -0
  377. package/dist/components/robots/LinearAxisAnimator.js +1 -0
  378. package/dist/components/robots/LinearAxisAnimator.js.map +1 -0
  379. package/dist/components/robots/MotionGroupVisualizer.cjs +2 -1
  380. package/dist/components/robots/MotionGroupVisualizer.cjs.map +1 -0
  381. package/dist/components/robots/MotionGroupVisualizer.d.ts +1 -0
  382. package/dist/components/robots/MotionGroupVisualizer.d.ts.map +1 -0
  383. package/dist/components/robots/MotionGroupVisualizer.js +5 -4
  384. package/dist/components/robots/MotionGroupVisualizer.js.map +1 -0
  385. package/dist/components/robots/Robot.cjs +2 -1
  386. package/dist/components/robots/Robot.cjs.map +1 -0
  387. package/dist/components/robots/Robot.d.ts +1 -0
  388. package/dist/components/robots/Robot.d.ts.map +1 -0
  389. package/dist/components/robots/Robot.js +1 -0
  390. package/dist/components/robots/Robot.js.map +1 -0
  391. package/dist/components/robots/RobotAnimator.cjs +2 -1
  392. package/dist/components/robots/RobotAnimator.cjs.map +1 -0
  393. package/dist/components/robots/RobotAnimator.d.ts +1 -0
  394. package/dist/components/robots/RobotAnimator.d.ts.map +1 -0
  395. package/dist/components/robots/RobotAnimator.js +1 -0
  396. package/dist/components/robots/RobotAnimator.js.map +1 -0
  397. package/dist/components/robots/RobotAnimator.test.d.ts +2 -0
  398. package/dist/components/robots/RobotAnimator.test.d.ts.map +1 -0
  399. package/dist/components/robots/SupportedLinearAxis.cjs +2 -1
  400. package/dist/components/robots/SupportedLinearAxis.cjs.map +1 -0
  401. package/dist/components/robots/SupportedLinearAxis.d.ts +1 -0
  402. package/dist/components/robots/SupportedLinearAxis.d.ts.map +1 -0
  403. package/dist/components/robots/SupportedLinearAxis.js +8 -7
  404. package/dist/components/robots/SupportedLinearAxis.js.map +1 -0
  405. package/dist/components/robots/SupportedRobot.cjs +2 -1
  406. package/dist/components/robots/SupportedRobot.cjs.map +1 -0
  407. package/dist/components/robots/SupportedRobot.d.ts +1 -0
  408. package/dist/components/robots/SupportedRobot.d.ts.map +1 -0
  409. package/dist/components/robots/SupportedRobot.js +7 -6
  410. package/dist/components/robots/SupportedRobot.js.map +1 -0
  411. package/dist/components/robots/ghostStyle.cjs +1 -0
  412. package/dist/components/robots/ghostStyle.cjs.map +1 -0
  413. package/dist/components/robots/ghostStyle.d.ts +1 -0
  414. package/dist/components/robots/ghostStyle.d.ts.map +1 -0
  415. package/dist/components/robots/ghostStyle.js +1 -0
  416. package/dist/components/robots/ghostStyle.js.map +1 -0
  417. package/dist/components/robots/manufacturerHomePositions.cjs +1 -0
  418. package/dist/components/robots/manufacturerHomePositions.cjs.map +1 -0
  419. package/dist/components/robots/manufacturerHomePositions.d.ts +1 -0
  420. package/dist/components/robots/manufacturerHomePositions.d.ts.map +1 -0
  421. package/dist/components/robots/manufacturerHomePositions.js +1 -0
  422. package/dist/components/robots/manufacturerHomePositions.js.map +1 -0
  423. package/dist/components/robots/robotModelLogic.cjs +2 -1
  424. package/dist/components/robots/robotModelLogic.cjs.map +1 -0
  425. package/dist/components/robots/robotModelLogic.d.ts +1 -0
  426. package/dist/components/robots/robotModelLogic.d.ts.map +1 -0
  427. package/dist/components/robots/robotModelLogic.js +34 -58
  428. package/dist/components/robots/robotModelLogic.js.map +1 -0
  429. package/dist/components/safetyBar/ControllerTypeIndicator.cjs +2 -1
  430. package/dist/components/safetyBar/ControllerTypeIndicator.cjs.map +1 -0
  431. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +1 -0
  432. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -0
  433. package/dist/components/safetyBar/ControllerTypeIndicator.js +12 -10
  434. package/dist/components/safetyBar/ControllerTypeIndicator.js.map +1 -0
  435. package/dist/components/safetyBar/IndicatorWithExplanation.cjs +1 -0
  436. package/dist/components/safetyBar/IndicatorWithExplanation.cjs.map +1 -0
  437. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +1 -0
  438. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +1 -0
  439. package/dist/components/safetyBar/IndicatorWithExplanation.js +1 -0
  440. package/dist/components/safetyBar/IndicatorWithExplanation.js.map +1 -0
  441. package/dist/components/safetyBar/OperationModeIndicator.cjs +2 -1
  442. package/dist/components/safetyBar/OperationModeIndicator.cjs.map +1 -0
  443. package/dist/components/safetyBar/OperationModeIndicator.d.ts +1 -0
  444. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -0
  445. package/dist/components/safetyBar/OperationModeIndicator.js +24 -21
  446. package/dist/components/safetyBar/OperationModeIndicator.js.map +1 -0
  447. package/dist/components/safetyBar/SafetyBar.cjs +2 -1
  448. package/dist/components/safetyBar/SafetyBar.cjs.map +1 -0
  449. package/dist/components/safetyBar/SafetyBar.d.ts +1 -0
  450. package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -0
  451. package/dist/components/safetyBar/SafetyBar.js +16 -15
  452. package/dist/components/safetyBar/SafetyBar.js.map +1 -0
  453. package/dist/components/safetyBar/SafetyStateIndicator.cjs +2 -1
  454. package/dist/components/safetyBar/SafetyStateIndicator.cjs.map +1 -0
  455. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +1 -0
  456. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -0
  457. package/dist/components/safetyBar/SafetyStateIndicator.js +30 -25
  458. package/dist/components/safetyBar/SafetyStateIndicator.js.map +1 -0
  459. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs +2 -0
  460. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs.map +1 -0
  461. package/dist/components/safetyBar/icons/controller-type-physical.svg.d.ts +3 -0
  462. package/dist/{chunks/controller-type-virtual-CWOoMRfl.js → components/safetyBar/icons/controller-type-physical.svg.js} +6 -10
  463. package/dist/components/safetyBar/icons/controller-type-physical.svg.js.map +1 -0
  464. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs +2 -0
  465. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs.map +1 -0
  466. package/dist/components/safetyBar/icons/controller-type-virtual.svg.d.ts +3 -0
  467. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js +11 -0
  468. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js.map +1 -0
  469. package/dist/components/safetyBar/icons/index.d.ts +1 -0
  470. package/dist/components/safetyBar/icons/index.d.ts.map +1 -0
  471. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs +2 -0
  472. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs.map +1 -0
  473. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.d.ts +3 -0
  474. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js +11 -0
  475. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js.map +1 -0
  476. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs +2 -0
  477. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs.map +1 -0
  478. package/dist/components/safetyBar/icons/operation-mode-error.svg.d.ts +3 -0
  479. package/dist/components/safetyBar/icons/operation-mode-error.svg.js +11 -0
  480. package/dist/components/safetyBar/icons/operation-mode-error.svg.js.map +1 -0
  481. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs +2 -0
  482. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs.map +1 -0
  483. package/dist/components/safetyBar/icons/operation-mode-manual.svg.d.ts +3 -0
  484. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js +11 -0
  485. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js.map +1 -0
  486. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs +2 -0
  487. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs.map +1 -0
  488. package/dist/components/safetyBar/icons/safety-state-error.svg.d.ts +3 -0
  489. package/dist/components/safetyBar/icons/safety-state-error.svg.js +11 -0
  490. package/dist/components/safetyBar/icons/safety-state-error.svg.js.map +1 -0
  491. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs +2 -0
  492. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs.map +1 -0
  493. package/dist/components/safetyBar/icons/safety-state-estop.svg.d.ts +3 -0
  494. package/dist/components/safetyBar/icons/safety-state-estop.svg.js +11 -0
  495. package/dist/components/safetyBar/icons/safety-state-estop.svg.js.map +1 -0
  496. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs +2 -0
  497. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs.map +1 -0
  498. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.d.ts +3 -0
  499. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js +11 -0
  500. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js.map +1 -0
  501. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs +2 -0
  502. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs.map +1 -0
  503. package/dist/components/safetyBar/icons/safety-state-normal.svg.d.ts +3 -0
  504. package/dist/components/safetyBar/icons/safety-state-normal.svg.js +11 -0
  505. package/dist/components/safetyBar/icons/safety-state-normal.svg.js.map +1 -0
  506. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs +2 -0
  507. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs.map +1 -0
  508. package/dist/components/safetyBar/icons/safety-state-stop.svg.d.ts +3 -0
  509. package/dist/components/safetyBar/icons/safety-state-stop.svg.js +11 -0
  510. package/dist/components/safetyBar/icons/safety-state-stop.svg.js.map +1 -0
  511. package/dist/components/utils/converters.cjs +2 -1
  512. package/dist/components/utils/converters.cjs.map +1 -0
  513. package/dist/components/utils/converters.d.ts +1 -0
  514. package/dist/components/utils/converters.d.ts.map +1 -0
  515. package/dist/components/utils/converters.js +11 -26
  516. package/dist/components/utils/converters.js.map +1 -0
  517. package/dist/components/utils/errorHandling.cjs +2 -1
  518. package/dist/components/utils/errorHandling.cjs.map +1 -0
  519. package/dist/components/utils/errorHandling.d.ts +1 -0
  520. package/dist/components/utils/errorHandling.d.ts.map +1 -0
  521. package/dist/components/utils/errorHandling.js +9 -17
  522. package/dist/components/utils/errorHandling.js.map +1 -0
  523. package/dist/components/utils/errorHandling.test.d.ts +2 -0
  524. package/dist/components/utils/errorHandling.test.d.ts.map +1 -0
  525. package/dist/components/utils/hooks.cjs +1 -0
  526. package/dist/components/utils/hooks.cjs.map +1 -0
  527. package/dist/components/utils/hooks.d.ts +1 -0
  528. package/dist/components/utils/hooks.d.ts.map +1 -0
  529. package/dist/components/utils/hooks.js +4 -3
  530. package/dist/components/utils/hooks.js.map +1 -0
  531. package/dist/components/utils/interpolation.cjs +1 -0
  532. package/dist/components/utils/interpolation.cjs.map +1 -0
  533. package/dist/components/utils/interpolation.d.ts +1 -0
  534. package/dist/components/utils/interpolation.d.ts.map +1 -0
  535. package/dist/components/utils/interpolation.js +1 -0
  536. package/dist/components/utils/interpolation.js.map +1 -0
  537. package/dist/components/utils/interpolation.test.d.ts +2 -0
  538. package/dist/components/utils/interpolation.test.d.ts.map +1 -0
  539. package/dist/core.cjs +2 -1
  540. package/dist/core.cjs.map +1 -0
  541. package/dist/core.d.ts +1 -0
  542. package/dist/core.d.ts.map +1 -0
  543. package/dist/core.js +75 -70
  544. package/dist/core.js.map +1 -0
  545. package/dist/externalizeComponent.cjs +2 -0
  546. package/dist/externalizeComponent.cjs.map +1 -0
  547. package/dist/externalizeComponent.d.ts +1 -0
  548. package/dist/externalizeComponent.d.ts.map +1 -0
  549. package/dist/externalizeComponent.js +13 -0
  550. package/dist/externalizeComponent.js.map +1 -0
  551. package/dist/i18n/config.cjs +2 -0
  552. package/dist/i18n/config.cjs.map +1 -0
  553. package/dist/i18n/config.d.ts +1 -0
  554. package/dist/i18n/config.d.ts.map +1 -0
  555. package/dist/i18n/config.js +25 -0
  556. package/dist/i18n/config.js.map +1 -0
  557. package/dist/i18n/locales/de/translations.json.cjs +3 -0
  558. package/dist/i18n/locales/de/translations.json.cjs.map +1 -0
  559. package/dist/i18n/locales/de/translations.json.js +94 -0
  560. package/dist/i18n/locales/de/translations.json.js.map +1 -0
  561. package/dist/i18n/locales/en/translations.json.cjs +2 -0
  562. package/dist/i18n/locales/en/translations.json.cjs.map +1 -0
  563. package/dist/i18n/locales/en/translations.json.js +94 -0
  564. package/dist/i18n/locales/en/translations.json.js.map +1 -0
  565. package/dist/icons/DropdownArrowIcon.cjs +2 -0
  566. package/dist/icons/DropdownArrowIcon.cjs.map +1 -0
  567. package/dist/icons/DropdownArrowIcon.d.ts +1 -0
  568. package/dist/icons/DropdownArrowIcon.d.ts.map +1 -0
  569. package/dist/icons/DropdownArrowIcon.js +14 -0
  570. package/dist/icons/DropdownArrowIcon.js.map +1 -0
  571. package/dist/icons/axis-x.svg.cjs +2 -0
  572. package/dist/icons/axis-x.svg.cjs.map +1 -0
  573. package/dist/icons/axis-x.svg.d.ts +3 -0
  574. package/dist/icons/axis-x.svg.js +11 -0
  575. package/dist/icons/axis-x.svg.js.map +1 -0
  576. package/dist/icons/axis-y.svg.cjs +2 -0
  577. package/dist/icons/axis-y.svg.cjs.map +1 -0
  578. package/dist/icons/axis-y.svg.d.ts +3 -0
  579. package/dist/icons/axis-y.svg.js +11 -0
  580. package/dist/icons/axis-y.svg.js.map +1 -0
  581. package/dist/icons/axis-z.svg.cjs +2 -0
  582. package/dist/icons/axis-z.svg.cjs.map +1 -0
  583. package/dist/icons/axis-z.svg.d.ts +3 -0
  584. package/dist/icons/axis-z.svg.js +11 -0
  585. package/dist/icons/axis-z.svg.js.map +1 -0
  586. package/dist/icons/home.svg.cjs +2 -0
  587. package/dist/icons/home.svg.cjs.map +1 -0
  588. package/dist/icons/home.svg.d.ts +3 -0
  589. package/dist/icons/home.svg.js +11 -0
  590. package/dist/icons/home.svg.js.map +1 -0
  591. package/dist/icons/index.d.ts +1 -0
  592. package/dist/icons/index.d.ts.map +1 -0
  593. package/dist/icons/jog-minus.svg.cjs +2 -0
  594. package/dist/icons/jog-minus.svg.cjs.map +1 -0
  595. package/dist/icons/jog-minus.svg.d.ts +3 -0
  596. package/dist/icons/jog-minus.svg.js +11 -0
  597. package/dist/icons/jog-minus.svg.js.map +1 -0
  598. package/dist/icons/jog-plus.svg.cjs +2 -0
  599. package/dist/icons/jog-plus.svg.cjs.map +1 -0
  600. package/dist/icons/jog-plus.svg.d.ts +3 -0
  601. package/dist/icons/jog-plus.svg.js +11 -0
  602. package/dist/icons/jog-plus.svg.js.map +1 -0
  603. package/dist/icons/jogging.svg.cjs +2 -0
  604. package/dist/icons/jogging.svg.cjs.map +1 -0
  605. package/dist/icons/jogging.svg.d.ts +3 -0
  606. package/dist/icons/jogging.svg.js +11 -0
  607. package/dist/icons/jogging.svg.js.map +1 -0
  608. package/dist/icons/orientation-coord-system.svg.cjs +2 -0
  609. package/dist/icons/orientation-coord-system.svg.cjs.map +1 -0
  610. package/dist/icons/orientation-coord-system.svg.d.ts +3 -0
  611. package/dist/icons/orientation-coord-system.svg.js +11 -0
  612. package/dist/icons/orientation-coord-system.svg.js.map +1 -0
  613. package/dist/icons/orientation-tool.svg.cjs +2 -0
  614. package/dist/icons/orientation-tool.svg.cjs.map +1 -0
  615. package/dist/icons/orientation-tool.svg.d.ts +3 -0
  616. package/dist/icons/orientation-tool.svg.js +11 -0
  617. package/dist/icons/orientation-tool.svg.js.map +1 -0
  618. package/dist/icons/robot.svg.cjs +2 -0
  619. package/dist/icons/robot.svg.cjs.map +1 -0
  620. package/dist/icons/robot.svg.d.ts +3 -0
  621. package/dist/{chunks/robot-D97QEl_l.js → icons/robot.svg.js} +3 -2
  622. package/dist/icons/robot.svg.js.map +1 -0
  623. package/dist/icons/rotation.svg.cjs +2 -0
  624. package/dist/icons/rotation.svg.cjs.map +1 -0
  625. package/dist/icons/rotation.svg.d.ts +3 -0
  626. package/dist/icons/rotation.svg.js +11 -0
  627. package/dist/icons/rotation.svg.js.map +1 -0
  628. package/dist/icons/wbLogo.svg.cjs +2 -0
  629. package/dist/icons/wbLogo.svg.cjs.map +1 -0
  630. package/dist/icons/wbLogo.svg.d.ts +3 -0
  631. package/dist/icons/wbLogo.svg.js +11 -0
  632. package/dist/icons/wbLogo.svg.js.map +1 -0
  633. package/dist/index.cjs +2 -1
  634. package/dist/index.cjs.map +1 -0
  635. package/dist/index.d.ts +1 -0
  636. package/dist/index.d.ts.map +1 -0
  637. package/dist/index.js +140 -120
  638. package/dist/index.js.map +1 -0
  639. package/dist/lib/ConnectedMotionGroup.cjs +4 -0
  640. package/dist/lib/ConnectedMotionGroup.cjs.map +1 -0
  641. package/dist/lib/ConnectedMotionGroup.d.ts +1 -0
  642. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -0
  643. package/dist/lib/ConnectedMotionGroup.js +250 -0
  644. package/dist/lib/ConnectedMotionGroup.js.map +1 -0
  645. package/dist/lib/JoggerConnection.cjs +2 -0
  646. package/dist/lib/JoggerConnection.cjs.map +1 -0
  647. package/dist/lib/JoggerConnection.d.ts +1 -0
  648. package/dist/lib/JoggerConnection.d.ts.map +1 -0
  649. package/dist/lib/JoggerConnection.js +342 -0
  650. package/dist/lib/JoggerConnection.js.map +1 -0
  651. package/dist/lib/JoggerConnection.test.d.ts +2 -0
  652. package/dist/lib/JoggerConnection.test.d.ts.map +1 -0
  653. package/dist/lib/MotionStreamConnection.cjs +3 -0
  654. package/dist/lib/MotionStreamConnection.cjs.map +1 -0
  655. package/dist/lib/MotionStreamConnection.d.ts +1 -0
  656. package/dist/lib/MotionStreamConnection.d.ts.map +1 -0
  657. package/dist/lib/MotionStreamConnection.js +94 -0
  658. package/dist/lib/MotionStreamConnection.js.map +1 -0
  659. package/dist/lib/MotionStreamConnection.test.d.ts +2 -0
  660. package/dist/lib/MotionStreamConnection.test.d.ts.map +1 -0
  661. package/dist/lib/motionStateUpdate.cjs +2 -0
  662. package/dist/lib/motionStateUpdate.cjs.map +1 -0
  663. package/dist/lib/motionStateUpdate.d.ts +1 -0
  664. package/dist/lib/motionStateUpdate.d.ts.map +1 -0
  665. package/dist/lib/motionStateUpdate.js +49 -0
  666. package/dist/lib/motionStateUpdate.js.map +1 -0
  667. package/dist/lib/motionStateUpdate.test.d.ts +2 -0
  668. package/dist/lib/motionStateUpdate.test.d.ts.map +1 -0
  669. package/dist/test/consumer.test.d.ts +2 -0
  670. package/dist/test/consumer.test.d.ts.map +1 -0
  671. package/dist/test/setup.d.ts +2 -0
  672. package/dist/test/setup.d.ts.map +1 -0
  673. package/dist/themes/createDarkTheme.cjs +2 -0
  674. package/dist/themes/createDarkTheme.cjs.map +1 -0
  675. package/dist/themes/createDarkTheme.d.ts +1 -0
  676. package/dist/themes/createDarkTheme.d.ts.map +1 -0
  677. package/dist/themes/createDarkTheme.js +344 -0
  678. package/dist/themes/createDarkTheme.js.map +1 -0
  679. package/dist/themes/createLightTheme.cjs +2 -0
  680. package/dist/themes/createLightTheme.cjs.map +1 -0
  681. package/dist/themes/createLightTheme.d.ts +1 -0
  682. package/dist/themes/createLightTheme.d.ts.map +1 -0
  683. package/dist/themes/createLightTheme.js +9 -0
  684. package/dist/themes/createLightTheme.js.map +1 -0
  685. package/dist/themes/themeTypes.d.ts +1 -0
  686. package/dist/themes/themeTypes.d.ts.map +1 -0
  687. package/dist/themes/theming.cjs +2 -0
  688. package/dist/themes/theming.cjs.map +1 -0
  689. package/dist/themes/theming.d.ts +1 -0
  690. package/dist/themes/theming.d.ts.map +1 -0
  691. package/dist/themes/theming.js +14 -0
  692. package/dist/themes/theming.js.map +1 -0
  693. package/dist/wb-icons.cjs +2 -1
  694. package/dist/wb-icons.cjs.map +1 -0
  695. package/dist/wb-icons.d.ts +1 -0
  696. package/dist/wb-icons.d.ts.map +1 -0
  697. package/dist/wb-icons.js +44 -28
  698. package/dist/wb-icons.js.map +1 -0
  699. package/package.json +6 -5
  700. package/src/3d.ts +18 -0
  701. package/src/Setup.tsx +33 -0
  702. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +57 -0
  703. package/src/components/3d-viewport/PresetEnvironment.tsx +81 -0
  704. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +198 -0
  705. package/src/components/3d-viewport/TrajectoryRenderer.tsx +41 -0
  706. package/src/components/3d-viewport/collider/ColliderCollection.tsx +35 -0
  707. package/src/components/3d-viewport/collider/ColliderElement.tsx +36 -0
  708. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +26 -0
  709. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +48 -0
  710. package/src/components/AppHeader.md +84 -0
  711. package/src/components/AppHeader.tsx +197 -0
  712. package/src/components/ConsoleFilter.tsx +24 -0
  713. package/src/components/CopyableText.tsx +89 -0
  714. package/src/components/CycleTimer/CycleTimer.ts +8 -0
  715. package/src/components/CycleTimer/DefaultVariant.tsx +326 -0
  716. package/src/components/CycleTimer/SmallVariant.tsx +229 -0
  717. package/src/components/CycleTimer/index.tsx +158 -0
  718. package/src/components/CycleTimer/types.ts +58 -0
  719. package/src/components/CycleTimer/useAnimations.ts +202 -0
  720. package/src/components/CycleTimer/useTimerLogic.ts +330 -0
  721. package/src/components/CycleTimer/utils.ts +122 -0
  722. package/src/components/CycleTimer.tsx +8 -0
  723. package/src/components/DataGrid.tsx +664 -0
  724. package/src/components/LoadingCover.tsx +91 -0
  725. package/src/components/LogPanel.tsx +71 -0
  726. package/src/components/LogStore.ts +46 -0
  727. package/src/components/LogViewer.tsx +368 -0
  728. package/src/components/ProgramControl.tsx +267 -0
  729. package/src/components/ProgramStateIndicator.tsx +195 -0
  730. package/src/components/RobotCard.tsx +495 -0
  731. package/src/components/RobotListItem.tsx +155 -0
  732. package/src/components/RobotSetupReadinessIndicator.test.tsx +60 -0
  733. package/src/components/RobotSetupReadinessIndicator.tsx +161 -0
  734. package/src/components/SelectableFab.tsx +52 -0
  735. package/src/components/TabBar.tsx +325 -0
  736. package/src/components/ThemeSelect.tsx +51 -0
  737. package/src/components/Timer/Timer.ts +4 -0
  738. package/src/components/Timer/TimerDefaultVariant.tsx +143 -0
  739. package/src/components/Timer/TimerSmallVariant.tsx +141 -0
  740. package/src/components/Timer/index.tsx +103 -0
  741. package/src/components/Timer/types.ts +38 -0
  742. package/src/components/Timer/useTimerAnimations.ts +94 -0
  743. package/src/components/Timer/useTimerLogic.ts +214 -0
  744. package/src/components/Timer/utils.ts +87 -0
  745. package/src/components/Timer.ts +4 -0
  746. package/src/components/TransparentOverlay.tsx +28 -0
  747. package/src/components/VelocitySlider.tsx +117 -0
  748. package/src/components/experimental/utils/AdornedSelect.tsx +38 -0
  749. package/src/components/jogging/JoggingBlocked.tsx +43 -0
  750. package/src/components/jogging/JoggingCartesianAxisControl.tsx +237 -0
  751. package/src/components/jogging/JoggingCartesianTab.tsx +349 -0
  752. package/src/components/jogging/JoggingFreedriveTab.tsx +8 -0
  753. package/src/components/jogging/JoggingJointLimitDetector.tsx +57 -0
  754. package/src/components/jogging/JoggingJointTab.tsx +126 -0
  755. package/src/components/jogging/JoggingJointValueControl.tsx +293 -0
  756. package/src/components/jogging/JoggingOptions.tsx +163 -0
  757. package/src/components/jogging/JoggingPanel.test.tsx +645 -0
  758. package/src/components/jogging/JoggingPanel.tsx +204 -0
  759. package/src/components/jogging/JoggingStore.ts +485 -0
  760. package/src/components/jogging/JoggingToggleButtonGroup.tsx +25 -0
  761. package/src/components/jogging/JoggingVelocitySlider.tsx +39 -0
  762. package/src/components/jogging/PoseCartesianValues.tsx +55 -0
  763. package/src/components/jogging/PoseJointValues.tsx +54 -0
  764. package/src/components/jogging/__fixtures__/motionStreamMockData.ts +136 -0
  765. package/src/components/modal/NoMotionGroupModal.tsx +91 -0
  766. package/src/components/robots/AxisConfig.ts +3 -0
  767. package/src/components/robots/DHLinearAxis.tsx +147 -0
  768. package/src/components/robots/DHRobot.tsx +152 -0
  769. package/src/components/robots/GenericRobot.tsx +137 -0
  770. package/src/components/robots/LinearAxis.tsx +74 -0
  771. package/src/components/robots/LinearAxisAnimator.tsx +118 -0
  772. package/src/components/robots/MotionGroupVisualizer.tsx +73 -0
  773. package/src/components/robots/Robot.tsx +57 -0
  774. package/src/components/robots/RobotAnimator.test.tsx +98 -0
  775. package/src/components/robots/RobotAnimator.tsx +116 -0
  776. package/src/components/robots/SupportedLinearAxis.tsx +110 -0
  777. package/src/components/robots/SupportedRobot.tsx +111 -0
  778. package/src/components/robots/ghostStyle.ts +71 -0
  779. package/src/components/robots/manufacturerHomePositions.ts +76 -0
  780. package/src/components/robots/robotModelLogic.ts +158 -0
  781. package/src/components/safetyBar/ControllerTypeIndicator.tsx +79 -0
  782. package/src/components/safetyBar/IndicatorWithExplanation.tsx +137 -0
  783. package/src/components/safetyBar/OperationModeIndicator.tsx +98 -0
  784. package/src/components/safetyBar/SafetyBar.tsx +72 -0
  785. package/src/components/safetyBar/SafetyStateIndicator.tsx +163 -0
  786. package/src/components/safetyBar/icons/controller-type-physical.svg +1 -0
  787. package/src/components/safetyBar/icons/controller-type-virtual.svg +1 -0
  788. package/src/components/safetyBar/icons/index.ts +10 -0
  789. package/src/components/safetyBar/icons/operation-mode-automatic.svg +1 -0
  790. package/src/components/safetyBar/icons/operation-mode-error.svg +1 -0
  791. package/src/components/safetyBar/icons/operation-mode-manual.svg +1 -0
  792. package/src/components/safetyBar/icons/safety-state-error.svg +1 -0
  793. package/src/components/safetyBar/icons/safety-state-estop.svg +1 -0
  794. package/src/components/safetyBar/icons/safety-state-manual-action-required.svg +1 -0
  795. package/src/components/safetyBar/icons/safety-state-normal.svg +1 -0
  796. package/src/components/safetyBar/icons/safety-state-stop.svg +1 -0
  797. package/src/components/utils/converters.ts +90 -0
  798. package/src/components/utils/errorHandling.test.ts +41 -0
  799. package/src/components/utils/errorHandling.ts +38 -0
  800. package/src/components/utils/hooks.tsx +55 -0
  801. package/src/components/utils/interpolation.test.ts +1138 -0
  802. package/src/components/utils/interpolation.ts +380 -0
  803. package/src/core.ts +33 -0
  804. package/src/declarations.d.ts +10 -0
  805. package/src/env.d.ts +3 -0
  806. package/src/externalizeComponent.tsx +28 -0
  807. package/src/i18n/config.ts +26 -0
  808. package/src/i18n/locales/de/translations.json +89 -0
  809. package/src/i18n/locales/en/translations.json +90 -0
  810. package/src/icons/DropdownArrowIcon.tsx +12 -0
  811. package/src/icons/axis-x.svg +1 -0
  812. package/src/icons/axis-y.svg +1 -0
  813. package/src/icons/axis-z.svg +1 -0
  814. package/src/icons/home.svg +1 -0
  815. package/src/icons/index.ts +12 -0
  816. package/src/icons/jog-minus.svg +5 -0
  817. package/src/icons/jog-plus.svg +9 -0
  818. package/src/icons/jogging.svg +1 -0
  819. package/src/icons/orientation-coord-system.svg +1 -0
  820. package/src/icons/orientation-tool.svg +1 -0
  821. package/src/icons/robot.svg +1 -0
  822. package/src/icons/rotation.svg +3 -0
  823. package/src/icons/wbLogo.svg +1 -0
  824. package/src/index.ts +4 -0
  825. package/src/lib/ConnectedMotionGroup.ts +441 -0
  826. package/src/lib/JoggerConnection.test.ts +122 -0
  827. package/src/lib/JoggerConnection.ts +694 -0
  828. package/src/lib/MotionStreamConnection.test.ts +23 -0
  829. package/src/lib/MotionStreamConnection.ts +186 -0
  830. package/src/lib/motionStateUpdate.test.ts +28 -0
  831. package/src/lib/motionStateUpdate.ts +117 -0
  832. package/src/test/consumer.test.ts +257 -0
  833. package/src/test/setup.ts +111 -0
  834. package/src/themes/createDarkTheme.ts +343 -0
  835. package/src/themes/createLightTheme.ts +8 -0
  836. package/src/themes/themeTypes.ts +96 -0
  837. package/src/themes/theming.ts +29 -0
  838. package/src/wb-icons.ts +3 -0
  839. package/dist/chunks/JoggingPanel-CQH_oXTB.js +0 -586
  840. package/dist/chunks/JoggingPanel-DZN2Y39k.cjs +0 -2
  841. package/dist/chunks/controller-type-virtual-BuJWQOvV.cjs +0 -1
  842. package/dist/chunks/externalizeComponent-DOwkaDcw.cjs +0 -2
  843. package/dist/chunks/externalizeComponent-eiCc5DIh.js +0 -209
  844. package/dist/chunks/jog-plus-CAUurv4S.js +0 -15
  845. package/dist/chunks/jog-plus-Dy1r7-r5.cjs +0 -1
  846. package/dist/chunks/operation-mode-manual-Di4Z1KM1.js +0 -20
  847. package/dist/chunks/operation-mode-manual-eHwVILeI.cjs +0 -1
  848. package/dist/chunks/robot-CrNbCELh.cjs +0 -1
  849. package/dist/chunks/rotation-CIOAnn9q.cjs +0 -1
  850. package/dist/chunks/rotation-Dm5YL3NM.js +0 -25
  851. package/dist/chunks/safety-state-stop-Bg0VUsM4.js +0 -30
  852. package/dist/chunks/safety-state-stop-CNxVYiap.cjs +0 -1
  853. package/dist/chunks/theming-Chx_tewl.cjs +0 -3
  854. package/dist/chunks/theming-Cw6qwBM7.js +0 -600
  855. package/dist/chunks/wbLogo-CObCmqTw.js +0 -30
  856. package/dist/chunks/wbLogo-G_IfZ03l.cjs +0 -1
  857. package/dist/components/3d-viewport/CoordinateSystemTransform.cjs +0 -1
  858. package/dist/components/3d-viewport/CoordinateSystemTransform.js +0 -37
  859. package/dist/components/CycleTimer/CycleTimer.cjs +0 -1
  860. package/dist/components/CycleTimer/CycleTimer.js +0 -5
  861. package/dist/components/CycleTimer/types.cjs +0 -1
  862. package/dist/components/CycleTimer/types.js +0 -1
  863. package/dist/components/ThemeSelect.cjs +0 -1
  864. package/dist/components/ThemeSelect.js +0 -38
  865. package/dist/components/Timer/Timer.cjs +0 -1
  866. package/dist/components/Timer/Timer.js +0 -5
  867. package/dist/components/Timer/types.cjs +0 -1
  868. package/dist/components/Timer/types.js +0 -1
  869. package/dist/components/TransparentOverlay.cjs +0 -1
  870. package/dist/components/TransparentOverlay.js +0 -26
  871. package/dist/components/jogging/JoggingFreedriveTab.cjs +0 -1
  872. package/dist/components/jogging/JoggingFreedriveTab.js +0 -6
  873. package/dist/components/safetyBar/icons/index.cjs +0 -1
  874. package/dist/components/safetyBar/icons/index.js +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Robot.js","sources":["../../../src/components/robots/Robot.tsx"],"sourcesContent":["import type { ThreeElements } from \"@react-three/fiber\"\n\nimport type { Group } from \"three\"\nimport type { ConnectedMotionGroup } from \"../../lib/ConnectedMotionGroup\"\nimport { defaultGetModel } from \"./robotModelLogic\"\nimport { SupportedRobot } from \"./SupportedRobot\"\n\nexport type RobotProps = {\n connectedMotionGroup: ConnectedMotionGroup\n getModel?: (modelFromController: string) => Promise<string>\n flangeRef?: React.Ref<Group>\n transparentColor?: string\n postModelRender?: () => void\n} & ThreeElements[\"group\"]\n\n/**\n * The Robot component is a wrapper around the SupportedRobot component\n * for usage with @wandelbots/nova-js ConnectedMotionGroup object.\n *\n * @param {RobotProps} props - The properties for the Robot component.\n * @param {ConnectedMotionGroup} props.connectedMotionGroup - The connected motion group containing motion state and parameters.\n * @param {Function} [props.getModel=defaultGetModel] - Optional function to get the model URL. Defaults to defaultGetModel.\n * @param {Object} props - Additional properties passed to the SupportedRobot component.\n *\n * @returns {JSX.Element} The rendered SupportedRobot component.\n */\nexport function Robot({\n connectedMotionGroup,\n getModel = defaultGetModel,\n flangeRef,\n transparentColor,\n postModelRender,\n ...props\n}: RobotProps) {\n if (!connectedMotionGroup.dhParameters) {\n return null\n }\n\n return (\n <SupportedRobot\n rapidlyChangingMotionState={\n connectedMotionGroup.rapidlyChangingMotionState\n }\n modelFromController={connectedMotionGroup.modelFromController || \"\"}\n dhParameters={connectedMotionGroup.dhParameters}\n getModel={getModel}\n flangeRef={flangeRef}\n transparentColor={transparentColor}\n postModelRender={postModelRender}\n {...props}\n />\n )\n}\n\nexport { defaultGetModel }\n\nexport default Robot\n"],"names":["Robot","connectedMotionGroup","getModel","defaultGetModel","flangeRef","transparentColor","postModelRender","props","jsx","SupportedRobot"],"mappings":";;;AA0BO,SAASA,EAAM;AAAA,EACpB,sBAAAC;AAAA,EACA,UAAAC,IAAWC;AAAA,EACX,WAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,GAAGC;AACL,GAAe;AACb,SAAKN,EAAqB,eAKxB,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACER,EAAqB;AAAA,MAEvB,qBAAqBA,EAAqB,uBAAuB;AAAA,MACjE,cAAcA,EAAqB;AAAA,MACnC,UAAAC;AAAA,MACA,WAAAE;AAAA,MACA,kBAAAC;AAAA,MACA,iBAAAC;AAAA,MACC,GAAGC;AAAA,IAAA;AAAA,EAAA,IAdC;AAiBX;"}
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const v=require("react/jsx-runtime"),d=require("@react-three/fiber"),r=require("react"),V=require("../utils/hooks.cjs"),J=require("../utils/interpolation.cjs"),x=require("./robotModelLogic.cjs");function A({rapidlyChangingMotionState:n,dhParameters:_,onRotationChanged:c,children:m}){const p=r.useRef([]),u=r.useRef([]),o=r.useRef(null),{invalidate:l}=d.useThree();r.useEffect(()=>{const t=n.joint_position.filter(e=>e!==void 0);return o.current=new J.ValueInterpolator(t,{tension:120,friction:20,threshold:.001}),()=>{var e;(e=o.current)==null||e.destroy()}},[]),d.useFrame((t,e)=>{if(o.current){const s=o.current.update(e);f(),s||l()}});function b(t){t&&(u.current=x.collectJoints(t),f(),l())}function f(){var e;const t=((e=o.current)==null?void 0:e.getCurrentValues())||[];if(c)c(u.current,t);else for(const[s,j]of u.current.entries()){const a=_[s],R=a.theta||0,q=a.reverse_rotation_direction?-1:1;j.rotation.y=q*(t[s]||0)+R}}const i=r.useCallback(()=>{const t=n.joint_position.filter(e=>e!==void 0);requestAnimationFrame(()=>{var e;p.current=t,(e=o.current)==null||e.setTarget(t)})},[n]);return r.useEffect(()=>{i()},[n,i]),V.useAutorun(()=>{i()}),v.jsx("group",{ref:b,children:m})}exports.default=A;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const V=require("react/jsx-runtime"),d=require("@react-three/fiber"),o=require("react"),_=require("../utils/hooks.cjs"),J=require("../utils/interpolation.cjs"),x=require("./robotModelLogic.cjs");function A({rapidlyChangingMotionState:n,dhParameters:j,onRotationChanged:c,children:b}){const m=o.useRef([]),u=o.useRef([]),r=o.useRef(null),{invalidate:f}=d.useThree();o.useEffect(()=>{const t=n.joint_position.filter(e=>e!==void 0);return r.current=new J.ValueInterpolator(t,{tension:120,friction:20,threshold:.001}),()=>{var e;(e=r.current)==null||e.destroy()}},[]),d.useFrame((t,e)=>{if(r.current){const s=r.current.update(e);l(),s||f()}});function p(t){t&&(u.current=x.collectJoints(t),l(),f())}function l(){var e;const t=((e=r.current)==null?void 0:e.getCurrentValues())||[];if(c)c(u.current,t);else for(const[s,R]of u.current.entries()){const a=j[s],q=a.theta||0,v=a.reverse_rotation_direction?-1:1;R.rotation.y=v*(t[s]||0)+q}}const i=o.useCallback(()=>{const t=n.joint_position.filter(e=>e!==void 0);requestAnimationFrame(()=>{var e;m.current=t,(e=r.current)==null||e.setTarget(t)})},[n]);return o.useEffect(()=>{i()},[n,i]),_.useAutorun(()=>{i()}),V.jsx("group",{ref:p,children:b})}exports.default=A;
2
+ //# sourceMappingURL=RobotAnimator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotAnimator.cjs","sources":["../../../src/components/robots/RobotAnimator.tsx"],"sourcesContent":["import { useFrame, useThree } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport type React from \"react\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport type { Group, Object3D } from \"three\"\nimport { useAutorun } from \"../utils/hooks\"\nimport { ValueInterpolator } from \"../utils/interpolation\"\nimport { collectJoints } from \"./robotModelLogic\"\n\ntype RobotAnimatorProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: DHParameter[]\n onRotationChanged?: (joints: Object3D[], jointValues: number[]) => void\n children: React.ReactNode\n}\n\nexport default function RobotAnimator({\n rapidlyChangingMotionState,\n dhParameters,\n onRotationChanged,\n children,\n}: RobotAnimatorProps) {\n const jointValues = useRef<number[]>([])\n const jointObjects = useRef<Object3D[]>([])\n const interpolatorRef = useRef<ValueInterpolator | null>(null)\n const { invalidate } = useThree()\n\n // Initialize interpolator\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n const initialJointValues = rapidlyChangingMotionState.joint_position.filter(\n (item) => item !== undefined,\n )\n\n interpolatorRef.current = new ValueInterpolator(initialJointValues, {\n tension: 120, // Controls spring stiffness - higher values create faster, more responsive motion\n friction: 20, // Controls damping - higher values reduce oscillation and create smoother settling\n threshold: 0.001,\n })\n\n return () => {\n interpolatorRef.current?.destroy()\n }\n }, [])\n\n // Animation loop that runs at the display's refresh rate\n useFrame((state, delta) => {\n if (interpolatorRef.current) {\n const isComplete = interpolatorRef.current.update(delta)\n setRotation()\n\n // Trigger a re-render only if the animation is still running\n if (!isComplete) {\n invalidate()\n }\n }\n })\n\n function setGroupRef(group: Group | null) {\n if (!group) return\n\n jointObjects.current = collectJoints(group)\n\n // Set initial position\n setRotation()\n invalidate()\n }\n\n function setRotation() {\n const updatedJointValues = interpolatorRef.current?.getCurrentValues() || []\n\n if (onRotationChanged) {\n onRotationChanged(jointObjects.current, updatedJointValues)\n } else {\n for (const [index, object] of jointObjects.current.entries()) {\n const dhParam = dhParameters[index]\n const rotationOffset = dhParam.theta || 0\n const rotationSign = dhParam.reverse_rotation_direction ? -1 : 1\n\n object.rotation.y =\n rotationSign * (updatedJointValues[index] || 0) + rotationOffset\n }\n }\n }\n\n const updateJoints = useCallback(() => {\n const newJointValues = rapidlyChangingMotionState.joint_position.filter(\n (item) => item !== undefined,\n )\n\n requestAnimationFrame(() => {\n jointValues.current = newJointValues\n interpolatorRef.current?.setTarget(newJointValues)\n })\n }, [rapidlyChangingMotionState])\n\n /**\n * Fire an update joints call on every motion state change.\n * requestAnimationFrame used to avoid blocking main thread\n */\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n updateJoints()\n }, [rapidlyChangingMotionState, updateJoints])\n\n /**\n * As some consumer applications (eg. storybook) deliver\n * mobx observable for rapidlyChangingMotionState, we need to\n * register the watcher to get the newest value updates\n */\n useAutorun(() => {\n updateJoints()\n })\n\n return <group ref={setGroupRef}>{children}</group>\n}\n"],"names":["RobotAnimator","rapidlyChangingMotionState","dhParameters","onRotationChanged","children","jointValues","useRef","jointObjects","interpolatorRef","invalidate","useThree","useEffect","initialJointValues","item","ValueInterpolator","_a","useFrame","state","delta","isComplete","setRotation","setGroupRef","group","collectJoints","updatedJointValues","index","object","dhParam","rotationOffset","rotationSign","updateJoints","useCallback","newJointValues","useAutorun","jsx"],"mappings":"+SAgBA,SAAwBA,EAAc,CACpC,2BAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,SAAAC,CACF,EAAuB,CACrB,MAAMC,EAAcC,EAAAA,OAAiB,EAAE,EACjCC,EAAeD,EAAAA,OAAmB,EAAE,EACpCE,EAAkBF,EAAAA,OAAiC,IAAI,EACvD,CAAE,WAAAG,CAAA,EAAeC,WAAA,EAIvBC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAqBX,EAA2B,eAAe,OAClEY,GAASA,IAAS,MAAA,EAGrB,OAAAL,EAAgB,QAAU,IAAIM,EAAAA,kBAAkBF,EAAoB,CAClE,QAAS,IACT,SAAU,GACV,UAAW,IAAA,CACZ,EAEM,IAAM,QACXG,EAAAP,EAAgB,UAAhB,MAAAO,EAAyB,SAC3B,CACF,EAAG,CAAA,CAAE,EAGLC,WAAS,CAACC,EAAOC,IAAU,CACzB,GAAIV,EAAgB,QAAS,CAC3B,MAAMW,EAAaX,EAAgB,QAAQ,OAAOU,CAAK,EACvDE,EAAA,EAGKD,GACHV,EAAA,CAEJ,CACF,CAAC,EAED,SAASY,EAAYC,EAAqB,CACnCA,IAELf,EAAa,QAAUgB,EAAAA,cAAcD,CAAK,EAG1CF,EAAA,EACAX,EAAA,EACF,CAEA,SAASW,GAAc,OACrB,MAAMI,IAAqBT,EAAAP,EAAgB,UAAhB,YAAAO,EAAyB,qBAAsB,CAAA,EAE1E,GAAIZ,EACFA,EAAkBI,EAAa,QAASiB,CAAkB,MAE1D,UAAW,CAACC,EAAOC,CAAM,IAAKnB,EAAa,QAAQ,UAAW,CAC5D,MAAMoB,EAAUzB,EAAauB,CAAK,EAC5BG,EAAiBD,EAAQ,OAAS,EAClCE,EAAeF,EAAQ,2BAA6B,GAAK,EAE/DD,EAAO,SAAS,EACdG,GAAgBL,EAAmBC,CAAK,GAAK,GAAKG,CACtD,CAEJ,CAEA,MAAME,EAAeC,EAAAA,YAAY,IAAM,CACrC,MAAMC,EAAiB/B,EAA2B,eAAe,OAC9DY,GAASA,IAAS,MAAA,EAGrB,sBAAsB,IAAM,OAC1BR,EAAY,QAAU2B,GACtBjB,EAAAP,EAAgB,UAAhB,MAAAO,EAAyB,UAAUiB,EACrC,CAAC,CACH,EAAG,CAAC/B,CAA0B,CAAC,EAO/BU,OAAAA,EAAAA,UAAU,IAAM,CACdmB,EAAA,CACF,EAAG,CAAC7B,EAA4B6B,CAAY,CAAC,EAO7CG,EAAAA,WAAW,IAAM,CACfH,EAAA,CACF,CAAC,EAEMI,EAAAA,IAAC,QAAA,CAAM,IAAKb,EAAc,SAAAjB,CAAA,CAAS,CAC5C"}
@@ -9,3 +9,4 @@ type RobotAnimatorProps = {
9
9
  };
10
10
  export default function RobotAnimator({ rapidlyChangingMotionState, dhParameters, onRotationChanged, children, }: RobotAnimatorProps): import("react/jsx-runtime").JSX.Element;
11
11
  export {};
12
+ //# sourceMappingURL=RobotAnimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotAnimator.d.ts","sourceRoot":"","sources":["../../../src/components/robots/RobotAnimator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,OAAO,CAAA;AAK5C,KAAK,kBAAkB,GAAG;IACxB,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACvE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,2CA8FpB"}
@@ -63,3 +63,4 @@ function I({
63
63
  export {
64
64
  I as default
65
65
  };
66
+ //# sourceMappingURL=RobotAnimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotAnimator.js","sources":["../../../src/components/robots/RobotAnimator.tsx"],"sourcesContent":["import { useFrame, useThree } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport type React from \"react\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport type { Group, Object3D } from \"three\"\nimport { useAutorun } from \"../utils/hooks\"\nimport { ValueInterpolator } from \"../utils/interpolation\"\nimport { collectJoints } from \"./robotModelLogic\"\n\ntype RobotAnimatorProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: DHParameter[]\n onRotationChanged?: (joints: Object3D[], jointValues: number[]) => void\n children: React.ReactNode\n}\n\nexport default function RobotAnimator({\n rapidlyChangingMotionState,\n dhParameters,\n onRotationChanged,\n children,\n}: RobotAnimatorProps) {\n const jointValues = useRef<number[]>([])\n const jointObjects = useRef<Object3D[]>([])\n const interpolatorRef = useRef<ValueInterpolator | null>(null)\n const { invalidate } = useThree()\n\n // Initialize interpolator\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n const initialJointValues = rapidlyChangingMotionState.joint_position.filter(\n (item) => item !== undefined,\n )\n\n interpolatorRef.current = new ValueInterpolator(initialJointValues, {\n tension: 120, // Controls spring stiffness - higher values create faster, more responsive motion\n friction: 20, // Controls damping - higher values reduce oscillation and create smoother settling\n threshold: 0.001,\n })\n\n return () => {\n interpolatorRef.current?.destroy()\n }\n }, [])\n\n // Animation loop that runs at the display's refresh rate\n useFrame((state, delta) => {\n if (interpolatorRef.current) {\n const isComplete = interpolatorRef.current.update(delta)\n setRotation()\n\n // Trigger a re-render only if the animation is still running\n if (!isComplete) {\n invalidate()\n }\n }\n })\n\n function setGroupRef(group: Group | null) {\n if (!group) return\n\n jointObjects.current = collectJoints(group)\n\n // Set initial position\n setRotation()\n invalidate()\n }\n\n function setRotation() {\n const updatedJointValues = interpolatorRef.current?.getCurrentValues() || []\n\n if (onRotationChanged) {\n onRotationChanged(jointObjects.current, updatedJointValues)\n } else {\n for (const [index, object] of jointObjects.current.entries()) {\n const dhParam = dhParameters[index]\n const rotationOffset = dhParam.theta || 0\n const rotationSign = dhParam.reverse_rotation_direction ? -1 : 1\n\n object.rotation.y =\n rotationSign * (updatedJointValues[index] || 0) + rotationOffset\n }\n }\n }\n\n const updateJoints = useCallback(() => {\n const newJointValues = rapidlyChangingMotionState.joint_position.filter(\n (item) => item !== undefined,\n )\n\n requestAnimationFrame(() => {\n jointValues.current = newJointValues\n interpolatorRef.current?.setTarget(newJointValues)\n })\n }, [rapidlyChangingMotionState])\n\n /**\n * Fire an update joints call on every motion state change.\n * requestAnimationFrame used to avoid blocking main thread\n */\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n updateJoints()\n }, [rapidlyChangingMotionState, updateJoints])\n\n /**\n * As some consumer applications (eg. storybook) deliver\n * mobx observable for rapidlyChangingMotionState, we need to\n * register the watcher to get the newest value updates\n */\n useAutorun(() => {\n updateJoints()\n })\n\n return <group ref={setGroupRef}>{children}</group>\n}\n"],"names":["RobotAnimator","rapidlyChangingMotionState","dhParameters","onRotationChanged","children","jointValues","useRef","jointObjects","interpolatorRef","invalidate","useThree","useEffect","initialJointValues","item","ValueInterpolator","_a","useFrame","state","delta","isComplete","setRotation","setGroupRef","group","collectJoints","updatedJointValues","index","object","dhParam","rotationOffset","rotationSign","updateJoints","useCallback","newJointValues","useAutorun","jsx"],"mappings":";;;;;;AAgBA,SAAwBA,EAAc;AAAA,EACpC,4BAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAAC;AACF,GAAuB;AACrB,QAAMC,IAAcC,EAAiB,EAAE,GACjCC,IAAeD,EAAmB,EAAE,GACpCE,IAAkBF,EAAiC,IAAI,GACvD,EAAE,YAAAG,EAAA,IAAeC,EAAA;AAIvB,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAqBX,EAA2B,eAAe;AAAA,MACnE,CAACY,MAASA,MAAS;AAAA,IAAA;AAGrB,WAAAL,EAAgB,UAAU,IAAIM,EAAkBF,GAAoB;AAAA,MAClE,SAAS;AAAA;AAAA,MACT,UAAU;AAAA;AAAA,MACV,WAAW;AAAA,IAAA,CACZ,GAEM,MAAM;;AACX,OAAAG,IAAAP,EAAgB,YAAhB,QAAAO,EAAyB;AAAA,IAC3B;AAAA,EACF,GAAG,CAAA,CAAE,GAGLC,EAAS,CAACC,GAAOC,MAAU;AACzB,QAAIV,EAAgB,SAAS;AAC3B,YAAMW,IAAaX,EAAgB,QAAQ,OAAOU,CAAK;AACvD,MAAAE,EAAA,GAGKD,KACHV,EAAA;AAAA,IAEJ;AAAA,EACF,CAAC;AAED,WAASY,EAAYC,GAAqB;AACxC,IAAKA,MAELf,EAAa,UAAUgB,EAAcD,CAAK,GAG1CF,EAAA,GACAX,EAAA;AAAA,EACF;AAEA,WAASW,IAAc;;AACrB,UAAMI,MAAqBT,IAAAP,EAAgB,YAAhB,gBAAAO,EAAyB,uBAAsB,CAAA;AAE1E,QAAIZ;AACF,MAAAA,EAAkBI,EAAa,SAASiB,CAAkB;AAAA;AAE1D,iBAAW,CAACC,GAAOC,CAAM,KAAKnB,EAAa,QAAQ,WAAW;AAC5D,cAAMoB,IAAUzB,EAAauB,CAAK,GAC5BG,IAAiBD,EAAQ,SAAS,GAClCE,IAAeF,EAAQ,6BAA6B,KAAK;AAE/D,QAAAD,EAAO,SAAS,IACdG,KAAgBL,EAAmBC,CAAK,KAAK,KAAKG;AAAA,MACtD;AAAA,EAEJ;AAEA,QAAME,IAAeC,EAAY,MAAM;AACrC,UAAMC,IAAiB/B,EAA2B,eAAe;AAAA,MAC/D,CAACY,MAASA,MAAS;AAAA,IAAA;AAGrB,0BAAsB,MAAM;;AAC1B,MAAAR,EAAY,UAAU2B,IACtBjB,IAAAP,EAAgB,YAAhB,QAAAO,EAAyB,UAAUiB;AAAA,IACrC,CAAC;AAAA,EACH,GAAG,CAAC/B,CAA0B,CAAC;AAO/B,SAAAU,EAAU,MAAM;AACd,IAAAmB,EAAA;AAAA,EACF,GAAG,CAAC7B,GAA4B6B,CAAY,CAAC,GAO7CG,EAAW,MAAM;AACf,IAAAH,EAAA;AAAA,EACF,CAAC,GAEM,gBAAAI,EAAC,SAAA,EAAM,KAAKb,GAAc,UAAAjB,EAAA,CAAS;AAC5C;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RobotAnimator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotAnimator.test.d.ts","sourceRoot":"","sources":["../../../src/components/robots/RobotAnimator.test.tsx"],"names":[],"mappings":""}
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("react"),y=require("react-error-boundary"),L=require("../../chunks/externalizeComponent-DOwkaDcw.cjs"),R=require("../ConsoleFilter.cjs"),S=require("./DHLinearAxis.cjs"),A=require("./GenericRobot.cjs"),G=require("./LinearAxisAnimator.cjs"),a=require("./ghostStyle.cjs"),g=require("./robotModelLogic.cjs"),b=L.externalizeComponent(({rapidlyChangingMotionState:s,modelFromController:c,dhParameters:i,getModel:d=g.defaultGetModel,flangeRef:f,postModelRender:p,transparentColor:n,instanceUrl:x,...l})=>{const[t,m]=r.useState(null),_=r.useCallback(o=>{m(o)},[]);r.useEffect(()=>{t&&(n?a.applyGhostStyle(t,n):a.removeGhostStyle(t))},[t,n]);const u=e.jsx(S.DHLinearAxis,{rapidlyChangingMotionState:s,dhParameters:i,...l});return e.jsxs(y.ErrorBoundary,{fallback:u,onError:o=>{console.warn(o)},children:[e.jsx(r.Suspense,{fallback:u,children:e.jsx("group",{ref:_,children:e.jsx(G.default,{rapidlyChangingMotionState:s,dhParameters:i,children:e.jsx(A.GenericRobot,{modelURL:(()=>{const o=d(c,x);if(!o){const j=new Blob([],{type:"model/gltf-binary"}),q=new File([j],`${c}.glb`,{type:"model/gltf-binary"});return Promise.resolve(URL.createObjectURL(q))}return o})(),postModelRender:p,flangeRef:f,...l})})})}),e.jsx(R.default,{})]})});exports.SupportedLinearAxis=b;exports.default=b;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),t=require("react"),R=require("react-error-boundary"),m=require("../../externalizeComponent.cjs"),S=require("../ConsoleFilter.cjs"),A=require("./DHLinearAxis.cjs"),G=require("./GenericRobot.cjs"),g=require("./LinearAxisAnimator.cjs"),a=require("./ghostStyle.cjs"),h=require("./robotModelLogic.cjs"),d=m.externalizeComponent(({rapidlyChangingMotionState:n,modelFromController:i,dhParameters:l,getModel:b=h.defaultGetModel,flangeRef:f,postModelRender:x,transparentColor:s,instanceUrl:j,...u})=>{const[o,p]=t.useState(null),q=t.useCallback(r=>{p(r)},[]);t.useEffect(()=>{o&&(s?a.applyGhostStyle(o,s):a.removeGhostStyle(o))},[o,s]);const c=e.jsx(A.DHLinearAxis,{rapidlyChangingMotionState:n,dhParameters:l,...u});return e.jsxs(R.ErrorBoundary,{fallback:c,onError:r=>{console.warn(r)},children:[e.jsx(t.Suspense,{fallback:c,children:e.jsx("group",{ref:q,children:e.jsx(g.default,{rapidlyChangingMotionState:n,dhParameters:l,children:e.jsx(G.GenericRobot,{modelURL:(()=>{const r=b(i,j);if(!r){const y=new Blob([],{type:"model/gltf-binary"}),L=new File([y],`${i}.glb`,{type:"model/gltf-binary"});return Promise.resolve(URL.createObjectURL(L))}return r})(),postModelRender:x,flangeRef:f,...u})})})}),e.jsx(S.default,{})]})});exports.SupportedLinearAxis=d;exports.default=d;
2
+ //# sourceMappingURL=SupportedLinearAxis.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedLinearAxis.cjs","sources":["../../../src/components/robots/SupportedLinearAxis.tsx"],"sourcesContent":["import type { ThreeElements } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport type * as THREE from \"three\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport ConsoleFilter from \"../ConsoleFilter\"\nimport { DHLinearAxis } from \"./DHLinearAxis\"\nimport { GenericRobot } from \"./GenericRobot\"\nimport LinearAxisAnimator from \"./LinearAxisAnimator\"\nimport { applyGhostStyle, removeGhostStyle } from \"./ghostStyle\"\nimport { defaultGetModel } from \"./robotModelLogic\"\n\nexport type DHLinearAxisProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: Array<DHParameter>\n} & ThreeElements[\"group\"]\n\nexport type SupportedLinearAxisProps = {\n rapidlyChangingMotionState: MotionGroupState\n modelFromController: string\n dhParameters: DHParameter[]\n flangeRef?: React.Ref<THREE.Group>\n instanceUrl?: string\n getModel?: (\n modelFromController: string,\n instanceUrl?: string,\n ) => Promise<string> | undefined\n postModelRender?: () => void\n transparentColor?: string\n} & ThreeElements[\"group\"]\n\nexport const SupportedLinearAxis = externalizeComponent(\n ({\n rapidlyChangingMotionState,\n modelFromController,\n dhParameters,\n getModel = defaultGetModel,\n flangeRef,\n postModelRender,\n transparentColor,\n instanceUrl,\n ...props\n }: SupportedLinearAxisProps) => {\n const [robotGroup, setRobotGroup] = useState<THREE.Group | null>(null)\n\n const setRobotRef = useCallback((instance: THREE.Group | null) => {\n setRobotGroup(instance)\n }, [])\n\n useEffect(() => {\n if (!robotGroup) return\n\n if (transparentColor) {\n applyGhostStyle(robotGroup, transparentColor)\n } else {\n removeGhostStyle(robotGroup)\n }\n }, [robotGroup, transparentColor])\n\n const dhLinearAxis = (\n <DHLinearAxis\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n {...props}\n />\n )\n\n return (\n <ErrorBoundary\n fallback={dhLinearAxis}\n onError={(err) => {\n // Missing model; show the fallback for now\n console.warn(err)\n }}\n >\n <Suspense fallback={dhLinearAxis}>\n <group ref={setRobotRef}>\n <LinearAxisAnimator\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n >\n <GenericRobot\n modelURL={(() => {\n const result = getModel(modelFromController, instanceUrl)\n if (!result) {\n const mockBlob = new Blob([], { type: \"model/gltf-binary\" })\n const mockFile = new File(\n [mockBlob],\n `${modelFromController}.glb`,\n { type: \"model/gltf-binary\" },\n )\n return Promise.resolve(URL.createObjectURL(mockFile))\n }\n return result\n })()}\n postModelRender={postModelRender}\n flangeRef={flangeRef}\n {...props}\n />\n </LinearAxisAnimator>\n </group>\n </Suspense>\n <ConsoleFilter />\n </ErrorBoundary>\n )\n },\n)\n\nexport default SupportedLinearAxis\n"],"names":["SupportedLinearAxis","externalizeComponent","rapidlyChangingMotionState","modelFromController","dhParameters","getModel","defaultGetModel","flangeRef","postModelRender","transparentColor","instanceUrl","props","robotGroup","setRobotGroup","useState","setRobotRef","useCallback","instance","useEffect","applyGhostStyle","removeGhostStyle","dhLinearAxis","jsx","DHLinearAxis","jsxs","ErrorBoundary","err","Suspense","LinearAxisAnimator","GenericRobot","result","mockBlob","mockFile","ConsoleFilter"],"mappings":"2bAgCaA,EAAsBC,EAAAA,qBACjC,CAAC,CACC,2BAAAC,EACA,oBAAAC,EACA,aAAAC,EACA,SAAAC,EAAWC,EAAAA,gBACX,UAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,GAAGC,CAAA,IAC2B,CAC9B,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAA6B,IAAI,EAE/DC,EAAcC,cAAaC,GAAiC,CAChEJ,EAAcI,CAAQ,CACxB,EAAG,CAAA,CAAE,EAELC,EAAAA,UAAU,IAAM,CACTN,IAEDH,EACFU,EAAAA,gBAAgBP,EAAYH,CAAgB,EAE5CW,EAAAA,iBAAiBR,CAAU,EAE/B,EAAG,CAACA,EAAYH,CAAgB,CAAC,EAEjC,MAAMY,EACJC,EAAAA,IAACC,EAAAA,aAAA,CACC,2BAAArB,EACA,aAAAE,EACC,GAAGO,CAAA,CAAA,EAIR,OACEa,EAAAA,KAACC,EAAAA,cAAA,CACC,SAAUJ,EACV,QAAUK,GAAQ,CAEhB,QAAQ,KAAKA,CAAG,CAClB,EAEA,SAAA,CAAAJ,EAAAA,IAACK,EAAAA,UAAS,SAAUN,EAClB,SAAAC,MAAC,QAAA,CAAM,IAAKP,EACV,SAAAO,EAAAA,IAACM,EAAAA,QAAA,CACC,2BAAA1B,EACA,aAAAE,EAEA,SAAAkB,EAAAA,IAACO,EAAAA,aAAA,CACC,UAAW,IAAM,CACf,MAAMC,EAASzB,EAASF,EAAqBO,CAAW,EACxD,GAAI,CAACoB,EAAQ,CACX,MAAMC,EAAW,IAAI,KAAK,CAAA,EAAI,CAAE,KAAM,oBAAqB,EACrDC,EAAW,IAAI,KACnB,CAACD,CAAQ,EACT,GAAG5B,CAAmB,OACtB,CAAE,KAAM,mBAAA,CAAoB,EAE9B,OAAO,QAAQ,QAAQ,IAAI,gBAAgB6B,CAAQ,CAAC,CACtD,CACA,OAAOF,CACT,GAAA,EACA,gBAAAtB,EACA,UAAAD,EACC,GAAGI,CAAA,CAAA,CACN,CAAA,EAEJ,CAAA,CACF,QACCsB,EAAAA,QAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAGrB,CACF"}
@@ -17,3 +17,4 @@ export type SupportedLinearAxisProps = {
17
17
  } & ThreeElements["group"];
18
18
  export declare const SupportedLinearAxis: ({ rapidlyChangingMotionState, modelFromController, dhParameters, getModel, flangeRef, postModelRender, transparentColor, instanceUrl, ...props }: SupportedLinearAxisProps) => import("react/jsx-runtime").JSX.Element;
19
19
  export default SupportedLinearAxis;
20
+ //# sourceMappingURL=SupportedLinearAxis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedLinearAxis.d.ts","sourceRoot":"","sources":["../../../src/components/robots/SupportedLinearAxis.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAG3E,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AASnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;CACjC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1B,MAAM,MAAM,wBAAwB,GAAG;IACrC,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,CACT,mBAAmB,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAChC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1B,eAAO,MAAM,mBAAmB,qJAW3B,wBAAwB,4CAgE5B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as o, jsxs as y } from "react/jsx-runtime";
2
2
  import { useState as L, useCallback as R, useEffect as G, Suspense as h } from "react";
3
3
  import { ErrorBoundary as k } from "react-error-boundary";
4
- import { e as A } from "../../chunks/externalizeComponent-eiCc5DIh.js";
4
+ import { externalizeComponent as A } from "../../externalizeComponent.js";
5
5
  import S from "../ConsoleFilter.js";
6
6
  import { DHLinearAxis as j } from "./DHLinearAxis.js";
7
7
  import { GenericRobot as w } from "./GenericRobot.js";
@@ -18,7 +18,7 @@ const K = A(
18
18
  postModelRender: p,
19
19
  transparentColor: t,
20
20
  instanceUrl: u,
21
- ...s
21
+ ...m
22
22
  }) => {
23
23
  const [r, a] = L(null), b = R((e) => {
24
24
  a(e);
@@ -26,23 +26,23 @@ const K = A(
26
26
  G(() => {
27
27
  r && (t ? E(r, t) : U(r));
28
28
  }, [r, t]);
29
- const m = /* @__PURE__ */ o(
29
+ const s = /* @__PURE__ */ o(
30
30
  j,
31
31
  {
32
32
  rapidlyChangingMotionState: i,
33
33
  dhParameters: n,
34
- ...s
34
+ ...m
35
35
  }
36
36
  );
37
37
  return /* @__PURE__ */ y(
38
38
  k,
39
39
  {
40
- fallback: m,
40
+ fallback: s,
41
41
  onError: (e) => {
42
42
  console.warn(e);
43
43
  },
44
44
  children: [
45
- /* @__PURE__ */ o(h, { fallback: m, children: /* @__PURE__ */ o("group", { ref: b, children: /* @__PURE__ */ o(
45
+ /* @__PURE__ */ o(h, { fallback: s, children: /* @__PURE__ */ o("group", { ref: b, children: /* @__PURE__ */ o(
46
46
  B,
47
47
  {
48
48
  rapidlyChangingMotionState: i,
@@ -64,7 +64,7 @@ const K = A(
64
64
  })(),
65
65
  postModelRender: p,
66
66
  flangeRef: c,
67
- ...s
67
+ ...m
68
68
  }
69
69
  )
70
70
  }
@@ -79,3 +79,4 @@ export {
79
79
  K as SupportedLinearAxis,
80
80
  K as default
81
81
  };
82
+ //# sourceMappingURL=SupportedLinearAxis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedLinearAxis.js","sources":["../../../src/components/robots/SupportedLinearAxis.tsx"],"sourcesContent":["import type { ThreeElements } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport type * as THREE from \"three\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport ConsoleFilter from \"../ConsoleFilter\"\nimport { DHLinearAxis } from \"./DHLinearAxis\"\nimport { GenericRobot } from \"./GenericRobot\"\nimport LinearAxisAnimator from \"./LinearAxisAnimator\"\nimport { applyGhostStyle, removeGhostStyle } from \"./ghostStyle\"\nimport { defaultGetModel } from \"./robotModelLogic\"\n\nexport type DHLinearAxisProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: Array<DHParameter>\n} & ThreeElements[\"group\"]\n\nexport type SupportedLinearAxisProps = {\n rapidlyChangingMotionState: MotionGroupState\n modelFromController: string\n dhParameters: DHParameter[]\n flangeRef?: React.Ref<THREE.Group>\n instanceUrl?: string\n getModel?: (\n modelFromController: string,\n instanceUrl?: string,\n ) => Promise<string> | undefined\n postModelRender?: () => void\n transparentColor?: string\n} & ThreeElements[\"group\"]\n\nexport const SupportedLinearAxis = externalizeComponent(\n ({\n rapidlyChangingMotionState,\n modelFromController,\n dhParameters,\n getModel = defaultGetModel,\n flangeRef,\n postModelRender,\n transparentColor,\n instanceUrl,\n ...props\n }: SupportedLinearAxisProps) => {\n const [robotGroup, setRobotGroup] = useState<THREE.Group | null>(null)\n\n const setRobotRef = useCallback((instance: THREE.Group | null) => {\n setRobotGroup(instance)\n }, [])\n\n useEffect(() => {\n if (!robotGroup) return\n\n if (transparentColor) {\n applyGhostStyle(robotGroup, transparentColor)\n } else {\n removeGhostStyle(robotGroup)\n }\n }, [robotGroup, transparentColor])\n\n const dhLinearAxis = (\n <DHLinearAxis\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n {...props}\n />\n )\n\n return (\n <ErrorBoundary\n fallback={dhLinearAxis}\n onError={(err) => {\n // Missing model; show the fallback for now\n console.warn(err)\n }}\n >\n <Suspense fallback={dhLinearAxis}>\n <group ref={setRobotRef}>\n <LinearAxisAnimator\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n >\n <GenericRobot\n modelURL={(() => {\n const result = getModel(modelFromController, instanceUrl)\n if (!result) {\n const mockBlob = new Blob([], { type: \"model/gltf-binary\" })\n const mockFile = new File(\n [mockBlob],\n `${modelFromController}.glb`,\n { type: \"model/gltf-binary\" },\n )\n return Promise.resolve(URL.createObjectURL(mockFile))\n }\n return result\n })()}\n postModelRender={postModelRender}\n flangeRef={flangeRef}\n {...props}\n />\n </LinearAxisAnimator>\n </group>\n </Suspense>\n <ConsoleFilter />\n </ErrorBoundary>\n )\n },\n)\n\nexport default SupportedLinearAxis\n"],"names":["SupportedLinearAxis","externalizeComponent","rapidlyChangingMotionState","modelFromController","dhParameters","getModel","defaultGetModel","flangeRef","postModelRender","transparentColor","instanceUrl","props","robotGroup","setRobotGroup","useState","setRobotRef","useCallback","instance","useEffect","applyGhostStyle","removeGhostStyle","dhLinearAxis","jsx","DHLinearAxis","jsxs","ErrorBoundary","err","Suspense","LinearAxisAnimator","GenericRobot","result","mockBlob","mockFile","ConsoleFilter"],"mappings":";;;;;;;;;;AAgCO,MAAMA,IAAsBC;AAAA,EACjC,CAAC;AAAA,IACC,4BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC,IAAWC;AAAA,IACX,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,MAC2B;AAC9B,UAAM,CAACC,GAAYC,CAAa,IAAIC,EAA6B,IAAI,GAE/DC,IAAcC,EAAY,CAACC,MAAiC;AAChE,MAAAJ,EAAcI,CAAQ;AAAA,IACxB,GAAG,CAAA,CAAE;AAEL,IAAAC,EAAU,MAAM;AACd,MAAKN,MAEDH,IACFU,EAAgBP,GAAYH,CAAgB,IAE5CW,EAAiBR,CAAU;AAAA,IAE/B,GAAG,CAACA,GAAYH,CAAgB,CAAC;AAEjC,UAAMY,IACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,4BAAArB;AAAA,QACA,cAAAE;AAAA,QACC,GAAGO;AAAA,MAAA;AAAA,IAAA;AAIR,WACE,gBAAAa;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAUJ;AAAA,QACV,SAAS,CAACK,MAAQ;AAEhB,kBAAQ,KAAKA,CAAG;AAAA,QAClB;AAAA,QAEA,UAAA;AAAA,UAAA,gBAAAJ,EAACK,KAAS,UAAUN,GAClB,UAAA,gBAAAC,EAAC,SAAA,EAAM,KAAKP,GACV,UAAA,gBAAAO;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,4BAAA1B;AAAA,cACA,cAAAE;AAAA,cAEA,UAAA,gBAAAkB;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,WAAW,MAAM;AACf,0BAAMC,IAASzB,EAASF,GAAqBO,CAAW;AACxD,wBAAI,CAACoB,GAAQ;AACX,4BAAMC,IAAW,IAAI,KAAK,CAAA,GAAI,EAAE,MAAM,qBAAqB,GACrDC,IAAW,IAAI;AAAA,wBACnB,CAACD,CAAQ;AAAA,wBACT,GAAG5B,CAAmB;AAAA,wBACtB,EAAE,MAAM,oBAAA;AAAA,sBAAoB;AAE9B,6BAAO,QAAQ,QAAQ,IAAI,gBAAgB6B,CAAQ,CAAC;AAAA,oBACtD;AACA,2BAAOF;AAAA,kBACT,GAAA;AAAA,kBACA,iBAAAtB;AAAA,kBACA,WAAAD;AAAA,kBACC,GAAGI;AAAA,gBAAA;AAAA,cAAA;AAAA,YACN;AAAA,UAAA,GAEJ,EAAA,CACF;AAAA,4BACCsB,GAAA,CAAA,CAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGrB;AACF;"}
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("react"),x=require("./DHRobot.cjs"),y=require("react-error-boundary"),S=require("../../chunks/externalizeComponent-DOwkaDcw.cjs"),G=require("../ConsoleFilter.cjs"),g=require("./GenericRobot.cjs"),h=require("./RobotAnimator.cjs"),b=require("./ghostStyle.cjs"),k=require("./robotModelLogic.cjs"),d=S.externalizeComponent(({rapidlyChangingMotionState:s,modelFromController:c,dhParameters:l,getModel:a=k.defaultGetModel,flangeRef:f,postModelRender:p,transparentColor:n,instanceUrl:m,...u})=>{const[t,R]=r.useState(null),_=r.useCallback(o=>{R(o)},[]);r.useEffect(()=>{t&&(n?b.applyGhostStyle(t,n):b.removeGhostStyle(t))},[t,n]);const i=e.jsx(x.DHRobot,{rapidlyChangingMotionState:s,dhParameters:l,...u});return e.jsxs(y.ErrorBoundary,{fallback:i,onError:o=>{console.warn(o)},children:[e.jsx(r.Suspense,{fallback:i,children:e.jsx("group",{ref:_,children:e.jsx(h.default,{rapidlyChangingMotionState:s,dhParameters:l,children:e.jsx(g.GenericRobot,{modelURL:(()=>{const o=a(c,m);if(!o){const j=new Blob([],{type:"model/gltf-binary"}),q=new File([j],`${c}.glb`,{type:"model/gltf-binary"});return Promise.resolve(URL.createObjectURL(q))}return o})(),postModelRender:p,flangeRef:f,...u})})})}),e.jsx(G.default,{})]})});exports.SupportedRobot=d;exports.default=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("react"),m=require("./DHRobot.cjs"),S=require("react-error-boundary"),G=require("../../externalizeComponent.cjs"),g=require("../ConsoleFilter.cjs"),h=require("./GenericRobot.cjs"),k=require("./RobotAnimator.cjs"),b=require("./ghostStyle.cjs"),v=require("./robotModelLogic.cjs"),d=G.externalizeComponent(({rapidlyChangingMotionState:n,modelFromController:l,dhParameters:u,getModel:a=v.defaultGetModel,flangeRef:f,postModelRender:R,transparentColor:s,instanceUrl:j,...c})=>{const[t,p]=r.useState(null),q=r.useCallback(o=>{p(o)},[]);r.useEffect(()=>{t&&(s?b.applyGhostStyle(t,s):b.removeGhostStyle(t))},[t,s]);const i=e.jsx(m.DHRobot,{rapidlyChangingMotionState:n,dhParameters:u,...c});return e.jsxs(S.ErrorBoundary,{fallback:i,onError:o=>{console.warn(o)},children:[e.jsx(r.Suspense,{fallback:i,children:e.jsx("group",{ref:q,children:e.jsx(k.default,{rapidlyChangingMotionState:n,dhParameters:u,children:e.jsx(h.GenericRobot,{modelURL:(()=>{const o=a(l,j);if(!o){const x=new Blob([],{type:"model/gltf-binary"}),y=new File([x],`${l}.glb`,{type:"model/gltf-binary"});return Promise.resolve(URL.createObjectURL(y))}return o})(),postModelRender:R,flangeRef:f,...c})})})}),e.jsx(g.default,{})]})});exports.SupportedRobot=d;exports.default=d;
2
+ //# sourceMappingURL=SupportedRobot.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedRobot.cjs","sources":["../../../src/components/robots/SupportedRobot.tsx"],"sourcesContent":["import type { ThreeElements } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { DHRobot } from \"./DHRobot\"\n\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport type * as THREE from \"three\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport ConsoleFilter from \"../ConsoleFilter\"\nimport { GenericRobot } from \"./GenericRobot\"\nimport RobotAnimator from \"./RobotAnimator\"\nimport { applyGhostStyle, removeGhostStyle } from \"./ghostStyle\"\nimport { defaultGetModel } from \"./robotModelLogic\"\n\nexport type DHRobotProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: Array<DHParameter>\n} & ThreeElements[\"group\"]\n\nexport type SupportedRobotProps = {\n rapidlyChangingMotionState: MotionGroupState\n modelFromController: string\n dhParameters: DHParameter[]\n flangeRef?: React.Ref<THREE.Group>\n instanceUrl?: string\n getModel?: (\n modelFromController: string,\n instanceUrl?: string,\n ) => Promise<string> | undefined\n postModelRender?: () => void\n transparentColor?: string\n} & ThreeElements[\"group\"]\n\nexport const SupportedRobot = externalizeComponent(\n ({\n rapidlyChangingMotionState,\n modelFromController,\n dhParameters,\n getModel = defaultGetModel,\n flangeRef,\n postModelRender,\n transparentColor,\n instanceUrl,\n ...props\n }: SupportedRobotProps) => {\n const [robotGroup, setRobotGroup] = useState<THREE.Group | null>(null)\n\n const setRobotRef = useCallback((instance: THREE.Group | null) => {\n setRobotGroup(instance)\n }, [])\n\n useEffect(() => {\n if (!robotGroup) return\n\n if (transparentColor) {\n applyGhostStyle(robotGroup, transparentColor)\n } else {\n removeGhostStyle(robotGroup)\n }\n }, [robotGroup, transparentColor])\n\n const dhrobot = (\n <DHRobot\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n {...props}\n />\n )\n\n return (\n <ErrorBoundary\n fallback={dhrobot}\n onError={(err) => {\n // Missing model; show the fallback for now\n console.warn(err)\n }}\n >\n <Suspense fallback={dhrobot}>\n <group ref={setRobotRef}>\n <RobotAnimator\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n >\n <GenericRobot\n modelURL={(() => {\n const result = getModel(modelFromController, instanceUrl)\n if (!result) {\n const mockBlob = new Blob([], { type: \"model/gltf-binary\" })\n const mockFile = new File(\n [mockBlob],\n `${modelFromController}.glb`,\n { type: \"model/gltf-binary\" },\n )\n return Promise.resolve(URL.createObjectURL(mockFile))\n }\n return result\n })()}\n postModelRender={postModelRender}\n flangeRef={flangeRef}\n {...props}\n />\n </RobotAnimator>\n </group>\n </Suspense>\n <ConsoleFilter />\n </ErrorBoundary>\n )\n },\n)\n\nexport default SupportedRobot\n"],"names":["SupportedRobot","externalizeComponent","rapidlyChangingMotionState","modelFromController","dhParameters","getModel","defaultGetModel","flangeRef","postModelRender","transparentColor","instanceUrl","props","robotGroup","setRobotGroup","useState","setRobotRef","useCallback","instance","useEffect","applyGhostStyle","removeGhostStyle","dhrobot","jsx","DHRobot","jsxs","ErrorBoundary","err","Suspense","RobotAnimator","GenericRobot","result","mockBlob","mockFile","ConsoleFilter"],"mappings":"ibAiCaA,EAAiBC,EAAAA,qBAC5B,CAAC,CACC,2BAAAC,EACA,oBAAAC,EACA,aAAAC,EACA,SAAAC,EAAWC,EAAAA,gBACX,UAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,GAAGC,CAAA,IACsB,CACzB,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAA6B,IAAI,EAE/DC,EAAcC,cAAaC,GAAiC,CAChEJ,EAAcI,CAAQ,CACxB,EAAG,CAAA,CAAE,EAELC,EAAAA,UAAU,IAAM,CACTN,IAEDH,EACFU,EAAAA,gBAAgBP,EAAYH,CAAgB,EAE5CW,EAAAA,iBAAiBR,CAAU,EAE/B,EAAG,CAACA,EAAYH,CAAgB,CAAC,EAEjC,MAAMY,EACJC,EAAAA,IAACC,EAAAA,QAAA,CACC,2BAAArB,EACA,aAAAE,EACC,GAAGO,CAAA,CAAA,EAIR,OACEa,EAAAA,KAACC,EAAAA,cAAA,CACC,SAAUJ,EACV,QAAUK,GAAQ,CAEhB,QAAQ,KAAKA,CAAG,CAClB,EAEA,SAAA,CAAAJ,EAAAA,IAACK,EAAAA,UAAS,SAAUN,EAClB,SAAAC,MAAC,QAAA,CAAM,IAAKP,EACV,SAAAO,EAAAA,IAACM,EAAAA,QAAA,CACC,2BAAA1B,EACA,aAAAE,EAEA,SAAAkB,EAAAA,IAACO,EAAAA,aAAA,CACC,UAAW,IAAM,CACf,MAAMC,EAASzB,EAASF,EAAqBO,CAAW,EACxD,GAAI,CAACoB,EAAQ,CACX,MAAMC,EAAW,IAAI,KAAK,CAAA,EAAI,CAAE,KAAM,oBAAqB,EACrDC,EAAW,IAAI,KACnB,CAACD,CAAQ,EACT,GAAG5B,CAAmB,OACtB,CAAE,KAAM,mBAAA,CAAoB,EAE9B,OAAO,QAAQ,QAAQ,IAAI,gBAAgB6B,CAAQ,CAAC,CACtD,CACA,OAAOF,CACT,GAAA,EACA,gBAAAtB,EACA,UAAAD,EACC,GAAGI,CAAA,CAAA,CACN,CAAA,EAEJ,CAAA,CACF,QACCsB,EAAAA,QAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAGrB,CACF"}
@@ -17,3 +17,4 @@ export type SupportedRobotProps = {
17
17
  } & ThreeElements["group"];
18
18
  export declare const SupportedRobot: ({ rapidlyChangingMotionState, modelFromController, dhParameters, getModel, flangeRef, postModelRender, transparentColor, instanceUrl, ...props }: SupportedRobotProps) => import("react/jsx-runtime").JSX.Element;
19
19
  export default SupportedRobot;
20
+ //# sourceMappingURL=SupportedRobot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedRobot.d.ts","sourceRoot":"","sources":["../../../src/components/robots/SupportedRobot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAK3E,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAQnC,MAAM,MAAM,YAAY,GAAG;IACzB,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;CACjC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1B,MAAM,MAAM,mBAAmB,GAAG;IAChC,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,CACT,mBAAmB,EAAE,MAAM,EAC3B,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAChC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAE1B,eAAO,MAAM,cAAc,qJAWtB,mBAAmB,4CAgEvB,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as y } from "react/jsx-runtime";
2
2
  import { useState as G, useCallback as h, useEffect as k, Suspense as x } from "react";
3
3
  import { DHRobot as S } from "./DHRobot.js";
4
4
  import { ErrorBoundary as j } from "react-error-boundary";
5
- import { e as w } from "../../chunks/externalizeComponent-eiCc5DIh.js";
5
+ import { externalizeComponent as w } from "../../externalizeComponent.js";
6
6
  import B from "../ConsoleFilter.js";
7
7
  import { GenericRobot as E } from "./GenericRobot.js";
8
8
  import L from "./RobotAnimator.js";
@@ -20,7 +20,7 @@ const K = w(
20
20
  instanceUrl: p,
21
21
  ...i
22
22
  }) => {
23
- const [r, u] = G(null), a = h((o) => {
23
+ const [r, u] = G(null), d = h((o) => {
24
24
  u(o);
25
25
  }, []);
26
26
  k(() => {
@@ -42,7 +42,7 @@ const K = w(
42
42
  console.warn(o);
43
43
  },
44
44
  children: [
45
- /* @__PURE__ */ e(x, { fallback: n, children: /* @__PURE__ */ e("group", { ref: a, children: /* @__PURE__ */ e(
45
+ /* @__PURE__ */ e(x, { fallback: n, children: /* @__PURE__ */ e("group", { ref: d, children: /* @__PURE__ */ e(
46
46
  L,
47
47
  {
48
48
  rapidlyChangingMotionState: l,
@@ -53,12 +53,12 @@ const K = w(
53
53
  modelURL: (() => {
54
54
  const o = s(m, p);
55
55
  if (!o) {
56
- const d = new Blob([], { type: "model/gltf-binary" }), R = new File(
57
- [d],
56
+ const R = new Blob([], { type: "model/gltf-binary" }), a = new File(
57
+ [R],
58
58
  `${m}.glb`,
59
59
  { type: "model/gltf-binary" }
60
60
  );
61
- return Promise.resolve(URL.createObjectURL(R));
61
+ return Promise.resolve(URL.createObjectURL(a));
62
62
  }
63
63
  return o;
64
64
  })(),
@@ -79,3 +79,4 @@ export {
79
79
  K as SupportedRobot,
80
80
  K as default
81
81
  };
82
+ //# sourceMappingURL=SupportedRobot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedRobot.js","sources":["../../../src/components/robots/SupportedRobot.tsx"],"sourcesContent":["import type { ThreeElements } from \"@react-three/fiber\"\nimport type { DHParameter, MotionGroupState } from \"@wandelbots/nova-js/v2\"\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { DHRobot } from \"./DHRobot\"\n\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport type * as THREE from \"three\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport ConsoleFilter from \"../ConsoleFilter\"\nimport { GenericRobot } from \"./GenericRobot\"\nimport RobotAnimator from \"./RobotAnimator\"\nimport { applyGhostStyle, removeGhostStyle } from \"./ghostStyle\"\nimport { defaultGetModel } from \"./robotModelLogic\"\n\nexport type DHRobotProps = {\n rapidlyChangingMotionState: MotionGroupState\n dhParameters: Array<DHParameter>\n} & ThreeElements[\"group\"]\n\nexport type SupportedRobotProps = {\n rapidlyChangingMotionState: MotionGroupState\n modelFromController: string\n dhParameters: DHParameter[]\n flangeRef?: React.Ref<THREE.Group>\n instanceUrl?: string\n getModel?: (\n modelFromController: string,\n instanceUrl?: string,\n ) => Promise<string> | undefined\n postModelRender?: () => void\n transparentColor?: string\n} & ThreeElements[\"group\"]\n\nexport const SupportedRobot = externalizeComponent(\n ({\n rapidlyChangingMotionState,\n modelFromController,\n dhParameters,\n getModel = defaultGetModel,\n flangeRef,\n postModelRender,\n transparentColor,\n instanceUrl,\n ...props\n }: SupportedRobotProps) => {\n const [robotGroup, setRobotGroup] = useState<THREE.Group | null>(null)\n\n const setRobotRef = useCallback((instance: THREE.Group | null) => {\n setRobotGroup(instance)\n }, [])\n\n useEffect(() => {\n if (!robotGroup) return\n\n if (transparentColor) {\n applyGhostStyle(robotGroup, transparentColor)\n } else {\n removeGhostStyle(robotGroup)\n }\n }, [robotGroup, transparentColor])\n\n const dhrobot = (\n <DHRobot\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n {...props}\n />\n )\n\n return (\n <ErrorBoundary\n fallback={dhrobot}\n onError={(err) => {\n // Missing model; show the fallback for now\n console.warn(err)\n }}\n >\n <Suspense fallback={dhrobot}>\n <group ref={setRobotRef}>\n <RobotAnimator\n rapidlyChangingMotionState={rapidlyChangingMotionState}\n dhParameters={dhParameters}\n >\n <GenericRobot\n modelURL={(() => {\n const result = getModel(modelFromController, instanceUrl)\n if (!result) {\n const mockBlob = new Blob([], { type: \"model/gltf-binary\" })\n const mockFile = new File(\n [mockBlob],\n `${modelFromController}.glb`,\n { type: \"model/gltf-binary\" },\n )\n return Promise.resolve(URL.createObjectURL(mockFile))\n }\n return result\n })()}\n postModelRender={postModelRender}\n flangeRef={flangeRef}\n {...props}\n />\n </RobotAnimator>\n </group>\n </Suspense>\n <ConsoleFilter />\n </ErrorBoundary>\n )\n },\n)\n\nexport default SupportedRobot\n"],"names":["SupportedRobot","externalizeComponent","rapidlyChangingMotionState","modelFromController","dhParameters","getModel","defaultGetModel","flangeRef","postModelRender","transparentColor","instanceUrl","props","robotGroup","setRobotGroup","useState","setRobotRef","useCallback","instance","useEffect","applyGhostStyle","removeGhostStyle","dhrobot","jsx","DHRobot","jsxs","ErrorBoundary","err","Suspense","RobotAnimator","GenericRobot","result","mockBlob","mockFile","ConsoleFilter"],"mappings":";;;;;;;;;;AAiCO,MAAMA,IAAiBC;AAAA,EAC5B,CAAC;AAAA,IACC,4BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC,IAAWC;AAAA,IACX,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,MACsB;AACzB,UAAM,CAACC,GAAYC,CAAa,IAAIC,EAA6B,IAAI,GAE/DC,IAAcC,EAAY,CAACC,MAAiC;AAChE,MAAAJ,EAAcI,CAAQ;AAAA,IACxB,GAAG,CAAA,CAAE;AAEL,IAAAC,EAAU,MAAM;AACd,MAAKN,MAEDH,IACFU,EAAgBP,GAAYH,CAAgB,IAE5CW,EAAiBR,CAAU;AAAA,IAE/B,GAAG,CAACA,GAAYH,CAAgB,CAAC;AAEjC,UAAMY,IACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,4BAAArB;AAAA,QACA,cAAAE;AAAA,QACC,GAAGO;AAAA,MAAA;AAAA,IAAA;AAIR,WACE,gBAAAa;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAUJ;AAAA,QACV,SAAS,CAACK,MAAQ;AAEhB,kBAAQ,KAAKA,CAAG;AAAA,QAClB;AAAA,QAEA,UAAA;AAAA,UAAA,gBAAAJ,EAACK,KAAS,UAAUN,GAClB,UAAA,gBAAAC,EAAC,SAAA,EAAM,KAAKP,GACV,UAAA,gBAAAO;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,4BAAA1B;AAAA,cACA,cAAAE;AAAA,cAEA,UAAA,gBAAAkB;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,WAAW,MAAM;AACf,0BAAMC,IAASzB,EAASF,GAAqBO,CAAW;AACxD,wBAAI,CAACoB,GAAQ;AACX,4BAAMC,IAAW,IAAI,KAAK,CAAA,GAAI,EAAE,MAAM,qBAAqB,GACrDC,IAAW,IAAI;AAAA,wBACnB,CAACD,CAAQ;AAAA,wBACT,GAAG5B,CAAmB;AAAA,wBACtB,EAAE,MAAM,oBAAA;AAAA,sBAAoB;AAE9B,6BAAO,QAAQ,QAAQ,IAAI,gBAAgB6B,CAAQ,CAAC;AAAA,oBACtD;AACA,2BAAOF;AAAA,kBACT,GAAA;AAAA,kBACA,iBAAAtB;AAAA,kBACA,WAAAD;AAAA,kBACC,GAAGI;AAAA,gBAAA;AAAA,cAAA;AAAA,YACN;AAAA,UAAA,GAEJ,EAAA,CACF;AAAA,4BACCsB,GAAA,CAAA,CAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGrB;AACF;"}
@@ -1 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("three");function o(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,a.get?a:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const s=o(n),l=(t,r)=>{t.userData.isGhost||(t.traverse(e=>{if(e instanceof s.Mesh){e.material instanceof s.Material&&(e.material.colorWrite=!1);const a=e.clone(),i=e.clone();a.material=new s.MeshStandardMaterial({depthTest:!0,depthWrite:!0,colorWrite:!1,polygonOffset:!0,polygonOffsetFactor:-1,side:s.DoubleSide}),a.userData.isGhost=!0,i.material=new s.MeshStandardMaterial({color:r,opacity:.3,depthTest:!0,depthWrite:!1,transparent:!0,polygonOffset:!0,polygonOffsetFactor:-2,side:s.DoubleSide}),i.userData.isGhost=!0,e.parent&&(e.parent.add(a),e.parent.add(i))}}),t.userData.isGhost=!0)},f=t=>{if(!t.userData.isGhost)return;const r=[];t.traverse(e=>{var a;e instanceof s.Mesh&&((a=e.userData)!=null&&a.isGhost?r.push(e):e.material instanceof s.Material&&(e.material.colorWrite=!0))}),r.forEach(e=>{e.parent&&e.parent.remove(e)}),t.userData.isGhost=!1};exports.applyGhostStyle=l;exports.removeGhostStyle=f;
2
+ //# sourceMappingURL=ghostStyle.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghostStyle.cjs","sources":["../../../src/components/robots/ghostStyle.ts"],"sourcesContent":["import * as THREE from \"three\"\n\nexport const applyGhostStyle = (robot: THREE.Group, color: string) => {\n if (robot.userData.isGhost) return\n\n robot.traverse((obj) => {\n if (obj instanceof THREE.Mesh) {\n if (obj.material instanceof THREE.Material) {\n obj.material.colorWrite = false\n }\n\n // Create a clone of the mesh\n const depth = obj.clone()\n const ghost = obj.clone()\n\n depth.material = new THREE.MeshStandardMaterial({\n depthTest: true,\n depthWrite: true,\n colorWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: -1,\n side: THREE.DoubleSide,\n })\n depth.userData.isGhost = true\n\n // Set the material for the ghost mesh\n ghost.material = new THREE.MeshStandardMaterial({\n color: color,\n opacity: 0.3,\n depthTest: true,\n depthWrite: false,\n transparent: true,\n polygonOffset: true,\n polygonOffsetFactor: -2,\n side: THREE.DoubleSide,\n })\n ghost.userData.isGhost = true\n\n if (obj.parent) {\n obj.parent.add(depth)\n obj.parent.add(ghost)\n }\n }\n })\n\n robot.userData.isGhost = true\n}\n\nexport const removeGhostStyle = (robot: THREE.Group) => {\n if (!robot.userData.isGhost) return\n\n const objectsToRemove: THREE.Object3D[] = []\n\n robot.traverse((obj) => {\n if (obj instanceof THREE.Mesh) {\n if (obj.userData?.isGhost) {\n objectsToRemove.push(obj)\n } else if (obj.material instanceof THREE.Material) {\n obj.material.colorWrite = true\n }\n }\n })\n\n objectsToRemove.forEach((obj) => {\n if (obj.parent) {\n obj.parent.remove(obj)\n }\n })\n\n robot.userData.isGhost = false\n}\n"],"names":["applyGhostStyle","robot","color","obj","THREE","depth","ghost","removeGhostStyle","objectsToRemove","_a"],"mappings":"mYAEaA,EAAkB,CAACC,EAAoBC,IAAkB,CAChED,EAAM,SAAS,UAEnBA,EAAM,SAAUE,GAAQ,CACtB,GAAIA,aAAeC,EAAM,KAAM,CACzBD,EAAI,oBAAoBC,EAAM,WAChCD,EAAI,SAAS,WAAa,IAI5B,MAAME,EAAQF,EAAI,MAAA,EACZG,EAAQH,EAAI,MAAA,EAElBE,EAAM,SAAW,IAAID,EAAM,qBAAqB,CAC9C,UAAW,GACX,WAAY,GACZ,WAAY,GACZ,cAAe,GACf,oBAAqB,GACrB,KAAMA,EAAM,UAAA,CACb,EACDC,EAAM,SAAS,QAAU,GAGzBC,EAAM,SAAW,IAAIF,EAAM,qBAAqB,CAC9C,MAAAF,EACA,QAAS,GACT,UAAW,GACX,WAAY,GACZ,YAAa,GACb,cAAe,GACf,oBAAqB,GACrB,KAAME,EAAM,UAAA,CACb,EACDE,EAAM,SAAS,QAAU,GAErBH,EAAI,SACNA,EAAI,OAAO,IAAIE,CAAK,EACpBF,EAAI,OAAO,IAAIG,CAAK,EAExB,CACF,CAAC,EAEDL,EAAM,SAAS,QAAU,GAC3B,EAEaM,EAAoBN,GAAuB,CACtD,GAAI,CAACA,EAAM,SAAS,QAAS,OAE7B,MAAMO,EAAoC,CAAA,EAE1CP,EAAM,SAAUE,GAAQ,OAClBA,aAAeC,EAAM,QACnBK,EAAAN,EAAI,WAAJ,MAAAM,EAAc,QAChBD,EAAgB,KAAKL,CAAG,EACfA,EAAI,oBAAoBC,EAAM,WACvCD,EAAI,SAAS,WAAa,IAGhC,CAAC,EAEDK,EAAgB,QAASL,GAAQ,CAC3BA,EAAI,QACNA,EAAI,OAAO,OAAOA,CAAG,CAEzB,CAAC,EAEDF,EAAM,SAAS,QAAU,EAC3B"}
@@ -1,3 +1,4 @@
1
1
  import * as THREE from "three";
2
2
  export declare const applyGhostStyle: (robot: THREE.Group, color: string) => void;
3
3
  export declare const removeGhostStyle: (robot: THREE.Group) => void;
4
+ //# sourceMappingURL=ghostStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghostStyle.d.ts","sourceRoot":"","sources":["../../../src/components/robots/ghostStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,CAAC,KAAK,EAAE,OAAO,MAAM,SA4ChE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,CAAC,KAAK,SAsBlD,CAAA"}
@@ -37,3 +37,4 @@ export {
37
37
  n as applyGhostStyle,
38
38
  l as removeGhostStyle
39
39
  };
40
+ //# sourceMappingURL=ghostStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghostStyle.js","sources":["../../../src/components/robots/ghostStyle.ts"],"sourcesContent":["import * as THREE from \"three\"\n\nexport const applyGhostStyle = (robot: THREE.Group, color: string) => {\n if (robot.userData.isGhost) return\n\n robot.traverse((obj) => {\n if (obj instanceof THREE.Mesh) {\n if (obj.material instanceof THREE.Material) {\n obj.material.colorWrite = false\n }\n\n // Create a clone of the mesh\n const depth = obj.clone()\n const ghost = obj.clone()\n\n depth.material = new THREE.MeshStandardMaterial({\n depthTest: true,\n depthWrite: true,\n colorWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: -1,\n side: THREE.DoubleSide,\n })\n depth.userData.isGhost = true\n\n // Set the material for the ghost mesh\n ghost.material = new THREE.MeshStandardMaterial({\n color: color,\n opacity: 0.3,\n depthTest: true,\n depthWrite: false,\n transparent: true,\n polygonOffset: true,\n polygonOffsetFactor: -2,\n side: THREE.DoubleSide,\n })\n ghost.userData.isGhost = true\n\n if (obj.parent) {\n obj.parent.add(depth)\n obj.parent.add(ghost)\n }\n }\n })\n\n robot.userData.isGhost = true\n}\n\nexport const removeGhostStyle = (robot: THREE.Group) => {\n if (!robot.userData.isGhost) return\n\n const objectsToRemove: THREE.Object3D[] = []\n\n robot.traverse((obj) => {\n if (obj instanceof THREE.Mesh) {\n if (obj.userData?.isGhost) {\n objectsToRemove.push(obj)\n } else if (obj.material instanceof THREE.Material) {\n obj.material.colorWrite = true\n }\n }\n })\n\n objectsToRemove.forEach((obj) => {\n if (obj.parent) {\n obj.parent.remove(obj)\n }\n })\n\n robot.userData.isGhost = false\n}\n"],"names":["applyGhostStyle","robot","color","obj","THREE","depth","ghost","removeGhostStyle","objectsToRemove","_a"],"mappings":";AAEO,MAAMA,IAAkB,CAACC,GAAoBC,MAAkB;AACpE,EAAID,EAAM,SAAS,YAEnBA,EAAM,SAAS,CAACE,MAAQ;AACtB,QAAIA,aAAeC,EAAM,MAAM;AAC7B,MAAID,EAAI,oBAAoBC,EAAM,aAChCD,EAAI,SAAS,aAAa;AAI5B,YAAME,IAAQF,EAAI,MAAA,GACZG,IAAQH,EAAI,MAAA;AAElB,MAAAE,EAAM,WAAW,IAAID,EAAM,qBAAqB;AAAA,QAC9C,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,MAAMA,EAAM;AAAA,MAAA,CACb,GACDC,EAAM,SAAS,UAAU,IAGzBC,EAAM,WAAW,IAAIF,EAAM,qBAAqB;AAAA,QAC9C,OAAAF;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,MAAME,EAAM;AAAA,MAAA,CACb,GACDE,EAAM,SAAS,UAAU,IAErBH,EAAI,WACNA,EAAI,OAAO,IAAIE,CAAK,GACpBF,EAAI,OAAO,IAAIG,CAAK;AAAA,IAExB;AAAA,EACF,CAAC,GAEDL,EAAM,SAAS,UAAU;AAC3B,GAEaM,IAAmB,CAACN,MAAuB;AACtD,MAAI,CAACA,EAAM,SAAS,QAAS;AAE7B,QAAMO,IAAoC,CAAA;AAE1C,EAAAP,EAAM,SAAS,CAACE,MAAQ;;AACtB,IAAIA,aAAeC,EAAM,UACnBK,IAAAN,EAAI,aAAJ,QAAAM,EAAc,UAChBD,EAAgB,KAAKL,CAAG,IACfA,EAAI,oBAAoBC,EAAM,aACvCD,EAAI,SAAS,aAAa;AAAA,EAGhC,CAAC,GAEDK,EAAgB,QAAQ,CAACL,MAAQ;AAC/B,IAAIA,EAAI,UACNA,EAAI,OAAO,OAAOA,CAAG;AAAA,EAEzB,CAAC,GAEDF,EAAM,SAAS,UAAU;AAC3B;"}
@@ -1 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@wandelbots/nova-js/v2"),e={[a.Manufacturer.Abb]:[0,0,0,0,Math.PI/2,0,0],[a.Manufacturer.Fanuc]:[0,0,0,0,-Math.PI/2,0,0],[a.Manufacturer.Yaskawa]:[0,0,0,0,-Math.PI/2,0,0],[a.Manufacturer.Kuka]:[0,-Math.PI/2,Math.PI/2,0,Math.PI/2,0,0],[a.Manufacturer.Universalrobots]:[0,-Math.PI/2,-Math.PI/2,-Math.PI/2,Math.PI/2,-Math.PI/2,0]};function n(t){const[r]=t.split("_");switch(r){case"ABB":return a.Manufacturer.Abb;case"FANUC":return a.Manufacturer.Fanuc;case"YASKAWA":return a.Manufacturer.Yaskawa;case"KUKA":return a.Manufacturer.Kuka;case"UniversalRobots":return a.Manufacturer.Universalrobots;default:return null}}function c(t,r){const u=n(t);return u&&u in e?e[u]:r||null}exports.MANUFACTURER_HOME_CONFIGS=e;exports.extractManufacturer=n;exports.getDefaultHomeConfig=c;
2
+ //# sourceMappingURL=manufacturerHomePositions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manufacturerHomePositions.cjs","sources":["../../../src/components/robots/manufacturerHomePositions.ts"],"sourcesContent":["import { Manufacturer } from \"@wandelbots/nova-js/v2\"\n\n/**\n * Default home configs for different robot manufacturers.\n * These joint configurations represent safe home configs for each manufacturer's robots.\n * All angles are in radians.\n */\nexport const MANUFACTURER_HOME_CONFIGS: Record<Manufacturer, number[]> = {\n [Manufacturer.Abb]: [0.0, 0.0, 0.0, 0.0, Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Fanuc]: [0.0, 0.0, 0.0, 0.0, -Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Yaskawa]: [0.0, 0.0, 0.0, 0.0, -Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Kuka]: [\n 0.0,\n -Math.PI / 2,\n Math.PI / 2,\n 0.0,\n Math.PI / 2,\n 0.0,\n 0.0,\n ],\n [Manufacturer.Universalrobots]: [\n 0.0,\n -Math.PI / 2,\n -Math.PI / 2,\n -Math.PI / 2,\n Math.PI / 2,\n -Math.PI / 2,\n 0.0,\n ],\n}\n\n/**\n * Extracts manufacturer from modelFromController string.\n * @param modelFromController - String in format \"Manufacturer_ModelName\"\n * @returns Manufacturer enum value or null if not recognized\n */\nexport function extractManufacturer(\n modelFromController: string,\n): Manufacturer | null {\n const [manufacturerString] = modelFromController.split(\"_\")\n\n // Handle the mapping from string to enum\n switch (manufacturerString) {\n case \"ABB\":\n return Manufacturer.Abb\n case \"FANUC\":\n return Manufacturer.Fanuc\n case \"YASKAWA\":\n return Manufacturer.Yaskawa\n case \"KUKA\":\n return Manufacturer.Kuka\n case \"UniversalRobots\":\n return Manufacturer.Universalrobots\n default:\n return null\n }\n}\n\n/**\n * Gets the default home config for a robot based on its model identifier.\n * @param modelFromController - String in format \"Manufacturer_ModelName\"\n * @param defaultJointConfig - Optional custom default configuration to use if manufacturer not found\n * @returns Array of joint positions in radians, or null if no configuration available\n */\nexport function getDefaultHomeConfig(\n modelFromController: string,\n defaultJointConfig?: number[],\n): number[] | null {\n const manufacturer = extractManufacturer(modelFromController)\n\n if (manufacturer && manufacturer in MANUFACTURER_HOME_CONFIGS) {\n return MANUFACTURER_HOME_CONFIGS[manufacturer]\n }\n\n return defaultJointConfig || null\n}\n"],"names":["MANUFACTURER_HOME_CONFIGS","Manufacturer","extractManufacturer","modelFromController","manufacturerString","getDefaultHomeConfig","defaultJointConfig","manufacturer"],"mappings":"0HAOaA,EAA4D,CACvE,CAACC,eAAa,GAAG,EAAG,CAAC,EAAK,EAAK,EAAK,EAAK,KAAK,GAAK,EAAG,EAAK,CAAG,EAC9D,CAACA,EAAAA,aAAa,KAAK,EAAG,CAAC,EAAK,EAAK,EAAK,EAAK,CAAC,KAAK,GAAK,EAAG,EAAK,CAAG,EACjE,CAACA,EAAAA,aAAa,OAAO,EAAG,CAAC,EAAK,EAAK,EAAK,EAAK,CAAC,KAAK,GAAK,EAAG,EAAK,CAAG,EACnE,CAACA,EAAAA,aAAa,IAAI,EAAG,CACnB,EACA,CAAC,KAAK,GAAK,EACX,KAAK,GAAK,EACV,EACA,KAAK,GAAK,EACV,EACA,CAAA,EAEF,CAACA,EAAAA,aAAa,eAAe,EAAG,CAC9B,EACA,CAAC,KAAK,GAAK,EACX,CAAC,KAAK,GAAK,EACX,CAAC,KAAK,GAAK,EACX,KAAK,GAAK,EACV,CAAC,KAAK,GAAK,EACX,CAAA,CAEJ,EAOO,SAASC,EACdC,EACqB,CACrB,KAAM,CAACC,CAAkB,EAAID,EAAoB,MAAM,GAAG,EAG1D,OAAQC,EAAA,CACN,IAAK,MACH,OAAOH,EAAAA,aAAa,IACtB,IAAK,QACH,OAAOA,EAAAA,aAAa,MACtB,IAAK,UACH,OAAOA,EAAAA,aAAa,QACtB,IAAK,OACH,OAAOA,EAAAA,aAAa,KACtB,IAAK,kBACH,OAAOA,EAAAA,aAAa,gBACtB,QACE,OAAO,IAAA,CAEb,CAQO,SAASI,EACdF,EACAG,EACiB,CACjB,MAAMC,EAAeL,EAAoBC,CAAmB,EAE5D,OAAII,GAAgBA,KAAgBP,EAC3BA,EAA0BO,CAAY,EAGxCD,GAAsB,IAC/B"}
@@ -18,3 +18,4 @@ export declare function extractManufacturer(modelFromController: string): Manufa
18
18
  * @returns Array of joint positions in radians, or null if no configuration available
19
19
  */
20
20
  export declare function getDefaultHomeConfig(modelFromController: string, defaultJointConfig?: number[]): number[] | null;
21
+ //# sourceMappingURL=manufacturerHomePositions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manufacturerHomePositions.d.ts","sourceRoot":"","sources":["../../../src/components/robots/manufacturerHomePositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAsBpE,CAAA;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,mBAAmB,EAAE,MAAM,GAC1B,YAAY,GAAG,IAAI,CAkBrB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,MAAM,EAAE,GAAG,IAAI,CAQjB"}
@@ -48,3 +48,4 @@ export {
48
48
  u as extractManufacturer,
49
49
  s as getDefaultHomeConfig
50
50
  };
51
+ //# sourceMappingURL=manufacturerHomePositions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manufacturerHomePositions.js","sources":["../../../src/components/robots/manufacturerHomePositions.ts"],"sourcesContent":["import { Manufacturer } from \"@wandelbots/nova-js/v2\"\n\n/**\n * Default home configs for different robot manufacturers.\n * These joint configurations represent safe home configs for each manufacturer's robots.\n * All angles are in radians.\n */\nexport const MANUFACTURER_HOME_CONFIGS: Record<Manufacturer, number[]> = {\n [Manufacturer.Abb]: [0.0, 0.0, 0.0, 0.0, Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Fanuc]: [0.0, 0.0, 0.0, 0.0, -Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Yaskawa]: [0.0, 0.0, 0.0, 0.0, -Math.PI / 2, 0.0, 0.0],\n [Manufacturer.Kuka]: [\n 0.0,\n -Math.PI / 2,\n Math.PI / 2,\n 0.0,\n Math.PI / 2,\n 0.0,\n 0.0,\n ],\n [Manufacturer.Universalrobots]: [\n 0.0,\n -Math.PI / 2,\n -Math.PI / 2,\n -Math.PI / 2,\n Math.PI / 2,\n -Math.PI / 2,\n 0.0,\n ],\n}\n\n/**\n * Extracts manufacturer from modelFromController string.\n * @param modelFromController - String in format \"Manufacturer_ModelName\"\n * @returns Manufacturer enum value or null if not recognized\n */\nexport function extractManufacturer(\n modelFromController: string,\n): Manufacturer | null {\n const [manufacturerString] = modelFromController.split(\"_\")\n\n // Handle the mapping from string to enum\n switch (manufacturerString) {\n case \"ABB\":\n return Manufacturer.Abb\n case \"FANUC\":\n return Manufacturer.Fanuc\n case \"YASKAWA\":\n return Manufacturer.Yaskawa\n case \"KUKA\":\n return Manufacturer.Kuka\n case \"UniversalRobots\":\n return Manufacturer.Universalrobots\n default:\n return null\n }\n}\n\n/**\n * Gets the default home config for a robot based on its model identifier.\n * @param modelFromController - String in format \"Manufacturer_ModelName\"\n * @param defaultJointConfig - Optional custom default configuration to use if manufacturer not found\n * @returns Array of joint positions in radians, or null if no configuration available\n */\nexport function getDefaultHomeConfig(\n modelFromController: string,\n defaultJointConfig?: number[],\n): number[] | null {\n const manufacturer = extractManufacturer(modelFromController)\n\n if (manufacturer && manufacturer in MANUFACTURER_HOME_CONFIGS) {\n return MANUFACTURER_HOME_CONFIGS[manufacturer]\n }\n\n return defaultJointConfig || null\n}\n"],"names":["MANUFACTURER_HOME_CONFIGS","Manufacturer","extractManufacturer","modelFromController","manufacturerString","getDefaultHomeConfig","defaultJointConfig","manufacturer"],"mappings":";AAOO,MAAMA,IAA4D;AAAA,EACvE,CAACC,EAAa,GAAG,GAAG,CAAC,GAAK,GAAK,GAAK,GAAK,KAAK,KAAK,GAAG,GAAK,CAAG;AAAA,EAC9D,CAACA,EAAa,KAAK,GAAG,CAAC,GAAK,GAAK,GAAK,GAAK,CAAC,KAAK,KAAK,GAAG,GAAK,CAAG;AAAA,EACjE,CAACA,EAAa,OAAO,GAAG,CAAC,GAAK,GAAK,GAAK,GAAK,CAAC,KAAK,KAAK,GAAG,GAAK,CAAG;AAAA,EACnE,CAACA,EAAa,IAAI,GAAG;AAAA,IACnB;AAAA,IACA,CAAC,KAAK,KAAK;AAAA,IACX,KAAK,KAAK;AAAA,IACV;AAAA,IACA,KAAK,KAAK;AAAA,IACV;AAAA,IACA;AAAA,EAAA;AAAA,EAEF,CAACA,EAAa,eAAe,GAAG;AAAA,IAC9B;AAAA,IACA,CAAC,KAAK,KAAK;AAAA,IACX,CAAC,KAAK,KAAK;AAAA,IACX,CAAC,KAAK,KAAK;AAAA,IACX,KAAK,KAAK;AAAA,IACV,CAAC,KAAK,KAAK;AAAA,IACX;AAAA,EAAA;AAEJ;AAOO,SAASC,EACdC,GACqB;AACrB,QAAM,CAACC,CAAkB,IAAID,EAAoB,MAAM,GAAG;AAG1D,UAAQC,GAAA;AAAA,IACN,KAAK;AACH,aAAOH,EAAa;AAAA,IACtB,KAAK;AACH,aAAOA,EAAa;AAAA,IACtB,KAAK;AACH,aAAOA,EAAa;AAAA,IACtB,KAAK;AACH,aAAOA,EAAa;AAAA,IACtB,KAAK;AACH,aAAOA,EAAa;AAAA,IACtB;AACE,aAAO;AAAA,EAAA;AAEb;AAQO,SAASI,EACdF,GACAG,GACiB;AACjB,QAAMC,IAAeL,EAAoBC,CAAmB;AAE5D,SAAII,KAAgBA,KAAgBP,IAC3BA,EAA0BO,CAAY,IAGxCD,KAAsB;AAC/B;"}
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@wandelbots/nova-js/v2"),l=new Map;async function p(t){const n=l.get(t);if(n){try{const e=await n;URL.revokeObjectURL(e)}catch{}l.delete(t)}}async function h(){const t=Array.from(l.entries());await Promise.allSettled(t.map(async([n,e])=>{try{const r=await e;URL.revokeObjectURL(r)}catch{}})),l.clear()}async function b(t,n){if(l.has(t))return l.get(t);const e=(async()=>{var u;const r=n||"",o=new d.NovaClient({instanceUrl:r}),c=o.api.motionGroupModels;(u=c.axios)!=null&&u.interceptors&&c.axios.interceptors.request.use(i=>{var s;return(s=i.url)!=null&&s.includes("/glb")&&(i.responseType="blob"),i});try{const i=await o.api.motionGroupModels.getMotionGroupGlbModel(t);return URL.createObjectURL(i)}catch(i){throw console.error("Failed to fetch model:",i),i}})();return l.set(t,e),e}function g(t){function n(e){return e.children.length===0?[e]:[e,...e.children.flatMap(r=>n(r))]}return n(t).filter(e=>a(e))}function f(t){return t.name.endsWith("_FLG")}function a(t){return/_J[0-9]+$/.test(t.name)}function M(t,n){let e;function r(o){if(f(o)){if(e)throw Error(`Found multiple flange groups in robot model ${n}; first ${e.name} then ${o.name}. Only one _FLG group is allowed.`);e=o}a(o),o.children.map(r)}if(r(t.scene),!e)throw Error(`No flange group found in robot model ${n}. Flange must be identified with a name ending in _FLG.`);return{gltf:t}}exports.collectJoints=g;exports.defaultGetModel=b;exports.isFlange=f;exports.isJoint=a;exports.parseRobotModel=M;exports.revokeAllModelUrls=h;exports.revokeModelUrl=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@wandelbots/nova-js/v2"),l=new Map;async function p(t,r){if(l.has(t))return l.get(t);const e=(async()=>{var c;const i=r||"",n=new d.NovaClient({instanceUrl:i}),u=n.api.motionGroupModels;(c=u.axios)!=null&&c.interceptors&&u.axios.interceptors.request.use(o=>{var s;return(s=o.url)!=null&&s.includes("/glb")&&(o.responseType="blob"),o});try{const o=await n.api.motionGroupModels.getMotionGroupGlbModel(t);return URL.createObjectURL(o)}catch(o){throw console.error("Failed to fetch model:",o),o}})();return l.set(t,e),e}function g(t){function r(e){return e.children.length===0?[e]:[e,...e.children.flatMap(i=>r(i))]}return r(t).filter(e=>a(e))}function f(t){return t.name.endsWith("_FLG")}function a(t){return/_J[0-9]+$/.test(t.name)}function h(t,r){let e;function i(n){if(f(n)){if(e)throw Error(`Found multiple flange groups in robot model ${r}; first ${e.name} then ${n.name}. Only one _FLG group is allowed.`);e=n}a(n),n.children.map(i)}if(i(t.scene),!e)throw Error(`No flange group found in robot model ${r}. Flange must be identified with a name ending in _FLG.`);return{gltf:t}}exports.collectJoints=g;exports.defaultGetModel=p;exports.isFlange=f;exports.isJoint=a;exports.parseRobotModel=h;
2
+ //# sourceMappingURL=robotModelLogic.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robotModelLogic.cjs","sources":["../../../src/components/robots/robotModelLogic.ts"],"sourcesContent":["import { NovaClient } from \"@wandelbots/nova-js/v2\"\nimport type { Object3D } from \"three\"\nimport type { GLTF } from \"three-stdlib\"\n\nconst modelCache = new Map<string, Promise<string>>()\n\n/**\n * Revoke a cached model's object URL to prevent memory leaks.\n * Call this when a component unmounts or no longer needs the model.\n */\nexport async function revokeModelUrl(\n modelFromController: string,\n): Promise<void> {\n const urlPromise = modelCache.get(modelFromController)\n if (!urlPromise) return\n\n try {\n const url = await urlPromise\n URL.revokeObjectURL(url)\n } catch (e) {\n // Ignore errors - URL may already be revoked\n }\n modelCache.delete(modelFromController)\n}\n\n/**\n * Revoke all cached model object URLs and clear the cache.\n * Useful for cleanup on app teardown.\n */\nexport async function revokeAllModelUrls(): Promise<void> {\n const entries = Array.from(modelCache.entries())\n await Promise.allSettled(\n entries.map(async ([key, urlPromise]) => {\n try {\n const url = await urlPromise\n URL.revokeObjectURL(url)\n } catch (e) {\n // Ignore errors\n }\n }),\n )\n modelCache.clear()\n}\n\nexport async function defaultGetModel(\n modelFromController: string,\n instanceUrlProp?: string,\n): Promise<string> {\n // Check cache first\n if (modelCache.has(modelFromController)) {\n // biome-ignore lint/style/noNonNullAssertion: pre-biome code\n return modelCache.get(modelFromController)!\n }\n\n // Create the promise and cache it immediately to prevent duplicate calls\n const modelPromise = (async () => {\n const instanceUrl = instanceUrlProp || import.meta.env.WANDELAPI_BASE_URL\n const nova = new NovaClient({ instanceUrl })\n\n // Configure axios to handle binary responses for GLB files\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n const apiInstance = nova.api.motionGroupModels as any\n if (apiInstance.axios?.interceptors) {\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n apiInstance.axios.interceptors.request.use((config: any) => {\n if (config.url?.includes(\"/glb\")) {\n config.responseType = \"blob\"\n }\n return config\n })\n }\n\n try {\n const file =\n await nova.api.motionGroupModels.getMotionGroupGlbModel(\n modelFromController,\n )\n\n // Create object URL from the file and return it\n const url = URL.createObjectURL(file)\n return url\n } catch (error) {\n console.error(\"Failed to fetch model:\", error)\n throw error\n }\n })()\n\n // Cache the promise\n modelCache.set(modelFromController, modelPromise)\n return modelPromise\n}\n\n/**\n * Finds all the joint groups in a GLTF tree, as identified\n * by the _Jxx name ending convention.\n */\nexport function collectJoints(rootObject: Object3D): Object3D[] {\n function getAllObjects(root: Object3D): Object3D[] {\n if (root.children.length === 0) {\n return [root]\n }\n return [root, ...root.children.flatMap((child) => getAllObjects(child))]\n }\n\n return getAllObjects(rootObject).filter((o) => isJoint(o))\n}\n\n/**\n * Checks if a specified threejs object represents the flange of a\n * robot, based on the _FLG name ending convention.\n */\nexport function isFlange(node: Object3D) {\n return node.name.endsWith(\"_FLG\")\n}\n\n/**\n * Checks if a specified threejs object represents a joint of a\n * robot, based on the _Jxx name ending convention.\n */\nexport function isJoint(node: Object3D) {\n return /_J[0-9]+$/.test(node.name)\n}\n\n/**\n * Validates that the loaded GLTF file has six joints and a flange group.\n */\nexport function parseRobotModel(gltf: GLTF, filename: string): { gltf: GLTF } {\n let flange: Object3D | undefined\n const joints: Object3D[] = []\n\n function parseNode(node: Object3D) {\n if (isFlange(node)) {\n if (flange) {\n throw Error(\n `Found multiple flange groups in robot model ${filename}; first ${flange.name} then ${node.name}. Only one _FLG group is allowed.`,\n )\n }\n\n flange = node\n }\n\n if (isJoint(node)) {\n joints.push(node)\n }\n\n node.children.map(parseNode)\n }\n\n parseNode(gltf.scene)\n\n if (!flange) {\n throw Error(\n `No flange group found in robot model ${filename}. Flange must be identified with a name ending in _FLG.`,\n )\n }\n\n return { gltf }\n}\n"],"names":["modelCache","defaultGetModel","modelFromController","instanceUrlProp","modelPromise","instanceUrl","nova","NovaClient","apiInstance","_a","config","file","error","collectJoints","rootObject","getAllObjects","root","child","o","isJoint","isFlange","node","parseRobotModel","gltf","filename","flange","parseNode"],"mappings":"0HAIMA,MAAiB,IAwCvB,eAAsBC,EACpBC,EACAC,EACiB,CAEjB,GAAIH,EAAW,IAAIE,CAAmB,EAEpC,OAAOF,EAAW,IAAIE,CAAmB,EAI3C,MAAME,GAAgB,SAAY,OAChC,MAAMC,EAAcF,GAAmB,GACjCG,EAAO,IAAIC,aAAW,CAAE,YAAAF,EAAa,EAIrCG,EAAcF,EAAK,IAAI,mBACzBG,EAAAD,EAAY,QAAZ,MAAAC,EAAmB,cAErBD,EAAY,MAAM,aAAa,QAAQ,IAAKE,GAAgB,OAC1D,OAAID,EAAAC,EAAO,MAAP,MAAAD,EAAY,SAAS,UACvBC,EAAO,aAAe,QAEjBA,CACT,CAAC,EAGH,GAAI,CACF,MAAMC,EACJ,MAAML,EAAK,IAAI,kBAAkB,uBAC/BJ,CAAA,EAKJ,OADY,IAAI,gBAAgBS,CAAI,CAEtC,OAASC,EAAO,CACd,cAAQ,MAAM,yBAA0BA,CAAK,EACvCA,CACR,CACF,GAAA,EAGA,OAAAZ,EAAW,IAAIE,EAAqBE,CAAY,EACzCA,CACT,CAMO,SAASS,EAAcC,EAAkC,CAC9D,SAASC,EAAcC,EAA4B,CACjD,OAAIA,EAAK,SAAS,SAAW,EACpB,CAACA,CAAI,EAEP,CAACA,EAAM,GAAGA,EAAK,SAAS,QAASC,GAAUF,EAAcE,CAAK,CAAC,CAAC,CACzE,CAEA,OAAOF,EAAcD,CAAU,EAAE,OAAQI,GAAMC,EAAQD,CAAC,CAAC,CAC3D,CAMO,SAASE,EAASC,EAAgB,CACvC,OAAOA,EAAK,KAAK,SAAS,MAAM,CAClC,CAMO,SAASF,EAAQE,EAAgB,CACtC,MAAO,YAAY,KAAKA,EAAK,IAAI,CACnC,CAKO,SAASC,EAAgBC,EAAYC,EAAkC,CAC5E,IAAIC,EAGJ,SAASC,EAAUL,EAAgB,CACjC,GAAID,EAASC,CAAI,EAAG,CAClB,GAAII,EACF,MAAM,MACJ,+CAA+CD,CAAQ,WAAWC,EAAO,IAAI,SAASJ,EAAK,IAAI,mCAAA,EAInGI,EAASJ,CACX,CAEIF,EAAQE,CAAI,EAIhBA,EAAK,SAAS,IAAIK,CAAS,CAC7B,CAIA,GAFAA,EAAUH,EAAK,KAAK,EAEhB,CAACE,EACH,MAAM,MACJ,wCAAwCD,CAAQ,yDAAA,EAIpD,MAAO,CAAE,KAAAD,CAAA,CACX"}
@@ -32,3 +32,4 @@ export declare function isJoint(node: Object3D): boolean;
32
32
  export declare function parseRobotModel(gltf: GLTF, filename: string): {
33
33
  gltf: GLTF;
34
34
  };
35
+ //# sourceMappingURL=robotModelLogic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robotModelLogic.d.ts","sourceRoot":"","sources":["../../../src/components/robots/robotModelLogic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAIxC;;;GAGG;AACH,wBAAsB,cAAc,CAClC,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAaxD;AAED,wBAAsB,eAAe,CACnC,mBAAmB,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAS9D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,WAEtC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,WAErC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CA+B5E"}
@@ -1,85 +1,61 @@
1
1
  import { NovaClient as f } from "@wandelbots/nova-js/v2";
2
2
  const a = /* @__PURE__ */ new Map();
3
- async function h(t) {
4
- const n = a.get(t);
5
- if (n) {
6
- try {
7
- const e = await n;
8
- URL.revokeObjectURL(e);
9
- } catch {
10
- }
11
- a.delete(t);
12
- }
13
- }
14
- async function m() {
15
- const t = Array.from(a.entries());
16
- await Promise.allSettled(
17
- t.map(async ([n, e]) => {
18
- try {
19
- const r = await e;
20
- URL.revokeObjectURL(r);
21
- } catch {
22
- }
23
- })
24
- ), a.clear();
25
- }
26
- async function b(t, n) {
27
- if (a.has(t))
28
- return a.get(t);
3
+ async function h(n, i) {
4
+ if (a.has(n))
5
+ return a.get(n);
29
6
  const e = (async () => {
30
- var l;
31
- const r = n || "", i = new f({ instanceUrl: r }), c = i.api.motionGroupModels;
32
- (l = c.axios) != null && l.interceptors && c.axios.interceptors.request.use((o) => {
7
+ var c;
8
+ const o = i || "", t = new f({ instanceUrl: o }), u = t.api.motionGroupModels;
9
+ (c = u.axios) != null && c.interceptors && u.axios.interceptors.request.use((r) => {
33
10
  var s;
34
- return (s = o.url) != null && s.includes("/glb") && (o.responseType = "blob"), o;
11
+ return (s = r.url) != null && s.includes("/glb") && (r.responseType = "blob"), r;
35
12
  });
36
13
  try {
37
- const o = await i.api.motionGroupModels.getMotionGroupGlbModel(
38
- t
14
+ const r = await t.api.motionGroupModels.getMotionGroupGlbModel(
15
+ n
39
16
  );
40
- return URL.createObjectURL(o);
41
- } catch (o) {
42
- throw console.error("Failed to fetch model:", o), o;
17
+ return URL.createObjectURL(r);
18
+ } catch (r) {
19
+ throw console.error("Failed to fetch model:", r), r;
43
20
  }
44
21
  })();
45
- return a.set(t, e), e;
22
+ return a.set(n, e), e;
46
23
  }
47
- function g(t) {
48
- function n(e) {
49
- return e.children.length === 0 ? [e] : [e, ...e.children.flatMap((r) => n(r))];
24
+ function g(n) {
25
+ function i(e) {
26
+ return e.children.length === 0 ? [e] : [e, ...e.children.flatMap((o) => i(o))];
50
27
  }
51
- return n(t).filter((e) => u(e));
28
+ return i(n).filter((e) => l(e));
52
29
  }
53
- function p(t) {
54
- return t.name.endsWith("_FLG");
30
+ function p(n) {
31
+ return n.name.endsWith("_FLG");
55
32
  }
56
- function u(t) {
57
- return /_J[0-9]+$/.test(t.name);
33
+ function l(n) {
34
+ return /_J[0-9]+$/.test(n.name);
58
35
  }
59
- function y(t, n) {
36
+ function m(n, i) {
60
37
  let e;
61
- function r(i) {
62
- if (p(i)) {
38
+ function o(t) {
39
+ if (p(t)) {
63
40
  if (e)
64
41
  throw Error(
65
- `Found multiple flange groups in robot model ${n}; first ${e.name} then ${i.name}. Only one _FLG group is allowed.`
42
+ `Found multiple flange groups in robot model ${i}; first ${e.name} then ${t.name}. Only one _FLG group is allowed.`
66
43
  );
67
- e = i;
44
+ e = t;
68
45
  }
69
- u(i), i.children.map(r);
46
+ l(t), t.children.map(o);
70
47
  }
71
- if (r(t.scene), !e)
48
+ if (o(n.scene), !e)
72
49
  throw Error(
73
- `No flange group found in robot model ${n}. Flange must be identified with a name ending in _FLG.`
50
+ `No flange group found in robot model ${i}. Flange must be identified with a name ending in _FLG.`
74
51
  );
75
- return { gltf: t };
52
+ return { gltf: n };
76
53
  }
77
54
  export {
78
55
  g as collectJoints,
79
- b as defaultGetModel,
56
+ h as defaultGetModel,
80
57
  p as isFlange,
81
- u as isJoint,
82
- y as parseRobotModel,
83
- m as revokeAllModelUrls,
84
- h as revokeModelUrl
58
+ l as isJoint,
59
+ m as parseRobotModel
85
60
  };
61
+ //# sourceMappingURL=robotModelLogic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robotModelLogic.js","sources":["../../../src/components/robots/robotModelLogic.ts"],"sourcesContent":["import { NovaClient } from \"@wandelbots/nova-js/v2\"\nimport type { Object3D } from \"three\"\nimport type { GLTF } from \"three-stdlib\"\n\nconst modelCache = new Map<string, Promise<string>>()\n\n/**\n * Revoke a cached model's object URL to prevent memory leaks.\n * Call this when a component unmounts or no longer needs the model.\n */\nexport async function revokeModelUrl(\n modelFromController: string,\n): Promise<void> {\n const urlPromise = modelCache.get(modelFromController)\n if (!urlPromise) return\n\n try {\n const url = await urlPromise\n URL.revokeObjectURL(url)\n } catch (e) {\n // Ignore errors - URL may already be revoked\n }\n modelCache.delete(modelFromController)\n}\n\n/**\n * Revoke all cached model object URLs and clear the cache.\n * Useful for cleanup on app teardown.\n */\nexport async function revokeAllModelUrls(): Promise<void> {\n const entries = Array.from(modelCache.entries())\n await Promise.allSettled(\n entries.map(async ([key, urlPromise]) => {\n try {\n const url = await urlPromise\n URL.revokeObjectURL(url)\n } catch (e) {\n // Ignore errors\n }\n }),\n )\n modelCache.clear()\n}\n\nexport async function defaultGetModel(\n modelFromController: string,\n instanceUrlProp?: string,\n): Promise<string> {\n // Check cache first\n if (modelCache.has(modelFromController)) {\n // biome-ignore lint/style/noNonNullAssertion: pre-biome code\n return modelCache.get(modelFromController)!\n }\n\n // Create the promise and cache it immediately to prevent duplicate calls\n const modelPromise = (async () => {\n const instanceUrl = instanceUrlProp || import.meta.env.WANDELAPI_BASE_URL\n const nova = new NovaClient({ instanceUrl })\n\n // Configure axios to handle binary responses for GLB files\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n const apiInstance = nova.api.motionGroupModels as any\n if (apiInstance.axios?.interceptors) {\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n apiInstance.axios.interceptors.request.use((config: any) => {\n if (config.url?.includes(\"/glb\")) {\n config.responseType = \"blob\"\n }\n return config\n })\n }\n\n try {\n const file =\n await nova.api.motionGroupModels.getMotionGroupGlbModel(\n modelFromController,\n )\n\n // Create object URL from the file and return it\n const url = URL.createObjectURL(file)\n return url\n } catch (error) {\n console.error(\"Failed to fetch model:\", error)\n throw error\n }\n })()\n\n // Cache the promise\n modelCache.set(modelFromController, modelPromise)\n return modelPromise\n}\n\n/**\n * Finds all the joint groups in a GLTF tree, as identified\n * by the _Jxx name ending convention.\n */\nexport function collectJoints(rootObject: Object3D): Object3D[] {\n function getAllObjects(root: Object3D): Object3D[] {\n if (root.children.length === 0) {\n return [root]\n }\n return [root, ...root.children.flatMap((child) => getAllObjects(child))]\n }\n\n return getAllObjects(rootObject).filter((o) => isJoint(o))\n}\n\n/**\n * Checks if a specified threejs object represents the flange of a\n * robot, based on the _FLG name ending convention.\n */\nexport function isFlange(node: Object3D) {\n return node.name.endsWith(\"_FLG\")\n}\n\n/**\n * Checks if a specified threejs object represents a joint of a\n * robot, based on the _Jxx name ending convention.\n */\nexport function isJoint(node: Object3D) {\n return /_J[0-9]+$/.test(node.name)\n}\n\n/**\n * Validates that the loaded GLTF file has six joints and a flange group.\n */\nexport function parseRobotModel(gltf: GLTF, filename: string): { gltf: GLTF } {\n let flange: Object3D | undefined\n const joints: Object3D[] = []\n\n function parseNode(node: Object3D) {\n if (isFlange(node)) {\n if (flange) {\n throw Error(\n `Found multiple flange groups in robot model ${filename}; first ${flange.name} then ${node.name}. Only one _FLG group is allowed.`,\n )\n }\n\n flange = node\n }\n\n if (isJoint(node)) {\n joints.push(node)\n }\n\n node.children.map(parseNode)\n }\n\n parseNode(gltf.scene)\n\n if (!flange) {\n throw Error(\n `No flange group found in robot model ${filename}. Flange must be identified with a name ending in _FLG.`,\n )\n }\n\n return { gltf }\n}\n"],"names":["modelCache","defaultGetModel","modelFromController","instanceUrlProp","modelPromise","instanceUrl","nova","NovaClient","apiInstance","_a","config","file","error","collectJoints","rootObject","getAllObjects","root","child","o","isJoint","isFlange","node","parseRobotModel","gltf","filename","flange","parseNode"],"mappings":";AAIA,MAAMA,wBAAiB,IAAA;AAwCvB,eAAsBC,EACpBC,GACAC,GACiB;AAEjB,MAAIH,EAAW,IAAIE,CAAmB;AAEpC,WAAOF,EAAW,IAAIE,CAAmB;AAI3C,QAAME,KAAgB,YAAY;;AAChC,UAAMC,IAAcF,KAAmB,IACjCG,IAAO,IAAIC,EAAW,EAAE,aAAAF,GAAa,GAIrCG,IAAcF,EAAK,IAAI;AAC7B,KAAIG,IAAAD,EAAY,UAAZ,QAAAC,EAAmB,gBAErBD,EAAY,MAAM,aAAa,QAAQ,IAAI,CAACE,MAAgB;;AAC1D,cAAID,IAAAC,EAAO,QAAP,QAAAD,EAAY,SAAS,YACvBC,EAAO,eAAe,SAEjBA;AAAA,IACT,CAAC;AAGH,QAAI;AACF,YAAMC,IACJ,MAAML,EAAK,IAAI,kBAAkB;AAAA,QAC/BJ;AAAA,MAAA;AAKJ,aADY,IAAI,gBAAgBS,CAAI;AAAA,IAEtC,SAASC,GAAO;AACd,oBAAQ,MAAM,0BAA0BA,CAAK,GACvCA;AAAA,IACR;AAAA,EACF,GAAA;AAGA,SAAAZ,EAAW,IAAIE,GAAqBE,CAAY,GACzCA;AACT;AAMO,SAASS,EAAcC,GAAkC;AAC9D,WAASC,EAAcC,GAA4B;AACjD,WAAIA,EAAK,SAAS,WAAW,IACpB,CAACA,CAAI,IAEP,CAACA,GAAM,GAAGA,EAAK,SAAS,QAAQ,CAACC,MAAUF,EAAcE,CAAK,CAAC,CAAC;AAAA,EACzE;AAEA,SAAOF,EAAcD,CAAU,EAAE,OAAO,CAACI,MAAMC,EAAQD,CAAC,CAAC;AAC3D;AAMO,SAASE,EAASC,GAAgB;AACvC,SAAOA,EAAK,KAAK,SAAS,MAAM;AAClC;AAMO,SAASF,EAAQE,GAAgB;AACtC,SAAO,YAAY,KAAKA,EAAK,IAAI;AACnC;AAKO,SAASC,EAAgBC,GAAYC,GAAkC;AAC5E,MAAIC;AAGJ,WAASC,EAAUL,GAAgB;AACjC,QAAID,EAASC,CAAI,GAAG;AAClB,UAAII;AACF,cAAM;AAAA,UACJ,+CAA+CD,CAAQ,WAAWC,EAAO,IAAI,SAASJ,EAAK,IAAI;AAAA,QAAA;AAInG,MAAAI,IAASJ;AAAA,IACX;AAEA,IAAIF,EAAQE,CAAI,GAIhBA,EAAK,SAAS,IAAIK,CAAS;AAAA,EAC7B;AAIA,MAFAA,EAAUH,EAAK,KAAK,GAEhB,CAACE;AACH,UAAM;AAAA,MACJ,wCAAwCD,CAAQ;AAAA,IAAA;AAIpD,SAAO,EAAE,MAAAD,EAAA;AACX;"}
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),d=require("@mui/material/styles"),x=require("mobx-react-lite"),b=require("react"),o=require("react-i18next"),c=require("../../chunks/controller-type-virtual-BuJWQOvV.cjs"),u=require("./IndicatorWithExplanation.cjs"),p=x.observer(({isVirtual:y,motionGroupId:r,anchorOrigin:a,transformOrigin:n,compact:l})=>{const i=d.useTheme(),s=b.useId(),{t}=o.useTranslation();return y?e.jsx(u.IndicatorWithExplanation,{id:`motion-group-virtual-${s}`,icon:c.ForwardRef$1,color:i.palette.tertiary.main,name:t("SafetyBar.ControllerType.Virtual.lb"),label:l?null:t("SafetyBar.ControllerType.Virtual.lb"),explanation:e.jsxs(o.Trans,{i18nKey:"SafetyBar.MotionGroup.Virtual.Explanation.lb",values:{motionGroupId:r},children:["Motion group ",e.jsx("code",{children:r})," refers to a virtual robot with no physical counterpart. It can be freely manipulated without special safety precautions."]}),anchorOrigin:a,transformOrigin:n}):e.jsx(u.IndicatorWithExplanation,{id:`motion-group-physical-${s}`,icon:c.ForwardRef,color:i.palette.primary.main,name:t("SafetyBar.ControllerType.Physical.lb"),label:l?null:t("SafetyBar.ControllerType.Physical.lb"),explanation:e.jsx(o.Trans,{i18nKey:"SafetyBar.MotionGroup.Physical.Explanation.lb",values:{motionGroupId:r},components:{code:e.jsx("code",{}),strong:e.jsx("strong",{})}}),anchorOrigin:a,transformOrigin:n})});exports.ControllerTypeIndicator=p;exports.default=p;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),y=require("@mui/material/styles"),d=require("mobx-react-lite"),x=require("react"),o=require("react-i18next"),b=require("./icons/controller-type-physical.svg.cjs"),h=require("./icons/controller-type-virtual.svg.cjs"),c=require("./IndicatorWithExplanation.cjs"),u=d.observer(({isVirtual:p,motionGroupId:r,anchorOrigin:a,transformOrigin:n,compact:l})=>{const i=y.useTheme(),s=x.useId(),{t}=o.useTranslation();return p?e.jsx(c.IndicatorWithExplanation,{id:`motion-group-virtual-${s}`,icon:h.default,color:i.palette.tertiary.main,name:t("SafetyBar.ControllerType.Virtual.lb"),label:l?null:t("SafetyBar.ControllerType.Virtual.lb"),explanation:e.jsxs(o.Trans,{i18nKey:"SafetyBar.MotionGroup.Virtual.Explanation.lb",values:{motionGroupId:r},children:["Motion group ",e.jsx("code",{children:r})," refers to a virtual robot with no physical counterpart. It can be freely manipulated without special safety precautions."]}),anchorOrigin:a,transformOrigin:n}):e.jsx(c.IndicatorWithExplanation,{id:`motion-group-physical-${s}`,icon:b.default,color:i.palette.primary.main,name:t("SafetyBar.ControllerType.Physical.lb"),label:l?null:t("SafetyBar.ControllerType.Physical.lb"),explanation:e.jsx(o.Trans,{i18nKey:"SafetyBar.MotionGroup.Physical.Explanation.lb",values:{motionGroupId:r},components:{code:e.jsx("code",{}),strong:e.jsx("strong",{})}}),anchorOrigin:a,transformOrigin:n})});exports.ControllerTypeIndicator=u;exports.default=u;
2
+ //# sourceMappingURL=ControllerTypeIndicator.cjs.map