@wandelbots/wandelbots-js-react-components 5.5.0 → 5.5.1-pr.fix-standardize-output.591.0e6ee47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (874) hide show
  1. package/dist/3d.cjs +1 -2
  2. package/dist/3d.d.ts +0 -1
  3. package/dist/3d.js +0 -1
  4. package/dist/Setup.d.ts +0 -1
  5. package/dist/chunks/JoggingPanel-CQH_oXTB.js +586 -0
  6. package/dist/chunks/JoggingPanel-DZN2Y39k.cjs +2 -0
  7. package/dist/chunks/controller-type-virtual-BuJWQOvV.cjs +1 -0
  8. package/dist/{components/safetyBar/icons/controller-type-physical.svg.js → chunks/controller-type-virtual-CWOoMRfl.js} +10 -6
  9. package/dist/chunks/externalizeComponent-DOwkaDcw.cjs +2 -0
  10. package/dist/chunks/externalizeComponent-eiCc5DIh.js +209 -0
  11. package/dist/chunks/jog-plus-CAUurv4S.js +15 -0
  12. package/dist/chunks/jog-plus-Dy1r7-r5.cjs +1 -0
  13. package/dist/chunks/operation-mode-manual-Di4Z1KM1.js +20 -0
  14. package/dist/chunks/operation-mode-manual-eHwVILeI.cjs +1 -0
  15. package/dist/chunks/robot-CrNbCELh.cjs +1 -0
  16. package/dist/{icons/robot.svg.js → chunks/robot-D97QEl_l.js} +2 -3
  17. package/dist/chunks/rotation-CIOAnn9q.cjs +1 -0
  18. package/dist/chunks/rotation-Dm5YL3NM.js +25 -0
  19. package/dist/chunks/safety-state-stop-Bg0VUsM4.js +30 -0
  20. package/dist/chunks/safety-state-stop-CNxVYiap.cjs +1 -0
  21. package/dist/chunks/theming-Chx_tewl.cjs +3 -0
  22. package/dist/chunks/theming-Cw6qwBM7.js +600 -0
  23. package/dist/chunks/wbLogo-CObCmqTw.js +30 -0
  24. package/dist/chunks/wbLogo-G_IfZ03l.cjs +1 -0
  25. package/dist/components/3d-viewport/CoordinateSystemTransform.cjs +1 -0
  26. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +0 -1
  27. package/dist/components/3d-viewport/CoordinateSystemTransform.js +37 -0
  28. package/dist/components/3d-viewport/PresetEnvironment.cjs +0 -1
  29. package/dist/components/3d-viewport/PresetEnvironment.d.ts +0 -1
  30. package/dist/components/3d-viewport/PresetEnvironment.js +0 -1
  31. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs +1 -2
  32. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -1
  33. package/dist/components/3d-viewport/SafetyZonesRenderer.js +0 -1
  34. package/dist/components/3d-viewport/TrajectoryRenderer.cjs +0 -1
  35. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +0 -1
  36. package/dist/components/3d-viewport/TrajectoryRenderer.js +0 -1
  37. package/dist/components/3d-viewport/collider/ColliderCollection.cjs +1 -2
  38. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +0 -1
  39. package/dist/components/3d-viewport/collider/ColliderCollection.js +0 -1
  40. package/dist/components/3d-viewport/collider/ColliderElement.cjs +1 -2
  41. package/dist/components/3d-viewport/collider/ColliderElement.d.ts +0 -1
  42. package/dist/components/3d-viewport/collider/ColliderElement.js +0 -1
  43. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs +1 -2
  44. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +0 -1
  45. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js +0 -1
  46. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs +0 -1
  47. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +0 -1
  48. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js +0 -1
  49. package/dist/components/AppHeader.cjs +1 -2
  50. package/dist/components/AppHeader.d.ts +0 -1
  51. package/dist/components/AppHeader.js +40 -34
  52. package/dist/components/ConsoleFilter.cjs +0 -1
  53. package/dist/components/ConsoleFilter.d.ts +0 -1
  54. package/dist/components/ConsoleFilter.js +0 -1
  55. package/dist/components/CopyableText.cjs +0 -1
  56. package/dist/components/CopyableText.d.ts +0 -1
  57. package/dist/components/CopyableText.js +0 -1
  58. package/dist/components/CycleTimer/CycleTimer.cjs +1 -0
  59. package/dist/components/CycleTimer/CycleTimer.d.ts +0 -1
  60. package/dist/components/CycleTimer/CycleTimer.js +5 -0
  61. package/dist/components/CycleTimer/DefaultVariant.cjs +1 -2
  62. package/dist/components/CycleTimer/DefaultVariant.d.ts +0 -1
  63. package/dist/components/CycleTimer/DefaultVariant.js +0 -1
  64. package/dist/components/CycleTimer/SmallVariant.cjs +0 -1
  65. package/dist/components/CycleTimer/SmallVariant.d.ts +0 -1
  66. package/dist/components/CycleTimer/SmallVariant.js +0 -1
  67. package/dist/components/CycleTimer/index.cjs +1 -2
  68. package/dist/components/CycleTimer/index.d.ts +0 -1
  69. package/dist/components/CycleTimer/index.js +1 -2
  70. package/dist/components/CycleTimer/types.cjs +1 -0
  71. package/dist/components/CycleTimer/types.d.ts +0 -1
  72. package/dist/components/CycleTimer/types.js +1 -0
  73. package/dist/components/CycleTimer/useAnimations.cjs +0 -1
  74. package/dist/components/CycleTimer/useAnimations.d.ts +0 -1
  75. package/dist/components/CycleTimer/useAnimations.js +9 -2
  76. package/dist/components/CycleTimer/useTimerLogic.cjs +1 -2
  77. package/dist/components/CycleTimer/useTimerLogic.d.ts +0 -1
  78. package/dist/components/CycleTimer/useTimerLogic.js +0 -1
  79. package/dist/components/CycleTimer/utils.cjs +1 -2
  80. package/dist/components/CycleTimer/utils.d.ts +0 -1
  81. package/dist/components/CycleTimer/utils.js +19 -11
  82. package/dist/components/CycleTimer.cjs +0 -1
  83. package/dist/components/CycleTimer.d.ts +0 -1
  84. package/dist/components/CycleTimer.js +0 -1
  85. package/dist/components/DataGrid.cjs +1 -2
  86. package/dist/components/DataGrid.d.ts +0 -1
  87. package/dist/components/DataGrid.js +1 -2
  88. package/dist/components/LoadingCover.cjs +1 -2
  89. package/dist/components/LoadingCover.d.ts +0 -1
  90. package/dist/components/LoadingCover.js +0 -1
  91. package/dist/components/LogPanel.cjs +1 -2
  92. package/dist/components/LogPanel.d.ts +0 -1
  93. package/dist/components/LogPanel.js +1 -2
  94. package/dist/components/LogStore.cjs +0 -1
  95. package/dist/components/LogStore.d.ts +0 -1
  96. package/dist/components/LogStore.js +0 -1
  97. package/dist/components/LogViewer.cjs +1 -2
  98. package/dist/components/LogViewer.d.ts +0 -1
  99. package/dist/components/LogViewer.js +1 -2
  100. package/dist/components/ProgramControl.cjs +1 -2
  101. package/dist/components/ProgramControl.d.ts +0 -1
  102. package/dist/components/ProgramControl.js +6 -7
  103. package/dist/components/ProgramStateIndicator.cjs +1 -2
  104. package/dist/components/ProgramStateIndicator.d.ts +0 -1
  105. package/dist/components/ProgramStateIndicator.js +28 -29
  106. package/dist/components/RobotCard.cjs +1 -2
  107. package/dist/components/RobotCard.d.ts +0 -1
  108. package/dist/components/RobotCard.js +1 -2
  109. package/dist/components/RobotListItem.cjs +1 -2
  110. package/dist/components/RobotListItem.d.ts +0 -1
  111. package/dist/components/RobotListItem.js +25 -26
  112. package/dist/components/RobotSetupReadinessIndicator.cjs +1 -2
  113. package/dist/components/RobotSetupReadinessIndicator.d.ts +0 -1
  114. package/dist/components/RobotSetupReadinessIndicator.js +1 -2
  115. package/dist/components/SelectableFab.cjs +0 -1
  116. package/dist/components/SelectableFab.d.ts +0 -1
  117. package/dist/components/SelectableFab.js +0 -1
  118. package/dist/components/TabBar.cjs +1 -2
  119. package/dist/components/TabBar.d.ts +0 -1
  120. package/dist/components/TabBar.js +1 -2
  121. package/dist/components/ThemeSelect.cjs +1 -0
  122. package/dist/components/ThemeSelect.d.ts +0 -1
  123. package/dist/components/ThemeSelect.js +38 -0
  124. package/dist/components/Timer/Timer.cjs +1 -0
  125. package/dist/components/Timer/Timer.d.ts +0 -1
  126. package/dist/components/Timer/Timer.js +5 -0
  127. package/dist/components/Timer/TimerDefaultVariant.cjs +0 -1
  128. package/dist/components/Timer/TimerDefaultVariant.d.ts +0 -1
  129. package/dist/components/Timer/TimerDefaultVariant.js +0 -1
  130. package/dist/components/Timer/TimerSmallVariant.cjs +0 -1
  131. package/dist/components/Timer/TimerSmallVariant.d.ts +0 -1
  132. package/dist/components/Timer/TimerSmallVariant.js +0 -1
  133. package/dist/components/Timer/index.cjs +1 -2
  134. package/dist/components/Timer/index.d.ts +0 -1
  135. package/dist/components/Timer/index.js +11 -12
  136. package/dist/components/Timer/types.cjs +1 -0
  137. package/dist/components/Timer/types.d.ts +0 -1
  138. package/dist/components/Timer/types.js +1 -0
  139. package/dist/components/Timer/useTimerAnimations.cjs +0 -1
  140. package/dist/components/Timer/useTimerAnimations.d.ts +0 -1
  141. package/dist/components/Timer/useTimerAnimations.js +5 -2
  142. package/dist/components/Timer/useTimerLogic.cjs +0 -1
  143. package/dist/components/Timer/useTimerLogic.d.ts +0 -1
  144. package/dist/components/Timer/useTimerLogic.js +0 -1
  145. package/dist/components/Timer/utils.cjs +1 -2
  146. package/dist/components/Timer/utils.d.ts +0 -1
  147. package/dist/components/Timer/utils.js +10 -10
  148. package/dist/components/Timer.cjs +0 -1
  149. package/dist/components/Timer.d.ts +0 -1
  150. package/dist/components/Timer.js +0 -1
  151. package/dist/components/TransparentOverlay.cjs +1 -0
  152. package/dist/components/TransparentOverlay.d.ts +0 -1
  153. package/dist/components/TransparentOverlay.js +26 -0
  154. package/dist/components/VelocitySlider.cjs +1 -2
  155. package/dist/components/VelocitySlider.d.ts +0 -1
  156. package/dist/components/VelocitySlider.js +8 -9
  157. package/dist/components/experimental/utils/AdornedSelect.cjs +0 -1
  158. package/dist/components/experimental/utils/AdornedSelect.d.ts +0 -1
  159. package/dist/components/experimental/utils/AdornedSelect.js +0 -1
  160. package/dist/components/jogging/JoggingBlocked.cjs +0 -1
  161. package/dist/components/jogging/JoggingBlocked.d.ts +0 -1
  162. package/dist/components/jogging/JoggingBlocked.js +0 -1
  163. package/dist/components/jogging/JoggingCartesianAxisControl.cjs +1 -2
  164. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts +0 -1
  165. package/dist/components/jogging/JoggingCartesianAxisControl.js +18 -20
  166. package/dist/components/jogging/JoggingCartesianTab.cjs +1 -2
  167. package/dist/components/jogging/JoggingCartesianTab.d.ts +0 -1
  168. package/dist/components/jogging/JoggingCartesianTab.js +37 -41
  169. package/dist/components/jogging/JoggingFreedriveTab.cjs +1 -0
  170. package/dist/components/jogging/JoggingFreedriveTab.d.ts +0 -1
  171. package/dist/components/jogging/JoggingFreedriveTab.js +6 -0
  172. package/dist/components/jogging/JoggingJointLimitDetector.cjs +1 -2
  173. package/dist/components/jogging/JoggingJointLimitDetector.d.ts +0 -1
  174. package/dist/components/jogging/JoggingJointLimitDetector.js +4 -5
  175. package/dist/components/jogging/JoggingJointTab.cjs +1 -2
  176. package/dist/components/jogging/JoggingJointTab.d.ts +0 -1
  177. package/dist/components/jogging/JoggingJointTab.js +0 -1
  178. package/dist/components/jogging/JoggingJointValueControl.cjs +1 -2
  179. package/dist/components/jogging/JoggingJointValueControl.d.ts +0 -1
  180. package/dist/components/jogging/JoggingJointValueControl.js +7 -8
  181. package/dist/components/jogging/JoggingOptions.cjs +1 -2
  182. package/dist/components/jogging/JoggingOptions.d.ts +0 -1
  183. package/dist/components/jogging/JoggingOptions.js +0 -1
  184. package/dist/components/jogging/JoggingPanel.cjs +1 -2
  185. package/dist/components/jogging/JoggingPanel.d.ts +0 -1
  186. package/dist/components/jogging/JoggingPanel.js +21 -119
  187. package/dist/components/jogging/JoggingStore.cjs +1 -2
  188. package/dist/components/jogging/JoggingStore.d.ts +0 -1
  189. package/dist/components/jogging/JoggingStore.js +2 -3
  190. package/dist/components/jogging/JoggingToggleButtonGroup.cjs +0 -1
  191. package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +0 -1
  192. package/dist/components/jogging/JoggingToggleButtonGroup.js +0 -1
  193. package/dist/components/jogging/JoggingVelocitySlider.cjs +0 -1
  194. package/dist/components/jogging/JoggingVelocitySlider.d.ts +0 -1
  195. package/dist/components/jogging/JoggingVelocitySlider.js +0 -1
  196. package/dist/components/jogging/PoseCartesianValues.cjs +1 -2
  197. package/dist/components/jogging/PoseCartesianValues.d.ts +0 -1
  198. package/dist/components/jogging/PoseCartesianValues.js +4 -5
  199. package/dist/components/jogging/PoseJointValues.cjs +1 -2
  200. package/dist/components/jogging/PoseJointValues.d.ts +0 -1
  201. package/dist/components/jogging/PoseJointValues.js +1 -2
  202. package/dist/components/modal/NoMotionGroupModal.cjs +0 -1
  203. package/dist/components/modal/NoMotionGroupModal.d.ts +0 -1
  204. package/dist/components/modal/NoMotionGroupModal.js +0 -1
  205. package/dist/components/robots/AxisConfig.cjs +0 -1
  206. package/dist/components/robots/AxisConfig.d.ts +0 -1
  207. package/dist/components/robots/AxisConfig.js +0 -1
  208. package/dist/components/robots/DHLinearAxis.cjs +1 -2
  209. package/dist/components/robots/DHLinearAxis.d.ts +0 -1
  210. package/dist/components/robots/DHLinearAxis.js +0 -1
  211. package/dist/components/robots/DHRobot.cjs +1 -2
  212. package/dist/components/robots/DHRobot.d.ts +0 -1
  213. package/dist/components/robots/DHRobot.js +0 -1
  214. package/dist/components/robots/GenericRobot.cjs +0 -1
  215. package/dist/components/robots/GenericRobot.d.ts +0 -1
  216. package/dist/components/robots/GenericRobot.js +0 -1
  217. package/dist/components/robots/LinearAxis.cjs +1 -2
  218. package/dist/components/robots/LinearAxis.d.ts +0 -1
  219. package/dist/components/robots/LinearAxis.js +0 -1
  220. package/dist/components/robots/LinearAxisAnimator.cjs +1 -2
  221. package/dist/components/robots/LinearAxisAnimator.d.ts +0 -1
  222. package/dist/components/robots/LinearAxisAnimator.js +0 -1
  223. package/dist/components/robots/MotionGroupVisualizer.cjs +1 -2
  224. package/dist/components/robots/MotionGroupVisualizer.d.ts +0 -1
  225. package/dist/components/robots/MotionGroupVisualizer.js +4 -5
  226. package/dist/components/robots/Robot.cjs +1 -2
  227. package/dist/components/robots/Robot.d.ts +0 -1
  228. package/dist/components/robots/Robot.js +0 -1
  229. package/dist/components/robots/RobotAnimator.cjs +1 -2
  230. package/dist/components/robots/RobotAnimator.d.ts +0 -1
  231. package/dist/components/robots/RobotAnimator.js +0 -1
  232. package/dist/components/robots/SupportedLinearAxis.cjs +1 -2
  233. package/dist/components/robots/SupportedLinearAxis.d.ts +0 -1
  234. package/dist/components/robots/SupportedLinearAxis.js +7 -8
  235. package/dist/components/robots/SupportedRobot.cjs +1 -2
  236. package/dist/components/robots/SupportedRobot.d.ts +0 -1
  237. package/dist/components/robots/SupportedRobot.js +6 -7
  238. package/dist/components/robots/ghostStyle.cjs +0 -1
  239. package/dist/components/robots/ghostStyle.d.ts +0 -1
  240. package/dist/components/robots/ghostStyle.js +0 -1
  241. package/dist/components/robots/manufacturerHomePositions.cjs +0 -1
  242. package/dist/components/robots/manufacturerHomePositions.d.ts +0 -1
  243. package/dist/components/robots/manufacturerHomePositions.js +0 -1
  244. package/dist/components/robots/robotModelLogic.cjs +1 -2
  245. package/dist/components/robots/robotModelLogic.d.ts +0 -1
  246. package/dist/components/robots/robotModelLogic.js +58 -34
  247. package/dist/components/safetyBar/ControllerTypeIndicator.cjs +1 -2
  248. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +0 -1
  249. package/dist/components/safetyBar/ControllerTypeIndicator.js +10 -12
  250. package/dist/components/safetyBar/IndicatorWithExplanation.cjs +0 -1
  251. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +0 -1
  252. package/dist/components/safetyBar/IndicatorWithExplanation.js +0 -1
  253. package/dist/components/safetyBar/OperationModeIndicator.cjs +1 -2
  254. package/dist/components/safetyBar/OperationModeIndicator.d.ts +0 -1
  255. package/dist/components/safetyBar/OperationModeIndicator.js +21 -24
  256. package/dist/components/safetyBar/SafetyBar.cjs +1 -2
  257. package/dist/components/safetyBar/SafetyBar.d.ts +0 -1
  258. package/dist/components/safetyBar/SafetyBar.js +15 -16
  259. package/dist/components/safetyBar/SafetyStateIndicator.cjs +1 -2
  260. package/dist/components/safetyBar/SafetyStateIndicator.d.ts +0 -1
  261. package/dist/components/safetyBar/SafetyStateIndicator.js +25 -30
  262. package/dist/components/safetyBar/icons/index.cjs +1 -0
  263. package/dist/components/safetyBar/icons/index.d.ts +0 -1
  264. package/dist/components/safetyBar/icons/index.js +15 -0
  265. package/dist/components/utils/converters.cjs +1 -2
  266. package/dist/components/utils/converters.d.ts +0 -1
  267. package/dist/components/utils/converters.js +26 -11
  268. package/dist/components/utils/errorHandling.cjs +1 -2
  269. package/dist/components/utils/errorHandling.d.ts +0 -1
  270. package/dist/components/utils/errorHandling.js +17 -9
  271. package/dist/components/utils/hooks.cjs +0 -1
  272. package/dist/components/utils/hooks.d.ts +0 -1
  273. package/dist/components/utils/hooks.js +3 -4
  274. package/dist/components/utils/interpolation.cjs +0 -1
  275. package/dist/components/utils/interpolation.d.ts +0 -1
  276. package/dist/components/utils/interpolation.js +0 -1
  277. package/dist/core.cjs +1 -2
  278. package/dist/core.d.ts +0 -1
  279. package/dist/core.js +70 -75
  280. package/dist/externalizeComponent.d.ts +0 -1
  281. package/dist/i18n/config.d.ts +0 -1
  282. package/dist/icons/DropdownArrowIcon.d.ts +0 -1
  283. package/dist/icons/index.d.ts +0 -1
  284. package/dist/index.cjs +1 -2
  285. package/dist/index.d.ts +0 -1
  286. package/dist/index.js +120 -140
  287. package/dist/lib/ConnectedMotionGroup.d.ts +0 -1
  288. package/dist/lib/JoggerConnection.d.ts +0 -1
  289. package/dist/lib/MotionStreamConnection.d.ts +0 -1
  290. package/dist/lib/motionStateUpdate.d.ts +0 -1
  291. package/dist/themes/createDarkTheme.d.ts +0 -1
  292. package/dist/themes/createLightTheme.d.ts +0 -1
  293. package/dist/themes/themeTypes.d.ts +0 -1
  294. package/dist/themes/theming.d.ts +0 -1
  295. package/dist/wb-icons.cjs +1 -2
  296. package/dist/wb-icons.d.ts +0 -1
  297. package/dist/wb-icons.js +28 -44
  298. package/package.json +5 -6
  299. package/dist/3d.cjs.map +0 -1
  300. package/dist/3d.d.ts.map +0 -1
  301. package/dist/3d.js.map +0 -1
  302. package/dist/Setup.d.ts.map +0 -1
  303. package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +0 -1
  304. package/dist/components/3d-viewport/PresetEnvironment.cjs.map +0 -1
  305. package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +0 -1
  306. package/dist/components/3d-viewport/PresetEnvironment.js.map +0 -1
  307. package/dist/components/3d-viewport/SafetyZonesRenderer.cjs.map +0 -1
  308. package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +0 -1
  309. package/dist/components/3d-viewport/SafetyZonesRenderer.js.map +0 -1
  310. package/dist/components/3d-viewport/TrajectoryRenderer.cjs.map +0 -1
  311. package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +0 -1
  312. package/dist/components/3d-viewport/TrajectoryRenderer.js.map +0 -1
  313. package/dist/components/3d-viewport/collider/ColliderCollection.cjs.map +0 -1
  314. package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +0 -1
  315. package/dist/components/3d-viewport/collider/ColliderCollection.js.map +0 -1
  316. package/dist/components/3d-viewport/collider/ColliderElement.cjs.map +0 -1
  317. package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +0 -1
  318. package/dist/components/3d-viewport/collider/ColliderElement.js.map +0 -1
  319. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs.map +0 -1
  320. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +0 -1
  321. package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js.map +0 -1
  322. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs.map +0 -1
  323. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +0 -1
  324. package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js.map +0 -1
  325. package/dist/components/AppHeader.cjs.map +0 -1
  326. package/dist/components/AppHeader.d.ts.map +0 -1
  327. package/dist/components/AppHeader.js.map +0 -1
  328. package/dist/components/ConsoleFilter.cjs.map +0 -1
  329. package/dist/components/ConsoleFilter.d.ts.map +0 -1
  330. package/dist/components/ConsoleFilter.js.map +0 -1
  331. package/dist/components/CopyableText.cjs.map +0 -1
  332. package/dist/components/CopyableText.d.ts.map +0 -1
  333. package/dist/components/CopyableText.js.map +0 -1
  334. package/dist/components/CycleTimer/CycleTimer.d.ts.map +0 -1
  335. package/dist/components/CycleTimer/DefaultVariant.cjs.map +0 -1
  336. package/dist/components/CycleTimer/DefaultVariant.d.ts.map +0 -1
  337. package/dist/components/CycleTimer/DefaultVariant.js.map +0 -1
  338. package/dist/components/CycleTimer/SmallVariant.cjs.map +0 -1
  339. package/dist/components/CycleTimer/SmallVariant.d.ts.map +0 -1
  340. package/dist/components/CycleTimer/SmallVariant.js.map +0 -1
  341. package/dist/components/CycleTimer/index.cjs.map +0 -1
  342. package/dist/components/CycleTimer/index.d.ts.map +0 -1
  343. package/dist/components/CycleTimer/index.js.map +0 -1
  344. package/dist/components/CycleTimer/types.d.ts.map +0 -1
  345. package/dist/components/CycleTimer/useAnimations.cjs.map +0 -1
  346. package/dist/components/CycleTimer/useAnimations.d.ts.map +0 -1
  347. package/dist/components/CycleTimer/useAnimations.js.map +0 -1
  348. package/dist/components/CycleTimer/useTimerLogic.cjs.map +0 -1
  349. package/dist/components/CycleTimer/useTimerLogic.d.ts.map +0 -1
  350. package/dist/components/CycleTimer/useTimerLogic.js.map +0 -1
  351. package/dist/components/CycleTimer/utils.cjs.map +0 -1
  352. package/dist/components/CycleTimer/utils.d.ts.map +0 -1
  353. package/dist/components/CycleTimer/utils.js.map +0 -1
  354. package/dist/components/CycleTimer.cjs.map +0 -1
  355. package/dist/components/CycleTimer.d.ts.map +0 -1
  356. package/dist/components/CycleTimer.js.map +0 -1
  357. package/dist/components/DataGrid.cjs.map +0 -1
  358. package/dist/components/DataGrid.d.ts.map +0 -1
  359. package/dist/components/DataGrid.js.map +0 -1
  360. package/dist/components/LoadingCover.cjs.map +0 -1
  361. package/dist/components/LoadingCover.d.ts.map +0 -1
  362. package/dist/components/LoadingCover.js.map +0 -1
  363. package/dist/components/LogPanel.cjs.map +0 -1
  364. package/dist/components/LogPanel.d.ts.map +0 -1
  365. package/dist/components/LogPanel.js.map +0 -1
  366. package/dist/components/LogStore.cjs.map +0 -1
  367. package/dist/components/LogStore.d.ts.map +0 -1
  368. package/dist/components/LogStore.js.map +0 -1
  369. package/dist/components/LogViewer.cjs.map +0 -1
  370. package/dist/components/LogViewer.d.ts.map +0 -1
  371. package/dist/components/LogViewer.js.map +0 -1
  372. package/dist/components/ProgramControl.cjs.map +0 -1
  373. package/dist/components/ProgramControl.d.ts.map +0 -1
  374. package/dist/components/ProgramControl.js.map +0 -1
  375. package/dist/components/ProgramStateIndicator.cjs.map +0 -1
  376. package/dist/components/ProgramStateIndicator.d.ts.map +0 -1
  377. package/dist/components/ProgramStateIndicator.js.map +0 -1
  378. package/dist/components/RobotCard.cjs.map +0 -1
  379. package/dist/components/RobotCard.d.ts.map +0 -1
  380. package/dist/components/RobotCard.js.map +0 -1
  381. package/dist/components/RobotListItem.cjs.map +0 -1
  382. package/dist/components/RobotListItem.d.ts.map +0 -1
  383. package/dist/components/RobotListItem.js.map +0 -1
  384. package/dist/components/RobotSetupReadinessIndicator.cjs.map +0 -1
  385. package/dist/components/RobotSetupReadinessIndicator.d.ts.map +0 -1
  386. package/dist/components/RobotSetupReadinessIndicator.js.map +0 -1
  387. package/dist/components/RobotSetupReadinessIndicator.test.d.ts +0 -2
  388. package/dist/components/RobotSetupReadinessIndicator.test.d.ts.map +0 -1
  389. package/dist/components/SelectableFab.cjs.map +0 -1
  390. package/dist/components/SelectableFab.d.ts.map +0 -1
  391. package/dist/components/SelectableFab.js.map +0 -1
  392. package/dist/components/TabBar.cjs.map +0 -1
  393. package/dist/components/TabBar.d.ts.map +0 -1
  394. package/dist/components/TabBar.js.map +0 -1
  395. package/dist/components/ThemeSelect.d.ts.map +0 -1
  396. package/dist/components/Timer/Timer.d.ts.map +0 -1
  397. package/dist/components/Timer/TimerDefaultVariant.cjs.map +0 -1
  398. package/dist/components/Timer/TimerDefaultVariant.d.ts.map +0 -1
  399. package/dist/components/Timer/TimerDefaultVariant.js.map +0 -1
  400. package/dist/components/Timer/TimerSmallVariant.cjs.map +0 -1
  401. package/dist/components/Timer/TimerSmallVariant.d.ts.map +0 -1
  402. package/dist/components/Timer/TimerSmallVariant.js.map +0 -1
  403. package/dist/components/Timer/index.cjs.map +0 -1
  404. package/dist/components/Timer/index.d.ts.map +0 -1
  405. package/dist/components/Timer/index.js.map +0 -1
  406. package/dist/components/Timer/types.d.ts.map +0 -1
  407. package/dist/components/Timer/useTimerAnimations.cjs.map +0 -1
  408. package/dist/components/Timer/useTimerAnimations.d.ts.map +0 -1
  409. package/dist/components/Timer/useTimerAnimations.js.map +0 -1
  410. package/dist/components/Timer/useTimerLogic.cjs.map +0 -1
  411. package/dist/components/Timer/useTimerLogic.d.ts.map +0 -1
  412. package/dist/components/Timer/useTimerLogic.js.map +0 -1
  413. package/dist/components/Timer/utils.cjs.map +0 -1
  414. package/dist/components/Timer/utils.d.ts.map +0 -1
  415. package/dist/components/Timer/utils.js.map +0 -1
  416. package/dist/components/Timer.cjs.map +0 -1
  417. package/dist/components/Timer.d.ts.map +0 -1
  418. package/dist/components/Timer.js.map +0 -1
  419. package/dist/components/TransparentOverlay.d.ts.map +0 -1
  420. package/dist/components/VelocitySlider.cjs.map +0 -1
  421. package/dist/components/VelocitySlider.d.ts.map +0 -1
  422. package/dist/components/VelocitySlider.js.map +0 -1
  423. package/dist/components/experimental/utils/AdornedSelect.cjs.map +0 -1
  424. package/dist/components/experimental/utils/AdornedSelect.d.ts.map +0 -1
  425. package/dist/components/experimental/utils/AdornedSelect.js.map +0 -1
  426. package/dist/components/jogging/JoggingBlocked.cjs.map +0 -1
  427. package/dist/components/jogging/JoggingBlocked.d.ts.map +0 -1
  428. package/dist/components/jogging/JoggingBlocked.js.map +0 -1
  429. package/dist/components/jogging/JoggingCartesianAxisControl.cjs.map +0 -1
  430. package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +0 -1
  431. package/dist/components/jogging/JoggingCartesianAxisControl.js.map +0 -1
  432. package/dist/components/jogging/JoggingCartesianTab.cjs.map +0 -1
  433. package/dist/components/jogging/JoggingCartesianTab.d.ts.map +0 -1
  434. package/dist/components/jogging/JoggingCartesianTab.js.map +0 -1
  435. package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +0 -1
  436. package/dist/components/jogging/JoggingJointLimitDetector.cjs.map +0 -1
  437. package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +0 -1
  438. package/dist/components/jogging/JoggingJointLimitDetector.js.map +0 -1
  439. package/dist/components/jogging/JoggingJointTab.cjs.map +0 -1
  440. package/dist/components/jogging/JoggingJointTab.d.ts.map +0 -1
  441. package/dist/components/jogging/JoggingJointTab.js.map +0 -1
  442. package/dist/components/jogging/JoggingJointValueControl.cjs.map +0 -1
  443. package/dist/components/jogging/JoggingJointValueControl.d.ts.map +0 -1
  444. package/dist/components/jogging/JoggingJointValueControl.js.map +0 -1
  445. package/dist/components/jogging/JoggingOptions.cjs.map +0 -1
  446. package/dist/components/jogging/JoggingOptions.d.ts.map +0 -1
  447. package/dist/components/jogging/JoggingOptions.js.map +0 -1
  448. package/dist/components/jogging/JoggingPanel.cjs.map +0 -1
  449. package/dist/components/jogging/JoggingPanel.d.ts.map +0 -1
  450. package/dist/components/jogging/JoggingPanel.js.map +0 -1
  451. package/dist/components/jogging/JoggingPanel.test.d.ts +0 -2
  452. package/dist/components/jogging/JoggingPanel.test.d.ts.map +0 -1
  453. package/dist/components/jogging/JoggingStore.cjs.map +0 -1
  454. package/dist/components/jogging/JoggingStore.d.ts.map +0 -1
  455. package/dist/components/jogging/JoggingStore.js.map +0 -1
  456. package/dist/components/jogging/JoggingToggleButtonGroup.cjs.map +0 -1
  457. package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +0 -1
  458. package/dist/components/jogging/JoggingToggleButtonGroup.js.map +0 -1
  459. package/dist/components/jogging/JoggingVelocitySlider.cjs.map +0 -1
  460. package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +0 -1
  461. package/dist/components/jogging/JoggingVelocitySlider.js.map +0 -1
  462. package/dist/components/jogging/PoseCartesianValues.cjs.map +0 -1
  463. package/dist/components/jogging/PoseCartesianValues.d.ts.map +0 -1
  464. package/dist/components/jogging/PoseCartesianValues.js.map +0 -1
  465. package/dist/components/jogging/PoseJointValues.cjs.map +0 -1
  466. package/dist/components/jogging/PoseJointValues.d.ts.map +0 -1
  467. package/dist/components/jogging/PoseJointValues.js.map +0 -1
  468. package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts +0 -11
  469. package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts.map +0 -1
  470. package/dist/components/modal/NoMotionGroupModal.cjs.map +0 -1
  471. package/dist/components/modal/NoMotionGroupModal.d.ts.map +0 -1
  472. package/dist/components/modal/NoMotionGroupModal.js.map +0 -1
  473. package/dist/components/robots/AxisConfig.cjs.map +0 -1
  474. package/dist/components/robots/AxisConfig.d.ts.map +0 -1
  475. package/dist/components/robots/AxisConfig.js.map +0 -1
  476. package/dist/components/robots/DHLinearAxis.cjs.map +0 -1
  477. package/dist/components/robots/DHLinearAxis.d.ts.map +0 -1
  478. package/dist/components/robots/DHLinearAxis.js.map +0 -1
  479. package/dist/components/robots/DHRobot.cjs.map +0 -1
  480. package/dist/components/robots/DHRobot.d.ts.map +0 -1
  481. package/dist/components/robots/DHRobot.js.map +0 -1
  482. package/dist/components/robots/GenericRobot.cjs.map +0 -1
  483. package/dist/components/robots/GenericRobot.d.ts.map +0 -1
  484. package/dist/components/robots/GenericRobot.js.map +0 -1
  485. package/dist/components/robots/LinearAxis.cjs.map +0 -1
  486. package/dist/components/robots/LinearAxis.d.ts.map +0 -1
  487. package/dist/components/robots/LinearAxis.js.map +0 -1
  488. package/dist/components/robots/LinearAxisAnimator.cjs.map +0 -1
  489. package/dist/components/robots/LinearAxisAnimator.d.ts.map +0 -1
  490. package/dist/components/robots/LinearAxisAnimator.js.map +0 -1
  491. package/dist/components/robots/MotionGroupVisualizer.cjs.map +0 -1
  492. package/dist/components/robots/MotionGroupVisualizer.d.ts.map +0 -1
  493. package/dist/components/robots/MotionGroupVisualizer.js.map +0 -1
  494. package/dist/components/robots/Robot.cjs.map +0 -1
  495. package/dist/components/robots/Robot.d.ts.map +0 -1
  496. package/dist/components/robots/Robot.js.map +0 -1
  497. package/dist/components/robots/RobotAnimator.cjs.map +0 -1
  498. package/dist/components/robots/RobotAnimator.d.ts.map +0 -1
  499. package/dist/components/robots/RobotAnimator.js.map +0 -1
  500. package/dist/components/robots/RobotAnimator.test.d.ts +0 -2
  501. package/dist/components/robots/RobotAnimator.test.d.ts.map +0 -1
  502. package/dist/components/robots/SupportedLinearAxis.cjs.map +0 -1
  503. package/dist/components/robots/SupportedLinearAxis.d.ts.map +0 -1
  504. package/dist/components/robots/SupportedLinearAxis.js.map +0 -1
  505. package/dist/components/robots/SupportedRobot.cjs.map +0 -1
  506. package/dist/components/robots/SupportedRobot.d.ts.map +0 -1
  507. package/dist/components/robots/SupportedRobot.js.map +0 -1
  508. package/dist/components/robots/ghostStyle.cjs.map +0 -1
  509. package/dist/components/robots/ghostStyle.d.ts.map +0 -1
  510. package/dist/components/robots/ghostStyle.js.map +0 -1
  511. package/dist/components/robots/manufacturerHomePositions.cjs.map +0 -1
  512. package/dist/components/robots/manufacturerHomePositions.d.ts.map +0 -1
  513. package/dist/components/robots/manufacturerHomePositions.js.map +0 -1
  514. package/dist/components/robots/robotModelLogic.cjs.map +0 -1
  515. package/dist/components/robots/robotModelLogic.d.ts.map +0 -1
  516. package/dist/components/robots/robotModelLogic.js.map +0 -1
  517. package/dist/components/safetyBar/ControllerTypeIndicator.cjs.map +0 -1
  518. package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +0 -1
  519. package/dist/components/safetyBar/ControllerTypeIndicator.js.map +0 -1
  520. package/dist/components/safetyBar/IndicatorWithExplanation.cjs.map +0 -1
  521. package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +0 -1
  522. package/dist/components/safetyBar/IndicatorWithExplanation.js.map +0 -1
  523. package/dist/components/safetyBar/OperationModeIndicator.cjs.map +0 -1
  524. package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +0 -1
  525. package/dist/components/safetyBar/OperationModeIndicator.js.map +0 -1
  526. package/dist/components/safetyBar/SafetyBar.cjs.map +0 -1
  527. package/dist/components/safetyBar/SafetyBar.d.ts.map +0 -1
  528. package/dist/components/safetyBar/SafetyBar.js.map +0 -1
  529. package/dist/components/safetyBar/SafetyStateIndicator.cjs.map +0 -1
  530. package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +0 -1
  531. package/dist/components/safetyBar/SafetyStateIndicator.js.map +0 -1
  532. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs +0 -2
  533. package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs.map +0 -1
  534. package/dist/components/safetyBar/icons/controller-type-physical.svg.d.ts +0 -3
  535. package/dist/components/safetyBar/icons/controller-type-physical.svg.js.map +0 -1
  536. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs +0 -2
  537. package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs.map +0 -1
  538. package/dist/components/safetyBar/icons/controller-type-virtual.svg.d.ts +0 -3
  539. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js +0 -11
  540. package/dist/components/safetyBar/icons/controller-type-virtual.svg.js.map +0 -1
  541. package/dist/components/safetyBar/icons/index.d.ts.map +0 -1
  542. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs +0 -2
  543. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs.map +0 -1
  544. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.d.ts +0 -3
  545. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js +0 -11
  546. package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js.map +0 -1
  547. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs +0 -2
  548. package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs.map +0 -1
  549. package/dist/components/safetyBar/icons/operation-mode-error.svg.d.ts +0 -3
  550. package/dist/components/safetyBar/icons/operation-mode-error.svg.js +0 -11
  551. package/dist/components/safetyBar/icons/operation-mode-error.svg.js.map +0 -1
  552. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs +0 -2
  553. package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs.map +0 -1
  554. package/dist/components/safetyBar/icons/operation-mode-manual.svg.d.ts +0 -3
  555. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js +0 -11
  556. package/dist/components/safetyBar/icons/operation-mode-manual.svg.js.map +0 -1
  557. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs +0 -2
  558. package/dist/components/safetyBar/icons/safety-state-error.svg.cjs.map +0 -1
  559. package/dist/components/safetyBar/icons/safety-state-error.svg.d.ts +0 -3
  560. package/dist/components/safetyBar/icons/safety-state-error.svg.js +0 -11
  561. package/dist/components/safetyBar/icons/safety-state-error.svg.js.map +0 -1
  562. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs +0 -2
  563. package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs.map +0 -1
  564. package/dist/components/safetyBar/icons/safety-state-estop.svg.d.ts +0 -3
  565. package/dist/components/safetyBar/icons/safety-state-estop.svg.js +0 -11
  566. package/dist/components/safetyBar/icons/safety-state-estop.svg.js.map +0 -1
  567. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs +0 -2
  568. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs.map +0 -1
  569. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.d.ts +0 -3
  570. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js +0 -11
  571. package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js.map +0 -1
  572. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs +0 -2
  573. package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs.map +0 -1
  574. package/dist/components/safetyBar/icons/safety-state-normal.svg.d.ts +0 -3
  575. package/dist/components/safetyBar/icons/safety-state-normal.svg.js +0 -11
  576. package/dist/components/safetyBar/icons/safety-state-normal.svg.js.map +0 -1
  577. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs +0 -2
  578. package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs.map +0 -1
  579. package/dist/components/safetyBar/icons/safety-state-stop.svg.d.ts +0 -3
  580. package/dist/components/safetyBar/icons/safety-state-stop.svg.js +0 -11
  581. package/dist/components/safetyBar/icons/safety-state-stop.svg.js.map +0 -1
  582. package/dist/components/utils/converters.cjs.map +0 -1
  583. package/dist/components/utils/converters.d.ts.map +0 -1
  584. package/dist/components/utils/converters.js.map +0 -1
  585. package/dist/components/utils/errorHandling.cjs.map +0 -1
  586. package/dist/components/utils/errorHandling.d.ts.map +0 -1
  587. package/dist/components/utils/errorHandling.js.map +0 -1
  588. package/dist/components/utils/errorHandling.test.d.ts +0 -2
  589. package/dist/components/utils/errorHandling.test.d.ts.map +0 -1
  590. package/dist/components/utils/hooks.cjs.map +0 -1
  591. package/dist/components/utils/hooks.d.ts.map +0 -1
  592. package/dist/components/utils/hooks.js.map +0 -1
  593. package/dist/components/utils/interpolation.cjs.map +0 -1
  594. package/dist/components/utils/interpolation.d.ts.map +0 -1
  595. package/dist/components/utils/interpolation.js.map +0 -1
  596. package/dist/components/utils/interpolation.test.d.ts +0 -2
  597. package/dist/components/utils/interpolation.test.d.ts.map +0 -1
  598. package/dist/core.cjs.map +0 -1
  599. package/dist/core.d.ts.map +0 -1
  600. package/dist/core.js.map +0 -1
  601. package/dist/externalizeComponent.cjs +0 -2
  602. package/dist/externalizeComponent.cjs.map +0 -1
  603. package/dist/externalizeComponent.d.ts.map +0 -1
  604. package/dist/externalizeComponent.js +0 -13
  605. package/dist/externalizeComponent.js.map +0 -1
  606. package/dist/i18n/config.cjs +0 -2
  607. package/dist/i18n/config.cjs.map +0 -1
  608. package/dist/i18n/config.d.ts.map +0 -1
  609. package/dist/i18n/config.js +0 -25
  610. package/dist/i18n/config.js.map +0 -1
  611. package/dist/i18n/locales/de/translations.json.cjs +0 -3
  612. package/dist/i18n/locales/de/translations.json.cjs.map +0 -1
  613. package/dist/i18n/locales/de/translations.json.js +0 -94
  614. package/dist/i18n/locales/de/translations.json.js.map +0 -1
  615. package/dist/i18n/locales/en/translations.json.cjs +0 -2
  616. package/dist/i18n/locales/en/translations.json.cjs.map +0 -1
  617. package/dist/i18n/locales/en/translations.json.js +0 -94
  618. package/dist/i18n/locales/en/translations.json.js.map +0 -1
  619. package/dist/icons/DropdownArrowIcon.cjs +0 -2
  620. package/dist/icons/DropdownArrowIcon.cjs.map +0 -1
  621. package/dist/icons/DropdownArrowIcon.d.ts.map +0 -1
  622. package/dist/icons/DropdownArrowIcon.js +0 -14
  623. package/dist/icons/DropdownArrowIcon.js.map +0 -1
  624. package/dist/icons/axis-x.svg.cjs +0 -2
  625. package/dist/icons/axis-x.svg.cjs.map +0 -1
  626. package/dist/icons/axis-x.svg.d.ts +0 -3
  627. package/dist/icons/axis-x.svg.js +0 -11
  628. package/dist/icons/axis-x.svg.js.map +0 -1
  629. package/dist/icons/axis-y.svg.cjs +0 -2
  630. package/dist/icons/axis-y.svg.cjs.map +0 -1
  631. package/dist/icons/axis-y.svg.d.ts +0 -3
  632. package/dist/icons/axis-y.svg.js +0 -11
  633. package/dist/icons/axis-y.svg.js.map +0 -1
  634. package/dist/icons/axis-z.svg.cjs +0 -2
  635. package/dist/icons/axis-z.svg.cjs.map +0 -1
  636. package/dist/icons/axis-z.svg.d.ts +0 -3
  637. package/dist/icons/axis-z.svg.js +0 -11
  638. package/dist/icons/axis-z.svg.js.map +0 -1
  639. package/dist/icons/home.svg.cjs +0 -2
  640. package/dist/icons/home.svg.cjs.map +0 -1
  641. package/dist/icons/home.svg.d.ts +0 -3
  642. package/dist/icons/home.svg.js +0 -11
  643. package/dist/icons/home.svg.js.map +0 -1
  644. package/dist/icons/index.d.ts.map +0 -1
  645. package/dist/icons/jog-minus.svg.cjs +0 -2
  646. package/dist/icons/jog-minus.svg.cjs.map +0 -1
  647. package/dist/icons/jog-minus.svg.d.ts +0 -3
  648. package/dist/icons/jog-minus.svg.js +0 -11
  649. package/dist/icons/jog-minus.svg.js.map +0 -1
  650. package/dist/icons/jog-plus.svg.cjs +0 -2
  651. package/dist/icons/jog-plus.svg.cjs.map +0 -1
  652. package/dist/icons/jog-plus.svg.d.ts +0 -3
  653. package/dist/icons/jog-plus.svg.js +0 -11
  654. package/dist/icons/jog-plus.svg.js.map +0 -1
  655. package/dist/icons/jogging.svg.cjs +0 -2
  656. package/dist/icons/jogging.svg.cjs.map +0 -1
  657. package/dist/icons/jogging.svg.d.ts +0 -3
  658. package/dist/icons/jogging.svg.js +0 -11
  659. package/dist/icons/jogging.svg.js.map +0 -1
  660. package/dist/icons/orientation-coord-system.svg.cjs +0 -2
  661. package/dist/icons/orientation-coord-system.svg.cjs.map +0 -1
  662. package/dist/icons/orientation-coord-system.svg.d.ts +0 -3
  663. package/dist/icons/orientation-coord-system.svg.js +0 -11
  664. package/dist/icons/orientation-coord-system.svg.js.map +0 -1
  665. package/dist/icons/orientation-tool.svg.cjs +0 -2
  666. package/dist/icons/orientation-tool.svg.cjs.map +0 -1
  667. package/dist/icons/orientation-tool.svg.d.ts +0 -3
  668. package/dist/icons/orientation-tool.svg.js +0 -11
  669. package/dist/icons/orientation-tool.svg.js.map +0 -1
  670. package/dist/icons/robot.svg.cjs +0 -2
  671. package/dist/icons/robot.svg.cjs.map +0 -1
  672. package/dist/icons/robot.svg.d.ts +0 -3
  673. package/dist/icons/robot.svg.js.map +0 -1
  674. package/dist/icons/rotation.svg.cjs +0 -2
  675. package/dist/icons/rotation.svg.cjs.map +0 -1
  676. package/dist/icons/rotation.svg.d.ts +0 -3
  677. package/dist/icons/rotation.svg.js +0 -11
  678. package/dist/icons/rotation.svg.js.map +0 -1
  679. package/dist/icons/wbLogo.svg.cjs +0 -2
  680. package/dist/icons/wbLogo.svg.cjs.map +0 -1
  681. package/dist/icons/wbLogo.svg.d.ts +0 -3
  682. package/dist/icons/wbLogo.svg.js +0 -11
  683. package/dist/icons/wbLogo.svg.js.map +0 -1
  684. package/dist/index.cjs.map +0 -1
  685. package/dist/index.d.ts.map +0 -1
  686. package/dist/index.js.map +0 -1
  687. package/dist/lib/ConnectedMotionGroup.cjs +0 -4
  688. package/dist/lib/ConnectedMotionGroup.cjs.map +0 -1
  689. package/dist/lib/ConnectedMotionGroup.d.ts.map +0 -1
  690. package/dist/lib/ConnectedMotionGroup.js +0 -250
  691. package/dist/lib/ConnectedMotionGroup.js.map +0 -1
  692. package/dist/lib/JoggerConnection.cjs +0 -2
  693. package/dist/lib/JoggerConnection.cjs.map +0 -1
  694. package/dist/lib/JoggerConnection.d.ts.map +0 -1
  695. package/dist/lib/JoggerConnection.js +0 -342
  696. package/dist/lib/JoggerConnection.js.map +0 -1
  697. package/dist/lib/JoggerConnection.test.d.ts +0 -2
  698. package/dist/lib/JoggerConnection.test.d.ts.map +0 -1
  699. package/dist/lib/MotionStreamConnection.cjs +0 -3
  700. package/dist/lib/MotionStreamConnection.cjs.map +0 -1
  701. package/dist/lib/MotionStreamConnection.d.ts.map +0 -1
  702. package/dist/lib/MotionStreamConnection.js +0 -94
  703. package/dist/lib/MotionStreamConnection.js.map +0 -1
  704. package/dist/lib/MotionStreamConnection.test.d.ts +0 -2
  705. package/dist/lib/MotionStreamConnection.test.d.ts.map +0 -1
  706. package/dist/lib/motionStateUpdate.cjs +0 -2
  707. package/dist/lib/motionStateUpdate.cjs.map +0 -1
  708. package/dist/lib/motionStateUpdate.d.ts.map +0 -1
  709. package/dist/lib/motionStateUpdate.js +0 -49
  710. package/dist/lib/motionStateUpdate.js.map +0 -1
  711. package/dist/lib/motionStateUpdate.test.d.ts +0 -2
  712. package/dist/lib/motionStateUpdate.test.d.ts.map +0 -1
  713. package/dist/test/consumer.test.d.ts +0 -2
  714. package/dist/test/consumer.test.d.ts.map +0 -1
  715. package/dist/test/setup.d.ts +0 -2
  716. package/dist/test/setup.d.ts.map +0 -1
  717. package/dist/themes/createDarkTheme.cjs +0 -2
  718. package/dist/themes/createDarkTheme.cjs.map +0 -1
  719. package/dist/themes/createDarkTheme.d.ts.map +0 -1
  720. package/dist/themes/createDarkTheme.js +0 -344
  721. package/dist/themes/createDarkTheme.js.map +0 -1
  722. package/dist/themes/createLightTheme.cjs +0 -2
  723. package/dist/themes/createLightTheme.cjs.map +0 -1
  724. package/dist/themes/createLightTheme.d.ts.map +0 -1
  725. package/dist/themes/createLightTheme.js +0 -9
  726. package/dist/themes/createLightTheme.js.map +0 -1
  727. package/dist/themes/themeTypes.d.ts.map +0 -1
  728. package/dist/themes/theming.cjs +0 -2
  729. package/dist/themes/theming.cjs.map +0 -1
  730. package/dist/themes/theming.d.ts.map +0 -1
  731. package/dist/themes/theming.js +0 -14
  732. package/dist/themes/theming.js.map +0 -1
  733. package/dist/wb-icons.cjs.map +0 -1
  734. package/dist/wb-icons.d.ts.map +0 -1
  735. package/dist/wb-icons.js.map +0 -1
  736. package/src/3d.ts +0 -18
  737. package/src/Setup.tsx +0 -33
  738. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +0 -57
  739. package/src/components/3d-viewport/PresetEnvironment.tsx +0 -81
  740. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +0 -198
  741. package/src/components/3d-viewport/TrajectoryRenderer.tsx +0 -41
  742. package/src/components/3d-viewport/collider/ColliderCollection.tsx +0 -35
  743. package/src/components/3d-viewport/collider/ColliderElement.tsx +0 -36
  744. package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +0 -26
  745. package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +0 -48
  746. package/src/components/AppHeader.md +0 -84
  747. package/src/components/AppHeader.tsx +0 -197
  748. package/src/components/ConsoleFilter.tsx +0 -24
  749. package/src/components/CopyableText.tsx +0 -89
  750. package/src/components/CycleTimer/CycleTimer.ts +0 -8
  751. package/src/components/CycleTimer/DefaultVariant.tsx +0 -326
  752. package/src/components/CycleTimer/SmallVariant.tsx +0 -229
  753. package/src/components/CycleTimer/index.tsx +0 -158
  754. package/src/components/CycleTimer/types.ts +0 -58
  755. package/src/components/CycleTimer/useAnimations.ts +0 -202
  756. package/src/components/CycleTimer/useTimerLogic.ts +0 -330
  757. package/src/components/CycleTimer/utils.ts +0 -122
  758. package/src/components/CycleTimer.tsx +0 -8
  759. package/src/components/DataGrid.tsx +0 -664
  760. package/src/components/LoadingCover.tsx +0 -91
  761. package/src/components/LogPanel.tsx +0 -71
  762. package/src/components/LogStore.ts +0 -46
  763. package/src/components/LogViewer.tsx +0 -368
  764. package/src/components/ProgramControl.tsx +0 -267
  765. package/src/components/ProgramStateIndicator.tsx +0 -195
  766. package/src/components/RobotCard.tsx +0 -495
  767. package/src/components/RobotListItem.tsx +0 -155
  768. package/src/components/RobotSetupReadinessIndicator.test.tsx +0 -60
  769. package/src/components/RobotSetupReadinessIndicator.tsx +0 -161
  770. package/src/components/SelectableFab.tsx +0 -52
  771. package/src/components/TabBar.tsx +0 -325
  772. package/src/components/ThemeSelect.tsx +0 -51
  773. package/src/components/Timer/Timer.ts +0 -4
  774. package/src/components/Timer/TimerDefaultVariant.tsx +0 -143
  775. package/src/components/Timer/TimerSmallVariant.tsx +0 -141
  776. package/src/components/Timer/index.tsx +0 -103
  777. package/src/components/Timer/types.ts +0 -38
  778. package/src/components/Timer/useTimerAnimations.ts +0 -94
  779. package/src/components/Timer/useTimerLogic.ts +0 -214
  780. package/src/components/Timer/utils.ts +0 -87
  781. package/src/components/Timer.ts +0 -4
  782. package/src/components/TransparentOverlay.tsx +0 -28
  783. package/src/components/VelocitySlider.tsx +0 -117
  784. package/src/components/experimental/utils/AdornedSelect.tsx +0 -38
  785. package/src/components/jogging/JoggingBlocked.tsx +0 -43
  786. package/src/components/jogging/JoggingCartesianAxisControl.tsx +0 -237
  787. package/src/components/jogging/JoggingCartesianTab.tsx +0 -349
  788. package/src/components/jogging/JoggingFreedriveTab.tsx +0 -8
  789. package/src/components/jogging/JoggingJointLimitDetector.tsx +0 -57
  790. package/src/components/jogging/JoggingJointTab.tsx +0 -126
  791. package/src/components/jogging/JoggingJointValueControl.tsx +0 -293
  792. package/src/components/jogging/JoggingOptions.tsx +0 -163
  793. package/src/components/jogging/JoggingPanel.test.tsx +0 -645
  794. package/src/components/jogging/JoggingPanel.tsx +0 -204
  795. package/src/components/jogging/JoggingStore.ts +0 -485
  796. package/src/components/jogging/JoggingToggleButtonGroup.tsx +0 -25
  797. package/src/components/jogging/JoggingVelocitySlider.tsx +0 -39
  798. package/src/components/jogging/PoseCartesianValues.tsx +0 -55
  799. package/src/components/jogging/PoseJointValues.tsx +0 -54
  800. package/src/components/jogging/__fixtures__/motionStreamMockData.ts +0 -136
  801. package/src/components/modal/NoMotionGroupModal.tsx +0 -91
  802. package/src/components/robots/AxisConfig.ts +0 -3
  803. package/src/components/robots/DHLinearAxis.tsx +0 -147
  804. package/src/components/robots/DHRobot.tsx +0 -152
  805. package/src/components/robots/GenericRobot.tsx +0 -137
  806. package/src/components/robots/LinearAxis.tsx +0 -74
  807. package/src/components/robots/LinearAxisAnimator.tsx +0 -118
  808. package/src/components/robots/MotionGroupVisualizer.tsx +0 -73
  809. package/src/components/robots/Robot.tsx +0 -57
  810. package/src/components/robots/RobotAnimator.test.tsx +0 -98
  811. package/src/components/robots/RobotAnimator.tsx +0 -116
  812. package/src/components/robots/SupportedLinearAxis.tsx +0 -110
  813. package/src/components/robots/SupportedRobot.tsx +0 -111
  814. package/src/components/robots/ghostStyle.ts +0 -71
  815. package/src/components/robots/manufacturerHomePositions.ts +0 -76
  816. package/src/components/robots/robotModelLogic.ts +0 -158
  817. package/src/components/safetyBar/ControllerTypeIndicator.tsx +0 -79
  818. package/src/components/safetyBar/IndicatorWithExplanation.tsx +0 -137
  819. package/src/components/safetyBar/OperationModeIndicator.tsx +0 -98
  820. package/src/components/safetyBar/SafetyBar.tsx +0 -72
  821. package/src/components/safetyBar/SafetyStateIndicator.tsx +0 -163
  822. package/src/components/safetyBar/icons/controller-type-physical.svg +0 -1
  823. package/src/components/safetyBar/icons/controller-type-virtual.svg +0 -1
  824. package/src/components/safetyBar/icons/index.ts +0 -10
  825. package/src/components/safetyBar/icons/operation-mode-automatic.svg +0 -1
  826. package/src/components/safetyBar/icons/operation-mode-error.svg +0 -1
  827. package/src/components/safetyBar/icons/operation-mode-manual.svg +0 -1
  828. package/src/components/safetyBar/icons/safety-state-error.svg +0 -1
  829. package/src/components/safetyBar/icons/safety-state-estop.svg +0 -1
  830. package/src/components/safetyBar/icons/safety-state-manual-action-required.svg +0 -1
  831. package/src/components/safetyBar/icons/safety-state-normal.svg +0 -1
  832. package/src/components/safetyBar/icons/safety-state-stop.svg +0 -1
  833. package/src/components/utils/converters.ts +0 -90
  834. package/src/components/utils/errorHandling.test.ts +0 -41
  835. package/src/components/utils/errorHandling.ts +0 -38
  836. package/src/components/utils/hooks.tsx +0 -55
  837. package/src/components/utils/interpolation.test.ts +0 -1138
  838. package/src/components/utils/interpolation.ts +0 -380
  839. package/src/core.ts +0 -33
  840. package/src/declarations.d.ts +0 -10
  841. package/src/env.d.ts +0 -3
  842. package/src/externalizeComponent.tsx +0 -28
  843. package/src/i18n/config.ts +0 -26
  844. package/src/i18n/locales/de/translations.json +0 -89
  845. package/src/i18n/locales/en/translations.json +0 -90
  846. package/src/icons/DropdownArrowIcon.tsx +0 -12
  847. package/src/icons/axis-x.svg +0 -1
  848. package/src/icons/axis-y.svg +0 -1
  849. package/src/icons/axis-z.svg +0 -1
  850. package/src/icons/home.svg +0 -1
  851. package/src/icons/index.ts +0 -12
  852. package/src/icons/jog-minus.svg +0 -5
  853. package/src/icons/jog-plus.svg +0 -9
  854. package/src/icons/jogging.svg +0 -1
  855. package/src/icons/orientation-coord-system.svg +0 -1
  856. package/src/icons/orientation-tool.svg +0 -1
  857. package/src/icons/robot.svg +0 -1
  858. package/src/icons/rotation.svg +0 -3
  859. package/src/icons/wbLogo.svg +0 -1
  860. package/src/index.ts +0 -4
  861. package/src/lib/ConnectedMotionGroup.ts +0 -441
  862. package/src/lib/JoggerConnection.test.ts +0 -122
  863. package/src/lib/JoggerConnection.ts +0 -694
  864. package/src/lib/MotionStreamConnection.test.ts +0 -23
  865. package/src/lib/MotionStreamConnection.ts +0 -186
  866. package/src/lib/motionStateUpdate.test.ts +0 -28
  867. package/src/lib/motionStateUpdate.ts +0 -117
  868. package/src/test/consumer.test.ts +0 -230
  869. package/src/test/setup.ts +0 -111
  870. package/src/themes/createDarkTheme.ts +0 -343
  871. package/src/themes/createLightTheme.ts +0 -8
  872. package/src/themes/themeTypes.ts +0 -96
  873. package/src/themes/theming.ts +0 -29
  874. package/src/wb-icons.ts +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimerDefaultVariant.js","sources":["../../../src/components/Timer/TimerDefaultVariant.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\"\nimport Fade from \"@mui/material/Fade\"\nimport Typography from \"@mui/material/Typography\"\nimport { Gauge } from \"@mui/x-charts\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { useTranslation } from \"react-i18next\"\nimport type { TimerState, TimerAnimationState } from \"./types\"\nimport { formatTime } from \"./utils\"\n\ninterface TimerDefaultVariantProps {\n timerState: TimerState\n animationState: TimerAnimationState\n hasError: boolean\n className?: string\n}\n\nexport const TimerDefaultVariant = ({\n timerState,\n animationState,\n hasError,\n className,\n}: TimerDefaultVariantProps) => {\n const { t } = useTranslation()\n const theme = useTheme()\n const { elapsedTime, currentProgress } = timerState\n const { showErrorAnimation, showPauseAnimation, showMainText } =\n animationState\n\n return (\n <Box\n className={className}\n sx={{\n position: \"relative\",\n width: 264,\n height: 264,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Gauge\n width={264}\n height={264}\n value={currentProgress}\n valueMin={0}\n valueMax={100}\n innerRadius=\"85%\"\n outerRadius=\"100%\"\n margin={0}\n skipAnimation={true}\n text={() => \"\"}\n sx={{\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n \"& .MuiGauge-valueArc\": {\n fill: hasError\n ? theme.palette.error.light\n : theme.palette.success.main,\n transition: \"fill 0.5s ease-out\",\n },\n \"& .MuiGauge-referenceArc\": {\n fill: \"#171927\",\n stroke: \"transparent\",\n strokeWidth: 0,\n transition:\n \"fill 0.5s ease-out, stroke 0.5s ease-out, stroke-width 0.5s ease-out\",\n },\n \"& .MuiGauge-valueText\": {\n display: \"none\",\n },\n \"& .MuiGauge-text\": {\n display: \"none\",\n },\n }}\n />\n\n {/* Center content overlay */}\n <Box\n sx={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 225,\n height: 225,\n borderRadius: \"50%\",\n backgroundColor: \"#292B3F\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 1,\n transition: \"background-color 0.5s ease-out\",\n }}\n >\n {/* Main display */}\n <Box\n sx={{\n position: \"relative\",\n height: \"48px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: 0.5,\n }}\n >\n {/* Error text */}\n <Fade in={showMainText && hasError} timeout={200}>\n <Typography\n variant=\"h6\"\n sx={{\n position: \"absolute\",\n fontSize: \"16px\",\n fontWeight: 500,\n color: theme.palette.error.light,\n }}\n >\n {t(\"timer.error\")}\n </Typography>\n </Fade>\n\n {/* Timer display */}\n <Fade in={showMainText && !hasError} timeout={300}>\n <Typography\n variant=\"h1\"\n sx={{\n position: \"absolute\",\n fontSize: \"48px\",\n fontWeight: 500,\n color: theme.palette.text.primary,\n lineHeight: 1,\n letterSpacing: \"-0.5px\",\n }}\n >\n {formatTime(elapsedTime)}\n </Typography>\n </Fade>\n </Box>\n </Box>\n </Box>\n )\n}\n"],"names":["TimerDefaultVariant","timerState","animationState","hasError","className","t","useTranslation","theme","useTheme","elapsedTime","currentProgress","showErrorAnimation","showPauseAnimation","showMainText","jsxs","Box","jsx","Gauge","Fade","Typography"],"mappings":";;;;;;;;AAgBO,MAAMA,IAAsB,CAAC;AAAA,EAClC,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,MAAgC;AAC9B,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAQC,EAAA,GACR,EAAE,aAAAC,GAAa,iBAAAC,EAAA,IAAoBT,GACnC,EAAE,oBAAAU,GAAoB,oBAAAC,GAAoB,cAAAC,EAAA,IAC9CX;AAEF,SACE,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAX;AAAA,MACA,IAAI;AAAA,QACF,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAAA;AAAA,MAGlB,UAAA;AAAA,QAAA,gBAAAY;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAOP;AAAA,YACP,UAAU;AAAA,YACV,UAAU;AAAA,YACV,aAAY;AAAA,YACZ,aAAY;AAAA,YACZ,QAAQ;AAAA,YACR,eAAe;AAAA,YACf,MAAM,MAAM;AAAA,YACZ,IAAI;AAAA,cACF,SAASE,KAAsBD,IAAqB,MAAM;AAAA,cAC1D,YAAY;AAAA,cACZ,wBAAwB;AAAA,gBACtB,MAAMR,IACFI,EAAM,QAAQ,MAAM,QACpBA,EAAM,QAAQ,QAAQ;AAAA,gBAC1B,YAAY;AAAA,cAAA;AAAA,cAEd,4BAA4B;AAAA,gBAC1B,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,aAAa;AAAA,gBACb,YACE;AAAA,cAAA;AAAA,cAEJ,yBAAyB;AAAA,gBACvB,SAAS;AAAA,cAAA;AAAA,cAEX,oBAAoB;AAAA,gBAClB,SAAS;AAAA,cAAA;AAAA,YACX;AAAA,UACF;AAAA,QAAA;AAAA,QAIF,gBAAAS;AAAA,UAACD;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,WAAW;AAAA,cACX,KAAK;AAAA,cACL,YAAY;AAAA,YAAA;AAAA,YAId,UAAA,gBAAAD;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,UAAU;AAAA,kBACV,QAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,gBAAgB;AAAA,kBAChB,cAAc;AAAA,gBAAA;AAAA,gBAIhB,UAAA;AAAA,kBAAA,gBAAAC,EAACE,GAAA,EAAK,IAAIL,KAAgBV,GAAU,SAAS,KAC3C,UAAA,gBAAAa;AAAA,oBAACG;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI;AAAA,wBACF,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,OAAOZ,EAAM,QAAQ,MAAM;AAAA,sBAAA;AAAA,sBAG5B,YAAE,aAAa;AAAA,oBAAA;AAAA,kBAAA,GAEpB;AAAA,oCAGCW,GAAA,EAAK,IAAIL,KAAgB,CAACV,GAAU,SAAS,KAC5C,UAAA,gBAAAa;AAAA,oBAACG;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI;AAAA,wBACF,UAAU;AAAA,wBACV,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,OAAOZ,EAAM,QAAQ,KAAK;AAAA,wBAC1B,YAAY;AAAA,wBACZ,eAAe;AAAA,sBAAA;AAAA,sBAGhB,YAAWE,CAAW;AAAA,oBAAA;AAAA,kBAAA,EACzB,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimerSmallVariant.cjs","sources":["../../../src/components/Timer/TimerSmallVariant.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\"\nimport Typography from \"@mui/material/Typography\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { useTranslation } from \"react-i18next\"\nimport type { TimerAnimationState, TimerState } from \"./types\"\nimport { formatTimeLocalized } from \"./utils\"\n\ninterface TimerSmallVariantProps {\n timerState: TimerState\n animationState: TimerAnimationState\n hasError: boolean\n compact: boolean\n className?: string\n}\n\nexport const TimerSmallVariant = ({\n timerState,\n animationState,\n hasError,\n compact,\n className,\n}: TimerSmallVariantProps) => {\n const { t, i18n } = useTranslation()\n const theme = useTheme()\n const { elapsedTime, currentProgress } = timerState\n const { showErrorAnimation, showPauseAnimation } = animationState\n\n // Simple text-only mode for compact variant\n if (compact) {\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n }}\n >\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n transition: \"color 0.5s ease-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n gap: 1,\n }}\n >\n {/* Animated progress ring icon */}\n <Box\n sx={{\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n style={{ transform: \"rotate(-90deg)\" }}\n role=\"img\"\n aria-label=\"Timer progress\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n opacity={0.3}\n style={{\n transition: \"stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 8}`}\n strokeDashoffset={`${2 * Math.PI * 8 * (1 - currentProgress / 100)}`}\n style={{\n transition:\n \"stroke-dashoffset 0.1s ease-out, stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n </svg>\n </Box>\n\n {/* Timer text display */}\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n transition:\n \"color 0.8s ease-in-out, font-size 0.3s ease-out, opacity 2s ease-in-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n}\n"],"names":["TimerSmallVariant","timerState","animationState","hasError","compact","className","t","i18n","useTranslation","theme","useTheme","elapsedTime","currentProgress","showErrorAnimation","showPauseAnimation","jsx","Box","Typography","formatTimeLocalized","jsxs"],"mappings":"gRAeaA,EAAoB,CAAC,CAChC,WAAAC,EACA,eAAAC,EACA,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,IAA8B,CAC5B,KAAM,CAAE,EAAAC,EAAG,KAAAC,CAAA,EAASC,iBAAA,EACdC,EAAQC,EAAAA,SAAA,EACR,CAAE,YAAAC,EAAa,gBAAAC,CAAA,EAAoBX,EACnC,CAAE,mBAAAY,EAAoB,mBAAAC,CAAA,EAAuBZ,EAGnD,OAAIE,EAEAW,EAAAA,IAACC,EAAA,CACC,UAAAX,EACA,GAAI,CACF,QAAS,OACT,WAAY,SACZ,EAAG,CAAA,EAGL,SAAAU,EAAAA,IAACE,EAAA,CACC,QAAQ,QACR,GAAI,CACF,MAAOd,EACHM,EAAM,QAAQ,MAAM,MACpBA,EAAM,QAAQ,KAAK,QACvB,SAAU,OACV,WAAY,qBAAA,EAGb,WACGH,EAAE,aAAa,EACfY,sBAAoBP,EAAaJ,EAAK,QAAQ,CAAA,CAAA,CACpD,CAAA,EAMJY,EAAAA,KAACH,EAAA,CACC,UAAAX,EACA,GAAI,CACF,QAAS,OACT,WAAY,SACZ,EAAG,EACH,IAAK,CAAA,EAIP,SAAA,CAAAU,EAAAA,IAACC,EAAA,CACC,GAAI,CACF,MAAO,GACP,OAAQ,GACR,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,QAASF,GAAsBD,EAAqB,GAAM,EAC1D,WAAY,uBAAA,EAGd,SAAAM,EAAAA,KAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,MAAO,CAAE,UAAW,gBAAA,EACpB,KAAK,MACL,aAAW,iBAEX,SAAA,CAAAJ,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,KAAK,OACL,OACEZ,EAAWM,EAAM,QAAQ,MAAM,MAAQA,EAAM,QAAQ,QAAQ,KAE/D,YAAY,IACZ,QAAS,GACT,MAAO,CACL,WAAY,iDAAA,CACd,CAAA,EAEFM,EAAAA,IAAC,SAAA,CACC,GAAG,KACH,GAAG,KACH,EAAE,IACF,KAAK,OACL,OACEZ,EAAWM,EAAM,QAAQ,MAAM,MAAQA,EAAM,QAAQ,QAAQ,KAE/D,YAAY,IACZ,cAAc,QACd,gBAAiB,GAAG,EAAI,KAAK,GAAK,CAAC,GACnC,iBAAkB,GAAG,EAAI,KAAK,GAAK,GAAK,EAAIG,EAAkB,IAAI,GAClE,MAAO,CACL,WACE,kFAAA,CACJ,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EAIFG,EAAAA,IAACE,EAAA,CACC,QAAQ,QACR,GAAI,CACF,MAAOd,EACHM,EAAM,QAAQ,MAAM,MACpBA,EAAM,QAAQ,KAAK,QACvB,SAAU,OACV,WAAY,SACZ,cAAe,SACf,WACE,yEAAA,EAGH,WACGH,EAAE,aAAa,EACfY,sBAAoBP,EAAaJ,EAAK,QAAQ,CAAA,CAAA,CACpD,CAAA,CAAA,CAGN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimerSmallVariant.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/TimerSmallVariant.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG9D,UAAU,sBAAsB;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,iBAAiB,GAAI,+DAM/B,sBAAsB,4CAuHxB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimerSmallVariant.js","sources":["../../../src/components/Timer/TimerSmallVariant.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\"\nimport Typography from \"@mui/material/Typography\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { useTranslation } from \"react-i18next\"\nimport type { TimerAnimationState, TimerState } from \"./types\"\nimport { formatTimeLocalized } from \"./utils\"\n\ninterface TimerSmallVariantProps {\n timerState: TimerState\n animationState: TimerAnimationState\n hasError: boolean\n compact: boolean\n className?: string\n}\n\nexport const TimerSmallVariant = ({\n timerState,\n animationState,\n hasError,\n compact,\n className,\n}: TimerSmallVariantProps) => {\n const { t, i18n } = useTranslation()\n const theme = useTheme()\n const { elapsedTime, currentProgress } = timerState\n const { showErrorAnimation, showPauseAnimation } = animationState\n\n // Simple text-only mode for compact variant\n if (compact) {\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n }}\n >\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n transition: \"color 0.5s ease-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n gap: 1,\n }}\n >\n {/* Animated progress ring icon */}\n <Box\n sx={{\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n style={{ transform: \"rotate(-90deg)\" }}\n role=\"img\"\n aria-label=\"Timer progress\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n opacity={0.3}\n style={{\n transition: \"stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 8}`}\n strokeDashoffset={`${2 * Math.PI * 8 * (1 - currentProgress / 100)}`}\n style={{\n transition:\n \"stroke-dashoffset 0.1s ease-out, stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n </svg>\n </Box>\n\n {/* Timer text display */}\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n transition:\n \"color 0.8s ease-in-out, font-size 0.3s ease-out, opacity 2s ease-in-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n}\n"],"names":["TimerSmallVariant","timerState","animationState","hasError","compact","className","t","i18n","useTranslation","theme","useTheme","elapsedTime","currentProgress","showErrorAnimation","showPauseAnimation","jsx","Box","Typography","formatTimeLocalized","jsxs"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Timer/index.tsx"],"sourcesContent":["import { observer } from \"mobx-react-lite\"\nimport { useEffect } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { TimerDefaultVariant } from \"./TimerDefaultVariant\"\nimport { TimerSmallVariant } from \"./TimerSmallVariant\"\nimport type { TimerProps } from \"./types\"\nimport { useTimerAnimations } from \"./useTimerAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A simple count-up timer component with visual progress indication\n *\n * Features:\n * - Count-up timer that tracks elapsed time\n * - Visual progress gauge that cycles every minute\n * - Two display variants: large circular gauge (default) or small icon with text\n * - Full timer control: start, pause, resume, reset functionality\n * - Support for starting with elapsed time (resume mid-session)\n * - Error state support: pauses timer and shows error styling\n * - Smooth progress animations with spring physics\n * - Fully localized with i18next\n * - Material-UI theming integration\n */\nexport const Timer = externalizeComponent(\n observer(\n ({\n onTimerReady,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: TimerProps) => {\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n setInitialAnimationState,\n cleanup,\n } = useTimerAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n })\n\n // Set initial animation state\n useEffect(() => {\n setInitialAnimationState()\n }, [setInitialAnimationState])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onTimerReady(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onTimerReady, controls])\n\n // Cleanup on unmount\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n // Render appropriate variant\n if (variant === \"small\") {\n return (\n <TimerSmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <TimerDefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n\nexport default Timer\n"],"names":["Timer","externalizeComponent","observer","onTimerReady","autoStart","variant","compact","className","hasError","animationState","triggerPauseAnimation","triggerErrorAnimation","clearErrorAnimation","setInitialAnimationState","cleanup","useTimerAnimations","timerState","controls","useTimerLogic","useEffect","isMounted","timeoutId","jsx","TimerSmallVariant","TimerDefaultVariant"],"mappings":"gYAuBaA,EAAQC,EAAAA,qBACnBC,EAAAA,SACE,CAAC,CACC,aAAAC,EACA,UAAAC,EAAY,GACZ,QAAAC,EAAU,UACV,QAAAC,EAAU,GACV,UAAAC,EACA,SAAAC,EAAW,EAAA,IACK,CAEhB,KAAM,CACJ,eAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,yBAAAC,EACA,QAAAC,CAAA,EACEC,qBAAA,EAGE,CAAE,WAAAC,EAAY,SAAAC,CAAA,EAAaC,gBAAc,CAC7C,UAAAd,EACA,SAAAI,EACA,iBAAkBE,EAClB,iBAAkBC,EAClB,sBAAuBC,CAAA,CACxB,EA4BD,OAzBAO,EAAAA,UAAU,IAAM,CACdN,EAAA,CACF,EAAG,CAACA,CAAwB,CAAC,EAG7BM,EAAAA,UAAU,IAAM,CACd,IAAIC,EAAY,GAChB,MAAMC,EAAY,WAAW,IAAM,CAC7BD,GACFjB,EAAac,CAAQ,CAEzB,EAAG,CAAC,EAEJ,MAAO,IAAM,CACXG,EAAY,GACZ,aAAaC,CAAS,CACxB,CACF,EAAG,CAAClB,EAAcc,CAAQ,CAAC,EAG3BE,EAAAA,UAAU,IACDL,EACN,CAACA,CAAO,CAAC,EAGRT,IAAY,QAEZiB,EAAAA,IAACC,EAAAA,kBAAA,CACC,WAAAP,EACA,eAAAP,EACA,SAAAD,EACA,QAAAF,EACA,UAAAC,CAAA,CAAA,EAMJe,EAAAA,IAACE,EAAAA,oBAAA,CACC,WAAAR,EACA,eAAAP,EACA,SAAAD,EACA,UAAAD,CAAA,CAAA,CAGN,CAAA,CAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,yEASX,UAAU;;CAoEhB,CAAA;AAED,eAAe,KAAK,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Timer/index.tsx"],"sourcesContent":["import { observer } from \"mobx-react-lite\"\nimport { useEffect } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { TimerDefaultVariant } from \"./TimerDefaultVariant\"\nimport { TimerSmallVariant } from \"./TimerSmallVariant\"\nimport type { TimerProps } from \"./types\"\nimport { useTimerAnimations } from \"./useTimerAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A simple count-up timer component with visual progress indication\n *\n * Features:\n * - Count-up timer that tracks elapsed time\n * - Visual progress gauge that cycles every minute\n * - Two display variants: large circular gauge (default) or small icon with text\n * - Full timer control: start, pause, resume, reset functionality\n * - Support for starting with elapsed time (resume mid-session)\n * - Error state support: pauses timer and shows error styling\n * - Smooth progress animations with spring physics\n * - Fully localized with i18next\n * - Material-UI theming integration\n */\nexport const Timer = externalizeComponent(\n observer(\n ({\n onTimerReady,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: TimerProps) => {\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n setInitialAnimationState,\n cleanup,\n } = useTimerAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n })\n\n // Set initial animation state\n useEffect(() => {\n setInitialAnimationState()\n }, [setInitialAnimationState])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onTimerReady(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onTimerReady, controls])\n\n // Cleanup on unmount\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n // Render appropriate variant\n if (variant === \"small\") {\n return (\n <TimerSmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <TimerDefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n\nexport default Timer\n"],"names":["Timer","externalizeComponent","observer","onTimerReady","autoStart","variant","compact","className","hasError","animationState","triggerPauseAnimation","triggerErrorAnimation","clearErrorAnimation","setInitialAnimationState","cleanup","useTimerAnimations","timerState","controls","useTimerLogic","useEffect","isMounted","timeoutId","jsx","TimerSmallVariant","TimerDefaultVariant"],"mappings":";;;;;;;;AAuBO,MAAMA,IAAQC;AAAA,EACnBC;AAAA,IACE,CAAC;AAAA,MACC,cAAAC;AAAA,MACA,WAAAC,IAAY;AAAA,MACZ,SAAAC,IAAU;AAAA,MACV,SAAAC,IAAU;AAAA,MACV,WAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,IAAA,MACK;AAEhB,YAAM;AAAA,QACJ,gBAAAC;AAAA,QACA,uBAAAC;AAAA,QACA,uBAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,0BAAAC;AAAA,QACA,SAAAC;AAAA,MAAA,IACEC,EAAA,GAGE,EAAE,YAAAC,GAAY,UAAAC,EAAA,IAAaC,EAAc;AAAA,QAC7C,WAAAd;AAAA,QACA,UAAAI;AAAA,QACA,kBAAkBE;AAAA,QAClB,kBAAkBC;AAAA,QAClB,uBAAuBC;AAAA,MAAA,CACxB;AA4BD,aAzBAO,EAAU,MAAM;AACd,QAAAN,EAAA;AAAA,MACF,GAAG,CAACA,CAAwB,CAAC,GAG7BM,EAAU,MAAM;AACd,YAAIC,IAAY;AAChB,cAAMC,IAAY,WAAW,MAAM;AACjC,UAAID,KACFjB,EAAac,CAAQ;AAAA,QAEzB,GAAG,CAAC;AAEJ,eAAO,MAAM;AACX,UAAAG,IAAY,IACZ,aAAaC,CAAS;AAAA,QACxB;AAAA,MACF,GAAG,CAAClB,GAAcc,CAAQ,CAAC,GAG3BE,EAAU,MACDL,GACN,CAACA,CAAO,CAAC,GAGRT,MAAY,UAEZ,gBAAAiB;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,YAAAP;AAAA,UACA,gBAAAP;AAAA,UACA,UAAAD;AAAA,UACA,SAAAF;AAAA,UACA,WAAAC;AAAA,QAAA;AAAA,MAAA,IAMJ,gBAAAe;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,YAAAR;AAAA,UACA,gBAAAP;AAAA,UACA,UAAAD;AAAA,UACA,WAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IAGN;AAAA,EAAA;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,YAAY,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAA;IAC/C,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC7B,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;CACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerAnimations.cjs","sources":["../../../src/components/Timer/useTimerAnimations.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\"\nimport type { TimerAnimationState } from \"./types\"\n\nexport const useTimerAnimations = () => {\n const [animationState, setAnimationState] = useState<TimerAnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showMainText: true,\n })\n\n // Refs for managing timeouts\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const triggerPauseAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: true }))\n\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n\n pauseAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: false }))\n }, 800)\n }, [])\n\n const triggerErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: true }))\n\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n\n errorAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n }, 600)\n }, [])\n\n const clearErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: false,\n }))\n\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n\n fadeTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, [])\n\n // Cleanup function\n const cleanup = useCallback(() => {\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n"],"names":["useTimerAnimations","animationState","setAnimationState","useState","pauseAnimationTimeoutRef","useRef","errorAnimationTimeoutRef","fadeTimeoutRef","triggerPauseAnimation","useCallback","prev","triggerErrorAnimation","clearErrorAnimation","triggerFadeTransition","setInitialAnimationState","cleanup"],"mappings":"yGAGaA,EAAqB,IAAM,CACtC,KAAM,CAACC,EAAgBC,CAAiB,EAAIC,WAA8B,CACxE,mBAAoB,GACpB,mBAAoB,GACpB,aAAc,EAAA,CACf,EAGKC,EAA2BC,EAAAA,OAA8B,IAAI,EAC7DC,EAA2BD,EAAAA,OAA8B,IAAI,EAC7DE,EAAiBF,EAAAA,OAA8B,IAAI,EAEnDG,EAAwBC,EAAAA,YAAY,IAAM,CAC9CP,EAAmBQ,IAAU,CAAE,GAAGA,EAAM,mBAAoB,IAAO,EAE/DN,EAAyB,SAC3B,aAAaA,EAAyB,OAAO,EAG/CA,EAAyB,QAAU,WAAW,IAAM,CAClDF,EAAmBQ,IAAU,CAAE,GAAGA,EAAM,mBAAoB,IAAQ,CACtE,EAAG,GAAG,CACR,EAAG,CAAA,CAAE,EAECC,EAAwBF,EAAAA,YAAY,IAAM,CAC9CP,EAAmBQ,IAAU,CAAE,GAAGA,EAAM,mBAAoB,IAAO,EAE/DJ,EAAyB,SAC3B,aAAaA,EAAyB,OAAO,EAG/CA,EAAyB,QAAU,WAAW,IAAM,CAClDJ,EAAmBQ,IAAU,CAAE,GAAGA,EAAM,mBAAoB,IAAQ,CACtE,EAAG,GAAG,CACR,EAAG,CAAA,CAAE,EAECE,EAAsBH,EAAAA,YAAY,IAAM,CAC5CP,EAAmBQ,IAAU,CAAE,GAAGA,EAAM,mBAAoB,IAAQ,EAChEJ,EAAyB,SAC3B,aAAaA,EAAyB,OAAO,CAEjD,EAAG,CAAA,CAAE,EAECO,EAAwBJ,EAAAA,YAAY,IAAM,CAC9CP,EAAmBQ,IAAU,CAC3B,GAAGA,EACH,aAAc,EAAA,EACd,EAEEH,EAAe,SACjB,aAAaA,EAAe,OAAO,EAGrCA,EAAe,QAAU,WAAW,IAAM,CACxCL,EAAmBQ,IAAU,CAC3B,GAAGA,EACH,aAAc,EAAA,EACd,CACJ,EAAG,GAAG,CACR,EAAG,CAAA,CAAE,EAECI,EAA2BL,EAAAA,YAAY,IAAM,CACjDP,EAAmBQ,IAAU,CAC3B,GAAGA,EACH,aAAc,EAAA,EACd,CACJ,EAAG,CAAA,CAAE,EAGCK,EAAUN,EAAAA,YAAY,IAAM,CAC5BL,EAAyB,SAC3B,aAAaA,EAAyB,OAAO,EAE3CE,EAAyB,SAC3B,aAAaA,EAAyB,OAAO,EAE3CC,EAAe,SACjB,aAAaA,EAAe,OAAO,CAEvC,EAAG,CAAA,CAAE,EAEL,MAAO,CACL,eAAAN,EACA,sBAAAO,EACA,sBAAAG,EACA,oBAAAC,EACA,sBAAAC,EACA,yBAAAC,EACA,QAAAC,CAAA,CAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerAnimations.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/useTimerAnimations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD,eAAO,MAAM,kBAAkB;;;;;;;;CA0F9B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerAnimations.js","sources":["../../../src/components/Timer/useTimerAnimations.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\"\nimport type { TimerAnimationState } from \"./types\"\n\nexport const useTimerAnimations = () => {\n const [animationState, setAnimationState] = useState<TimerAnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showMainText: true,\n })\n\n // Refs for managing timeouts\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const triggerPauseAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: true }))\n\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n\n pauseAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: false }))\n }, 800)\n }, [])\n\n const triggerErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: true }))\n\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n\n errorAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n }, 600)\n }, [])\n\n const clearErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: false,\n }))\n\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n\n fadeTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, [])\n\n // Cleanup function\n const cleanup = useCallback(() => {\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n"],"names":["useTimerAnimations","animationState","setAnimationState","useState","pauseAnimationTimeoutRef","useRef","errorAnimationTimeoutRef","fadeTimeoutRef","triggerPauseAnimation","useCallback","prev","triggerErrorAnimation","clearErrorAnimation","triggerFadeTransition","setInitialAnimationState","cleanup"],"mappings":";AAGO,MAAMA,IAAqB,MAAM;AACtC,QAAM,CAACC,GAAgBC,CAAiB,IAAIC,EAA8B;AAAA,IACxE,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,cAAc;AAAA,EAAA,CACf,GAGKC,IAA2BC,EAA8B,IAAI,GAC7DC,IAA2BD,EAA8B,IAAI,GAC7DE,IAAiBF,EAA8B,IAAI,GAEnDG,IAAwBC,EAAY,MAAM;AAC9C,IAAAP,EAAkB,CAACQ,OAAU,EAAE,GAAGA,GAAM,oBAAoB,KAAO,GAE/DN,EAAyB,WAC3B,aAAaA,EAAyB,OAAO,GAG/CA,EAAyB,UAAU,WAAW,MAAM;AAClD,MAAAF,EAAkB,CAACQ,OAAU,EAAE,GAAGA,GAAM,oBAAoB,KAAQ;AAAA,IACtE,GAAG,GAAG;AAAA,EACR,GAAG,CAAA,CAAE,GAECC,IAAwBF,EAAY,MAAM;AAC9C,IAAAP,EAAkB,CAACQ,OAAU,EAAE,GAAGA,GAAM,oBAAoB,KAAO,GAE/DJ,EAAyB,WAC3B,aAAaA,EAAyB,OAAO,GAG/CA,EAAyB,UAAU,WAAW,MAAM;AAClD,MAAAJ,EAAkB,CAACQ,OAAU,EAAE,GAAGA,GAAM,oBAAoB,KAAQ;AAAA,IACtE,GAAG,GAAG;AAAA,EACR,GAAG,CAAA,CAAE,GAECE,IAAsBH,EAAY,MAAM;AAC5C,IAAAP,EAAkB,CAACQ,OAAU,EAAE,GAAGA,GAAM,oBAAoB,KAAQ,GAChEJ,EAAyB,WAC3B,aAAaA,EAAyB,OAAO;AAAA,EAEjD,GAAG,CAAA,CAAE,GAECO,IAAwBJ,EAAY,MAAM;AAC9C,IAAAP,EAAkB,CAACQ,OAAU;AAAA,MAC3B,GAAGA;AAAA,MACH,cAAc;AAAA,IAAA,EACd,GAEEH,EAAe,WACjB,aAAaA,EAAe,OAAO,GAGrCA,EAAe,UAAU,WAAW,MAAM;AACxC,MAAAL,EAAkB,CAACQ,OAAU;AAAA,QAC3B,GAAGA;AAAA,QACH,cAAc;AAAA,MAAA,EACd;AAAA,IACJ,GAAG,GAAG;AAAA,EACR,GAAG,CAAA,CAAE,GAECI,IAA2BL,EAAY,MAAM;AACjD,IAAAP,EAAkB,CAACQ,OAAU;AAAA,MAC3B,GAAGA;AAAA,MACH,cAAc;AAAA,IAAA,EACd;AAAA,EACJ,GAAG,CAAA,CAAE,GAGCK,IAAUN,EAAY,MAAM;AAChC,IAAIL,EAAyB,WAC3B,aAAaA,EAAyB,OAAO,GAE3CE,EAAyB,WAC3B,aAAaA,EAAyB,OAAO,GAE3CC,EAAe,WACjB,aAAaA,EAAe,OAAO;AAAA,EAEvC,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL,gBAAAN;AAAA,IACA,uBAAAO;AAAA,IACA,uBAAAG;AAAA,IACA,qBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,SAAAC;AAAA,EAAA;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.cjs","sources":["../../../src/components/Timer/useTimerLogic.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n wasRunningBeforeError: false,\n })\n\n // Timer-related refs\n const animationRef = useRef<number | null>(null)\n const startTimeRef = useRef<number | null>(null)\n const pausedTimeRef = useRef<number>(0)\n const lastProgressRef = useRef<number>(0)\n\n // Spring-based interpolator for smooth gauge progress animations\n const [progressInterpolator] = useInterpolation([0], {\n tension: 80,\n friction: 18,\n onChange: ([progress]) => {\n setTimerState((prev) => ({ ...prev, currentProgress: progress }))\n },\n })\n\n const start = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress,\n }))\n pausedTimeRef.current = 0\n lastProgressRef.current = initialProgress\n\n progressInterpolator.setImmediate([initialProgress])\n\n if (autoStart) {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, progressInterpolator],\n )\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const totalElapsed =\n (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n progressInterpolator.setTarget([currentProgress])\n\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [timerState.isRunning, progressInterpolator, onPauseAnimation])\n\n const resume = useCallback(() => {\n if (timerState.isPausedState) {\n pausedTimeRef.current = timerState.elapsedTime\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [timerState.isPausedState, timerState.elapsedTime])\n\n const reset = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n lastProgressRef.current = 0\n progressInterpolator.setImmediate([0])\n }, [progressInterpolator])\n\n const isPaused = useCallback(() => {\n return timerState.isPausedState\n }, [timerState.isPausedState])\n\n // Handle error state changes\n useEffect(() => {\n if (hasError) {\n if (timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && !timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.wasRunningBeforeError,\n pause,\n resume,\n onErrorAnimation,\n onClearErrorAnimation,\n ])\n\n // Main timer loop\n useEffect(() => {\n if (timerState.isRunning) {\n const updateTimer = () => {\n if (startTimeRef.current) {\n const now = Date.now()\n const totalElapsed =\n (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n\n // Only update progress interpolator if progress changed significantly\n const progressDiff = Math.abs(\n currentProgress - lastProgressRef.current,\n )\n if (progressDiff > 0.1) {\n progressInterpolator.setTarget([currentProgress])\n lastProgressRef.current = currentProgress\n }\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n } else {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n }, [timerState.isRunning, progressInterpolator])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update()\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n }\n\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n\n return () => {\n if (interpolationAnimationId) {\n cancelAnimationFrame(interpolationAnimationId)\n }\n }\n }, [progressInterpolator])\n\n return {\n timerState,\n controls: {\n start,\n pause,\n resume,\n reset,\n isPaused,\n },\n }\n}\n"],"names":["useTimerLogic","autoStart","hasError","onPauseAnimation","onErrorAnimation","onClearErrorAnimation","timerState","setTimerState","useState","animationRef","useRef","startTimeRef","pausedTimeRef","lastProgressRef","progressInterpolator","useInterpolation","progress","prev","start","useCallback","elapsedSeconds","initialProgress","pause","totalElapsed","currentProgress","resume","reset","isPaused","useEffect","updateTimer","interpolationAnimationId","animateInterpolation"],"mappings":"iJAYaA,EAAgB,CAAC,CAC5B,UAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,sBAAAC,CACF,IAA0B,CACxB,KAAM,CAACC,EAAYC,CAAa,EAAIC,WAAqB,CACvD,YAAa,EACb,UAAW,GACX,cAAe,GACf,gBAAiB,EACjB,sBAAuB,EAAA,CACxB,EAGKC,EAAeC,EAAAA,OAAsB,IAAI,EACzCC,EAAeD,EAAAA,OAAsB,IAAI,EACzCE,EAAgBF,EAAAA,OAAe,CAAC,EAChCG,EAAkBH,EAAAA,OAAe,CAAC,EAGlC,CAACI,CAAoB,EAAIC,mBAAiB,CAAC,CAAC,EAAG,CACnD,QAAS,GACT,SAAU,GACV,SAAU,CAAC,CAACC,CAAQ,IAAM,CACxBT,EAAeU,IAAU,CAAE,GAAGA,EAAM,gBAAiBD,GAAW,CAClE,CAAA,CACD,EAEKE,EAAQC,EAAAA,YACZ,CAACC,EAAyB,IAAM,CAC9B,MAAMC,EAAoBD,EAAiB,GAAM,EAAK,IACtDb,EAAeU,IAAU,CACvB,GAAGA,EACH,YAAaG,EACb,cAAe,GACf,gBAAiBC,CAAA,EACjB,EACFT,EAAc,QAAU,EACxBC,EAAgB,QAAUQ,EAE1BP,EAAqB,aAAa,CAACO,CAAe,CAAC,EAE/CpB,GACFU,EAAa,QAAU,KAAK,IAAA,EAAQS,EAAiB,IACrDb,EAAeU,IAAU,CAAE,GAAGA,EAAM,UAAW,IAAO,GAEtDN,EAAa,QAAU,IAE3B,EACA,CAACV,EAAWa,CAAoB,CAAA,EAG5BQ,EAAQH,EAAAA,YAAY,IAAM,CAC9B,GAAIR,EAAa,SAAWL,EAAW,UAAW,CAEhD,MAAMiB,GADM,KAAK,IAAA,EAERZ,EAAa,SAAW,IAAOC,EAAc,QAChDY,EAAoBD,EAAe,GAAM,EAAK,IACpDT,EAAqB,UAAU,CAACU,CAAe,CAAC,EAEhDjB,EAAeU,IAAU,CACvB,GAAGA,EACH,YAAa,KAAK,MAAMM,CAAY,CAAA,EACpC,CACJ,CAEAhB,EAAeU,IAAU,CACvB,GAAGA,EACH,UAAW,GACX,cAAe,EAAA,EACf,EACFd,EAAA,CACF,EAAG,CAACG,EAAW,UAAWQ,EAAsBX,CAAgB,CAAC,EAE3DsB,EAASN,EAAAA,YAAY,IAAM,CAC3Bb,EAAW,gBACbM,EAAc,QAAUN,EAAW,YACnCK,EAAa,QAAU,KAAK,IAAA,EAC5BJ,EAAeU,IAAU,CACvB,GAAGA,EACH,UAAW,GACX,cAAe,EAAA,EACf,EAEN,EAAG,CAACX,EAAW,cAAeA,EAAW,WAAW,CAAC,EAE/CoB,EAAQP,EAAAA,YAAY,IAAM,CAC9BZ,EAAeU,IAAU,CACvB,GAAGA,EACH,YAAa,EACb,UAAW,GACX,cAAe,GACf,gBAAiB,CAAA,EACjB,EACFL,EAAc,QAAU,EACxBD,EAAa,QAAU,KACvBE,EAAgB,QAAU,EAC1BC,EAAqB,aAAa,CAAC,CAAC,CAAC,CACvC,EAAG,CAACA,CAAoB,CAAC,EAEnBa,EAAWR,EAAAA,YAAY,IACpBb,EAAW,cACjB,CAACA,EAAW,aAAa,CAAC,EAG7BsB,OAAAA,EAAAA,UAAU,IAAM,CACV1B,GACEI,EAAW,YACbC,EAAeU,IAAU,CAAE,GAAGA,EAAM,sBAAuB,IAAO,EAClEK,EAAA,GAEFlB,EAAA,IAEIE,EAAW,uBAAyB,CAACA,EAAW,YAClDC,EAAeU,IAAU,CAAE,GAAGA,EAAM,sBAAuB,IAAQ,EACnEQ,EAAA,GAEFpB,EAAA,EAEJ,EAAG,CACDH,EACAI,EAAW,UACXA,EAAW,sBACXgB,EACAG,EACArB,EACAC,CAAA,CACD,EAGDuB,EAAAA,UAAU,IAAM,CACd,GAAItB,EAAW,UAAW,CACxB,MAAMuB,EAAc,IAAM,CACxB,GAAIlB,EAAa,QAAS,CAExB,MAAMY,GADM,KAAK,IAAA,EAERZ,EAAa,SAAW,IAAOC,EAAc,QAChDY,EAAoBD,EAAe,GAAM,EAAK,IAEpDhB,EAAeU,IAAU,CACvB,GAAGA,EACH,YAAa,KAAK,MAAMM,CAAY,CAAA,EACpC,EAGmB,KAAK,IACxBC,EAAkBX,EAAgB,OAAA,EAEjB,KACjBC,EAAqB,UAAU,CAACU,CAAe,CAAC,EAChDX,EAAgB,QAAUW,EAE9B,CACAf,EAAa,QAAU,sBAAsBoB,CAAW,CAC1D,EACApB,EAAa,QAAU,sBAAsBoB,CAAW,CAC1D,MACMpB,EAAa,UACf,qBAAqBA,EAAa,OAAO,EACzCA,EAAa,QAAU,MAI3B,MAAO,IAAM,CACPA,EAAa,UACf,qBAAqBA,EAAa,OAAO,EACzCA,EAAa,QAAU,KAE3B,CACF,EAAG,CAACH,EAAW,UAAWQ,CAAoB,CAAC,EAG/Cc,EAAAA,UAAU,IAAM,CACd,IAAIE,EAA0C,KAE9C,MAAMC,EAAuB,IAAM,CACjCjB,EAAqB,OAAA,EACrBgB,EAA2B,sBAAsBC,CAAoB,CACvE,EAEA,OAAAD,EAA2B,sBAAsBC,CAAoB,EAE9D,IAAM,CACPD,GACF,qBAAqBA,CAAwB,CAEjD,CACF,EAAG,CAAChB,CAAoB,CAAC,EAElB,CACL,WAAAR,EACA,SAAU,CACR,MAAAY,EACA,MAAAI,EACA,OAAAG,EACA,MAAAC,EACA,SAAAC,CAAA,CACF,CAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/useTimerLogic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,qBAAqB,EAAE,MAAM,IAAI,CAAA;CAClC;AAED,eAAO,MAAM,aAAa,GAAI,qFAM3B,kBAAkB;;;iCAyBA,MAAM;;;;;;CA0K1B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.js","sources":["../../../src/components/Timer/useTimerLogic.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n wasRunningBeforeError: false,\n })\n\n // Timer-related refs\n const animationRef = useRef<number | null>(null)\n const startTimeRef = useRef<number | null>(null)\n const pausedTimeRef = useRef<number>(0)\n const lastProgressRef = useRef<number>(0)\n\n // Spring-based interpolator for smooth gauge progress animations\n const [progressInterpolator] = useInterpolation([0], {\n tension: 80,\n friction: 18,\n onChange: ([progress]) => {\n setTimerState((prev) => ({ ...prev, currentProgress: progress }))\n },\n })\n\n const start = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress,\n }))\n pausedTimeRef.current = 0\n lastProgressRef.current = initialProgress\n\n progressInterpolator.setImmediate([initialProgress])\n\n if (autoStart) {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, progressInterpolator],\n )\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const totalElapsed =\n (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n progressInterpolator.setTarget([currentProgress])\n\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [timerState.isRunning, progressInterpolator, onPauseAnimation])\n\n const resume = useCallback(() => {\n if (timerState.isPausedState) {\n pausedTimeRef.current = timerState.elapsedTime\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [timerState.isPausedState, timerState.elapsedTime])\n\n const reset = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n lastProgressRef.current = 0\n progressInterpolator.setImmediate([0])\n }, [progressInterpolator])\n\n const isPaused = useCallback(() => {\n return timerState.isPausedState\n }, [timerState.isPausedState])\n\n // Handle error state changes\n useEffect(() => {\n if (hasError) {\n if (timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && !timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.wasRunningBeforeError,\n pause,\n resume,\n onErrorAnimation,\n onClearErrorAnimation,\n ])\n\n // Main timer loop\n useEffect(() => {\n if (timerState.isRunning) {\n const updateTimer = () => {\n if (startTimeRef.current) {\n const now = Date.now()\n const totalElapsed =\n (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n\n // Only update progress interpolator if progress changed significantly\n const progressDiff = Math.abs(\n currentProgress - lastProgressRef.current,\n )\n if (progressDiff > 0.1) {\n progressInterpolator.setTarget([currentProgress])\n lastProgressRef.current = currentProgress\n }\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n } else {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n }, [timerState.isRunning, progressInterpolator])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update()\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n }\n\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n\n return () => {\n if (interpolationAnimationId) {\n cancelAnimationFrame(interpolationAnimationId)\n }\n }\n }, [progressInterpolator])\n\n return {\n timerState,\n controls: {\n start,\n pause,\n resume,\n reset,\n isPaused,\n },\n }\n}\n"],"names":["useTimerLogic","autoStart","hasError","onPauseAnimation","onErrorAnimation","onClearErrorAnimation","timerState","setTimerState","useState","animationRef","useRef","startTimeRef","pausedTimeRef","lastProgressRef","progressInterpolator","useInterpolation","progress","prev","start","useCallback","elapsedSeconds","initialProgress","pause","totalElapsed","currentProgress","resume","reset","isPaused","useEffect","updateTimer","interpolationAnimationId","animateInterpolation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../../src/components/Timer/utils.ts"],"sourcesContent":["/**\n * Formats time in seconds to D:HH:MM:SS, H:MM:SS or MM:SS format\n * Used for the default (large) timer variant\n * Automatically includes days and hours as needed for clarity\n */\nexport const formatTime = (seconds: number): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Build time parts array\n const parts: string[] = []\n\n if (days > 0) {\n parts.push(days.toString())\n parts.push(hours.toString().padStart(2, \"0\"))\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else if (hours > 0) {\n parts.push(hours.toString())\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else {\n parts.push(minutes.toString())\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n }\n\n return parts.join(\":\")\n}\n\n/**\n * Formats time in seconds to a localized human-readable format\n * Used for the small timer variant\n * Examples: \"2h 30m 15s\", \"45m 30s\", \"30s\"\n * Falls back to English units if Intl.DurationFormat is not available\n */\nexport const formatTimeLocalized = (\n seconds: number,\n locale?: string,\n): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Try using Intl.DurationFormat if available (newer browsers)\n if (typeof Intl !== \"undefined\" && \"DurationFormat\" in Intl) {\n try {\n const duration: Record<string, number> = {}\n if (days > 0) duration.days = days\n if (hours > 0) duration.hours = hours\n if (minutes > 0) duration.minutes = minutes\n if (remainingSeconds > 0 || Object.keys(duration).length === 0) {\n duration.seconds = remainingSeconds\n }\n\n // @ts-expect-error\n // TODO: Remove suppression once Intl.DurationFormat is supported in TypeScript types.\n // See: https://github.com/microsoft/TypeScript/issues/53971\n // DurationFormat is a proposed API and not yet available in TypeScript's standard library types.\n const formatter = new Intl.DurationFormat(locale, { style: \"narrow\" })\n return formatter.format(duration)\n } catch {\n // Fall through to manual formatting\n }\n }\n\n // Manual formatting with compact units\n const parts: string[] = []\n\n if (days > 0) parts.push(`${days}d`)\n if (hours > 0) parts.push(`${hours}h`)\n if (minutes > 0) parts.push(`${minutes}m`)\n if (remainingSeconds > 0 || parts.length === 0) {\n parts.push(`${remainingSeconds}s`)\n }\n\n return parts.join(\" \")\n}\n\n/**\n * Calculates progress percentage for timer (minute-based cycles)\n */\nexport const calculateTimerProgress = (elapsedTime: number): number => {\n return ((elapsedTime / 60) % 1) * 100\n}\n"],"names":["formatTime","seconds","days","hours","minutes","remainingSeconds","parts","formatTimeLocalized","locale","duration"],"mappings":"gFAKO,MAAMA,EAAcC,GAA4B,CACrD,MAAMC,EAAO,KAAK,MAAMD,EAAU,KAAK,EACjCE,EAAQ,KAAK,MAAOF,EAAU,MAAS,IAAI,EAC3CG,EAAU,KAAK,MAAOH,EAAU,KAAQ,EAAE,EAC1CI,EAAmBJ,EAAU,GAG7BK,EAAkB,CAAA,EAExB,OAAIJ,EAAO,GACTI,EAAM,KAAKJ,EAAK,UAAU,EAC1BI,EAAM,KAAKH,EAAM,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,EAC5CG,EAAM,KAAKF,EAAQ,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,EAC9CE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,GAC9CF,EAAQ,GACjBG,EAAM,KAAKH,EAAM,UAAU,EAC3BG,EAAM,KAAKF,EAAQ,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,EAC9CE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,IAEvDC,EAAM,KAAKF,EAAQ,UAAU,EAC7BE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,EAAG,GAAG,CAAC,GAGlDC,EAAM,KAAK,GAAG,CACvB,EAQaC,EAAsB,CACjCN,EACAO,IACW,CACX,MAAMN,EAAO,KAAK,MAAMD,EAAU,KAAK,EACjCE,EAAQ,KAAK,MAAOF,EAAU,MAAS,IAAI,EAC3CG,EAAU,KAAK,MAAOH,EAAU,KAAQ,EAAE,EAC1CI,EAAmBJ,EAAU,GAGnC,GAAI,OAAO,KAAS,KAAe,mBAAoB,KACrD,GAAI,CACF,MAAMQ,EAAmC,CAAA,EACzC,OAAIP,EAAO,IAAGO,EAAS,KAAOP,GAC1BC,EAAQ,IAAGM,EAAS,MAAQN,GAC5BC,EAAU,IAAGK,EAAS,QAAUL,IAChCC,EAAmB,GAAK,OAAO,KAAKI,CAAQ,EAAE,SAAW,KAC3DA,EAAS,QAAUJ,GAOH,IAAI,KAAK,eAAeG,EAAQ,CAAE,MAAO,SAAU,EACpD,OAAOC,CAAQ,CAClC,MAAQ,CAER,CAIF,MAAMH,EAAkB,CAAA,EAExB,OAAIJ,EAAO,GAAGI,EAAM,KAAK,GAAGJ,CAAI,GAAG,EAC/BC,EAAQ,GAAGG,EAAM,KAAK,GAAGH,CAAK,GAAG,EACjCC,EAAU,GAAGE,EAAM,KAAK,GAAGF,CAAO,GAAG,GACrCC,EAAmB,GAAKC,EAAM,SAAW,IAC3CA,EAAM,KAAK,GAAGD,CAAgB,GAAG,EAG5BC,EAAM,KAAK,GAAG,CACvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,MAwB5C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,SAAS,MAAM,KACd,MAuCF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,KAAG,MAE5D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/Timer/utils.ts"],"sourcesContent":["/**\n * Formats time in seconds to D:HH:MM:SS, H:MM:SS or MM:SS format\n * Used for the default (large) timer variant\n * Automatically includes days and hours as needed for clarity\n */\nexport const formatTime = (seconds: number): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Build time parts array\n const parts: string[] = []\n\n if (days > 0) {\n parts.push(days.toString())\n parts.push(hours.toString().padStart(2, \"0\"))\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else if (hours > 0) {\n parts.push(hours.toString())\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else {\n parts.push(minutes.toString())\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n }\n\n return parts.join(\":\")\n}\n\n/**\n * Formats time in seconds to a localized human-readable format\n * Used for the small timer variant\n * Examples: \"2h 30m 15s\", \"45m 30s\", \"30s\"\n * Falls back to English units if Intl.DurationFormat is not available\n */\nexport const formatTimeLocalized = (\n seconds: number,\n locale?: string,\n): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Try using Intl.DurationFormat if available (newer browsers)\n if (typeof Intl !== \"undefined\" && \"DurationFormat\" in Intl) {\n try {\n const duration: Record<string, number> = {}\n if (days > 0) duration.days = days\n if (hours > 0) duration.hours = hours\n if (minutes > 0) duration.minutes = minutes\n if (remainingSeconds > 0 || Object.keys(duration).length === 0) {\n duration.seconds = remainingSeconds\n }\n\n // @ts-expect-error\n // TODO: Remove suppression once Intl.DurationFormat is supported in TypeScript types.\n // See: https://github.com/microsoft/TypeScript/issues/53971\n // DurationFormat is a proposed API and not yet available in TypeScript's standard library types.\n const formatter = new Intl.DurationFormat(locale, { style: \"narrow\" })\n return formatter.format(duration)\n } catch {\n // Fall through to manual formatting\n }\n }\n\n // Manual formatting with compact units\n const parts: string[] = []\n\n if (days > 0) parts.push(`${days}d`)\n if (hours > 0) parts.push(`${hours}h`)\n if (minutes > 0) parts.push(`${minutes}m`)\n if (remainingSeconds > 0 || parts.length === 0) {\n parts.push(`${remainingSeconds}s`)\n }\n\n return parts.join(\" \")\n}\n\n/**\n * Calculates progress percentage for timer (minute-based cycles)\n */\nexport const calculateTimerProgress = (elapsedTime: number): number => {\n return ((elapsedTime / 60) % 1) * 100\n}\n"],"names":["formatTime","seconds","days","hours","minutes","remainingSeconds","parts","formatTimeLocalized","locale","duration"],"mappings":"AAKO,MAAMA,IAAa,CAACC,MAA4B;AACrD,QAAMC,IAAO,KAAK,MAAMD,IAAU,KAAK,GACjCE,IAAQ,KAAK,MAAOF,IAAU,QAAS,IAAI,GAC3CG,IAAU,KAAK,MAAOH,IAAU,OAAQ,EAAE,GAC1CI,IAAmBJ,IAAU,IAG7BK,IAAkB,CAAA;AAExB,SAAIJ,IAAO,KACTI,EAAM,KAAKJ,EAAK,UAAU,GAC1BI,EAAM,KAAKH,EAAM,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,GAC5CG,EAAM,KAAKF,EAAQ,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,GAC9CE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,KAC9CF,IAAQ,KACjBG,EAAM,KAAKH,EAAM,UAAU,GAC3BG,EAAM,KAAKF,EAAQ,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,GAC9CE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,MAEvDC,EAAM,KAAKF,EAAQ,UAAU,GAC7BE,EAAM,KAAKD,EAAiB,SAAA,EAAW,SAAS,GAAG,GAAG,CAAC,IAGlDC,EAAM,KAAK,GAAG;AACvB,GAQaC,IAAsB,CACjCN,GACAO,MACW;AACX,QAAMN,IAAO,KAAK,MAAMD,IAAU,KAAK,GACjCE,IAAQ,KAAK,MAAOF,IAAU,QAAS,IAAI,GAC3CG,IAAU,KAAK,MAAOH,IAAU,OAAQ,EAAE,GAC1CI,IAAmBJ,IAAU;AAGnC,MAAI,OAAO,OAAS,OAAe,oBAAoB;AACrD,QAAI;AACF,YAAMQ,IAAmC,CAAA;AACzC,aAAIP,IAAO,MAAGO,EAAS,OAAOP,IAC1BC,IAAQ,MAAGM,EAAS,QAAQN,IAC5BC,IAAU,MAAGK,EAAS,UAAUL,KAChCC,IAAmB,KAAK,OAAO,KAAKI,CAAQ,EAAE,WAAW,OAC3DA,EAAS,UAAUJ,IAOH,IAAI,KAAK,eAAeG,GAAQ,EAAE,OAAO,UAAU,EACpD,OAAOC,CAAQ;AAAA,IAClC,QAAQ;AAAA,IAER;AAIF,QAAMH,IAAkB,CAAA;AAExB,SAAIJ,IAAO,KAAGI,EAAM,KAAK,GAAGJ,CAAI,GAAG,GAC/BC,IAAQ,KAAGG,EAAM,KAAK,GAAGH,CAAK,GAAG,GACjCC,IAAU,KAAGE,EAAM,KAAK,GAAGF,CAAO,GAAG,IACrCC,IAAmB,KAAKC,EAAM,WAAW,MAC3CA,EAAM,KAAK,GAAGD,CAAgB,GAAG,GAG5BC,EAAM,KAAK,GAAG;AACvB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timer.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timer.d.ts","sourceRoot":"","sources":["../../src/components/Timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE9D,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,eAAe,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timer.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransparentOverlay.d.ts","sourceRoot":"","sources":["../../src/components/TransparentOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,4CAoB1C,CAAA;AAED,eAAe,kBAAkB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VelocitySlider.cjs","sources":["../../src/components/VelocitySlider.tsx"],"sourcesContent":["import { useTheme, type SxProps } from \"@mui/material/styles\"\nimport Stack from \"@mui/material/Stack\"\nimport Typography from \"@mui/material/Typography\"\nimport Slider from \"@mui/material/Slider\"\nimport isNumber from \"lodash-es/isNumber\"\nimport { observer } from \"mobx-react-lite\"\nimport type { ReactNode } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport type { JoggingStore } from \"./jogging/JoggingStore\"\n\ntype VelocitySliderProps = {\n min: number\n max: number\n velocity: number\n onVelocityChange: (newVelocity: number, useDegree: boolean) => void\n disabled?: boolean\n renderValue?: (value: number) => ReactNode\n useDegree: boolean\n store: JoggingStore\n}\n\n/** A slider for controlling the movement velocity of a robot */\nexport const VelocitySlider = observer((props: VelocitySliderProps) => {\n const theme = useTheme()\n const { store } = props\n const { t } = useTranslation()\n\n function onSliderChange(_event: Event, newVelocity: number | number[]) {\n if (newVelocity === props.velocity || !isNumber(newVelocity)) return\n\n props.onVelocityChange(newVelocity, props.useDegree)\n }\n\n return (\n <Stack\n direction=\"row\"\n gap={2}\n alignItems=\"center\"\n data-testid=\"velocity-slider\"\n aria-label=\"velocity-slider\"\n >\n {store.showVelocityLegend && (\n <Typography\n sx={{\n color:\n theme.componentsExt?.JoggingPanel?.VelocitySlider\n ?.sliderLegendColor,\n fontSize: \"14px\",\n }}\n >\n {t(\"Jogging.Velocity.bt\")}\n </Typography>\n )}\n <Slider\n value={props.velocity}\n color=\"secondary\"\n onChange={onSliderChange}\n min={props.min}\n max={props.max}\n aria-labelledby=\"input-slider\"\n disabled={props.disabled}\n sx={{\n \"& .MuiSlider-valueLabelOpen\": {\n zIndex: 100,\n backgroundColor: \"transparent\",\n top: \"0px\",\n },\n }}\n />\n {store.showVelocitySliderLabel &&\n (props.renderValue ? (\n props.renderValue(props.velocity)\n ) : (\n <VelocitySliderLabel value={props.velocity.toString()} />\n ))}\n </Stack>\n )\n})\n\ntype VelocitySliderLabelProps = {\n value: string\n sx?: SxProps\n}\n\nexport function VelocitySliderLabel({ value, sx }: VelocitySliderLabelProps) {\n const theme = useTheme()\n return (\n <Stack\n direction={\"row\"}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n gap={\"5px\"}\n sx={{\n padding: \"6px 12px\",\n background: theme.palette.backgroundPaperElevation?.[8],\n borderRadius: \"10px\",\n minWidth: \"111px\",\n ...sx,\n }}\n >\n <Typography\n component=\"span\"\n sx={{\n textAlign: \"right\",\n fontSize: \"14px\",\n opacity: 0.8,\n color: theme.palette.text.primary,\n whiteSpace: \"nowrap\",\n }}\n >\n {value}\n </Typography>\n </Stack>\n )\n}\n\nexport default VelocitySlider\n"],"names":["VelocitySlider","observer","props","theme","useTheme","store","t","useTranslation","onSliderChange","_event","newVelocity","isNumber","jsxs","Stack","jsx","Typography","_c","_b","_a","Slider","VelocitySliderLabel","value","sx"],"mappings":"oXAsBaA,EAAiBC,EAAAA,SAAUC,GAA+B,WACrE,MAAMC,EAAQC,EAAAA,SAAA,EACR,CAAE,MAAAC,GAAUH,EACZ,CAAE,EAAAI,CAAA,EAAMC,iBAAA,EAEd,SAASC,EAAeC,EAAeC,EAAgC,CACjEA,IAAgBR,EAAM,UAAY,CAACS,EAASD,CAAW,GAE3DR,EAAM,iBAAiBQ,EAAaR,EAAM,SAAS,CACrD,CAEA,OACEU,EAAAA,KAACC,EAAA,CACC,UAAU,MACV,IAAK,EACL,WAAW,SACX,cAAY,kBACZ,aAAW,kBAEV,SAAA,CAAAR,EAAM,oBACLS,EAAAA,IAACC,EAAA,CACC,GAAI,CACF,OACEC,GAAAC,GAAAC,EAAAf,EAAM,gBAAN,YAAAe,EAAqB,eAArB,YAAAD,EAAmC,iBAAnC,YAAAD,EACI,kBACN,SAAU,MAAA,EAGX,WAAE,qBAAqB,CAAA,CAAA,EAG5BF,EAAAA,IAACK,EAAA,CACC,MAAOjB,EAAM,SACb,MAAM,YACN,SAAUM,EACV,IAAKN,EAAM,IACX,IAAKA,EAAM,IACX,kBAAgB,eAChB,SAAUA,EAAM,SAChB,GAAI,CACF,8BAA+B,CAC7B,OAAQ,IACR,gBAAiB,cACjB,IAAK,KAAA,CACP,CACF,CAAA,EAEDG,EAAM,0BACJH,EAAM,YACLA,EAAM,YAAYA,EAAM,QAAQ,QAE/BkB,EAAA,CAAoB,MAAOlB,EAAM,SAAS,WAAY,EAAA,CAAA,CAAA,CAIjE,CAAC,EAOM,SAASkB,EAAoB,CAAE,MAAAC,EAAO,GAAAC,GAAgC,OAC3E,MAAMnB,EAAQC,EAAAA,SAAA,EACd,OACEU,EAAAA,IAACD,EAAA,CACC,UAAW,MACX,eAAgB,SAChB,WAAY,SACZ,IAAK,MACL,GAAI,CACF,QAAS,WACT,YAAYK,EAAAf,EAAM,QAAQ,2BAAd,YAAAe,EAAyC,GACrD,aAAc,OACd,SAAU,QACV,GAAGI,CAAA,EAGL,SAAAR,EAAAA,IAACC,EAAA,CACC,UAAU,OACV,GAAI,CACF,UAAW,QACX,SAAU,OACV,QAAS,GACT,MAAOZ,EAAM,QAAQ,KAAK,QAC1B,WAAY,QAAA,EAGb,SAAAkB,CAAA,CAAA,CACH,CAAA,CAGN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VelocitySlider.d.ts","sourceRoot":"","sources":["../../src/components/VelocitySlider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAM7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,KAAK,mBAAmB,GAAG;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;IAC1C,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,cAAc,WAAoB,mBAAmB;;CAuDhE,CAAA;AAEF,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,wBAAwB,2CA8B1E;AAED,eAAe,cAAc,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VelocitySlider.js","sources":["../../src/components/VelocitySlider.tsx"],"sourcesContent":["import { useTheme, type SxProps } from \"@mui/material/styles\"\nimport Stack from \"@mui/material/Stack\"\nimport Typography from \"@mui/material/Typography\"\nimport Slider from \"@mui/material/Slider\"\nimport isNumber from \"lodash-es/isNumber\"\nimport { observer } from \"mobx-react-lite\"\nimport type { ReactNode } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport type { JoggingStore } from \"./jogging/JoggingStore\"\n\ntype VelocitySliderProps = {\n min: number\n max: number\n velocity: number\n onVelocityChange: (newVelocity: number, useDegree: boolean) => void\n disabled?: boolean\n renderValue?: (value: number) => ReactNode\n useDegree: boolean\n store: JoggingStore\n}\n\n/** A slider for controlling the movement velocity of a robot */\nexport const VelocitySlider = observer((props: VelocitySliderProps) => {\n const theme = useTheme()\n const { store } = props\n const { t } = useTranslation()\n\n function onSliderChange(_event: Event, newVelocity: number | number[]) {\n if (newVelocity === props.velocity || !isNumber(newVelocity)) return\n\n props.onVelocityChange(newVelocity, props.useDegree)\n }\n\n return (\n <Stack\n direction=\"row\"\n gap={2}\n alignItems=\"center\"\n data-testid=\"velocity-slider\"\n aria-label=\"velocity-slider\"\n >\n {store.showVelocityLegend && (\n <Typography\n sx={{\n color:\n theme.componentsExt?.JoggingPanel?.VelocitySlider\n ?.sliderLegendColor,\n fontSize: \"14px\",\n }}\n >\n {t(\"Jogging.Velocity.bt\")}\n </Typography>\n )}\n <Slider\n value={props.velocity}\n color=\"secondary\"\n onChange={onSliderChange}\n min={props.min}\n max={props.max}\n aria-labelledby=\"input-slider\"\n disabled={props.disabled}\n sx={{\n \"& .MuiSlider-valueLabelOpen\": {\n zIndex: 100,\n backgroundColor: \"transparent\",\n top: \"0px\",\n },\n }}\n />\n {store.showVelocitySliderLabel &&\n (props.renderValue ? (\n props.renderValue(props.velocity)\n ) : (\n <VelocitySliderLabel value={props.velocity.toString()} />\n ))}\n </Stack>\n )\n})\n\ntype VelocitySliderLabelProps = {\n value: string\n sx?: SxProps\n}\n\nexport function VelocitySliderLabel({ value, sx }: VelocitySliderLabelProps) {\n const theme = useTheme()\n return (\n <Stack\n direction={\"row\"}\n justifyContent={\"center\"}\n alignItems={\"center\"}\n gap={\"5px\"}\n sx={{\n padding: \"6px 12px\",\n background: theme.palette.backgroundPaperElevation?.[8],\n borderRadius: \"10px\",\n minWidth: \"111px\",\n ...sx,\n }}\n >\n <Typography\n component=\"span\"\n sx={{\n textAlign: \"right\",\n fontSize: \"14px\",\n opacity: 0.8,\n color: theme.palette.text.primary,\n whiteSpace: \"nowrap\",\n }}\n >\n {value}\n </Typography>\n </Stack>\n )\n}\n\nexport default VelocitySlider\n"],"names":["VelocitySlider","observer","props","theme","useTheme","store","t","useTranslation","onSliderChange","_event","newVelocity","isNumber","jsxs","Stack","jsx","Typography","_c","_b","_a","Slider","VelocitySliderLabel","value","sx"],"mappings":";;;;;;;;AAsBO,MAAMA,IAAiBC,EAAS,CAACC,MAA+B;;AACrE,QAAMC,IAAQC,EAAA,GACR,EAAE,OAAAC,MAAUH,GACZ,EAAE,GAAAI,EAAA,IAAMC,EAAA;AAEd,WAASC,EAAeC,GAAeC,GAAgC;AACrE,IAAIA,MAAgBR,EAAM,YAAY,CAACS,EAASD,CAAW,KAE3DR,EAAM,iBAAiBQ,GAAaR,EAAM,SAAS;AAAA,EACrD;AAEA,SACE,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAK;AAAA,MACL,YAAW;AAAA,MACX,eAAY;AAAA,MACZ,cAAW;AAAA,MAEV,UAAA;AAAA,QAAAR,EAAM,sBACL,gBAAAS;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,QACEC,KAAAC,KAAAC,IAAAf,EAAM,kBAAN,gBAAAe,EAAqB,iBAArB,gBAAAD,EAAmC,mBAAnC,gBAAAD,EACI;AAAA,cACN,UAAU;AAAA,YAAA;AAAA,YAGX,YAAE,qBAAqB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG5B,gBAAAF;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,OAAOjB,EAAM;AAAA,YACb,OAAM;AAAA,YACN,UAAUM;AAAA,YACV,KAAKN,EAAM;AAAA,YACX,KAAKA,EAAM;AAAA,YACX,mBAAgB;AAAA,YAChB,UAAUA,EAAM;AAAA,YAChB,IAAI;AAAA,cACF,+BAA+B;AAAA,gBAC7B,QAAQ;AAAA,gBACR,iBAAiB;AAAA,gBACjB,KAAK;AAAA,cAAA;AAAA,YACP;AAAA,UACF;AAAA,QAAA;AAAA,QAEDG,EAAM,4BACJH,EAAM,cACLA,EAAM,YAAYA,EAAM,QAAQ,sBAE/BkB,GAAA,EAAoB,OAAOlB,EAAM,SAAS,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIjE,CAAC;AAOM,SAASkB,EAAoB,EAAE,OAAAC,GAAO,IAAAC,KAAgC;;AAC3E,QAAMnB,IAAQC,EAAA;AACd,SACE,gBAAAU;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,IAAI;AAAA,QACF,SAAS;AAAA,QACT,aAAYK,IAAAf,EAAM,QAAQ,6BAAd,gBAAAe,EAAyC;AAAA,QACrD,cAAc;AAAA,QACd,UAAU;AAAA,QACV,GAAGI;AAAA,MAAA;AAAA,MAGL,UAAA,gBAAAR;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,IAAI;AAAA,YACF,WAAW;AAAA,YACX,UAAU;AAAA,YACV,SAAS;AAAA,YACT,OAAOZ,EAAM,QAAQ,KAAK;AAAA,YAC1B,YAAY;AAAA,UAAA;AAAA,UAGb,UAAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdornedSelect.cjs","sources":["../../../../src/components/experimental/utils/AdornedSelect.tsx"],"sourcesContent":["import FormControl from \"@mui/material/FormControl\"\nimport InputLabel from \"@mui/material/InputLabel\"\nimport Select, { type SelectProps } from \"@mui/material/Select\"\nimport { styled } from \"@mui/material/styles\"\nconst AdornedFormControl = styled(FormControl)(({ theme }) => ({\n \"&.MuiFormControl-root\": {\n \".MuiSelect-select\": {\n paddingTop: \"20px\",\n paddingLeft: \"12px\",\n },\n label: {\n pointerEvents: \"none\",\n fontSize: \"16px\",\n },\n \".MuiInputLabel-root\": {\n \"&.Mui-focused\": {\n color: theme.palette.text.primary,\n },\n },\n },\n}))\n\ntype AdornedSelectProps = {\n labelValue: string\n labelId: string\n} & SelectProps\n\nexport default function AdornedSelect({\n labelValue,\n ...props\n}: AdornedSelectProps) {\n return (\n <AdornedFormControl fullWidth variant=\"filled\">\n <InputLabel id={props.labelId}>{labelValue}</InputLabel>\n <Select {...props} />\n </AdornedFormControl>\n )\n}\n"],"names":["AdornedFormControl","styled","FormControl","theme","AdornedSelect","labelValue","props","jsxs","jsx","InputLabel","Select"],"mappings":"kSAIMA,EAAqBC,EAAAA,OAAOC,CAAW,EAAE,CAAC,CAAE,MAAAC,MAAa,CAC7D,wBAAyB,CACvB,oBAAqB,CACnB,WAAY,OACZ,YAAa,MAAA,EAEf,MAAO,CACL,cAAe,OACf,SAAU,MAAA,EAEZ,sBAAuB,CACrB,gBAAiB,CACf,MAAOA,EAAM,QAAQ,KAAK,OAAA,CAC5B,CACF,CAEJ,EAAE,EAOF,SAAwBC,EAAc,CACpC,WAAAC,EACA,GAAGC,CACL,EAAuB,CACrB,OACEC,EAAAA,KAACP,EAAA,CAAmB,UAAS,GAAC,QAAQ,SACpC,SAAA,CAAAQ,EAAAA,IAACC,EAAA,CAAW,GAAIH,EAAM,QAAU,SAAAD,EAAW,EAC3CG,MAACE,EAAA,CAAQ,GAAGJ,CAAA,CAAO,CAAA,EACrB,CAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdornedSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/experimental/utils/AdornedSelect.tsx"],"names":[],"mappings":"AAEA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAoB/D,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,WAAW,CAAA;AAEf,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,UAAU,EACV,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAOpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdornedSelect.js","sources":["../../../../src/components/experimental/utils/AdornedSelect.tsx"],"sourcesContent":["import FormControl from \"@mui/material/FormControl\"\nimport InputLabel from \"@mui/material/InputLabel\"\nimport Select, { type SelectProps } from \"@mui/material/Select\"\nimport { styled } from \"@mui/material/styles\"\nconst AdornedFormControl = styled(FormControl)(({ theme }) => ({\n \"&.MuiFormControl-root\": {\n \".MuiSelect-select\": {\n paddingTop: \"20px\",\n paddingLeft: \"12px\",\n },\n label: {\n pointerEvents: \"none\",\n fontSize: \"16px\",\n },\n \".MuiInputLabel-root\": {\n \"&.Mui-focused\": {\n color: theme.palette.text.primary,\n },\n },\n },\n}))\n\ntype AdornedSelectProps = {\n labelValue: string\n labelId: string\n} & SelectProps\n\nexport default function AdornedSelect({\n labelValue,\n ...props\n}: AdornedSelectProps) {\n return (\n <AdornedFormControl fullWidth variant=\"filled\">\n <InputLabel id={props.labelId}>{labelValue}</InputLabel>\n <Select {...props} />\n </AdornedFormControl>\n )\n}\n"],"names":["AdornedFormControl","styled","FormControl","theme","AdornedSelect","labelValue","props","jsxs","jsx","InputLabel","Select"],"mappings":";;;;;AAIA,MAAMA,IAAqBC,EAAOC,CAAW,EAAE,CAAC,EAAE,OAAAC,SAAa;AAAA,EAC7D,yBAAyB;AAAA,IACvB,qBAAqB;AAAA,MACnB,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,eAAe;AAAA,MACf,UAAU;AAAA,IAAA;AAAA,IAEZ,uBAAuB;AAAA,MACrB,iBAAiB;AAAA,QACf,OAAOA,EAAM,QAAQ,KAAK;AAAA,MAAA;AAAA,IAC5B;AAAA,EACF;AAEJ,EAAE;AAOF,SAAwBC,EAAc;AAAA,EACpC,YAAAC;AAAA,EACA,GAAGC;AACL,GAAuB;AACrB,SACE,gBAAAC,EAACP,GAAA,EAAmB,WAAS,IAAC,SAAQ,UACpC,UAAA;AAAA,IAAA,gBAAAQ,EAACC,GAAA,EAAW,IAAIH,EAAM,SAAU,UAAAD,GAAW;AAAA,IAC3C,gBAAAG,EAACE,GAAA,EAAQ,GAAGJ,EAAA,CAAO;AAAA,EAAA,GACrB;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingBlocked.cjs","sources":["../../../src/components/jogging/JoggingBlocked.tsx"],"sourcesContent":["import Alert from \"@mui/material/Alert\"\nimport AlertTitle from \"@mui/material/AlertTitle\"\nimport Backdrop from \"@mui/material/Backdrop\"\nimport Button from \"@mui/material/Button\"\nimport Stack from \"@mui/material/Stack\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport type { JoggingStore } from \"./JoggingStore\"\n\nexport const JoggingBlocked = observer(({ store }: { store: JoggingStore }) => {\n const { t } = useTranslation()\n\n return (\n <Backdrop\n data-testid=\"jogging-blocked\"\n aria-label=\"jogging-blocked\"\n open={true}\n sx={{\n position: \"absolute\",\n zIndex: (theme) => theme.zIndex.drawer + 1,\n color: \"#fff\",\n background: \"rgba(15, 15, 15, 0.88)\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n }}\n >\n <Stack sx={{ m: 2, width: \"100%\" }}>\n <Alert severity=\"error\" sx={{ mb: 2 }}>\n <AlertTitle>{t(\"Jogging.Blocked.ti\")}</AlertTitle>\n {t(\"Jogging.Blocked.lb\")}\n </Alert>\n\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => store.unblock()}\n >\n {t(\"Jogging.Blocked.Reenable.bt\")}\n </Button>\n </Stack>\n </Backdrop>\n )\n})\n"],"names":["JoggingBlocked","observer","store","t","useTranslation","jsx","Backdrop","theme","jsxs","Stack","Alert","AlertTitle","Button"],"mappings":"2VASaA,EAAiBC,EAAAA,SAAS,CAAC,CAAE,MAAAC,KAAqC,CAC7E,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAEd,OACEC,EAAAA,IAACC,EAAA,CACC,cAAY,kBACZ,aAAW,kBACX,KAAM,GACN,GAAI,CACF,SAAU,WACV,OAASC,GAAUA,EAAM,OAAO,OAAS,EACzC,MAAO,OACP,WAAY,yBACZ,eAAgB,aAChB,WAAY,YAAA,EAGd,SAAAC,EAAAA,KAACC,GAAM,GAAI,CAAE,EAAG,EAAG,MAAO,QACxB,SAAA,CAAAD,OAACE,GAAM,SAAS,QAAQ,GAAI,CAAE,GAAI,GAChC,SAAA,CAAAL,EAAAA,IAACM,EAAA,CAAY,SAAAR,EAAE,oBAAoB,CAAA,CAAE,EACpCA,EAAE,oBAAoB,CAAA,EACzB,EAEAE,EAAAA,IAACO,EAAA,CACC,QAAQ,YACR,MAAM,YACN,QAAS,IAAMV,EAAM,QAAA,EAEpB,WAAE,6BAA6B,CAAA,CAAA,CAClC,CAAA,CACF,CAAA,CAAA,CAGN,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingBlocked.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingBlocked.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,eAAO,MAAM,cAAc,eAAwB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE;;CAiCxE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingBlocked.js","sources":["../../../src/components/jogging/JoggingBlocked.tsx"],"sourcesContent":["import Alert from \"@mui/material/Alert\"\nimport AlertTitle from \"@mui/material/AlertTitle\"\nimport Backdrop from \"@mui/material/Backdrop\"\nimport Button from \"@mui/material/Button\"\nimport Stack from \"@mui/material/Stack\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport type { JoggingStore } from \"./JoggingStore\"\n\nexport const JoggingBlocked = observer(({ store }: { store: JoggingStore }) => {\n const { t } = useTranslation()\n\n return (\n <Backdrop\n data-testid=\"jogging-blocked\"\n aria-label=\"jogging-blocked\"\n open={true}\n sx={{\n position: \"absolute\",\n zIndex: (theme) => theme.zIndex.drawer + 1,\n color: \"#fff\",\n background: \"rgba(15, 15, 15, 0.88)\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n }}\n >\n <Stack sx={{ m: 2, width: \"100%\" }}>\n <Alert severity=\"error\" sx={{ mb: 2 }}>\n <AlertTitle>{t(\"Jogging.Blocked.ti\")}</AlertTitle>\n {t(\"Jogging.Blocked.lb\")}\n </Alert>\n\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => store.unblock()}\n >\n {t(\"Jogging.Blocked.Reenable.bt\")}\n </Button>\n </Stack>\n </Backdrop>\n )\n})\n"],"names":["JoggingBlocked","observer","store","t","useTranslation","jsx","Backdrop","theme","jsxs","Stack","Alert","AlertTitle","Button"],"mappings":";;;;;;;;AASO,MAAMA,IAAiBC,EAAS,CAAC,EAAE,OAAAC,QAAqC;AAC7E,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,cAAW;AAAA,MACX,MAAM;AAAA,MACN,IAAI;AAAA,QACF,UAAU;AAAA,QACV,QAAQ,CAACC,MAAUA,EAAM,OAAO,SAAS;AAAA,QACzC,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YAAY;AAAA,MAAA;AAAA,MAGd,UAAA,gBAAAC,EAACC,KAAM,IAAI,EAAE,GAAG,GAAG,OAAO,UACxB,UAAA;AAAA,QAAA,gBAAAD,EAACE,KAAM,UAAS,SAAQ,IAAI,EAAE,IAAI,KAChC,UAAA;AAAA,UAAA,gBAAAL,EAACM,GAAA,EAAY,UAAAR,EAAE,oBAAoB,EAAA,CAAE;AAAA,UACpCA,EAAE,oBAAoB;AAAA,QAAA,GACzB;AAAA,QAEA,gBAAAE;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,SAAS,MAAMV,EAAM,QAAA;AAAA,YAEpB,YAAE,6BAA6B;AAAA,UAAA;AAAA,QAAA;AAAA,MAClC,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianAxisControl.cjs","sources":["../../../src/components/jogging/JoggingCartesianAxisControl.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport IconButton from \"@mui/material/IconButton\"\nimport Typography from \"@mui/material/Typography\"\nimport Stack from \"@mui/material/Stack\"\nimport { observer } from \"mobx-react-lite\"\nimport React, { useEffect, useRef, useState, type ReactNode } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport JogMinus from \"../../icons/jog-minus.svg\"\nimport JogPlus from \"../../icons/jog-plus.svg\"\nimport type { AxisControlComponentColors } from \"../../themes/themeTypes\"\nimport { useAnimationFrame } from \"../utils/hooks\"\nimport type { JoggingDirection } from \"./JoggingStore\"\n\ntype JoggingCartesianAxisControlProps = {\n colors?: AxisControlComponentColors\n label: ReactNode\n getDisplayedValue: () => string\n startJogging: (direction: JoggingDirection) => void\n stopJogging: () => void\n disabled?: boolean\n /** If set, the corresponding button will be rendered in the pressed state */\n activeJoggingDirection?: JoggingDirection\n} & React.ComponentProps<typeof Stack>\n\n/** A input widget to control an individual cartesian axis */\nexport const JoggingCartesianAxisControl = externalizeComponent(\n observer(\n ({\n colors,\n label,\n getDisplayedValue,\n startJogging,\n stopJogging,\n disabled,\n activeJoggingDirection,\n ...rest\n }: JoggingCartesianAxisControlProps) => {\n useAnimationFrame(() => {\n const displayValue = getDisplayedValue()\n const element = valueContainerRef.current\n if (!element) return\n\n element.textContent = displayValue\n })\n const theme = useTheme()\n\n const [localActiveJoggingDirection, setLocalActiveJoggingDirection] =\n useState<JoggingDirection | null>(null)\n\n // Trigger pointer \"release\" events because e.g. firefox does not trigger pointer events as soon as a component is disabled\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n if (!disabled) {\n return\n }\n onPointerUpOrOut()\n }, [disabled])\n\n // Handle both controlled and uncontrolled states\n const showJoggingDirection =\n activeJoggingDirection || localActiveJoggingDirection\n\n const valueContainerRef = useRef<HTMLParagraphElement>(null)\n\n if (!colors) {\n colors = {\n color: \"#fff\",\n backgroundColor: \"#000\",\n borderColor: \"#000\",\n buttonBackgroundColor: {\n disabled: \"#000\",\n default: \"#000\",\n hovered: \"#000\",\n pressed: \"#000\",\n },\n labelColor: \"#000\",\n }\n }\n\n const borderColor = showJoggingDirection\n ? colors.buttonBackgroundColor?.pressed\n : colors.borderColor\n\n const sxAxisControlButtonBase = {\n width: \"55px\",\n color: colors.color,\n path: { fill: colors.color },\n alignContent: \"center\",\n fontSize: \"37px\",\n svg: {\n pointerEvents: \"none\",\n },\n }\n\n const sxAxisControlButtonDefault = {\n ...sxAxisControlButtonBase,\n backgroundColor: colors.buttonBackgroundColor?.default,\n \":hover\": {\n backgroundColor: colors.buttonBackgroundColor?.hovered,\n },\n \":active\": {\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n color: colors.backgroundColor,\n path: { fill: colors.backgroundColor },\n },\n \":disabled\": {\n backgroundColor: colors.buttonBackgroundColor?.disabled,\n \"svg path\": { fill: theme.palette.action.disabled },\n },\n }\n\n const sxAxisControlButtonPressed = {\n ...sxAxisControlButtonBase,\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n color: colors.backgroundColor,\n path: { fill: colors.backgroundColor },\n \":disabled\": {\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n \"svg path\": { fill: theme.palette.action.disabled },\n },\n }\n\n function onPointerDown(\n ev: React.PointerEvent,\n direction: JoggingDirection,\n ) {\n if (disabled) {\n return\n }\n\n if (ev.button === 0) {\n setLocalActiveJoggingDirection(direction)\n startJogging(direction)\n }\n }\n\n function onPointerUpOrOut() {\n setLocalActiveJoggingDirection(null)\n stopJogging()\n }\n\n return (\n <Stack height=\"64px\" direction=\"row\" justifyContent=\"center\" {...rest}>\n <IconButton\n disabled={disabled}\n disableRipple\n onPointerDown={(ev: React.PointerEvent) => onPointerDown(ev, \"-\")}\n onPointerUp={onPointerUpOrOut}\n onPointerOut={onPointerUpOrOut}\n size=\"large\"\n sx={{\n ...(showJoggingDirection === \"-\"\n ? sxAxisControlButtonPressed\n : sxAxisControlButtonDefault),\n borderRadius: \"16px 0px 0px 16px\",\n borderLeft: `2px solid ${borderColor ?? \"#fff\"}`,\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <JogMinus />\n </IconButton>\n\n <Stack\n spacing=\"6px\"\n sx={{\n width: \"150px\",\n backgroundColor: colors.backgroundColor,\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: \"0.9\",\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <Stack\n height=\"22px\"\n direction=\"row\"\n alignItems=\"center\"\n justifyItems=\"center\"\n spacing={1}\n sx={{\n userSelect: \"none\",\n color: colors.color,\n \".MuiTypography-root\": {\n fontWeight: 700,\n ...(disabled ? { color: theme.palette.action.disabled } : {}),\n },\n ...(disabled\n ? { \"svg path\": { fill: theme.palette.action.disabled } }\n : {}),\n }}\n >\n {label}\n </Stack>\n <Typography\n height=\"22px\"\n sx={{\n fontSize: \"15px\",\n color: disabled ? theme.palette.action.disabled : colors.color,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n minWidth: \"80px\",\n textAlign: \"center\",\n }}\n ref={valueContainerRef}\n >\n {getDisplayedValue()}\n </Typography>\n </Stack>\n\n <IconButton\n disableRipple\n disabled={disabled}\n onPointerDown={(ev: React.PointerEvent) => onPointerDown(ev, \"+\")}\n onPointerUp={onPointerUpOrOut}\n onPointerOut={onPointerUpOrOut}\n size=\"large\"\n sx={{\n ...(showJoggingDirection === \"+\"\n ? sxAxisControlButtonPressed\n : sxAxisControlButtonDefault),\n borderRadius: \"0px 16px 16px 0px\",\n borderRight: `2px solid ${borderColor ?? \"#fff\"}`,\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <JogPlus />\n </IconButton>\n </Stack>\n )\n },\n ),\n)\n\nexport default JoggingCartesianAxisControl\n"],"names":["JoggingCartesianAxisControl","externalizeComponent","observer","colors","label","getDisplayedValue","startJogging","stopJogging","disabled","activeJoggingDirection","rest","useAnimationFrame","displayValue","element","valueContainerRef","theme","useTheme","localActiveJoggingDirection","setLocalActiveJoggingDirection","useState","useEffect","onPointerUpOrOut","showJoggingDirection","useRef","borderColor","_a","sxAxisControlButtonBase","sxAxisControlButtonDefault","_b","_c","_d","_e","sxAxisControlButtonPressed","_f","_g","onPointerDown","ev","direction","jsxs","Stack","jsx","IconButton","JogMinus","Typography","JogPlus"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianAxisControl.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingCartesianAxisControl.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,qBAAqB,CAAA;AAEvC,OAAO,KAAK,EAAE,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAI1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,KAAK,gCAAgC,GAAG;IACtC,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,KAAK,EAAE,SAAS,CAAA;IAChB,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAC/B,YAAY,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACnD,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,gBAAgB,CAAA;CAC1C,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAA;AAEtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,gHAWjC,gCAAgC;;CAsMtC,CAAA;AAED,eAAe,2BAA2B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianAxisControl.js","sources":["../../../src/components/jogging/JoggingCartesianAxisControl.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport IconButton from \"@mui/material/IconButton\"\nimport Typography from \"@mui/material/Typography\"\nimport Stack from \"@mui/material/Stack\"\nimport { observer } from \"mobx-react-lite\"\nimport React, { useEffect, useRef, useState, type ReactNode } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport JogMinus from \"../../icons/jog-minus.svg\"\nimport JogPlus from \"../../icons/jog-plus.svg\"\nimport type { AxisControlComponentColors } from \"../../themes/themeTypes\"\nimport { useAnimationFrame } from \"../utils/hooks\"\nimport type { JoggingDirection } from \"./JoggingStore\"\n\ntype JoggingCartesianAxisControlProps = {\n colors?: AxisControlComponentColors\n label: ReactNode\n getDisplayedValue: () => string\n startJogging: (direction: JoggingDirection) => void\n stopJogging: () => void\n disabled?: boolean\n /** If set, the corresponding button will be rendered in the pressed state */\n activeJoggingDirection?: JoggingDirection\n} & React.ComponentProps<typeof Stack>\n\n/** A input widget to control an individual cartesian axis */\nexport const JoggingCartesianAxisControl = externalizeComponent(\n observer(\n ({\n colors,\n label,\n getDisplayedValue,\n startJogging,\n stopJogging,\n disabled,\n activeJoggingDirection,\n ...rest\n }: JoggingCartesianAxisControlProps) => {\n useAnimationFrame(() => {\n const displayValue = getDisplayedValue()\n const element = valueContainerRef.current\n if (!element) return\n\n element.textContent = displayValue\n })\n const theme = useTheme()\n\n const [localActiveJoggingDirection, setLocalActiveJoggingDirection] =\n useState<JoggingDirection | null>(null)\n\n // Trigger pointer \"release\" events because e.g. firefox does not trigger pointer events as soon as a component is disabled\n // biome-ignore lint/correctness/useExhaustiveDependencies: pre-biome code\n useEffect(() => {\n if (!disabled) {\n return\n }\n onPointerUpOrOut()\n }, [disabled])\n\n // Handle both controlled and uncontrolled states\n const showJoggingDirection =\n activeJoggingDirection || localActiveJoggingDirection\n\n const valueContainerRef = useRef<HTMLParagraphElement>(null)\n\n if (!colors) {\n colors = {\n color: \"#fff\",\n backgroundColor: \"#000\",\n borderColor: \"#000\",\n buttonBackgroundColor: {\n disabled: \"#000\",\n default: \"#000\",\n hovered: \"#000\",\n pressed: \"#000\",\n },\n labelColor: \"#000\",\n }\n }\n\n const borderColor = showJoggingDirection\n ? colors.buttonBackgroundColor?.pressed\n : colors.borderColor\n\n const sxAxisControlButtonBase = {\n width: \"55px\",\n color: colors.color,\n path: { fill: colors.color },\n alignContent: \"center\",\n fontSize: \"37px\",\n svg: {\n pointerEvents: \"none\",\n },\n }\n\n const sxAxisControlButtonDefault = {\n ...sxAxisControlButtonBase,\n backgroundColor: colors.buttonBackgroundColor?.default,\n \":hover\": {\n backgroundColor: colors.buttonBackgroundColor?.hovered,\n },\n \":active\": {\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n color: colors.backgroundColor,\n path: { fill: colors.backgroundColor },\n },\n \":disabled\": {\n backgroundColor: colors.buttonBackgroundColor?.disabled,\n \"svg path\": { fill: theme.palette.action.disabled },\n },\n }\n\n const sxAxisControlButtonPressed = {\n ...sxAxisControlButtonBase,\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n color: colors.backgroundColor,\n path: { fill: colors.backgroundColor },\n \":disabled\": {\n backgroundColor: colors.buttonBackgroundColor?.pressed,\n \"svg path\": { fill: theme.palette.action.disabled },\n },\n }\n\n function onPointerDown(\n ev: React.PointerEvent,\n direction: JoggingDirection,\n ) {\n if (disabled) {\n return\n }\n\n if (ev.button === 0) {\n setLocalActiveJoggingDirection(direction)\n startJogging(direction)\n }\n }\n\n function onPointerUpOrOut() {\n setLocalActiveJoggingDirection(null)\n stopJogging()\n }\n\n return (\n <Stack height=\"64px\" direction=\"row\" justifyContent=\"center\" {...rest}>\n <IconButton\n disabled={disabled}\n disableRipple\n onPointerDown={(ev: React.PointerEvent) => onPointerDown(ev, \"-\")}\n onPointerUp={onPointerUpOrOut}\n onPointerOut={onPointerUpOrOut}\n size=\"large\"\n sx={{\n ...(showJoggingDirection === \"-\"\n ? sxAxisControlButtonPressed\n : sxAxisControlButtonDefault),\n borderRadius: \"16px 0px 0px 16px\",\n borderLeft: `2px solid ${borderColor ?? \"#fff\"}`,\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <JogMinus />\n </IconButton>\n\n <Stack\n spacing=\"6px\"\n sx={{\n width: \"150px\",\n backgroundColor: colors.backgroundColor,\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: \"0.9\",\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <Stack\n height=\"22px\"\n direction=\"row\"\n alignItems=\"center\"\n justifyItems=\"center\"\n spacing={1}\n sx={{\n userSelect: \"none\",\n color: colors.color,\n \".MuiTypography-root\": {\n fontWeight: 700,\n ...(disabled ? { color: theme.palette.action.disabled } : {}),\n },\n ...(disabled\n ? { \"svg path\": { fill: theme.palette.action.disabled } }\n : {}),\n }}\n >\n {label}\n </Stack>\n <Typography\n height=\"22px\"\n sx={{\n fontSize: \"15px\",\n color: disabled ? theme.palette.action.disabled : colors.color,\n fontWeight: 700,\n fontVariantNumeric: \"tabular-nums\",\n minWidth: \"80px\",\n textAlign: \"center\",\n }}\n ref={valueContainerRef}\n >\n {getDisplayedValue()}\n </Typography>\n </Stack>\n\n <IconButton\n disableRipple\n disabled={disabled}\n onPointerDown={(ev: React.PointerEvent) => onPointerDown(ev, \"+\")}\n onPointerUp={onPointerUpOrOut}\n onPointerOut={onPointerUpOrOut}\n size=\"large\"\n sx={{\n ...(showJoggingDirection === \"+\"\n ? sxAxisControlButtonPressed\n : sxAxisControlButtonDefault),\n borderRadius: \"0px 16px 16px 0px\",\n borderRight: `2px solid ${borderColor ?? \"#fff\"}`,\n borderBottom: `2px solid ${borderColor ?? \"#fff\"}`,\n borderTop: `2px solid ${borderColor ?? \"#fff\"}`,\n }}\n >\n <JogPlus />\n </IconButton>\n </Stack>\n )\n },\n ),\n)\n\nexport default JoggingCartesianAxisControl\n"],"names":["JoggingCartesianAxisControl","externalizeComponent","observer","colors","label","getDisplayedValue","startJogging","stopJogging","disabled","activeJoggingDirection","rest","useAnimationFrame","displayValue","element","valueContainerRef","theme","useTheme","localActiveJoggingDirection","setLocalActiveJoggingDirection","useState","useEffect","onPointerUpOrOut","showJoggingDirection","useRef","borderColor","_a","sxAxisControlButtonBase","sxAxisControlButtonDefault","_b","_c","_d","_e","sxAxisControlButtonPressed","_f","_g","onPointerDown","ev","direction","jsxs","Stack","jsx","IconButton","JogMinus","Typography","JogPlus"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianTab.cjs","sources":["../../../src/components/jogging/JoggingCartesianTab.tsx"],"sourcesContent":["import { useTheme, type Theme } from \"@mui/material/styles\"\nimport Divider from \"@mui/material/Divider\"\nimport Stack from \"@mui/material/Stack\"\nimport ToggleButton from \"@mui/material/ToggleButton\"\nimport Typography from \"@mui/material/Typography\"\nimport {\n degreesToRadians,\n radiansToDegrees,\n XYZ_TO_VECTOR,\n} from \"@wandelbots/nova-js\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport XAxisIcon from \"../../icons/axis-x.svg\"\nimport YAxisIcon from \"../../icons/axis-y.svg\"\nimport ZAxisIcon from \"../../icons/axis-z.svg\"\nimport RotationIcon from \"../../icons/rotation.svg\"\nimport type { Vector3Simple } from \"../../lib/JoggerConnection\"\nimport { useReaction } from \"../utils/hooks\"\nimport { JoggingCartesianAxisControl } from \"./JoggingCartesianAxisControl\"\nimport { JoggingJointLimitDetector } from \"./JoggingJointLimitDetector\"\nimport { JoggingOptions } from \"./JoggingOptions\"\nimport type {\n DiscreteIncrementOption,\n JoggingAxis,\n JoggingDirection,\n JoggingStore,\n} from \"./JoggingStore\"\nimport { JoggingToggleButtonGroup } from \"./JoggingToggleButtonGroup\"\nimport { JoggingVelocitySlider } from \"./JoggingVelocitySlider\"\n\ntype JoggingCartesianOpts = {\n axis: JoggingAxis\n motionType: \"translate\" | \"rotate\"\n direction: JoggingDirection\n}\n\nexport const JoggingCartesianTab = observer(\n ({\n store,\n children,\n }: {\n store: JoggingStore\n children?: React.ReactNode\n }) => {\n const { t } = useTranslation()\n const theme = useTheme()\n\n function onMotionTypeChange(\n _event: React.MouseEvent<HTMLElement>,\n newMotionType: string,\n ) {\n if (newMotionType === \"translate\" || newMotionType === \"rotate\")\n store.setSelectedCartesianMotionType(newMotionType)\n }\n\n useReaction(\n () => [store.selectedCoordSystemId, store.selectedTcpId],\n () => {\n store.jogger.motionStream.motionStateSocket.changeUrl(\n store.jogger.nova.makeWebsocketURL(\n `/controllers/${store.jogger.motionStream.controllerId}/motion-groups/${store.jogger.motionGroupId}/state-stream?tcp=${store.selectedTcpId}`,\n ),\n )\n },\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n { fireImmediately: true } as any,\n )\n\n async function runIncrementalCartesianJog(\n opts: JoggingCartesianOpts,\n increment: DiscreteIncrementOption,\n ) {\n const jogger = await store.activate()\n\n const tcpPose = jogger.motionStream.rapidlyChangingMotionState.tcp_pose\n const jointPosition = jogger.motionStream.rapidlyChangingMotionState\n .joint_position as Vector3Simple\n if (!tcpPose) return\n\n await store.withMotionLock(async () => {\n try {\n store.setCurrentIncrementJog({\n axis: opts.axis,\n direction: opts.direction,\n })\n await store.jogger.runIncrementalCartesianMotion({\n currentTcpPose: tcpPose,\n currentJoints: jointPosition,\n coordSystemId: store.activeCoordSystemId,\n velocityInRelevantUnits:\n store.selectedCartesianMotionType === \"translate\"\n ? store.translationVelocityMmPerSec\n : store.rotationVelocityRadsPerSec,\n axis: opts.axis,\n direction: opts.direction,\n motion:\n store.selectedCartesianMotionType === \"translate\"\n ? {\n type: \"translate\",\n distanceMm: increment.mm,\n }\n : {\n type: \"rotate\",\n distanceRads: degreesToRadians(increment.degrees),\n },\n })\n } finally {\n store.setCurrentIncrementJog(null)\n await store.deactivate()\n }\n })\n }\n\n async function startCartesianJogging(opts: JoggingCartesianOpts) {\n if (store.isLocked) return\n\n const jogger = await store.activate()\n if (store.activeDiscreteIncrement) {\n return runIncrementalCartesianJog(opts, store.activeDiscreteIncrement)\n }\n\n if (opts.motionType === \"translate\") {\n await store.jogger.translateTCP({\n axis: opts.axis,\n direction: opts.direction,\n velocityMmPerSec: store.translationVelocityMmPerSec,\n })\n } else {\n await store.jogger.rotateTCP({\n axis: opts.axis,\n direction: opts.direction,\n velocityRadsPerSec: store.rotationVelocityRadsPerSec,\n })\n }\n }\n\n async function stopJogging() {\n if (store.isLocked) return\n\n if (store.activeDiscreteIncrement) {\n return\n }\n\n await store.deactivate()\n }\n\n function getAxisColors(\n axisId: \"X\" | \"Y\" | \"Z\",\n motionType: \"translate\" | \"rotate\",\n theme: Theme,\n ) {\n const axisColors =\n theme.componentsExt?.JoggingPanel?.JoggingCartesian?.Axis\n\n if (!axisColors) return undefined\n\n if (motionType === \"translate\") {\n return axisColors[axisId]\n }\n\n return axisColors.CustomRotation ?? axisColors[axisId]\n }\n\n const axisList = [\n {\n id: \"x\",\n icon: <XAxisIcon />,\n colors: getAxisColors(\"X\", store.selectedCartesianMotionType, theme),\n },\n {\n id: \"y\",\n icon: <YAxisIcon />,\n colors: getAxisColors(\"Y\", store.selectedCartesianMotionType, theme),\n },\n {\n id: \"z\",\n icon: <ZAxisIcon />,\n colors: getAxisColors(\"Z\", store.selectedCartesianMotionType, theme),\n },\n ] as const\n\n function formatMM(value: number) {\n return t(\"General.mm.variable\", { amount: value.toFixed(1) })\n }\n\n function formatDegrees(value: number) {\n return t(\"General.degree.variable\", {\n amount: radiansToDegrees(value).toFixed(1),\n })\n }\n\n return (\n <Stack\n data-testid=\"jogging-cartesian-tab\"\n aria-label=\"jogging-cartesian-tab\"\n flexGrow={1}\n gap={2}\n sx={{ padding: \"18px 24px\" }}\n >\n <Stack gap={2}>\n <JoggingOptions\n store={store}\n useDegree={store.selectedCartesianMotionType === \"rotate\"}\n />\n\n <JoggingVelocitySlider\n store={store}\n useDegree={store.selectedCartesianMotionType === \"rotate\"}\n />\n\n <Divider />\n </Stack>\n\n <Stack\n //maxWidth=\"296px\"\n marginLeft=\"auto\"\n marginRight=\"auto\"\n gap=\"24px\"\n justifyContent=\"center\"\n sx={{ flexGrow: \"1\" }}\n >\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n gap=\"24px\"\n sx={{ flexGrow: 1 }}\n >\n {/* Translate or rotate toggle */}\n <JoggingToggleButtonGroup\n value={store.selectedCartesianMotionType}\n onChange={onMotionTypeChange}\n exclusive\n aria-label={t(\"Jogging.Cartesian.MotionType.lb\")}\n sx={{ justifyContent: \"center\" }}\n >\n <ToggleButton value=\"translate\">\n {t(\"Jogging.Cartesian.Translation.bt\")}\n </ToggleButton>\n <ToggleButton value=\"rotate\">\n {t(\"Jogging.Cartesian.Rotation.bt\")}\n </ToggleButton>\n </JoggingToggleButtonGroup>\n\n {/* Cartesian translate jogging */}\n {store.selectedCartesianMotionType === \"translate\" &&\n axisList.map((axis) => (\n <JoggingCartesianAxisControl\n key={axis.id}\n data-testid={`jogging-cartesian-axis-control-${axis.id}`}\n aria-label={`jogging-cartesian-axis-control-${axis.id}`}\n colors={axis.colors}\n disabled={store.isLocked}\n activeJoggingDirection={\n store.incrementJogInProgress?.axis === axis.id\n ? store.incrementJogInProgress.direction\n : undefined\n }\n label={\n <>\n {axis.icon}\n <Typography\n sx={{\n fontSize: \"24px\",\n color:\n axis.colors?.labelColor ??\n theme.palette.text.primary,\n }}\n >\n {axis.id.toUpperCase()}\n </Typography>\n </>\n }\n getDisplayedValue={() =>\n formatMM(\n store.jogger.motionStream.rapidlyChangingMotionState\n .tcp_pose?.position?.[XYZ_TO_VECTOR[axis.id]] || 0,\n )\n }\n startJogging={(direction: \"-\" | \"+\") =>\n startCartesianJogging({\n axis: axis.id,\n motionType: \"translate\",\n direction,\n })\n }\n stopJogging={stopJogging}\n />\n ))}\n\n {/* Cartesian rotate jogging */}\n {store.selectedCartesianMotionType === \"rotate\" &&\n axisList.map((axis) => (\n <JoggingCartesianAxisControl\n key={axis.id}\n data-testid={`jogging-cartesian-axis-control-${axis.id}`}\n aria-label={`jogging-cartesian-axis-control-${axis.id}`}\n colors={axis.colors}\n disabled={store.isLocked}\n activeJoggingDirection={\n store.incrementJogInProgress?.axis === axis.id\n ? store.incrementJogInProgress.direction\n : undefined\n }\n label={\n <>\n <RotationIcon />\n <Typography\n sx={{\n fontSize: \"24px\",\n color:\n axis.colors?.labelColor ??\n theme.palette.text.primary,\n }}\n >\n {axis.id.toUpperCase()}\n </Typography>\n </>\n }\n getDisplayedValue={() =>\n formatDegrees(\n store.jogger.motionStream.rapidlyChangingMotionState\n .tcp_pose?.orientation?.[XYZ_TO_VECTOR[axis.id]] || 0,\n )\n }\n startJogging={(direction: \"-\" | \"+\") =>\n startCartesianJogging({\n axis: axis.id,\n motionType: \"rotate\",\n direction,\n })\n }\n stopJogging={stopJogging}\n />\n ))}\n </Stack>\n </Stack>\n\n {/* Show message if joint limits reached */}\n <JoggingJointLimitDetector store={store} />\n\n {children && <Divider />}\n\n {/* Custom content */}\n\n {children}\n </Stack>\n )\n },\n)\n"],"names":["JoggingCartesianTab","observer","store","children","t","useTranslation","theme","useTheme","onMotionTypeChange","_event","newMotionType","useReaction","runIncrementalCartesianJog","opts","increment","jogger","tcpPose","jointPosition","degreesToRadians","startCartesianJogging","stopJogging","getAxisColors","axisId","motionType","axisColors","axisList","XAxisIcon","YAxisIcon","ZAxisIcon","formatMM","value","formatDegrees","radiansToDegrees","jsxs","Stack","jsx","JoggingOptions","JoggingVelocitySlider","Divider","JoggingToggleButtonGroup","ToggleButton","axis","JoggingCartesianAxisControl","_a","Fragment","Typography","_b","XYZ_TO_VECTOR","direction","RotationIcon","JoggingJointLimitDetector"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianTab.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingCartesianTab.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAIV,YAAY,EACb,MAAM,gBAAgB,CAAA;AAUvB,eAAO,MAAM,mBAAmB,0BAI3B;IACD,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;;CAiTF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingCartesianTab.js","sources":["../../../src/components/jogging/JoggingCartesianTab.tsx"],"sourcesContent":["import { useTheme, type Theme } from \"@mui/material/styles\"\nimport Divider from \"@mui/material/Divider\"\nimport Stack from \"@mui/material/Stack\"\nimport ToggleButton from \"@mui/material/ToggleButton\"\nimport Typography from \"@mui/material/Typography\"\nimport {\n degreesToRadians,\n radiansToDegrees,\n XYZ_TO_VECTOR,\n} from \"@wandelbots/nova-js\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport XAxisIcon from \"../../icons/axis-x.svg\"\nimport YAxisIcon from \"../../icons/axis-y.svg\"\nimport ZAxisIcon from \"../../icons/axis-z.svg\"\nimport RotationIcon from \"../../icons/rotation.svg\"\nimport type { Vector3Simple } from \"../../lib/JoggerConnection\"\nimport { useReaction } from \"../utils/hooks\"\nimport { JoggingCartesianAxisControl } from \"./JoggingCartesianAxisControl\"\nimport { JoggingJointLimitDetector } from \"./JoggingJointLimitDetector\"\nimport { JoggingOptions } from \"./JoggingOptions\"\nimport type {\n DiscreteIncrementOption,\n JoggingAxis,\n JoggingDirection,\n JoggingStore,\n} from \"./JoggingStore\"\nimport { JoggingToggleButtonGroup } from \"./JoggingToggleButtonGroup\"\nimport { JoggingVelocitySlider } from \"./JoggingVelocitySlider\"\n\ntype JoggingCartesianOpts = {\n axis: JoggingAxis\n motionType: \"translate\" | \"rotate\"\n direction: JoggingDirection\n}\n\nexport const JoggingCartesianTab = observer(\n ({\n store,\n children,\n }: {\n store: JoggingStore\n children?: React.ReactNode\n }) => {\n const { t } = useTranslation()\n const theme = useTheme()\n\n function onMotionTypeChange(\n _event: React.MouseEvent<HTMLElement>,\n newMotionType: string,\n ) {\n if (newMotionType === \"translate\" || newMotionType === \"rotate\")\n store.setSelectedCartesianMotionType(newMotionType)\n }\n\n useReaction(\n () => [store.selectedCoordSystemId, store.selectedTcpId],\n () => {\n store.jogger.motionStream.motionStateSocket.changeUrl(\n store.jogger.nova.makeWebsocketURL(\n `/controllers/${store.jogger.motionStream.controllerId}/motion-groups/${store.jogger.motionGroupId}/state-stream?tcp=${store.selectedTcpId}`,\n ),\n )\n },\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n { fireImmediately: true } as any,\n )\n\n async function runIncrementalCartesianJog(\n opts: JoggingCartesianOpts,\n increment: DiscreteIncrementOption,\n ) {\n const jogger = await store.activate()\n\n const tcpPose = jogger.motionStream.rapidlyChangingMotionState.tcp_pose\n const jointPosition = jogger.motionStream.rapidlyChangingMotionState\n .joint_position as Vector3Simple\n if (!tcpPose) return\n\n await store.withMotionLock(async () => {\n try {\n store.setCurrentIncrementJog({\n axis: opts.axis,\n direction: opts.direction,\n })\n await store.jogger.runIncrementalCartesianMotion({\n currentTcpPose: tcpPose,\n currentJoints: jointPosition,\n coordSystemId: store.activeCoordSystemId,\n velocityInRelevantUnits:\n store.selectedCartesianMotionType === \"translate\"\n ? store.translationVelocityMmPerSec\n : store.rotationVelocityRadsPerSec,\n axis: opts.axis,\n direction: opts.direction,\n motion:\n store.selectedCartesianMotionType === \"translate\"\n ? {\n type: \"translate\",\n distanceMm: increment.mm,\n }\n : {\n type: \"rotate\",\n distanceRads: degreesToRadians(increment.degrees),\n },\n })\n } finally {\n store.setCurrentIncrementJog(null)\n await store.deactivate()\n }\n })\n }\n\n async function startCartesianJogging(opts: JoggingCartesianOpts) {\n if (store.isLocked) return\n\n const jogger = await store.activate()\n if (store.activeDiscreteIncrement) {\n return runIncrementalCartesianJog(opts, store.activeDiscreteIncrement)\n }\n\n if (opts.motionType === \"translate\") {\n await store.jogger.translateTCP({\n axis: opts.axis,\n direction: opts.direction,\n velocityMmPerSec: store.translationVelocityMmPerSec,\n })\n } else {\n await store.jogger.rotateTCP({\n axis: opts.axis,\n direction: opts.direction,\n velocityRadsPerSec: store.rotationVelocityRadsPerSec,\n })\n }\n }\n\n async function stopJogging() {\n if (store.isLocked) return\n\n if (store.activeDiscreteIncrement) {\n return\n }\n\n await store.deactivate()\n }\n\n function getAxisColors(\n axisId: \"X\" | \"Y\" | \"Z\",\n motionType: \"translate\" | \"rotate\",\n theme: Theme,\n ) {\n const axisColors =\n theme.componentsExt?.JoggingPanel?.JoggingCartesian?.Axis\n\n if (!axisColors) return undefined\n\n if (motionType === \"translate\") {\n return axisColors[axisId]\n }\n\n return axisColors.CustomRotation ?? axisColors[axisId]\n }\n\n const axisList = [\n {\n id: \"x\",\n icon: <XAxisIcon />,\n colors: getAxisColors(\"X\", store.selectedCartesianMotionType, theme),\n },\n {\n id: \"y\",\n icon: <YAxisIcon />,\n colors: getAxisColors(\"Y\", store.selectedCartesianMotionType, theme),\n },\n {\n id: \"z\",\n icon: <ZAxisIcon />,\n colors: getAxisColors(\"Z\", store.selectedCartesianMotionType, theme),\n },\n ] as const\n\n function formatMM(value: number) {\n return t(\"General.mm.variable\", { amount: value.toFixed(1) })\n }\n\n function formatDegrees(value: number) {\n return t(\"General.degree.variable\", {\n amount: radiansToDegrees(value).toFixed(1),\n })\n }\n\n return (\n <Stack\n data-testid=\"jogging-cartesian-tab\"\n aria-label=\"jogging-cartesian-tab\"\n flexGrow={1}\n gap={2}\n sx={{ padding: \"18px 24px\" }}\n >\n <Stack gap={2}>\n <JoggingOptions\n store={store}\n useDegree={store.selectedCartesianMotionType === \"rotate\"}\n />\n\n <JoggingVelocitySlider\n store={store}\n useDegree={store.selectedCartesianMotionType === \"rotate\"}\n />\n\n <Divider />\n </Stack>\n\n <Stack\n //maxWidth=\"296px\"\n marginLeft=\"auto\"\n marginRight=\"auto\"\n gap=\"24px\"\n justifyContent=\"center\"\n sx={{ flexGrow: \"1\" }}\n >\n <Stack\n alignItems=\"center\"\n justifyContent=\"center\"\n gap=\"24px\"\n sx={{ flexGrow: 1 }}\n >\n {/* Translate or rotate toggle */}\n <JoggingToggleButtonGroup\n value={store.selectedCartesianMotionType}\n onChange={onMotionTypeChange}\n exclusive\n aria-label={t(\"Jogging.Cartesian.MotionType.lb\")}\n sx={{ justifyContent: \"center\" }}\n >\n <ToggleButton value=\"translate\">\n {t(\"Jogging.Cartesian.Translation.bt\")}\n </ToggleButton>\n <ToggleButton value=\"rotate\">\n {t(\"Jogging.Cartesian.Rotation.bt\")}\n </ToggleButton>\n </JoggingToggleButtonGroup>\n\n {/* Cartesian translate jogging */}\n {store.selectedCartesianMotionType === \"translate\" &&\n axisList.map((axis) => (\n <JoggingCartesianAxisControl\n key={axis.id}\n data-testid={`jogging-cartesian-axis-control-${axis.id}`}\n aria-label={`jogging-cartesian-axis-control-${axis.id}`}\n colors={axis.colors}\n disabled={store.isLocked}\n activeJoggingDirection={\n store.incrementJogInProgress?.axis === axis.id\n ? store.incrementJogInProgress.direction\n : undefined\n }\n label={\n <>\n {axis.icon}\n <Typography\n sx={{\n fontSize: \"24px\",\n color:\n axis.colors?.labelColor ??\n theme.palette.text.primary,\n }}\n >\n {axis.id.toUpperCase()}\n </Typography>\n </>\n }\n getDisplayedValue={() =>\n formatMM(\n store.jogger.motionStream.rapidlyChangingMotionState\n .tcp_pose?.position?.[XYZ_TO_VECTOR[axis.id]] || 0,\n )\n }\n startJogging={(direction: \"-\" | \"+\") =>\n startCartesianJogging({\n axis: axis.id,\n motionType: \"translate\",\n direction,\n })\n }\n stopJogging={stopJogging}\n />\n ))}\n\n {/* Cartesian rotate jogging */}\n {store.selectedCartesianMotionType === \"rotate\" &&\n axisList.map((axis) => (\n <JoggingCartesianAxisControl\n key={axis.id}\n data-testid={`jogging-cartesian-axis-control-${axis.id}`}\n aria-label={`jogging-cartesian-axis-control-${axis.id}`}\n colors={axis.colors}\n disabled={store.isLocked}\n activeJoggingDirection={\n store.incrementJogInProgress?.axis === axis.id\n ? store.incrementJogInProgress.direction\n : undefined\n }\n label={\n <>\n <RotationIcon />\n <Typography\n sx={{\n fontSize: \"24px\",\n color:\n axis.colors?.labelColor ??\n theme.palette.text.primary,\n }}\n >\n {axis.id.toUpperCase()}\n </Typography>\n </>\n }\n getDisplayedValue={() =>\n formatDegrees(\n store.jogger.motionStream.rapidlyChangingMotionState\n .tcp_pose?.orientation?.[XYZ_TO_VECTOR[axis.id]] || 0,\n )\n }\n startJogging={(direction: \"-\" | \"+\") =>\n startCartesianJogging({\n axis: axis.id,\n motionType: \"rotate\",\n direction,\n })\n }\n stopJogging={stopJogging}\n />\n ))}\n </Stack>\n </Stack>\n\n {/* Show message if joint limits reached */}\n <JoggingJointLimitDetector store={store} />\n\n {children && <Divider />}\n\n {/* Custom content */}\n\n {children}\n </Stack>\n )\n },\n)\n"],"names":["JoggingCartesianTab","observer","store","children","t","useTranslation","theme","useTheme","onMotionTypeChange","_event","newMotionType","useReaction","runIncrementalCartesianJog","opts","increment","jogger","tcpPose","jointPosition","degreesToRadians","startCartesianJogging","stopJogging","getAxisColors","axisId","motionType","axisColors","axisList","XAxisIcon","YAxisIcon","ZAxisIcon","formatMM","value","formatDegrees","radiansToDegrees","jsxs","Stack","jsx","JoggingOptions","JoggingVelocitySlider","Divider","JoggingToggleButtonGroup","ToggleButton","axis","JoggingCartesianAxisControl","_a","Fragment","Typography","_b","XYZ_TO_VECTOR","direction","RotationIcon","JoggingJointLimitDetector"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingFreedriveTab.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingFreedriveTab.tsx"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,+CAM/B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointLimitDetector.cjs","sources":["../../../src/components/jogging/JoggingJointLimitDetector.tsx"],"sourcesContent":["import Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport isEqual from \"lodash-es/isEqual\"\nimport { useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useAnimationFrame } from \"../utils/hooks\"\nimport type { JoggingStore } from \"./JoggingStore\"\n\n/**\n * Monitors the active robot motion state and displays a message if\n * any joint limits are reached.\n */\nexport const JoggingJointLimitDetector = observer(\n ({ store }: { store: JoggingStore }) => {\n const { t } = useTranslation()\n\n const [jointLimitsReached, setJointLimitsReached] = useState(\n store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached\n .limit_reached,\n )\n const jointLimitsReachedRef = useRef(jointLimitsReached)\n\n useAnimationFrame(() => {\n const newLimitsReached =\n store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached\n .limit_reached\n\n if (!isEqual(jointLimitsReachedRef.current, newLimitsReached)) {\n jointLimitsReachedRef.current = newLimitsReached\n setJointLimitsReached(newLimitsReached)\n }\n })\n\n const jointLimitReachedIndices: number[] = []\n for (const [index, limitReached] of jointLimitsReached.entries()) {\n if (limitReached) jointLimitReachedIndices.push(index)\n }\n\n return (\n <Typography\n data-testid=\"jogging-joint-limit-detector\"\n aria-label=\"jogging-joint-limit-detector\"\n color=\"error\"\n sx={{\n margin: \"0.5rem 1rem\",\n textAlign: \"center\",\n minHeight: \"1.5rem\",\n visibility: jointLimitReachedIndices.length ? \"visible\" : \"hidden\",\n }}\n >\n {t(\"Jogging.JointLimitsReached.lb\", {\n jointNumbers: jointLimitReachedIndices.map((i) => i + 1).join(\", \"),\n })}\n </Typography>\n )\n },\n)\n"],"names":["JoggingJointLimitDetector","observer","store","t","useTranslation","jointLimitsReached","setJointLimitsReached","useState","jointLimitsReachedRef","useRef","useAnimationFrame","newLimitsReached","isEqual","jointLimitReachedIndices","index","limitReached","jsx","Typography","i"],"mappings":"qSAYaA,EAA4BC,EAAAA,SACvC,CAAC,CAAE,MAAAC,CAAA,IAAqC,CACtC,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAER,CAACC,EAAoBC,CAAqB,EAAIC,EAAAA,SAClDL,EAAM,OAAO,aAAa,2BAA2B,oBAClD,aAAA,EAECM,EAAwBC,EAAAA,OAAOJ,CAAkB,EAEvDK,EAAAA,kBAAkB,IAAM,CACtB,MAAMC,EACJT,EAAM,OAAO,aAAa,2BAA2B,oBAClD,cAEAU,EAAQJ,EAAsB,QAASG,CAAgB,IAC1DH,EAAsB,QAAUG,EAChCL,EAAsBK,CAAgB,EAE1C,CAAC,EAED,MAAME,EAAqC,CAAA,EAC3C,SAAW,CAACC,EAAOC,CAAY,IAAKV,EAAmB,UACjDU,GAAcF,EAAyB,KAAKC,CAAK,EAGvD,OACEE,EAAAA,IAACC,EAAA,CACC,cAAY,+BACZ,aAAW,+BACX,MAAM,QACN,GAAI,CACF,OAAQ,cACR,UAAW,SACX,UAAW,SACX,WAAYJ,EAAyB,OAAS,UAAY,QAAA,EAG3D,WAAE,gCAAiC,CAClC,aAAcA,EAAyB,IAAKK,GAAMA,EAAI,CAAC,EAAE,KAAK,IAAI,CAAA,CACnE,CAAA,CAAA,CAGP,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointLimitDetector.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingJointLimitDetector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,eACxB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE;;CA2CpC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointLimitDetector.js","sources":["../../../src/components/jogging/JoggingJointLimitDetector.tsx"],"sourcesContent":["import Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport isEqual from \"lodash-es/isEqual\"\nimport { useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useAnimationFrame } from \"../utils/hooks\"\nimport type { JoggingStore } from \"./JoggingStore\"\n\n/**\n * Monitors the active robot motion state and displays a message if\n * any joint limits are reached.\n */\nexport const JoggingJointLimitDetector = observer(\n ({ store }: { store: JoggingStore }) => {\n const { t } = useTranslation()\n\n const [jointLimitsReached, setJointLimitsReached] = useState(\n store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached\n .limit_reached,\n )\n const jointLimitsReachedRef = useRef(jointLimitsReached)\n\n useAnimationFrame(() => {\n const newLimitsReached =\n store.jogger.motionStream.rapidlyChangingMotionState.joint_limit_reached\n .limit_reached\n\n if (!isEqual(jointLimitsReachedRef.current, newLimitsReached)) {\n jointLimitsReachedRef.current = newLimitsReached\n setJointLimitsReached(newLimitsReached)\n }\n })\n\n const jointLimitReachedIndices: number[] = []\n for (const [index, limitReached] of jointLimitsReached.entries()) {\n if (limitReached) jointLimitReachedIndices.push(index)\n }\n\n return (\n <Typography\n data-testid=\"jogging-joint-limit-detector\"\n aria-label=\"jogging-joint-limit-detector\"\n color=\"error\"\n sx={{\n margin: \"0.5rem 1rem\",\n textAlign: \"center\",\n minHeight: \"1.5rem\",\n visibility: jointLimitReachedIndices.length ? \"visible\" : \"hidden\",\n }}\n >\n {t(\"Jogging.JointLimitsReached.lb\", {\n jointNumbers: jointLimitReachedIndices.map((i) => i + 1).join(\", \"),\n })}\n </Typography>\n )\n },\n)\n"],"names":["JoggingJointLimitDetector","observer","store","t","useTranslation","jointLimitsReached","setJointLimitsReached","useState","jointLimitsReachedRef","useRef","useAnimationFrame","newLimitsReached","isEqual","jointLimitReachedIndices","index","limitReached","jsx","Typography"],"mappings":";;;;;;;AAYO,MAAMA,IAA4BC;AAAA,EACvC,CAAC,EAAE,OAAAC,EAAA,MAAqC;AACtC,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GAER,CAACC,GAAoBC,CAAqB,IAAIC;AAAA,MAClDL,EAAM,OAAO,aAAa,2BAA2B,oBAClD;AAAA,IAAA,GAECM,IAAwBC,EAAOJ,CAAkB;AAEvD,IAAAK,EAAkB,MAAM;AACtB,YAAMC,IACJT,EAAM,OAAO,aAAa,2BAA2B,oBAClD;AAEL,MAAKU,EAAQJ,EAAsB,SAASG,CAAgB,MAC1DH,EAAsB,UAAUG,GAChCL,EAAsBK,CAAgB;AAAA,IAE1C,CAAC;AAED,UAAME,IAAqC,CAAA;AAC3C,eAAW,CAACC,GAAOC,CAAY,KAAKV,EAAmB;AACrD,MAAIU,KAAcF,EAAyB,KAAKC,CAAK;AAGvD,WACE,gBAAAE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,cAAW;AAAA,QACX,OAAM;AAAA,QACN,IAAI;AAAA,UACF,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,WAAW;AAAA,UACX,YAAYJ,EAAyB,SAAS,YAAY;AAAA,QAAA;AAAA,QAG3D,YAAE,iCAAiC;AAAA,UAClC,cAAcA,EAAyB,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI;AAAA,QAAA,CACnE;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointTab.cjs","sources":["../../../src/components/jogging/JoggingJointTab.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Divider from \"@mui/material/Divider\"\nimport Stack from \"@mui/material/Stack\"\nimport Typography from \"@mui/material/Typography\"\nimport { JointTypeEnum } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport type { ReactNode } from \"react\"\nimport { JoggingJointLimitDetector } from \"./JoggingJointLimitDetector\"\nimport { JoggingJointValueControl } from \"./JoggingJointValueControl\"\nimport type { JoggingStore } from \"./JoggingStore\"\nimport { JoggingVelocitySlider } from \"./JoggingVelocitySlider\"\n\nexport const JoggingJointTab = observer(\n ({ store, children }: { store: JoggingStore; children?: ReactNode }) => {\n const theme = useTheme()\n async function startJointJogging(opts: {\n joint: number\n direction: \"-\" | \"+\"\n }) {\n await store.activate()\n\n await store.jogger.rotateJoints({\n joint: opts.joint,\n direction: opts.direction,\n velocityUnit:\n store.jointType === JointTypeEnum.PrismaticJoint ? \"mm/s\" : \"rad/s\",\n velocityValue:\n store.jointType === JointTypeEnum.PrismaticJoint\n ? store.translationVelocityMmPerSec\n : store.rotationVelocityRadsPerSec,\n })\n }\n\n async function stopJointJogging() {\n await store.jogger.stop()\n await store.deactivate()\n }\n\n return (\n <Stack\n data-testid=\"jogging-joint-tab\"\n aria-label=\"jogging-joint-tab\"\n flexGrow={1}\n gap={2}\n sx={{ padding: \"18px 24px\" }}\n >\n <JoggingVelocitySlider\n store={store}\n useDegree={store.jointType === JointTypeEnum.RevoluteJoint}\n />\n\n <Divider />\n\n <Stack\n justifyContent=\"center\"\n alignItems=\"stretch\"\n sx={{ flexGrow: \"1\" }}\n >\n <Stack\n data-testid=\"jogging-joint-value-controls-wrapper\"\n aria-label=\"jogging-joint-value-controls-wrapper\"\n alignItems=\"center\"\n gap=\"24px\"\n >\n {store.jogger.motionStream.joints.map((joint) => {\n const jointLimits =\n store.motionGroupDescription.operation_limits.auto_limits\n ?.joints?.[joint.index]?.position\n\n return (\n <Stack\n key={`joint-${joint.index}`}\n data-testid={`jogging-joint-value-control-${joint.index}`}\n aria-label={`jogging-joint-value-control-${joint.index}`}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"center\"}\n spacing={1.5}\n width={\"100%\"}\n >\n {store.showJointsLegend && (\n <Typography\n color={\n store.isLocked\n ? theme.palette.text.disabled\n : theme.palette.text.secondary\n }\n >\n {`G${joint.index + 1}`}\n </Typography>\n )}\n\n <JoggingJointValueControl\n disabled={store.isLocked}\n lowerLimit={jointLimits?.lower_limit}\n upperLimit={jointLimits?.upper_limit}\n useDegree={store.jointType === JointTypeEnum.RevoluteJoint}\n getValue={() => {\n const value =\n store.jogger.motionStream.rapidlyChangingMotionState\n .joint_position[joint.index]\n return value !== undefined ? value : undefined\n }}\n startJogging={(direction: \"-\" | \"+\") =>\n startJointJogging({\n joint: joint.index,\n direction,\n })\n }\n stopJogging={stopJointJogging}\n />\n </Stack>\n )\n })}\n </Stack>\n </Stack>\n <JoggingJointLimitDetector store={store} />\n\n {children && <Divider />}\n\n {/* Custom content */}\n {children}\n </Stack>\n )\n },\n)\n"],"names":["JoggingJointTab","observer","store","children","theme","useTheme","startJointJogging","opts","JointTypeEnum","stopJointJogging","jsxs","Stack","jsx","JoggingVelocitySlider","Divider","joint","jointLimits","_c","_b","_a","Typography","JoggingJointValueControl","value","direction","JoggingJointLimitDetector"],"mappings":"ocAYaA,EAAkBC,EAAAA,SAC7B,CAAC,CAAE,MAAAC,EAAO,SAAAC,KAA8D,CACtE,MAAMC,EAAQC,EAAAA,SAAA,EACd,eAAeC,EAAkBC,EAG9B,CACD,MAAML,EAAM,SAAA,EAEZ,MAAMA,EAAM,OAAO,aAAa,CAC9B,MAAOK,EAAK,MACZ,UAAWA,EAAK,UAChB,aACEL,EAAM,YAAcM,EAAAA,cAAc,eAAiB,OAAS,QAC9D,cACEN,EAAM,YAAcM,EAAAA,cAAc,eAC9BN,EAAM,4BACNA,EAAM,0BAAA,CACb,CACH,CAEA,eAAeO,GAAmB,CAChC,MAAMP,EAAM,OAAO,KAAA,EACnB,MAAMA,EAAM,WAAA,CACd,CAEA,OACEQ,EAAAA,KAACC,EAAA,CACC,cAAY,oBACZ,aAAW,oBACX,SAAU,EACV,IAAK,EACL,GAAI,CAAE,QAAS,WAAA,EAEf,SAAA,CAAAC,EAAAA,IAACC,EAAAA,sBAAA,CACC,MAAAX,EACA,UAAWA,EAAM,YAAcM,gBAAc,aAAA,CAAA,QAG9CM,EAAA,EAAQ,EAETF,EAAAA,IAACD,EAAA,CACC,eAAe,SACf,WAAW,UACX,GAAI,CAAE,SAAU,GAAA,EAEhB,SAAAC,EAAAA,IAACD,EAAA,CACC,cAAY,uCACZ,aAAW,uCACX,WAAW,SACX,IAAI,OAEH,WAAM,OAAO,aAAa,OAAO,IAAKI,GAAU,WAC/C,MAAMC,GACJC,GAAAC,GAAAC,EAAAjB,EAAM,uBAAuB,iBAAiB,cAA9C,YAAAiB,EACI,SADJ,YAAAD,EACaH,EAAM,SADnB,YAAAE,EAC2B,SAE7B,OACEP,EAAAA,KAACC,EAAA,CAEC,cAAa,+BAA+BI,EAAM,KAAK,GACvD,aAAY,+BAA+BA,EAAM,KAAK,GACtD,UAAU,MACV,WAAW,SACX,eAAgB,SAChB,QAAS,IACT,MAAO,OAEN,SAAA,CAAAb,EAAM,kBACLU,EAAAA,IAACQ,EAAA,CACC,MACElB,EAAM,SACFE,EAAM,QAAQ,KAAK,SACnBA,EAAM,QAAQ,KAAK,UAGxB,SAAA,IAAIW,EAAM,MAAQ,CAAC,EAAA,CAAA,EAIxBH,EAAAA,IAACS,EAAAA,yBAAA,CACC,SAAUnB,EAAM,SAChB,WAAYc,GAAA,YAAAA,EAAa,YACzB,WAAYA,GAAA,YAAAA,EAAa,YACzB,UAAWd,EAAM,YAAcM,EAAAA,cAAc,cAC7C,SAAU,IAAM,CACd,MAAMc,EACJpB,EAAM,OAAO,aAAa,2BACvB,eAAea,EAAM,KAAK,EAC/B,OAAOO,IAAU,OAAYA,EAAQ,MACvC,EACA,aAAeC,GACbjB,EAAkB,CAChB,MAAOS,EAAM,MACb,UAAAQ,CAAA,CACD,EAEH,YAAad,CAAA,CAAA,CACf,CAAA,EAvCK,SAASM,EAAM,KAAK,EAAA,CA0C/B,CAAC,CAAA,CAAA,CACH,CAAA,EAEFH,MAACY,EAAAA,2BAA0B,MAAAtB,EAAc,EAExCC,SAAaW,EAAA,EAAQ,EAGrBX,CAAA,CAAA,CAAA,CAGP,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointTab.d.ts","sourceRoot":"","sources":["../../../src/components/jogging/JoggingJointTab.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,eAAO,MAAM,eAAe,yBACJ;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE;;CAgHpE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"JoggingJointTab.js","sources":["../../../src/components/jogging/JoggingJointTab.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Divider from \"@mui/material/Divider\"\nimport Stack from \"@mui/material/Stack\"\nimport Typography from \"@mui/material/Typography\"\nimport { JointTypeEnum } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport type { ReactNode } from \"react\"\nimport { JoggingJointLimitDetector } from \"./JoggingJointLimitDetector\"\nimport { JoggingJointValueControl } from \"./JoggingJointValueControl\"\nimport type { JoggingStore } from \"./JoggingStore\"\nimport { JoggingVelocitySlider } from \"./JoggingVelocitySlider\"\n\nexport const JoggingJointTab = observer(\n ({ store, children }: { store: JoggingStore; children?: ReactNode }) => {\n const theme = useTheme()\n async function startJointJogging(opts: {\n joint: number\n direction: \"-\" | \"+\"\n }) {\n await store.activate()\n\n await store.jogger.rotateJoints({\n joint: opts.joint,\n direction: opts.direction,\n velocityUnit:\n store.jointType === JointTypeEnum.PrismaticJoint ? \"mm/s\" : \"rad/s\",\n velocityValue:\n store.jointType === JointTypeEnum.PrismaticJoint\n ? store.translationVelocityMmPerSec\n : store.rotationVelocityRadsPerSec,\n })\n }\n\n async function stopJointJogging() {\n await store.jogger.stop()\n await store.deactivate()\n }\n\n return (\n <Stack\n data-testid=\"jogging-joint-tab\"\n aria-label=\"jogging-joint-tab\"\n flexGrow={1}\n gap={2}\n sx={{ padding: \"18px 24px\" }}\n >\n <JoggingVelocitySlider\n store={store}\n useDegree={store.jointType === JointTypeEnum.RevoluteJoint}\n />\n\n <Divider />\n\n <Stack\n justifyContent=\"center\"\n alignItems=\"stretch\"\n sx={{ flexGrow: \"1\" }}\n >\n <Stack\n data-testid=\"jogging-joint-value-controls-wrapper\"\n aria-label=\"jogging-joint-value-controls-wrapper\"\n alignItems=\"center\"\n gap=\"24px\"\n >\n {store.jogger.motionStream.joints.map((joint) => {\n const jointLimits =\n store.motionGroupDescription.operation_limits.auto_limits\n ?.joints?.[joint.index]?.position\n\n return (\n <Stack\n key={`joint-${joint.index}`}\n data-testid={`jogging-joint-value-control-${joint.index}`}\n aria-label={`jogging-joint-value-control-${joint.index}`}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"center\"}\n spacing={1.5}\n width={\"100%\"}\n >\n {store.showJointsLegend && (\n <Typography\n color={\n store.isLocked\n ? theme.palette.text.disabled\n : theme.palette.text.secondary\n }\n >\n {`G${joint.index + 1}`}\n </Typography>\n )}\n\n <JoggingJointValueControl\n disabled={store.isLocked}\n lowerLimit={jointLimits?.lower_limit}\n upperLimit={jointLimits?.upper_limit}\n useDegree={store.jointType === JointTypeEnum.RevoluteJoint}\n getValue={() => {\n const value =\n store.jogger.motionStream.rapidlyChangingMotionState\n .joint_position[joint.index]\n return value !== undefined ? value : undefined\n }}\n startJogging={(direction: \"-\" | \"+\") =>\n startJointJogging({\n joint: joint.index,\n direction,\n })\n }\n stopJogging={stopJointJogging}\n />\n </Stack>\n )\n })}\n </Stack>\n </Stack>\n <JoggingJointLimitDetector store={store} />\n\n {children && <Divider />}\n\n {/* Custom content */}\n {children}\n </Stack>\n )\n },\n)\n"],"names":["JoggingJointTab","observer","store","children","theme","useTheme","startJointJogging","opts","JointTypeEnum","stopJointJogging","jsxs","Stack","jsx","JoggingVelocitySlider","Divider","joint","jointLimits","_c","_b","_a","Typography","JoggingJointValueControl","value","direction","JoggingJointLimitDetector"],"mappings":"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"}