@wandelbots/wandelbots-js-react-components 5.4.2 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/dist/3d.cjs +2 -0
  2. package/dist/3d.cjs.map +1 -0
  3. package/dist/3d.js +31 -0
  4. package/dist/3d.js.map +1 -0
  5. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +1 -0
  6. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +1 -1
  7. package/dist/components/3d-viewport/PresetEnvironment.cjs +2 -0
  8. package/dist/components/3d-viewport/PresetEnvironment.cjs.map +1 -0
  9. package/dist/components/3d-viewport/PresetEnvironment.d.ts +1 -0
  10. package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +1 -1
  11. package/dist/components/3d-viewport/PresetEnvironment.js +81 -0
  12. package/dist/components/3d-viewport/PresetEnvironment.js.map +1 -0
  13. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs +2 -0
  14. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs.map +1 -0
  15. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +1 -0
  16. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +1 -1
  17. package/dist/components/3d-viewport/SafetyZonesRenderer.js +131 -0
  18. package/dist/components/3d-viewport/SafetyZonesRenderer.js.map +1 -0
  19. package/dist/components/3d-viewport/TrajectoryRenderer.cjs +2 -0
  20. package/dist/components/3d-viewport/TrajectoryRenderer.cjs.map +1 -0
  21. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +1 -0
  22. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +1 -1
  23. package/dist/components/3d-viewport/TrajectoryRenderer.js +31 -0
  24. package/dist/components/3d-viewport/TrajectoryRenderer.js.map +1 -0
  25. package/dist/components/3d-viewport/collider/ColliderCollection.cjs +2 -0
  26. package/dist/components/3d-viewport/collider/ColliderCollection.cjs.map +1 -0
  27. package/dist/components/3d-viewport/collider/ColliderCollection.js +22 -0
  28. package/dist/components/3d-viewport/collider/ColliderCollection.js.map +1 -0
  29. package/dist/components/3d-viewport/collider/ColliderElement.cjs +2 -0
  30. package/dist/components/3d-viewport/collider/ColliderElement.cjs.map +1 -0
  31. package/dist/components/3d-viewport/collider/ColliderElement.js +29 -0
  32. package/dist/components/3d-viewport/collider/ColliderElement.js.map +1 -0
  33. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs +2 -0
  34. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs.map +1 -0
  35. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js +19 -0
  36. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js.map +1 -0
  37. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs +2 -0
  38. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs.map +1 -0
  39. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js +43 -0
  40. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js.map +1 -0
  41. package/dist/components/AppHeader.cjs +2 -0
  42. package/dist/components/AppHeader.cjs.map +1 -0
  43. package/dist/components/AppHeader.d.ts +1 -0
  44. package/dist/components/AppHeader.d.ts.map +1 -1
  45. package/dist/components/AppHeader.js +139 -0
  46. package/dist/components/AppHeader.js.map +1 -0
  47. package/dist/components/ConsoleFilter.cjs +2 -0
  48. package/dist/components/ConsoleFilter.cjs.map +1 -0
  49. package/dist/components/ConsoleFilter.js +13 -0
  50. package/dist/components/ConsoleFilter.js.map +1 -0
  51. package/dist/components/CopyableText.cjs +2 -0
  52. package/dist/components/CopyableText.cjs.map +1 -0
  53. package/dist/components/CopyableText.d.ts +1 -0
  54. package/dist/components/CopyableText.d.ts.map +1 -1
  55. package/dist/components/CopyableText.js +71 -0
  56. package/dist/components/CopyableText.js.map +1 -0
  57. package/dist/components/CycleTimer/CycleTimer.d.ts +1 -0
  58. package/dist/components/CycleTimer/CycleTimer.d.ts.map +1 -1
  59. package/dist/components/CycleTimer/DefaultVariant.cjs +2 -0
  60. package/dist/components/CycleTimer/DefaultVariant.cjs.map +1 -0
  61. package/dist/components/CycleTimer/DefaultVariant.js +301 -0
  62. package/dist/components/CycleTimer/DefaultVariant.js.map +1 -0
  63. package/dist/components/CycleTimer/SmallVariant.cjs +2 -0
  64. package/dist/components/CycleTimer/SmallVariant.cjs.map +1 -0
  65. package/dist/components/CycleTimer/SmallVariant.js +150 -0
  66. package/dist/components/CycleTimer/SmallVariant.js.map +1 -0
  67. package/dist/components/CycleTimer/index.cjs +2 -0
  68. package/dist/components/CycleTimer/index.cjs.map +1 -0
  69. package/dist/components/CycleTimer/index.d.ts +1 -0
  70. package/dist/components/CycleTimer/index.d.ts.map +1 -1
  71. package/dist/components/CycleTimer/index.js +86 -0
  72. package/dist/components/CycleTimer/index.js.map +1 -0
  73. package/dist/components/CycleTimer/useAnimations.cjs +2 -0
  74. package/dist/components/CycleTimer/useAnimations.cjs.map +1 -0
  75. package/dist/components/CycleTimer/useAnimations.js +105 -0
  76. package/dist/components/CycleTimer/useAnimations.js.map +1 -0
  77. package/dist/components/CycleTimer/useTimerLogic.cjs +2 -0
  78. package/dist/components/CycleTimer/useTimerLogic.cjs.map +1 -0
  79. package/dist/components/CycleTimer/useTimerLogic.js +191 -0
  80. package/dist/components/CycleTimer/useTimerLogic.js.map +1 -0
  81. package/dist/components/CycleTimer/utils.cjs +2 -0
  82. package/dist/components/CycleTimer/utils.cjs.map +1 -0
  83. package/dist/components/CycleTimer/utils.js +20 -0
  84. package/dist/components/CycleTimer/utils.js.map +1 -0
  85. package/dist/components/CycleTimer.cjs +2 -0
  86. package/dist/components/CycleTimer.cjs.map +1 -0
  87. package/dist/components/CycleTimer.d.ts +1 -0
  88. package/dist/components/CycleTimer.d.ts.map +1 -1
  89. package/dist/components/CycleTimer.js +6 -0
  90. package/dist/components/CycleTimer.js.map +1 -0
  91. package/dist/components/DataGrid.cjs +2 -0
  92. package/dist/components/DataGrid.cjs.map +1 -0
  93. package/dist/components/DataGrid.d.ts +1 -0
  94. package/dist/components/DataGrid.d.ts.map +1 -1
  95. package/dist/components/DataGrid.js +535 -0
  96. package/dist/components/DataGrid.js.map +1 -0
  97. package/dist/components/LoadingCover.cjs +2 -0
  98. package/dist/components/LoadingCover.cjs.map +1 -0
  99. package/dist/components/LoadingCover.d.ts +1 -0
  100. package/dist/components/LoadingCover.d.ts.map +1 -1
  101. package/dist/components/LoadingCover.js +77 -0
  102. package/dist/components/LoadingCover.js.map +1 -0
  103. package/dist/components/LogPanel.cjs +2 -0
  104. package/dist/components/LogPanel.cjs.map +1 -0
  105. package/dist/components/LogPanel.d.ts +1 -0
  106. package/dist/components/LogPanel.d.ts.map +1 -1
  107. package/dist/components/LogPanel.js +34 -0
  108. package/dist/components/LogPanel.js.map +1 -0
  109. package/dist/components/LogStore.cjs +2 -0
  110. package/dist/components/LogStore.cjs.map +1 -0
  111. package/dist/components/LogStore.d.ts +1 -0
  112. package/dist/components/LogStore.d.ts.map +1 -1
  113. package/dist/components/LogStore.js +33 -0
  114. package/dist/components/LogStore.js.map +1 -0
  115. package/dist/components/LogViewer.cjs +2 -0
  116. package/dist/components/LogViewer.cjs.map +1 -0
  117. package/dist/components/LogViewer.d.ts +1 -0
  118. package/dist/components/LogViewer.d.ts.map +1 -1
  119. package/dist/components/LogViewer.js +299 -0
  120. package/dist/components/LogViewer.js.map +1 -0
  121. package/dist/components/ProgramControl.cjs +2 -0
  122. package/dist/components/ProgramControl.cjs.map +1 -0
  123. package/dist/components/ProgramControl.d.ts +1 -0
  124. package/dist/components/ProgramControl.d.ts.map +1 -1
  125. package/dist/components/ProgramControl.js +147 -0
  126. package/dist/components/ProgramControl.js.map +1 -0
  127. package/dist/components/ProgramStateIndicator.cjs +2 -0
  128. package/dist/components/ProgramStateIndicator.cjs.map +1 -0
  129. package/dist/components/ProgramStateIndicator.d.ts +1 -0
  130. package/dist/components/ProgramStateIndicator.d.ts.map +1 -1
  131. package/dist/components/ProgramStateIndicator.js +140 -0
  132. package/dist/components/ProgramStateIndicator.js.map +1 -0
  133. package/dist/components/RobotCard.cjs +2 -0
  134. package/dist/components/RobotCard.cjs.map +1 -0
  135. package/dist/components/RobotCard.d.ts +1 -0
  136. package/dist/components/RobotCard.d.ts.map +1 -1
  137. package/dist/components/RobotCard.js +360 -0
  138. package/dist/components/RobotCard.js.map +1 -0
  139. package/dist/components/RobotListItem.cjs +2 -0
  140. package/dist/components/RobotListItem.cjs.map +1 -0
  141. package/dist/components/RobotListItem.d.ts +1 -0
  142. package/dist/components/RobotListItem.d.ts.map +1 -1
  143. package/dist/components/RobotListItem.js +122 -0
  144. package/dist/components/RobotListItem.js.map +1 -0
  145. package/dist/components/RobotSetupReadinessIndicator.cjs +2 -0
  146. package/dist/components/RobotSetupReadinessIndicator.cjs.map +1 -0
  147. package/dist/components/RobotSetupReadinessIndicator.d.ts +1 -0
  148. package/dist/components/RobotSetupReadinessIndicator.d.ts.map +1 -1
  149. package/dist/components/RobotSetupReadinessIndicator.js +122 -0
  150. package/dist/components/RobotSetupReadinessIndicator.js.map +1 -0
  151. package/dist/components/SelectableFab.cjs +2 -0
  152. package/dist/components/SelectableFab.cjs.map +1 -0
  153. package/dist/components/SelectableFab.d.ts +1 -1
  154. package/dist/components/SelectableFab.d.ts.map +1 -1
  155. package/dist/components/SelectableFab.js +51 -0
  156. package/dist/components/SelectableFab.js.map +1 -0
  157. package/dist/components/TabBar.cjs +2 -0
  158. package/dist/components/TabBar.cjs.map +1 -0
  159. package/dist/components/TabBar.d.ts +1 -0
  160. package/dist/components/TabBar.d.ts.map +1 -1
  161. package/dist/components/TabBar.js +212 -0
  162. package/dist/components/TabBar.js.map +1 -0
  163. package/dist/components/ThemeSelect.d.ts +1 -1
  164. package/dist/components/ThemeSelect.d.ts.map +1 -1
  165. package/dist/components/Timer/Timer.d.ts +1 -0
  166. package/dist/components/Timer/Timer.d.ts.map +1 -1
  167. package/dist/components/Timer/TimerDefaultVariant.cjs +2 -0
  168. package/dist/components/Timer/TimerDefaultVariant.cjs.map +1 -0
  169. package/dist/components/Timer/TimerDefaultVariant.js +136 -0
  170. package/dist/components/Timer/TimerDefaultVariant.js.map +1 -0
  171. package/dist/components/Timer/TimerSmallVariant.cjs +2 -0
  172. package/dist/components/Timer/TimerSmallVariant.cjs.map +1 -0
  173. package/dist/components/Timer/TimerSmallVariant.js +128 -0
  174. package/dist/components/Timer/TimerSmallVariant.js.map +1 -0
  175. package/dist/components/Timer/index.cjs +2 -0
  176. package/dist/components/Timer/index.cjs.map +1 -0
  177. package/dist/components/Timer/index.d.ts +1 -0
  178. package/dist/components/Timer/index.d.ts.map +1 -1
  179. package/dist/components/Timer/index.js +68 -0
  180. package/dist/components/Timer/index.js.map +1 -0
  181. package/dist/components/Timer/useTimerAnimations.cjs +2 -0
  182. package/dist/components/Timer/useTimerAnimations.cjs.map +1 -0
  183. package/dist/components/Timer/useTimerAnimations.js +48 -0
  184. package/dist/components/Timer/useTimerAnimations.js.map +1 -0
  185. package/dist/components/Timer/useTimerLogic.cjs +2 -0
  186. package/dist/components/Timer/useTimerLogic.cjs.map +1 -0
  187. package/dist/components/Timer/useTimerLogic.js +113 -0
  188. package/dist/components/Timer/useTimerLogic.js.map +1 -0
  189. package/dist/components/Timer/utils.cjs +2 -0
  190. package/dist/components/Timer/utils.cjs.map +1 -0
  191. package/dist/components/Timer/utils.js +19 -0
  192. package/dist/components/Timer/utils.js.map +1 -0
  193. package/dist/components/Timer.cjs +2 -0
  194. package/dist/components/Timer.cjs.map +1 -0
  195. package/dist/components/Timer.d.ts +4 -0
  196. package/dist/components/Timer.d.ts.map +1 -0
  197. package/dist/components/Timer.js +6 -0
  198. package/dist/components/Timer.js.map +1 -0
  199. package/dist/components/TransparentOverlay.d.ts +1 -0
  200. package/dist/components/TransparentOverlay.d.ts.map +1 -1
  201. package/dist/components/VelocitySlider.cjs +2 -0
  202. package/dist/components/VelocitySlider.cjs.map +1 -0
  203. package/dist/components/VelocitySlider.d.ts +1 -1
  204. package/dist/components/VelocitySlider.d.ts.map +1 -1
  205. package/dist/components/VelocitySlider.js +97 -0
  206. package/dist/components/VelocitySlider.js.map +1 -0
  207. package/dist/components/experimental/utils/AdornedSelect.cjs +2 -0
  208. package/dist/components/experimental/utils/AdornedSelect.cjs.map +1 -0
  209. package/dist/components/experimental/utils/AdornedSelect.js +35 -0
  210. package/dist/components/experimental/utils/AdornedSelect.js.map +1 -0
  211. package/dist/components/jogging/JoggingBlocked.cjs +2 -0
  212. package/dist/components/jogging/JoggingBlocked.cjs.map +1 -0
  213. package/dist/components/jogging/JoggingBlocked.js +46 -0
  214. package/dist/components/jogging/JoggingBlocked.js.map +1 -0
  215. package/dist/components/jogging/JoggingCartesianAxisControl.cjs +2 -0
  216. package/dist/components/jogging/JoggingCartesianAxisControl.cjs.map +1 -0
  217. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts +1 -1
  218. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +1 -1
  219. package/dist/components/jogging/JoggingCartesianAxisControl.js +186 -0
  220. package/dist/components/jogging/JoggingCartesianAxisControl.js.map +1 -0
  221. package/dist/components/jogging/JoggingCartesianTab.cjs +2 -0
  222. package/dist/components/jogging/JoggingCartesianTab.cjs.map +1 -0
  223. package/dist/components/jogging/JoggingCartesianTab.js +267 -0
  224. package/dist/components/jogging/JoggingCartesianTab.js.map +1 -0
  225. package/dist/components/jogging/JoggingJointLimitDetector.cjs +2 -0
  226. package/dist/components/jogging/JoggingJointLimitDetector.cjs.map +1 -0
  227. package/dist/components/jogging/JoggingJointLimitDetector.js +42 -0
  228. package/dist/components/jogging/JoggingJointLimitDetector.js.map +1 -0
  229. package/dist/components/jogging/JoggingJointTab.cjs +2 -0
  230. package/dist/components/jogging/JoggingJointTab.cjs.map +1 -0
  231. package/dist/components/jogging/JoggingJointTab.js +114 -0
  232. package/dist/components/jogging/JoggingJointTab.js.map +1 -0
  233. package/dist/components/jogging/JoggingJointValueControl.cjs +2 -0
  234. package/dist/components/jogging/JoggingJointValueControl.cjs.map +1 -0
  235. package/dist/components/jogging/JoggingJointValueControl.d.ts +1 -1
  236. package/dist/components/jogging/JoggingJointValueControl.d.ts.map +1 -1
  237. package/dist/components/jogging/JoggingJointValueControl.js +240 -0
  238. package/dist/components/jogging/JoggingJointValueControl.js.map +1 -0
  239. package/dist/components/jogging/JoggingOptions.cjs +2 -0
  240. package/dist/components/jogging/JoggingOptions.cjs.map +1 -0
  241. package/dist/components/jogging/JoggingOptions.js +117 -0
  242. package/dist/components/jogging/JoggingOptions.js.map +1 -0
  243. package/dist/components/jogging/JoggingPanel.cjs +2 -0
  244. package/dist/components/jogging/JoggingPanel.cjs.map +1 -0
  245. package/dist/components/jogging/JoggingPanel.d.ts +1 -0
  246. package/dist/components/jogging/JoggingPanel.d.ts.map +1 -1
  247. package/dist/components/jogging/JoggingPanel.js +121 -0
  248. package/dist/components/jogging/JoggingPanel.js.map +1 -0
  249. package/dist/components/jogging/JoggingStore.cjs +2 -0
  250. package/dist/components/jogging/JoggingStore.cjs.map +1 -0
  251. package/dist/components/jogging/JoggingStore.d.ts +1 -1
  252. package/dist/components/jogging/JoggingStore.d.ts.map +1 -1
  253. package/dist/components/jogging/JoggingStore.js +219 -0
  254. package/dist/components/jogging/JoggingStore.js.map +1 -0
  255. package/dist/components/jogging/JoggingToggleButtonGroup.cjs +2 -0
  256. package/dist/components/jogging/JoggingToggleButtonGroup.cjs.map +1 -0
  257. package/dist/components/jogging/JoggingToggleButtonGroup.js +29 -0
  258. package/dist/components/jogging/JoggingToggleButtonGroup.js.map +1 -0
  259. package/dist/components/jogging/JoggingVelocitySlider.cjs +2 -0
  260. package/dist/components/jogging/JoggingVelocitySlider.cjs.map +1 -0
  261. package/dist/components/jogging/JoggingVelocitySlider.js +40 -0
  262. package/dist/components/jogging/JoggingVelocitySlider.js.map +1 -0
  263. package/dist/components/jogging/PoseCartesianValues.cjs +2 -0
  264. package/dist/components/jogging/PoseCartesianValues.cjs.map +1 -0
  265. package/dist/components/jogging/PoseCartesianValues.d.ts +1 -0
  266. package/dist/components/jogging/PoseCartesianValues.d.ts.map +1 -1
  267. package/dist/components/jogging/PoseCartesianValues.js +48 -0
  268. package/dist/components/jogging/PoseCartesianValues.js.map +1 -0
  269. package/dist/components/jogging/PoseJointValues.cjs +2 -0
  270. package/dist/components/jogging/PoseJointValues.cjs.map +1 -0
  271. package/dist/components/jogging/PoseJointValues.d.ts +1 -0
  272. package/dist/components/jogging/PoseJointValues.d.ts.map +1 -1
  273. package/dist/components/jogging/PoseJointValues.js +47 -0
  274. package/dist/components/jogging/PoseJointValues.js.map +1 -0
  275. package/dist/components/modal/NoMotionGroupModal.cjs +2 -0
  276. package/dist/components/modal/NoMotionGroupModal.cjs.map +1 -0
  277. package/dist/components/modal/NoMotionGroupModal.d.ts +1 -0
  278. package/dist/components/modal/NoMotionGroupModal.d.ts.map +1 -1
  279. package/dist/components/modal/NoMotionGroupModal.js +92 -0
  280. package/dist/components/modal/NoMotionGroupModal.js.map +1 -0
  281. package/dist/components/robots/AxisConfig.cjs +2 -0
  282. package/dist/components/robots/AxisConfig.cjs.map +1 -0
  283. package/dist/components/robots/AxisConfig.js +5 -0
  284. package/dist/components/robots/AxisConfig.js.map +1 -0
  285. package/dist/components/robots/DHLinearAxis.cjs +2 -0
  286. package/dist/components/robots/DHLinearAxis.cjs.map +1 -0
  287. package/dist/components/robots/DHLinearAxis.d.ts +1 -0
  288. package/dist/components/robots/DHLinearAxis.d.ts.map +1 -1
  289. package/dist/components/robots/DHLinearAxis.js +92 -0
  290. package/dist/components/robots/DHLinearAxis.js.map +1 -0
  291. package/dist/components/robots/DHRobot.cjs +2 -0
  292. package/dist/components/robots/DHRobot.cjs.map +1 -0
  293. package/dist/components/robots/DHRobot.d.ts +1 -0
  294. package/dist/components/robots/DHRobot.d.ts.map +1 -1
  295. package/dist/components/robots/DHRobot.js +94 -0
  296. package/dist/components/robots/DHRobot.js.map +1 -0
  297. package/dist/components/robots/GenericRobot.cjs +2 -0
  298. package/dist/components/robots/GenericRobot.cjs.map +1 -0
  299. package/dist/components/robots/GenericRobot.d.ts +1 -0
  300. package/dist/components/robots/GenericRobot.d.ts.map +1 -1
  301. package/dist/components/robots/GenericRobot.js +91 -0
  302. package/dist/components/robots/GenericRobot.js.map +1 -0
  303. package/dist/components/robots/LinearAxis.cjs +2 -0
  304. package/dist/components/robots/LinearAxis.cjs.map +1 -0
  305. package/dist/components/robots/LinearAxis.d.ts +1 -0
  306. package/dist/components/robots/LinearAxis.d.ts.map +1 -1
  307. package/dist/components/robots/LinearAxis.js +42 -0
  308. package/dist/components/robots/LinearAxis.js.map +1 -0
  309. package/dist/components/robots/LinearAxisAnimator.cjs +2 -0
  310. package/dist/components/robots/LinearAxisAnimator.cjs.map +1 -0
  311. package/dist/components/robots/LinearAxisAnimator.js +66 -0
  312. package/dist/components/robots/LinearAxisAnimator.js.map +1 -0
  313. package/dist/components/robots/MotionGroupVisualizer.cjs +2 -0
  314. package/dist/components/robots/MotionGroupVisualizer.cjs.map +1 -0
  315. package/dist/components/robots/MotionGroupVisualizer.d.ts +1 -0
  316. package/dist/components/robots/MotionGroupVisualizer.d.ts.map +1 -1
  317. package/dist/components/robots/MotionGroupVisualizer.js +21 -0
  318. package/dist/components/robots/MotionGroupVisualizer.js.map +1 -0
  319. package/dist/components/robots/Robot.cjs +2 -0
  320. package/dist/components/robots/Robot.cjs.map +1 -0
  321. package/dist/components/robots/Robot.d.ts +1 -0
  322. package/dist/components/robots/Robot.d.ts.map +1 -1
  323. package/dist/components/robots/Robot.js +31 -0
  324. package/dist/components/robots/Robot.js.map +1 -0
  325. package/dist/components/robots/RobotAnimator.cjs +2 -0
  326. package/dist/components/robots/RobotAnimator.cjs.map +1 -0
  327. package/dist/components/robots/RobotAnimator.js +66 -0
  328. package/dist/components/robots/RobotAnimator.js.map +1 -0
  329. package/dist/components/robots/SupportedLinearAxis.cjs +2 -0
  330. package/dist/components/robots/SupportedLinearAxis.cjs.map +1 -0
  331. package/dist/components/robots/SupportedLinearAxis.d.ts +1 -0
  332. package/dist/components/robots/SupportedLinearAxis.d.ts.map +1 -1
  333. package/dist/components/robots/SupportedLinearAxis.js +82 -0
  334. package/dist/components/robots/SupportedLinearAxis.js.map +1 -0
  335. package/dist/components/robots/SupportedRobot.cjs +2 -0
  336. package/dist/components/robots/SupportedRobot.cjs.map +1 -0
  337. package/dist/components/robots/SupportedRobot.d.ts +1 -0
  338. package/dist/components/robots/SupportedRobot.d.ts.map +1 -1
  339. package/dist/components/robots/SupportedRobot.js +82 -0
  340. package/dist/components/robots/SupportedRobot.js.map +1 -0
  341. package/dist/components/robots/ghostStyle.cjs +2 -0
  342. package/dist/components/robots/ghostStyle.cjs.map +1 -0
  343. package/dist/components/robots/ghostStyle.js +40 -0
  344. package/dist/components/robots/ghostStyle.js.map +1 -0
  345. package/dist/components/robots/manufacturerHomePositions.cjs +2 -0
  346. package/dist/components/robots/manufacturerHomePositions.cjs.map +1 -0
  347. package/dist/components/robots/manufacturerHomePositions.js +51 -0
  348. package/dist/components/robots/manufacturerHomePositions.js.map +1 -0
  349. package/dist/components/robots/robotModelLogic.cjs +2 -0
  350. package/dist/components/robots/robotModelLogic.cjs.map +1 -0
  351. package/dist/components/robots/robotModelLogic.js +61 -0
  352. package/dist/components/robots/robotModelLogic.js.map +1 -0
  353. package/dist/components/safetyBar/ControllerTypeIndicator.cjs +2 -0
  354. package/dist/components/safetyBar/ControllerTypeIndicator.cjs.map +1 -0
  355. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +1 -1
  356. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +1 -1
  357. package/dist/components/safetyBar/ControllerTypeIndicator.js +71 -0
  358. package/dist/components/safetyBar/ControllerTypeIndicator.js.map +1 -0
  359. package/dist/components/safetyBar/IndicatorWithExplanation.cjs +2 -0
  360. package/dist/components/safetyBar/IndicatorWithExplanation.cjs.map +1 -0
  361. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +1 -0
  362. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +1 -1
  363. package/dist/components/safetyBar/IndicatorWithExplanation.js +123 -0
  364. package/dist/components/safetyBar/IndicatorWithExplanation.js.map +1 -0
  365. package/dist/components/safetyBar/OperationModeIndicator.cjs +2 -0
  366. package/dist/components/safetyBar/OperationModeIndicator.cjs.map +1 -0
  367. package/dist/components/safetyBar/OperationModeIndicator.d.ts +1 -1
  368. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +1 -1
  369. package/dist/components/safetyBar/OperationModeIndicator.js +75 -0
  370. package/dist/components/safetyBar/OperationModeIndicator.js.map +1 -0
  371. package/dist/components/safetyBar/SafetyBar.cjs +2 -0
  372. package/dist/components/safetyBar/SafetyBar.cjs.map +1 -0
  373. package/dist/components/safetyBar/SafetyBar.d.ts +1 -0
  374. package/dist/components/safetyBar/SafetyBar.d.ts.map +1 -1
  375. package/dist/components/safetyBar/SafetyBar.js +66 -0
  376. package/dist/components/safetyBar/SafetyBar.js.map +1 -0
  377. package/dist/components/safetyBar/SafetyStateIndicator.cjs +2 -0
  378. package/dist/components/safetyBar/SafetyStateIndicator.cjs.map +1 -0
  379. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +1 -1
  380. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +1 -1
  381. package/dist/components/safetyBar/SafetyStateIndicator.js +126 -0
  382. package/dist/components/safetyBar/SafetyStateIndicator.js.map +1 -0
  383. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs +2 -0
  384. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs.map +1 -0
  385. package/dist/components/safetyBar/icons/controller-type-physical.svg.d.ts +3 -0
  386. package/dist/components/safetyBar/icons/controller-type-physical.svg.js +11 -0
  387. package/dist/components/safetyBar/icons/controller-type-physical.svg.js.map +1 -0
  388. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs +2 -0
  389. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs.map +1 -0
  390. package/dist/components/safetyBar/icons/controller-type-virtual.svg.d.ts +3 -0
  391. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js +11 -0
  392. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js.map +1 -0
  393. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs +2 -0
  394. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs.map +1 -0
  395. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.d.ts +3 -0
  396. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js +11 -0
  397. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js.map +1 -0
  398. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs +2 -0
  399. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs.map +1 -0
  400. package/dist/components/safetyBar/icons/operation-mode-error.svg.d.ts +3 -0
  401. package/dist/components/safetyBar/icons/operation-mode-error.svg.js +11 -0
  402. package/dist/components/safetyBar/icons/operation-mode-error.svg.js.map +1 -0
  403. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs +2 -0
  404. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs.map +1 -0
  405. package/dist/components/safetyBar/icons/operation-mode-manual.svg.d.ts +3 -0
  406. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js +11 -0
  407. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js.map +1 -0
  408. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs +2 -0
  409. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs.map +1 -0
  410. package/dist/components/safetyBar/icons/safety-state-error.svg.d.ts +3 -0
  411. package/dist/components/safetyBar/icons/safety-state-error.svg.js +11 -0
  412. package/dist/components/safetyBar/icons/safety-state-error.svg.js.map +1 -0
  413. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs +2 -0
  414. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs.map +1 -0
  415. package/dist/components/safetyBar/icons/safety-state-estop.svg.d.ts +3 -0
  416. package/dist/components/safetyBar/icons/safety-state-estop.svg.js +11 -0
  417. package/dist/components/safetyBar/icons/safety-state-estop.svg.js.map +1 -0
  418. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs +2 -0
  419. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs.map +1 -0
  420. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.d.ts +3 -0
  421. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js +11 -0
  422. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js.map +1 -0
  423. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs +2 -0
  424. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs.map +1 -0
  425. package/dist/components/safetyBar/icons/safety-state-normal.svg.d.ts +3 -0
  426. package/dist/components/safetyBar/icons/safety-state-normal.svg.js +11 -0
  427. package/dist/components/safetyBar/icons/safety-state-normal.svg.js.map +1 -0
  428. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs +2 -0
  429. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs.map +1 -0
  430. package/dist/components/safetyBar/icons/safety-state-stop.svg.d.ts +3 -0
  431. package/dist/components/safetyBar/icons/safety-state-stop.svg.js +11 -0
  432. package/dist/components/safetyBar/icons/safety-state-stop.svg.js.map +1 -0
  433. package/dist/components/utils/converters.cjs +2 -0
  434. package/dist/components/utils/converters.cjs.map +1 -0
  435. package/dist/components/utils/converters.js +40 -0
  436. package/dist/components/utils/converters.js.map +1 -0
  437. package/dist/components/utils/errorHandling.cjs +2 -0
  438. package/dist/components/utils/errorHandling.cjs.map +1 -0
  439. package/dist/components/utils/errorHandling.js +14 -0
  440. package/dist/components/utils/errorHandling.js.map +1 -0
  441. package/dist/components/utils/hooks.cjs +2 -0
  442. package/dist/components/utils/hooks.cjs.map +1 -0
  443. package/dist/components/utils/hooks.js +29 -0
  444. package/dist/components/utils/hooks.js.map +1 -0
  445. package/dist/components/utils/interpolation.cjs +2 -0
  446. package/dist/components/utils/interpolation.cjs.map +1 -0
  447. package/dist/components/utils/interpolation.js +138 -0
  448. package/dist/components/utils/interpolation.js.map +1 -0
  449. package/dist/core.cjs +2 -0
  450. package/dist/core.cjs.map +1 -0
  451. package/dist/core.js +81 -0
  452. package/dist/core.js.map +1 -0
  453. package/dist/externalizeComponent.cjs +2 -0
  454. package/dist/externalizeComponent.cjs.map +1 -0
  455. package/dist/externalizeComponent.js +13 -0
  456. package/dist/externalizeComponent.js.map +1 -0
  457. package/dist/i18n/config.cjs +2 -0
  458. package/dist/i18n/config.cjs.map +1 -0
  459. package/dist/i18n/config.js +25 -0
  460. package/dist/i18n/config.js.map +1 -0
  461. package/dist/i18n/locales/de/translations.json.cjs +3 -0
  462. package/dist/i18n/locales/de/translations.json.cjs.map +1 -0
  463. package/dist/i18n/locales/de/translations.json.js +94 -0
  464. package/dist/i18n/locales/de/translations.json.js.map +1 -0
  465. package/dist/i18n/locales/en/translations.json.cjs +2 -0
  466. package/dist/i18n/locales/en/translations.json.cjs.map +1 -0
  467. package/dist/i18n/locales/en/translations.json.js +94 -0
  468. package/dist/i18n/locales/en/translations.json.js.map +1 -0
  469. package/dist/icons/DropdownArrowIcon.cjs +2 -0
  470. package/dist/icons/DropdownArrowIcon.cjs.map +1 -0
  471. package/dist/icons/DropdownArrowIcon.js +14 -0
  472. package/dist/icons/DropdownArrowIcon.js.map +1 -0
  473. package/dist/icons/axis-x.svg.cjs +2 -0
  474. package/dist/icons/axis-x.svg.cjs.map +1 -0
  475. package/dist/icons/axis-x.svg.d.ts +3 -0
  476. package/dist/icons/axis-x.svg.js +11 -0
  477. package/dist/icons/axis-x.svg.js.map +1 -0
  478. package/dist/icons/axis-y.svg.cjs +2 -0
  479. package/dist/icons/axis-y.svg.cjs.map +1 -0
  480. package/dist/icons/axis-y.svg.d.ts +3 -0
  481. package/dist/icons/axis-y.svg.js +11 -0
  482. package/dist/icons/axis-y.svg.js.map +1 -0
  483. package/dist/icons/axis-z.svg.cjs +2 -0
  484. package/dist/icons/axis-z.svg.cjs.map +1 -0
  485. package/dist/icons/axis-z.svg.d.ts +3 -0
  486. package/dist/icons/axis-z.svg.js +11 -0
  487. package/dist/icons/axis-z.svg.js.map +1 -0
  488. package/dist/icons/home.svg.cjs +2 -0
  489. package/dist/icons/home.svg.cjs.map +1 -0
  490. package/dist/icons/home.svg.d.ts +3 -0
  491. package/dist/icons/home.svg.js +11 -0
  492. package/dist/icons/home.svg.js.map +1 -0
  493. package/dist/icons/jog-minus.svg.cjs +2 -0
  494. package/dist/icons/jog-minus.svg.cjs.map +1 -0
  495. package/dist/icons/jog-minus.svg.d.ts +3 -0
  496. package/dist/icons/jog-minus.svg.js +11 -0
  497. package/dist/icons/jog-minus.svg.js.map +1 -0
  498. package/dist/icons/jog-plus.svg.cjs +2 -0
  499. package/dist/icons/jog-plus.svg.cjs.map +1 -0
  500. package/dist/icons/jog-plus.svg.d.ts +3 -0
  501. package/dist/icons/jog-plus.svg.js +11 -0
  502. package/dist/icons/jog-plus.svg.js.map +1 -0
  503. package/dist/icons/jogging.svg.cjs +2 -0
  504. package/dist/icons/jogging.svg.cjs.map +1 -0
  505. package/dist/icons/jogging.svg.d.ts +3 -0
  506. package/dist/icons/jogging.svg.js +11 -0
  507. package/dist/icons/jogging.svg.js.map +1 -0
  508. package/dist/icons/orientation-coord-system.svg.cjs +2 -0
  509. package/dist/icons/orientation-coord-system.svg.cjs.map +1 -0
  510. package/dist/icons/orientation-coord-system.svg.d.ts +3 -0
  511. package/dist/icons/orientation-coord-system.svg.js +11 -0
  512. package/dist/icons/orientation-coord-system.svg.js.map +1 -0
  513. package/dist/icons/orientation-tool.svg.cjs +2 -0
  514. package/dist/icons/orientation-tool.svg.cjs.map +1 -0
  515. package/dist/icons/orientation-tool.svg.d.ts +3 -0
  516. package/dist/icons/orientation-tool.svg.js +11 -0
  517. package/dist/icons/orientation-tool.svg.js.map +1 -0
  518. package/dist/icons/robot.svg.cjs +2 -0
  519. package/dist/icons/robot.svg.cjs.map +1 -0
  520. package/dist/icons/robot.svg.d.ts +3 -0
  521. package/dist/icons/robot.svg.js +11 -0
  522. package/dist/icons/robot.svg.js.map +1 -0
  523. package/dist/icons/rotation.svg.cjs +2 -0
  524. package/dist/icons/rotation.svg.cjs.map +1 -0
  525. package/dist/icons/rotation.svg.d.ts +3 -0
  526. package/dist/icons/rotation.svg.js +11 -0
  527. package/dist/icons/rotation.svg.js.map +1 -0
  528. package/dist/icons/wbLogo.svg.cjs +2 -0
  529. package/dist/icons/wbLogo.svg.cjs.map +1 -0
  530. package/dist/icons/wbLogo.svg.d.ts +3 -0
  531. package/dist/icons/wbLogo.svg.js +11 -0
  532. package/dist/icons/wbLogo.svg.js.map +1 -0
  533. package/dist/index.cjs +2 -0
  534. package/dist/index.cjs.map +1 -0
  535. package/dist/index.js +153 -0
  536. package/dist/index.js.map +1 -0
  537. package/dist/lib/ConnectedMotionGroup.cjs +4 -0
  538. package/dist/lib/ConnectedMotionGroup.cjs.map +1 -0
  539. package/dist/lib/ConnectedMotionGroup.d.ts +1 -0
  540. package/dist/lib/ConnectedMotionGroup.d.ts.map +1 -1
  541. package/dist/lib/ConnectedMotionGroup.js +250 -0
  542. package/dist/lib/ConnectedMotionGroup.js.map +1 -0
  543. package/dist/lib/JoggerConnection.cjs +2 -0
  544. package/dist/lib/JoggerConnection.cjs.map +1 -0
  545. package/dist/lib/JoggerConnection.d.ts +1 -0
  546. package/dist/lib/JoggerConnection.d.ts.map +1 -1
  547. package/dist/lib/JoggerConnection.js +342 -0
  548. package/dist/lib/JoggerConnection.js.map +1 -0
  549. package/dist/lib/MotionStreamConnection.cjs +3 -0
  550. package/dist/lib/MotionStreamConnection.cjs.map +1 -0
  551. package/dist/lib/MotionStreamConnection.d.ts +1 -0
  552. package/dist/lib/MotionStreamConnection.d.ts.map +1 -1
  553. package/dist/lib/MotionStreamConnection.js +94 -0
  554. package/dist/lib/MotionStreamConnection.js.map +1 -0
  555. package/dist/lib/motionStateUpdate.cjs +2 -0
  556. package/dist/lib/motionStateUpdate.cjs.map +1 -0
  557. package/dist/lib/motionStateUpdate.js +49 -0
  558. package/dist/lib/motionStateUpdate.js.map +1 -0
  559. package/dist/test/consumer.test.d.ts +2 -0
  560. package/dist/test/consumer.test.d.ts.map +1 -0
  561. package/dist/themes/createDarkTheme.cjs +2 -0
  562. package/dist/themes/createDarkTheme.cjs.map +1 -0
  563. package/dist/themes/createDarkTheme.js +344 -0
  564. package/dist/themes/createDarkTheme.js.map +1 -0
  565. package/dist/themes/createLightTheme.cjs +2 -0
  566. package/dist/themes/createLightTheme.cjs.map +1 -0
  567. package/dist/themes/createLightTheme.js +9 -0
  568. package/dist/themes/createLightTheme.js.map +1 -0
  569. package/dist/themes/theming.cjs +2 -0
  570. package/dist/themes/theming.cjs.map +1 -0
  571. package/dist/themes/theming.js +14 -0
  572. package/dist/themes/theming.js.map +1 -0
  573. package/dist/wb-icons.cjs +2 -0
  574. package/dist/wb-icons.cjs.map +1 -0
  575. package/dist/wb-icons.js +47 -0
  576. package/dist/wb-icons.js.map +1 -0
  577. package/package.json +20 -9
  578. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +2 -0
  579. package/src/components/3d-viewport/PresetEnvironment.tsx +2 -0
  580. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +2 -0
  581. package/src/components/3d-viewport/TrajectoryRenderer.tsx +2 -0
  582. package/src/components/AppHeader.tsx +2 -0
  583. package/src/components/CopyableText.tsx +2 -0
  584. package/src/components/CycleTimer/CycleTimer.ts +2 -0
  585. package/src/components/CycleTimer/index.tsx +2 -0
  586. package/src/components/CycleTimer.tsx +2 -0
  587. package/src/components/DataGrid.tsx +2 -0
  588. package/src/components/LoadingCover.tsx +2 -0
  589. package/src/components/LogPanel.tsx +2 -0
  590. package/src/components/LogStore.ts +2 -0
  591. package/src/components/LogViewer.tsx +2 -0
  592. package/src/components/ProgramControl.tsx +2 -0
  593. package/src/components/ProgramStateIndicator.tsx +2 -0
  594. package/src/components/RobotCard.tsx +2 -0
  595. package/src/components/RobotListItem.tsx +2 -0
  596. package/src/components/RobotSetupReadinessIndicator.tsx +2 -0
  597. package/src/components/SelectableFab.tsx +2 -0
  598. package/src/components/TabBar.tsx +2 -0
  599. package/src/components/ThemeSelect.tsx +2 -0
  600. package/src/components/Timer/Timer.ts +2 -0
  601. package/src/components/Timer/index.tsx +2 -0
  602. package/src/components/Timer.ts +4 -0
  603. package/src/components/TransparentOverlay.tsx +2 -0
  604. package/src/components/VelocitySlider.tsx +2 -0
  605. package/src/components/jogging/JoggingCartesianAxisControl.tsx +2 -0
  606. package/src/components/jogging/JoggingJointValueControl.tsx +2 -0
  607. package/src/components/jogging/JoggingPanel.tsx +2 -0
  608. package/src/components/jogging/JoggingStore.ts +2 -0
  609. package/src/components/jogging/PoseCartesianValues.tsx +2 -0
  610. package/src/components/jogging/PoseJointValues.tsx +2 -0
  611. package/src/components/modal/NoMotionGroupModal.tsx +2 -0
  612. package/src/components/robots/DHLinearAxis.tsx +2 -0
  613. package/src/components/robots/DHRobot.tsx +2 -0
  614. package/src/components/robots/GenericRobot.tsx +2 -0
  615. package/src/components/robots/LinearAxis.tsx +2 -0
  616. package/src/components/robots/MotionGroupVisualizer.tsx +2 -0
  617. package/src/components/robots/Robot.tsx +2 -0
  618. package/src/components/robots/SupportedLinearAxis.tsx +2 -0
  619. package/src/components/robots/SupportedRobot.tsx +2 -0
  620. package/src/components/safetyBar/ControllerTypeIndicator.tsx +2 -0
  621. package/src/components/safetyBar/IndicatorWithExplanation.tsx +2 -0
  622. package/src/components/safetyBar/OperationModeIndicator.tsx +2 -0
  623. package/src/components/safetyBar/SafetyBar.tsx +2 -0
  624. package/src/components/safetyBar/SafetyStateIndicator.tsx +2 -0
  625. package/src/lib/ConnectedMotionGroup.ts +2 -0
  626. package/src/lib/JoggerConnection.ts +2 -0
  627. package/src/lib/MotionStreamConnection.ts +2 -0
  628. package/src/test/consumer.test.ts +230 -0
  629. package/dist/3d.cjs.js +0 -2
  630. package/dist/3d.cjs.js.map +0 -1
  631. package/dist/3d.es.js +0 -19
  632. package/dist/3d.es.js.map +0 -1
  633. package/dist/MotionGroupVisualizer-B-e22qXF.cjs +0 -2
  634. package/dist/MotionGroupVisualizer-B-e22qXF.cjs.map +0 -1
  635. package/dist/MotionGroupVisualizer-CIASsBC6.js +0 -1433
  636. package/dist/MotionGroupVisualizer-CIASsBC6.js.map +0 -1
  637. package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs +0 -5
  638. package/dist/auth0-spa-js.production.esm-CVEdrQ4-.cjs.map +0 -1
  639. package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js +0 -4217
  640. package/dist/auth0-spa-js.production.esm-Cr9w0sUa.js.map +0 -1
  641. package/dist/core.cjs.js +0 -2
  642. package/dist/core.cjs.js.map +0 -1
  643. package/dist/core.es.js +0 -52
  644. package/dist/core.es.js.map +0 -1
  645. package/dist/index.cjs.js +0 -2
  646. package/dist/index.cjs.js.map +0 -1
  647. package/dist/index.es.js +0 -92
  648. package/dist/index.es.js.map +0 -1
  649. package/dist/interpolation-BIB6FC35.cjs +0 -198
  650. package/dist/interpolation-BIB6FC35.cjs.map +0 -1
  651. package/dist/interpolation-lSTX6ZXZ.js +0 -14559
  652. package/dist/interpolation-lSTX6ZXZ.js.map +0 -1
  653. package/dist/safety-state-stop-ClWLVLMl.cjs +0 -2
  654. package/dist/safety-state-stop-ClWLVLMl.cjs.map +0 -1
  655. package/dist/safety-state-stop-DuMBCxN5.js +0 -91
  656. package/dist/safety-state-stop-DuMBCxN5.js.map +0 -1
  657. package/dist/theming-D_pShDEg.js +0 -32236
  658. package/dist/theming-D_pShDEg.js.map +0 -1
  659. package/dist/theming-L5E8VSae.cjs +0 -84
  660. package/dist/theming-L5E8VSae.cjs.map +0 -1
  661. package/dist/wb-icons.cjs.js +0 -2
  662. package/dist/wb-icons.cjs.js.map +0 -1
  663. package/dist/wb-icons.es.js +0 -27
  664. package/dist/wb-icons.es.js.map +0 -1
  665. package/dist/wbLogo-CObCmqTw.js +0 -31
  666. package/dist/wbLogo-CObCmqTw.js.map +0 -1
  667. package/dist/wbLogo-G_IfZ03l.cjs +0 -2
  668. package/dist/wbLogo-G_IfZ03l.cjs.map +0 -1
@@ -0,0 +1,82 @@
1
+ import { jsx as o, jsxs as y } from "react/jsx-runtime";
2
+ import { useState as L, useCallback as R, useEffect as G, Suspense as h } from "react";
3
+ import { ErrorBoundary as k } from "react-error-boundary";
4
+ import { externalizeComponent as A } from "../../externalizeComponent.js";
5
+ import S from "../ConsoleFilter.js";
6
+ import { DHLinearAxis as j } from "./DHLinearAxis.js";
7
+ import { GenericRobot as w } from "./GenericRobot.js";
8
+ import B from "./LinearAxisAnimator.js";
9
+ import { applyGhostStyle as E, removeGhostStyle as U } from "./ghostStyle.js";
10
+ import { defaultGetModel as g } from "./robotModelLogic.js";
11
+ const K = A(
12
+ ({
13
+ rapidlyChangingMotionState: i,
14
+ modelFromController: l,
15
+ dhParameters: n,
16
+ getModel: f = g,
17
+ flangeRef: c,
18
+ postModelRender: p,
19
+ transparentColor: t,
20
+ instanceUrl: u,
21
+ ...m
22
+ }) => {
23
+ const [r, a] = L(null), b = R((e) => {
24
+ a(e);
25
+ }, []);
26
+ G(() => {
27
+ r && (t ? E(r, t) : U(r));
28
+ }, [r, t]);
29
+ const s = /* @__PURE__ */ o(
30
+ j,
31
+ {
32
+ rapidlyChangingMotionState: i,
33
+ dhParameters: n,
34
+ ...m
35
+ }
36
+ );
37
+ return /* @__PURE__ */ y(
38
+ k,
39
+ {
40
+ fallback: s,
41
+ onError: (e) => {
42
+ console.warn(e);
43
+ },
44
+ children: [
45
+ /* @__PURE__ */ o(h, { fallback: s, children: /* @__PURE__ */ o("group", { ref: b, children: /* @__PURE__ */ o(
46
+ B,
47
+ {
48
+ rapidlyChangingMotionState: i,
49
+ dhParameters: n,
50
+ children: /* @__PURE__ */ o(
51
+ w,
52
+ {
53
+ modelURL: (() => {
54
+ const e = f(l, u);
55
+ if (!e) {
56
+ const d = new Blob([], { type: "model/gltf-binary" }), x = new File(
57
+ [d],
58
+ `${l}.glb`,
59
+ { type: "model/gltf-binary" }
60
+ );
61
+ return Promise.resolve(URL.createObjectURL(x));
62
+ }
63
+ return e;
64
+ })(),
65
+ postModelRender: p,
66
+ flangeRef: c,
67
+ ...m
68
+ }
69
+ )
70
+ }
71
+ ) }) }),
72
+ /* @__PURE__ */ o(S, {})
73
+ ]
74
+ }
75
+ );
76
+ }
77
+ );
78
+ export {
79
+ K as SupportedLinearAxis,
80
+ K as default
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;"}
@@ -0,0 +1,2 @@
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"}
@@ -16,4 +16,5 @@ export type SupportedRobotProps = {
16
16
  transparentColor?: string;
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
+ export default SupportedRobot;
19
20
  //# sourceMappingURL=SupportedRobot.d.ts.map
@@ -1 +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"}
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"}
@@ -0,0 +1,82 @@
1
+ import { jsx as e, jsxs as y } from "react/jsx-runtime";
2
+ import { useState as G, useCallback as h, useEffect as k, Suspense as x } from "react";
3
+ import { DHRobot as S } from "./DHRobot.js";
4
+ import { ErrorBoundary as j } from "react-error-boundary";
5
+ import { externalizeComponent as w } from "../../externalizeComponent.js";
6
+ import B from "../ConsoleFilter.js";
7
+ import { GenericRobot as E } from "./GenericRobot.js";
8
+ import L from "./RobotAnimator.js";
9
+ import { applyGhostStyle as U, removeGhostStyle as g } from "./ghostStyle.js";
10
+ import { defaultGetModel as v } from "./robotModelLogic.js";
11
+ const K = w(
12
+ ({
13
+ rapidlyChangingMotionState: l,
14
+ modelFromController: m,
15
+ dhParameters: f,
16
+ getModel: s = v,
17
+ flangeRef: c,
18
+ postModelRender: b,
19
+ transparentColor: t,
20
+ instanceUrl: p,
21
+ ...i
22
+ }) => {
23
+ const [r, u] = G(null), d = h((o) => {
24
+ u(o);
25
+ }, []);
26
+ k(() => {
27
+ r && (t ? U(r, t) : g(r));
28
+ }, [r, t]);
29
+ const n = /* @__PURE__ */ e(
30
+ S,
31
+ {
32
+ rapidlyChangingMotionState: l,
33
+ dhParameters: f,
34
+ ...i
35
+ }
36
+ );
37
+ return /* @__PURE__ */ y(
38
+ j,
39
+ {
40
+ fallback: n,
41
+ onError: (o) => {
42
+ console.warn(o);
43
+ },
44
+ children: [
45
+ /* @__PURE__ */ e(x, { fallback: n, children: /* @__PURE__ */ e("group", { ref: d, children: /* @__PURE__ */ e(
46
+ L,
47
+ {
48
+ rapidlyChangingMotionState: l,
49
+ dhParameters: f,
50
+ children: /* @__PURE__ */ e(
51
+ E,
52
+ {
53
+ modelURL: (() => {
54
+ const o = s(m, p);
55
+ if (!o) {
56
+ const R = new Blob([], { type: "model/gltf-binary" }), a = new File(
57
+ [R],
58
+ `${m}.glb`,
59
+ { type: "model/gltf-binary" }
60
+ );
61
+ return Promise.resolve(URL.createObjectURL(a));
62
+ }
63
+ return o;
64
+ })(),
65
+ postModelRender: b,
66
+ flangeRef: c,
67
+ ...i
68
+ }
69
+ )
70
+ }
71
+ ) }) }),
72
+ /* @__PURE__ */ e(B, {})
73
+ ]
74
+ }
75
+ );
76
+ }
77
+ );
78
+ export {
79
+ K as SupportedRobot,
80
+ K as default
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;"}
@@ -0,0 +1,2 @@
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"}
@@ -0,0 +1,40 @@
1
+ import * as t from "three";
2
+ const n = (a, s) => {
3
+ a.userData.isGhost || (a.traverse((e) => {
4
+ if (e instanceof t.Mesh) {
5
+ e.material instanceof t.Material && (e.material.colorWrite = !1);
6
+ const r = e.clone(), i = e.clone();
7
+ r.material = new t.MeshStandardMaterial({
8
+ depthTest: !0,
9
+ depthWrite: !0,
10
+ colorWrite: !1,
11
+ polygonOffset: !0,
12
+ polygonOffsetFactor: -1,
13
+ side: t.DoubleSide
14
+ }), r.userData.isGhost = !0, i.material = new t.MeshStandardMaterial({
15
+ color: s,
16
+ opacity: 0.3,
17
+ depthTest: !0,
18
+ depthWrite: !1,
19
+ transparent: !0,
20
+ polygonOffset: !0,
21
+ polygonOffsetFactor: -2,
22
+ side: t.DoubleSide
23
+ }), i.userData.isGhost = !0, e.parent && (e.parent.add(r), e.parent.add(i));
24
+ }
25
+ }), a.userData.isGhost = !0);
26
+ }, l = (a) => {
27
+ if (!a.userData.isGhost) return;
28
+ const s = [];
29
+ a.traverse((e) => {
30
+ var r;
31
+ e instanceof t.Mesh && ((r = e.userData) != null && r.isGhost ? s.push(e) : e.material instanceof t.Material && (e.material.colorWrite = !0));
32
+ }), s.forEach((e) => {
33
+ e.parent && e.parent.remove(e);
34
+ }), a.userData.isGhost = !1;
35
+ };
36
+ export {
37
+ n as applyGhostStyle,
38
+ l as removeGhostStyle
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;"}
@@ -0,0 +1,2 @@
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"}
@@ -0,0 +1,51 @@
1
+ import { Manufacturer as t } from "@wandelbots/nova-js/v2";
2
+ const e = {
3
+ [t.Abb]: [0, 0, 0, 0, Math.PI / 2, 0, 0],
4
+ [t.Fanuc]: [0, 0, 0, 0, -Math.PI / 2, 0, 0],
5
+ [t.Yaskawa]: [0, 0, 0, 0, -Math.PI / 2, 0, 0],
6
+ [t.Kuka]: [
7
+ 0,
8
+ -Math.PI / 2,
9
+ Math.PI / 2,
10
+ 0,
11
+ Math.PI / 2,
12
+ 0,
13
+ 0
14
+ ],
15
+ [t.Universalrobots]: [
16
+ 0,
17
+ -Math.PI / 2,
18
+ -Math.PI / 2,
19
+ -Math.PI / 2,
20
+ Math.PI / 2,
21
+ -Math.PI / 2,
22
+ 0
23
+ ]
24
+ };
25
+ function u(a) {
26
+ const [r] = a.split("_");
27
+ switch (r) {
28
+ case "ABB":
29
+ return t.Abb;
30
+ case "FANUC":
31
+ return t.Fanuc;
32
+ case "YASKAWA":
33
+ return t.Yaskawa;
34
+ case "KUKA":
35
+ return t.Kuka;
36
+ case "UniversalRobots":
37
+ return t.Universalrobots;
38
+ default:
39
+ return null;
40
+ }
41
+ }
42
+ function s(a, r) {
43
+ const n = u(a);
44
+ return n && n in e ? e[n] : r || null;
45
+ }
46
+ export {
47
+ e as MANUFACTURER_HOME_CONFIGS,
48
+ u as extractManufacturer,
49
+ s as getDefaultHomeConfig
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;"}
@@ -0,0 +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,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"}
@@ -0,0 +1,61 @@
1
+ import { NovaClient as f } from "@wandelbots/nova-js/v2";
2
+ const a = /* @__PURE__ */ new Map();
3
+ async function h(n, i) {
4
+ if (a.has(n))
5
+ return a.get(n);
6
+ const e = (async () => {
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) => {
10
+ var s;
11
+ return (s = r.url) != null && s.includes("/glb") && (r.responseType = "blob"), r;
12
+ });
13
+ try {
14
+ const r = await t.api.motionGroupModels.getMotionGroupGlbModel(
15
+ n
16
+ );
17
+ return URL.createObjectURL(r);
18
+ } catch (r) {
19
+ throw console.error("Failed to fetch model:", r), r;
20
+ }
21
+ })();
22
+ return a.set(n, e), e;
23
+ }
24
+ function g(n) {
25
+ function i(e) {
26
+ return e.children.length === 0 ? [e] : [e, ...e.children.flatMap((o) => i(o))];
27
+ }
28
+ return i(n).filter((e) => l(e));
29
+ }
30
+ function p(n) {
31
+ return n.name.endsWith("_FLG");
32
+ }
33
+ function l(n) {
34
+ return /_J[0-9]+$/.test(n.name);
35
+ }
36
+ function m(n, i) {
37
+ let e;
38
+ function o(t) {
39
+ if (p(t)) {
40
+ if (e)
41
+ throw Error(
42
+ `Found multiple flange groups in robot model ${i}; first ${e.name} then ${t.name}. Only one _FLG group is allowed.`
43
+ );
44
+ e = t;
45
+ }
46
+ l(t), t.children.map(o);
47
+ }
48
+ if (o(n.scene), !e)
49
+ throw Error(
50
+ `No flange group found in robot model ${i}. Flange must be identified with a name ending in _FLG.`
51
+ );
52
+ return { gltf: n };
53
+ }
54
+ export {
55
+ g as collectJoints,
56
+ h as defaultGetModel,
57
+ p as isFlange,
58
+ l as isJoint,
59
+ m as parseRobotModel
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;"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControllerTypeIndicator.cjs","sources":["../../../src/components/safetyBar/ControllerTypeIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport type { PopoverOrigin } from \"@mui/material/Popover\"\nimport { observer } from \"mobx-react-lite\"\nimport { useId } from \"react\"\nimport { Trans, useTranslation } from \"react-i18next\"\nimport ControllerTypePhysicalIcon from \"./icons/controller-type-physical.svg\"\nimport ControllerTypeVirtualIcon from \"./icons/controller-type-virtual.svg\"\nimport { IndicatorWithExplanation } from \"./IndicatorWithExplanation\"\n\ninterface ControllerTypeIndicatorProps {\n isVirtual: boolean\n motionGroupId: string\n anchorOrigin?: PopoverOrigin\n transformOrigin?: PopoverOrigin\n compact: boolean\n}\n\nexport const ControllerTypeIndicator = observer(\n ({\n isVirtual,\n motionGroupId,\n anchorOrigin,\n transformOrigin,\n compact,\n }: ControllerTypeIndicatorProps) => {\n const theme = useTheme()\n const componentId = useId()\n const { t } = useTranslation()\n\n if (isVirtual) {\n return (\n <IndicatorWithExplanation\n id={`motion-group-virtual-${componentId}`}\n icon={ControllerTypeVirtualIcon}\n color={theme.palette.tertiary.main}\n name={t(\"SafetyBar.ControllerType.Virtual.lb\")}\n label={compact ? null : t(\"SafetyBar.ControllerType.Virtual.lb\")}\n explanation={\n <Trans\n i18nKey=\"SafetyBar.MotionGroup.Virtual.Explanation.lb\"\n values={{\n motionGroupId,\n }}\n >\n Motion group <code>{motionGroupId}</code> refers to a virtual\n robot with no physical counterpart. It can be freely manipulated\n without special safety precautions.\n </Trans>\n }\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n />\n )\n }\n\n return (\n <IndicatorWithExplanation\n id={`motion-group-physical-${componentId}`}\n icon={ControllerTypePhysicalIcon}\n color={theme.palette.primary.main}\n name={t(\"SafetyBar.ControllerType.Physical.lb\")}\n label={compact ? null : t(\"SafetyBar.ControllerType.Physical.lb\")}\n explanation={\n <Trans\n i18nKey=\"SafetyBar.MotionGroup.Physical.Explanation.lb\"\n values={{\n motionGroupId,\n }}\n components={{ code: <code />, strong: <strong /> }}\n />\n }\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n />\n )\n },\n)\n\nexport default ControllerTypeIndicator\n"],"names":["ControllerTypeIndicator","observer","isVirtual","motionGroupId","anchorOrigin","transformOrigin","compact","theme","useTheme","componentId","useId","useTranslation","jsx","IndicatorWithExplanation","ControllerTypeVirtualIcon","jsxs","Trans","ControllerTypePhysicalIcon"],"mappings":"qZAiBaA,EAA0BC,EAAAA,SACrC,CAAC,CACC,UAAAC,EACA,cAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,QAAAC,CAAA,IACkC,CAClC,MAAMC,EAAQC,EAAAA,SAAA,EACRC,EAAcC,EAAAA,MAAA,EACd,CAAE,CAAA,EAAMC,iBAAA,EAEd,OAAIT,EAEAU,EAAAA,IAACC,EAAAA,yBAAA,CACC,GAAI,wBAAwBJ,CAAW,GACvC,KAAMK,EAAAA,QACN,MAAOP,EAAM,QAAQ,SAAS,KAC9B,KAAM,EAAE,qCAAqC,EAC7C,MAAOD,EAAU,KAAO,EAAE,qCAAqC,EAC/D,YACES,EAAAA,KAACC,EAAAA,MAAA,CACC,QAAQ,+CACR,OAAQ,CACN,cAAAb,CAAA,EAEH,SAAA,CAAA,gBACcS,EAAAA,IAAC,QAAM,SAAAT,CAAA,CAAc,EAAO,2HAAA,CAAA,CAAA,EAK7C,aAAAC,EACA,gBAAAC,CAAA,CAAA,EAMJO,EAAAA,IAACC,EAAAA,yBAAA,CACC,GAAI,yBAAyBJ,CAAW,GACxC,KAAMQ,EAAAA,QACN,MAAOV,EAAM,QAAQ,QAAQ,KAC7B,KAAM,EAAE,sCAAsC,EAC9C,MAAOD,EAAU,KAAO,EAAE,sCAAsC,EAChE,YACEM,EAAAA,IAACI,EAAAA,MAAA,CACC,QAAQ,gDACR,OAAQ,CACN,cAAAb,CAAA,EAEF,WAAY,CAAE,KAAMS,EAAAA,IAAC,SAAK,EAAI,OAAQA,EAAAA,IAAC,SAAA,EAAO,CAAA,CAAG,CAAA,EAGrD,aAAAR,EACA,gBAAAC,CAAA,CAAA,CAGN,CACF"}
@@ -9,5 +9,5 @@ interface ControllerTypeIndicatorProps {
9
9
  export declare const ControllerTypeIndicator: (({ isVirtual, motionGroupId, anchorOrigin, transformOrigin, compact, }: ControllerTypeIndicatorProps) => import("react/jsx-runtime").JSX.Element) & {
10
10
  displayName: string;
11
11
  };
12
- export {};
12
+ export default ControllerTypeIndicator;
13
13
  //# sourceMappingURL=ControllerTypeIndicator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControllerTypeIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/safetyBar/ControllerTypeIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAQ1D,UAAU,4BAA4B;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,eAAe,CAAC,EAAE,aAAa,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,uBAAuB,2EAO/B,4BAA4B;;CAoDhC,CAAA"}
1
+ {"version":3,"file":"ControllerTypeIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/safetyBar/ControllerTypeIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAQ1D,UAAU,4BAA4B;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,eAAe,CAAC,EAAE,aAAa,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,uBAAuB,2EAO/B,4BAA4B;;CAoDhC,CAAA;AAED,eAAe,uBAAuB,CAAA"}
@@ -0,0 +1,71 @@
1
+ import { jsx as o, jsxs as c } from "react/jsx-runtime";
2
+ import { useTheme as u } from "@mui/material/styles";
3
+ import { observer as y } from "mobx-react-lite";
4
+ import { useId as f } from "react";
5
+ import { useTranslation as d, Trans as p } from "react-i18next";
6
+ import b from "./icons/controller-type-physical.svg.js";
7
+ import h from "./icons/controller-type-virtual.svg.js";
8
+ import { IndicatorWithExplanation as s } from "./IndicatorWithExplanation.js";
9
+ const E = y(
10
+ ({
11
+ isVirtual: m,
12
+ motionGroupId: t,
13
+ anchorOrigin: e,
14
+ transformOrigin: a,
15
+ compact: l
16
+ }) => {
17
+ const n = u(), i = f(), { t: r } = d();
18
+ return m ? /* @__PURE__ */ o(
19
+ s,
20
+ {
21
+ id: `motion-group-virtual-${i}`,
22
+ icon: h,
23
+ color: n.palette.tertiary.main,
24
+ name: r("SafetyBar.ControllerType.Virtual.lb"),
25
+ label: l ? null : r("SafetyBar.ControllerType.Virtual.lb"),
26
+ explanation: /* @__PURE__ */ c(
27
+ p,
28
+ {
29
+ i18nKey: "SafetyBar.MotionGroup.Virtual.Explanation.lb",
30
+ values: {
31
+ motionGroupId: t
32
+ },
33
+ children: [
34
+ "Motion group ",
35
+ /* @__PURE__ */ o("code", { children: t }),
36
+ " refers to a virtual robot with no physical counterpart. It can be freely manipulated without special safety precautions."
37
+ ]
38
+ }
39
+ ),
40
+ anchorOrigin: e,
41
+ transformOrigin: a
42
+ }
43
+ ) : /* @__PURE__ */ o(
44
+ s,
45
+ {
46
+ id: `motion-group-physical-${i}`,
47
+ icon: b,
48
+ color: n.palette.primary.main,
49
+ name: r("SafetyBar.ControllerType.Physical.lb"),
50
+ label: l ? null : r("SafetyBar.ControllerType.Physical.lb"),
51
+ explanation: /* @__PURE__ */ o(
52
+ p,
53
+ {
54
+ i18nKey: "SafetyBar.MotionGroup.Physical.Explanation.lb",
55
+ values: {
56
+ motionGroupId: t
57
+ },
58
+ components: { code: /* @__PURE__ */ o("code", {}), strong: /* @__PURE__ */ o("strong", {}) }
59
+ }
60
+ ),
61
+ anchorOrigin: e,
62
+ transformOrigin: a
63
+ }
64
+ );
65
+ }
66
+ );
67
+ export {
68
+ E as ControllerTypeIndicator,
69
+ E as default
70
+ };
71
+ //# sourceMappingURL=ControllerTypeIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControllerTypeIndicator.js","sources":["../../../src/components/safetyBar/ControllerTypeIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport type { PopoverOrigin } from \"@mui/material/Popover\"\nimport { observer } from \"mobx-react-lite\"\nimport { useId } from \"react\"\nimport { Trans, useTranslation } from \"react-i18next\"\nimport ControllerTypePhysicalIcon from \"./icons/controller-type-physical.svg\"\nimport ControllerTypeVirtualIcon from \"./icons/controller-type-virtual.svg\"\nimport { IndicatorWithExplanation } from \"./IndicatorWithExplanation\"\n\ninterface ControllerTypeIndicatorProps {\n isVirtual: boolean\n motionGroupId: string\n anchorOrigin?: PopoverOrigin\n transformOrigin?: PopoverOrigin\n compact: boolean\n}\n\nexport const ControllerTypeIndicator = observer(\n ({\n isVirtual,\n motionGroupId,\n anchorOrigin,\n transformOrigin,\n compact,\n }: ControllerTypeIndicatorProps) => {\n const theme = useTheme()\n const componentId = useId()\n const { t } = useTranslation()\n\n if (isVirtual) {\n return (\n <IndicatorWithExplanation\n id={`motion-group-virtual-${componentId}`}\n icon={ControllerTypeVirtualIcon}\n color={theme.palette.tertiary.main}\n name={t(\"SafetyBar.ControllerType.Virtual.lb\")}\n label={compact ? null : t(\"SafetyBar.ControllerType.Virtual.lb\")}\n explanation={\n <Trans\n i18nKey=\"SafetyBar.MotionGroup.Virtual.Explanation.lb\"\n values={{\n motionGroupId,\n }}\n >\n Motion group <code>{motionGroupId}</code> refers to a virtual\n robot with no physical counterpart. It can be freely manipulated\n without special safety precautions.\n </Trans>\n }\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n />\n )\n }\n\n return (\n <IndicatorWithExplanation\n id={`motion-group-physical-${componentId}`}\n icon={ControllerTypePhysicalIcon}\n color={theme.palette.primary.main}\n name={t(\"SafetyBar.ControllerType.Physical.lb\")}\n label={compact ? null : t(\"SafetyBar.ControllerType.Physical.lb\")}\n explanation={\n <Trans\n i18nKey=\"SafetyBar.MotionGroup.Physical.Explanation.lb\"\n values={{\n motionGroupId,\n }}\n components={{ code: <code />, strong: <strong /> }}\n />\n }\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n />\n )\n },\n)\n\nexport default ControllerTypeIndicator\n"],"names":["ControllerTypeIndicator","observer","isVirtual","motionGroupId","anchorOrigin","transformOrigin","compact","theme","useTheme","componentId","useId","t","useTranslation","jsx","IndicatorWithExplanation","ControllerTypeVirtualIcon","jsxs","Trans","ControllerTypePhysicalIcon"],"mappings":";;;;;;;;AAiBO,MAAMA,IAA0BC;AAAA,EACrC,CAAC;AAAA,IACC,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,MACkC;AAClC,UAAMC,IAAQC,EAAA,GACRC,IAAcC,EAAA,GACd,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,WAAIV,IAEA,gBAAAW;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAI,wBAAwBL,CAAW;AAAA,QACvC,MAAMM;AAAAA,QACN,OAAOR,EAAM,QAAQ,SAAS;AAAA,QAC9B,MAAMI,EAAE,qCAAqC;AAAA,QAC7C,OAAOL,IAAU,OAAOK,EAAE,qCAAqC;AAAA,QAC/D,aACE,gBAAAK;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,QAAQ;AAAA,cACN,eAAAd;AAAA,YAAA;AAAA,YAEH,UAAA;AAAA,cAAA;AAAA,cACc,gBAAAU,EAAC,UAAM,UAAAV,EAAA,CAAc;AAAA,cAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAK7C,cAAAC;AAAA,QACA,iBAAAC;AAAA,MAAA;AAAA,IAAA,IAMJ,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,IAAI,yBAAyBL,CAAW;AAAA,QACxC,MAAMS;AAAAA,QACN,OAAOX,EAAM,QAAQ,QAAQ;AAAA,QAC7B,MAAMI,EAAE,sCAAsC;AAAA,QAC9C,OAAOL,IAAU,OAAOK,EAAE,sCAAsC;AAAA,QAChE,aACE,gBAAAE;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,QAAQ;AAAA,cACN,eAAAd;AAAA,YAAA;AAAA,YAEF,YAAY,EAAE,MAAM,gBAAAU,EAAC,UAAK,GAAI,QAAQ,gBAAAA,EAAC,UAAA,EAAO,EAAA;AAAA,UAAG;AAAA,QAAA;AAAA,QAGrD,cAAAT;AAAA,QACA,iBAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),j=require("@mui/material/Popover"),a=require("@mui/material/Stack"),m=require("@mui/material/SvgIcon"),r=require("@mui/material/Typography"),p=require("mobx-react-lite"),l=p.observer(({id:t,icon:d,color:n,title:s,name:u,label:i,explanation:h,literalValue:c,anchorOrigin:x,transformOrigin:v})=>{const o=p.useLocalObservable(()=>({anchorEl:null,get isPopoverOpen(){return!!o.anchorEl},openPopover(g){o.anchorEl=g.currentTarget},closePopover(){o.anchorEl=null}}));return e.jsxs(e.Fragment,{children:[e.jsxs(a,{"aria-owns":o.isPopoverOpen?t:void 0,"aria-haspopup":"true",onMouseEnter:o.openPopover,onMouseLeave:o.closePopover,direction:"row",spacing:1,sx:{cursor:"pointer"},children:[e.jsx(m,{component:d,sx:{color:n}}),i&&e.jsx("div",{style:{color:n},children:i})]}),e.jsx(j,{id:t,sx:{pointerEvents:"none"},open:o.isPopoverOpen,anchorEl:o.anchorEl,anchorOrigin:x??{vertical:"bottom",horizontal:"left"},transformOrigin:v??{vertical:"top",horizontal:"left"},onClose:o.closePopover,disableRestoreFocus:!0,children:e.jsxs(a,{gap:"1rem",padding:2,maxWidth:"450px",sx:{wordWrap:"break-word"},children:[e.jsxs("div",{children:[s&&e.jsx(r,{component:"span",fontSize:"14px",children:`${s}: `}),e.jsx(r,{component:"span",color:n,fontWeight:"bold",fontSize:"14px",children:u})]}),e.jsx(r,{fontSize:"14px",children:h}),c&&e.jsx(r,{fontSize:"12px",children:c})]})})]})});exports.IndicatorWithExplanation=l;exports.default=l;
2
+ //# sourceMappingURL=IndicatorWithExplanation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndicatorWithExplanation.cjs","sources":["../../../src/components/safetyBar/IndicatorWithExplanation.tsx"],"sourcesContent":["import Popover, { type PopoverOrigin } from \"@mui/material/Popover\"\nimport Stack from \"@mui/material/Stack\"\nimport SvgIcon from \"@mui/material/SvgIcon\"\nimport Typography, { type TypographyProps } from \"@mui/material/Typography\"\nimport { observer, useLocalObservable } from \"mobx-react-lite\"\nimport type { ElementType, ReactNode } from \"react\"\n\nexport type IndicatorWithExplanationProps = {\n id: string\n icon: ElementType\n color: TypographyProps[\"color\"]\n title?: ReactNode\n name: ReactNode\n label?: ReactNode\n explanation: ReactNode\n literalValue?: string\n anchorOrigin?: PopoverOrigin\n transformOrigin?: PopoverOrigin\n}\n\nexport const IndicatorWithExplanation = observer(\n ({\n id,\n icon,\n color,\n title,\n name,\n label,\n explanation,\n literalValue,\n anchorOrigin,\n transformOrigin,\n }: IndicatorWithExplanationProps) => {\n const state = useLocalObservable(() => ({\n anchorEl: null as HTMLElement | null,\n\n get isPopoverOpen() {\n return !!state.anchorEl\n },\n\n openPopover(event: React.MouseEvent<HTMLElement>) {\n state.anchorEl = event.currentTarget\n },\n\n closePopover() {\n state.anchorEl = null\n },\n }))\n\n return (\n <>\n <Stack\n aria-owns={state.isPopoverOpen ? id : undefined}\n aria-haspopup=\"true\"\n onMouseEnter={state.openPopover}\n onMouseLeave={state.closePopover}\n direction=\"row\"\n spacing={1}\n sx={{\n cursor: \"pointer\",\n }}\n >\n <SvgIcon\n component={icon}\n sx={{\n color,\n }}\n />\n {label && (\n <div\n style={{\n color,\n }}\n >\n {label}\n </div>\n )}\n </Stack>\n <Popover\n id={id}\n sx={{\n pointerEvents: \"none\",\n }}\n open={state.isPopoverOpen}\n anchorEl={state.anchorEl}\n anchorOrigin={\n anchorOrigin ?? {\n vertical: \"bottom\",\n horizontal: \"left\",\n }\n }\n transformOrigin={\n transformOrigin ?? {\n vertical: \"top\",\n horizontal: \"left\",\n }\n }\n onClose={state.closePopover}\n disableRestoreFocus\n >\n <Stack\n gap=\"1rem\"\n padding={2}\n maxWidth=\"450px\"\n sx={{\n wordWrap: \"break-word\",\n }}\n >\n <div>\n {title && (\n <Typography component=\"span\" fontSize=\"14px\">\n {`${title}: `}\n </Typography>\n )}\n <Typography\n component=\"span\"\n color={color}\n fontWeight=\"bold\"\n fontSize=\"14px\"\n >\n {name}\n </Typography>\n </div>\n\n <Typography fontSize=\"14px\">{explanation}</Typography>\n\n {literalValue && (\n <Typography fontSize=\"12px\">{literalValue}</Typography>\n )}\n </Stack>\n </Popover>\n </>\n )\n },\n)\n\nexport default IndicatorWithExplanation\n"],"names":["IndicatorWithExplanation","observer","id","icon","color","title","name","label","explanation","literalValue","anchorOrigin","transformOrigin","state","useLocalObservable","event","jsxs","Fragment","Stack","jsx","SvgIcon","Popover","Typography"],"mappings":"2TAoBaA,EAA2BC,EAAAA,SACtC,CAAC,CACC,GAAAC,EACA,KAAAC,EACA,MAAAC,EACA,MAAAC,EACA,KAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,aAAAC,EACA,gBAAAC,CAAA,IACmC,CACnC,MAAMC,EAAQC,EAAAA,mBAAmB,KAAO,CACtC,SAAU,KAEV,IAAI,eAAgB,CAClB,MAAO,CAAC,CAACD,EAAM,QACjB,EAEA,YAAYE,EAAsC,CAChDF,EAAM,SAAWE,EAAM,aACzB,EAEA,cAAe,CACbF,EAAM,SAAW,IACnB,CAAA,EACA,EAEF,OACEG,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAD,EAAAA,KAACE,EAAA,CACC,YAAWL,EAAM,cAAgBV,EAAK,OACtC,gBAAc,OACd,aAAcU,EAAM,YACpB,aAAcA,EAAM,aACpB,UAAU,MACV,QAAS,EACT,GAAI,CACF,OAAQ,SAAA,EAGV,SAAA,CAAAM,EAAAA,IAACC,EAAA,CACC,UAAWhB,EACX,GAAI,CACF,MAAAC,CAAA,CACF,CAAA,EAEDG,GACCW,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAAd,CAAA,EAGD,SAAAG,CAAA,CAAA,CACH,CAAA,CAAA,EAGJW,EAAAA,IAACE,EAAA,CACC,GAAAlB,EACA,GAAI,CACF,cAAe,MAAA,EAEjB,KAAMU,EAAM,cACZ,SAAUA,EAAM,SAChB,aACEF,GAAgB,CACd,SAAU,SACV,WAAY,MAAA,EAGhB,gBACEC,GAAmB,CACjB,SAAU,MACV,WAAY,MAAA,EAGhB,QAASC,EAAM,aACf,oBAAmB,GAEnB,SAAAG,EAAAA,KAACE,EAAA,CACC,IAAI,OACJ,QAAS,EACT,SAAS,QACT,GAAI,CACF,SAAU,YAAA,EAGZ,SAAA,CAAAF,OAAC,MAAA,CACE,SAAA,CAAAV,GACCa,EAAAA,IAACG,GAAW,UAAU,OAAO,SAAS,OACnC,SAAA,GAAGhB,CAAK,IAAA,CACX,EAEFa,EAAAA,IAACG,EAAA,CACC,UAAU,OACV,MAAAjB,EACA,WAAW,OACX,SAAS,OAER,SAAAE,CAAA,CAAA,CACH,EACF,EAEAY,EAAAA,IAACG,EAAA,CAAW,SAAS,OAAQ,SAAAb,EAAY,EAExCC,GACCS,EAAAA,IAACG,EAAA,CAAW,SAAS,OAAQ,SAAAZ,CAAA,CAAa,CAAA,CAAA,CAAA,CAE9C,CAAA,CACF,EACF,CAEJ,CACF"}