@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":"index.cjs","sources":["../../../src/components/CycleTimer/index.tsx"],"sourcesContent":["import { observer } from \"mobx-react-lite\"\nimport { useEffect, useRef } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { DefaultVariant } from \"./DefaultVariant\"\nimport { SmallVariant } from \"./SmallVariant\"\nimport type { CycleTimerProps } from \"./types\"\nimport { useAnimations } from \"./useAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A circular gauge timer component for cycle-specific timing operations\n *\n * Features:\n * - Custom SVG circular gauge with 264px diameter and 40px thickness\n * - Multiple states: idle, measuring, measured, countdown, success\n * - Idle state: shows \"Waiting for program cycle\" with transparent inner circle\n * - Measuring state: counts up with \"Cycle Time\" / \"measuring...\" labels\n * - Measured state: shows final time with \"Cycle Time\" / \"determined\" labels in pulsating green\n * - Countdown mode: shows remaining time prominently, counts down to zero\n * - Success state: brief green flash after cycle completion\n * - Displays appropriate labels based on state\n * - Automatically counts down and triggers callback when reaching zero\n * - Full timer control: start, pause, resume functionality\n * - Support for starting with elapsed time (resume mid-cycle)\n * - Error state support: pauses timer and shows error styling (red color)\n * - Smooth fade transitions between different text states\n * - Pulsating text animation for completed measuring state\n * - Fully localized with i18next\n * - Material-UI theming integration\n * - Small variant with animated progress icon (gauge border only) next to text\n */\nexport const CycleTimer = externalizeComponent(\n observer(\n ({\n onCycleComplete,\n onCycleEnd,\n onMeasuringComplete,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: CycleTimerProps) => {\n const prevStateRef = useRef<string | undefined>(undefined)\n\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n } = useAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n onStartPulsating: startPulsatingAnimation,\n })\n\n // Handle state changes with fade transitions\n useEffect(() => {\n const prevState = prevStateRef.current\n\n if (\n prevStateRef.current !== undefined &&\n prevState !== timerState.currentState\n ) {\n // Stop pulsating animation if leaving measured state\n if (prevState === \"measured\") {\n stopPulsatingAnimation()\n }\n\n // Stop idle animations if leaving idle state\n if (prevState === \"idle\") {\n stopIdleAnimations()\n }\n\n // Trigger fade transition\n triggerFadeTransition()\n } else {\n // No state change or first time - set initial state\n setInitialAnimationState()\n }\n\n // Start idle animations if entering idle state\n if (timerState.currentState === \"idle\") {\n startIdleAnimations()\n }\n\n prevStateRef.current = timerState.currentState\n }, [\n timerState.currentState,\n stopPulsatingAnimation,\n stopIdleAnimations,\n startIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n ])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onCycleComplete(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onCycleComplete, 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 <SmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <DefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n\nexport default CycleTimer\n"],"names":["CycleTimer","externalizeComponent","observer","onCycleComplete","onCycleEnd","onMeasuringComplete","autoStart","variant","compact","className","hasError","prevStateRef","useRef","animationState","triggerPauseAnimation","triggerErrorAnimation","clearErrorAnimation","startPulsatingAnimation","stopPulsatingAnimation","startIdleAnimations","stopIdleAnimations","triggerFadeTransition","setInitialAnimationState","cleanup","useAnimations","timerState","controls","useTimerLogic","useEffect","prevState","isMounted","timeoutId","jsx","SmallVariant","DefaultVariant"],"mappings":"iXA+BaA,EAAaC,EAAAA,qBACxBC,EAAAA,SACE,CAAC,CACC,gBAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EAAY,GACZ,QAAAC,EAAU,UACV,QAAAC,EAAU,GACV,UAAAC,EACA,SAAAC,EAAW,EAAA,IACU,CACrB,MAAMC,EAAeC,EAAAA,OAA2B,MAAS,EAGnD,CACJ,eAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,wBAAAC,EACA,uBAAAC,EACA,oBAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,yBAAAC,EACA,QAAAC,CAAA,EACEC,gBAAA,EAGE,CAAE,WAAAC,EAAY,SAAAC,CAAA,EAAaC,gBAAc,CAC7C,UAAArB,EACA,WAAAF,EACA,oBAAAC,EACA,SAAAK,EACA,iBAAkBI,EAClB,iBAAkBC,EAClB,sBAAuBC,EACvB,iBAAkBC,CAAA,CACnB,EA+DD,OA5DAW,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAYlB,EAAa,QAG7BA,EAAa,UAAY,QACzBkB,IAAcJ,EAAW,cAGrBI,IAAc,YAChBX,EAAA,EAIEW,IAAc,QAChBT,EAAA,EAIFC,EAAA,GAGAC,EAAA,EAIEG,EAAW,eAAiB,QAC9BN,EAAA,EAGFR,EAAa,QAAUc,EAAW,YACpC,EAAG,CACDA,EAAW,aACXP,EACAE,EACAD,EACAE,EACAC,CAAA,CACD,EAGDM,EAAAA,UAAU,IAAM,CACd,IAAIE,EAAY,GAChB,MAAMC,EAAY,WAAW,IAAM,CAC7BD,GACF3B,EAAgBuB,CAAQ,CAE5B,EAAG,CAAC,EAEJ,MAAO,IAAM,CACXI,EAAY,GACZ,aAAaC,CAAS,CACxB,CACF,EAAG,CAAC5B,EAAiBuB,CAAQ,CAAC,EAG9BE,EAAAA,UAAU,IACDL,EACN,CAACA,CAAO,CAAC,EAGRhB,IAAY,QAEZyB,EAAAA,IAACC,EAAAA,aAAA,CACC,WAAAR,EACA,eAAAZ,EACA,SAAAH,EACA,QAAAF,EACA,UAAAC,CAAA,CAAA,EAMJuB,EAAAA,IAACE,EAAAA,eAAA,CACC,WAAAT,EACA,eAAAZ,EACA,SAAAH,EACA,UAAAD,CAAA,CAAA,CAGN,CAAA,CAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CycleTimer/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU,6GAWhB,eAAe;;CAiHrB,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/CycleTimer/index.tsx"],"sourcesContent":["import { observer } from \"mobx-react-lite\"\nimport { useEffect, useRef } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { DefaultVariant } from \"./DefaultVariant\"\nimport { SmallVariant } from \"./SmallVariant\"\nimport type { CycleTimerProps } from \"./types\"\nimport { useAnimations } from \"./useAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A circular gauge timer component for cycle-specific timing operations\n *\n * Features:\n * - Custom SVG circular gauge with 264px diameter and 40px thickness\n * - Multiple states: idle, measuring, measured, countdown, success\n * - Idle state: shows \"Waiting for program cycle\" with transparent inner circle\n * - Measuring state: counts up with \"Cycle Time\" / \"measuring...\" labels\n * - Measured state: shows final time with \"Cycle Time\" / \"determined\" labels in pulsating green\n * - Countdown mode: shows remaining time prominently, counts down to zero\n * - Success state: brief green flash after cycle completion\n * - Displays appropriate labels based on state\n * - Automatically counts down and triggers callback when reaching zero\n * - Full timer control: start, pause, resume functionality\n * - Support for starting with elapsed time (resume mid-cycle)\n * - Error state support: pauses timer and shows error styling (red color)\n * - Smooth fade transitions between different text states\n * - Pulsating text animation for completed measuring state\n * - Fully localized with i18next\n * - Material-UI theming integration\n * - Small variant with animated progress icon (gauge border only) next to text\n */\nexport const CycleTimer = externalizeComponent(\n observer(\n ({\n onCycleComplete,\n onCycleEnd,\n onMeasuringComplete,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: CycleTimerProps) => {\n const prevStateRef = useRef<string | undefined>(undefined)\n\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n } = useAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n onStartPulsating: startPulsatingAnimation,\n })\n\n // Handle state changes with fade transitions\n useEffect(() => {\n const prevState = prevStateRef.current\n\n if (\n prevStateRef.current !== undefined &&\n prevState !== timerState.currentState\n ) {\n // Stop pulsating animation if leaving measured state\n if (prevState === \"measured\") {\n stopPulsatingAnimation()\n }\n\n // Stop idle animations if leaving idle state\n if (prevState === \"idle\") {\n stopIdleAnimations()\n }\n\n // Trigger fade transition\n triggerFadeTransition()\n } else {\n // No state change or first time - set initial state\n setInitialAnimationState()\n }\n\n // Start idle animations if entering idle state\n if (timerState.currentState === \"idle\") {\n startIdleAnimations()\n }\n\n prevStateRef.current = timerState.currentState\n }, [\n timerState.currentState,\n stopPulsatingAnimation,\n stopIdleAnimations,\n startIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n ])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onCycleComplete(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onCycleComplete, 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 <SmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <DefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n\nexport default CycleTimer\n"],"names":["CycleTimer","externalizeComponent","observer","onCycleComplete","onCycleEnd","onMeasuringComplete","autoStart","variant","compact","className","hasError","prevStateRef","useRef","animationState","triggerPauseAnimation","triggerErrorAnimation","clearErrorAnimation","startPulsatingAnimation","stopPulsatingAnimation","startIdleAnimations","stopIdleAnimations","triggerFadeTransition","setInitialAnimationState","cleanup","useAnimations","timerState","controls","useTimerLogic","useEffect","prevState","isMounted","timeoutId","jsx","SmallVariant","DefaultVariant"],"mappings":";;;;;;;;AA+BO,MAAMA,IAAaC;AAAA,EACxBC;AAAA,IACE,CAAC;AAAA,MACC,iBAAAC;AAAA,MACA,YAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,WAAAC,IAAY;AAAA,MACZ,SAAAC,IAAU;AAAA,MACV,SAAAC,IAAU;AAAA,MACV,WAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,IAAA,MACU;AACrB,YAAMC,IAAeC,EAA2B,MAAS,GAGnD;AAAA,QACJ,gBAAAC;AAAA,QACA,uBAAAC;AAAA,QACA,uBAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,yBAAAC;AAAA,QACA,wBAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,oBAAAC;AAAA,QACA,uBAAAC;AAAA,QACA,0BAAAC;AAAA,QACA,SAAAC;AAAA,MAAA,IACEC,EAAA,GAGE,EAAE,YAAAC,GAAY,UAAAC,EAAA,IAAaC,EAAc;AAAA,QAC7C,WAAArB;AAAA,QACA,YAAAF;AAAA,QACA,qBAAAC;AAAA,QACA,UAAAK;AAAA,QACA,kBAAkBI;AAAA,QAClB,kBAAkBC;AAAA,QAClB,uBAAuBC;AAAA,QACvB,kBAAkBC;AAAA,MAAA,CACnB;AA+DD,aA5DAW,EAAU,MAAM;AACd,cAAMC,IAAYlB,EAAa;AAE/B,QACEA,EAAa,YAAY,UACzBkB,MAAcJ,EAAW,gBAGrBI,MAAc,cAChBX,EAAA,GAIEW,MAAc,UAChBT,EAAA,GAIFC,EAAA,KAGAC,EAAA,GAIEG,EAAW,iBAAiB,UAC9BN,EAAA,GAGFR,EAAa,UAAUc,EAAW;AAAA,MACpC,GAAG;AAAA,QACDA,EAAW;AAAA,QACXP;AAAA,QACAE;AAAA,QACAD;AAAA,QACAE;AAAA,QACAC;AAAA,MAAA,CACD,GAGDM,EAAU,MAAM;AACd,YAAIE,IAAY;AAChB,cAAMC,IAAY,WAAW,MAAM;AACjC,UAAID,KACF3B,EAAgBuB,CAAQ;AAAA,QAE5B,GAAG,CAAC;AAEJ,eAAO,MAAM;AACX,UAAAI,IAAY,IACZ,aAAaC,CAAS;AAAA,QACxB;AAAA,MACF,GAAG,CAAC5B,GAAiBuB,CAAQ,CAAC,GAG9BE,EAAU,MACDL,GACN,CAACA,CAAO,CAAC,GAGRhB,MAAY,UAEZ,gBAAAyB;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,YAAAR;AAAA,UACA,gBAAAZ;AAAA,UACA,UAAAH;AAAA,UACA,SAAAF;AAAA,UACA,WAAAC;AAAA,QAAA;AAAA,MAAA,IAMJ,gBAAAuB;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,YAAAT;AAAA,UACA,gBAAAZ;AAAA,UACA,UAAAH;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/CycleTimer/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,WAAW,GACX,UAAU,GACV,WAAW,GACX,SAAS,CAAA;AAEb,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxE,cAAc,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;IACvD,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC7B,qFAAqF;IACrF,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,YAAY,EAAE,eAAe,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnimations.cjs","sources":["../../../src/components/CycleTimer/useAnimations.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\"\nimport type { AnimationState } from \"./types\"\n\nexport const useAnimations = () => {\n const [animationState, setAnimationState] = useState<AnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showPulsatingText: false,\n pulsatingFinished: false,\n showLabels: true,\n showMainText: true,\n showIdlePulsating: false,\n idleDotsCount: 0,\n })\n\n // Refs for managing timeouts and intervals\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulseCountRef = useRef<number>(0)\n const idlePulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const idleDotsIntervalRef = 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 startPulsatingAnimation = useCallback((onComplete?: () => void) => {\n pulseCountRef.current = 0\n // Start with fade to success color\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: true,\n pulsatingFinished: false,\n }))\n\n // After initial success color fade, start slow pulsating like idle\n setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n pulsatingFinished: true, // This will keep the success color and start slow pulsating\n }))\n\n // Start slow pulsating animation similar to idle\n pulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: !prev.showPulsatingText,\n }))\n }, 2000) // Same slow timing as idle pulsating\n\n if (onComplete) {\n onComplete()\n }\n }, 800) // Initial success color display duration\n }, [])\n\n const stopPulsatingAnimation = useCallback(() => {\n if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n pulsatingIntervalRef.current = null\n }\n // Reset all pulsating states to ensure colors are reset\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: false,\n pulsatingFinished: false,\n }))\n pulseCountRef.current = 0\n }, [])\n\n const startIdleAnimations = useCallback(() => {\n // Start pulsating animation for the text\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: true,\n }))\n\n idlePulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: !prev.showIdlePulsating,\n }))\n }, 2000) // Slower pulsate every 2 seconds\n\n // Start animated dots\n idleDotsIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n idleDotsCount: (prev.idleDotsCount + 1) % 4, // Cycle through 0, 1, 2, 3\n }))\n }, 800) // Change dots every 800ms\n }, [])\n\n const stopIdleAnimations = useCallback(() => {\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n idlePulsatingIntervalRef.current = null\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n idleDotsIntervalRef.current = null\n }\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: false,\n idleDotsCount: 0,\n }))\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: false,\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 showLabels: true,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: true,\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 if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n }\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n"],"names":["useAnimations","animationState","setAnimationState","useState","pauseAnimationTimeoutRef","useRef","errorAnimationTimeoutRef","pulsatingIntervalRef","fadeTimeoutRef","pulseCountRef","idlePulsatingIntervalRef","idleDotsIntervalRef","triggerPauseAnimation","useCallback","prev","triggerErrorAnimation","clearErrorAnimation","startPulsatingAnimation","onComplete","stopPulsatingAnimation","startIdleAnimations","stopIdleAnimations","triggerFadeTransition","setInitialAnimationState","cleanup"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnimations.d.ts","sourceRoot":"","sources":["../../../src/components/CycleTimer/useAnimations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,eAAO,MAAM,aAAa;;;;;2CAoDkC,MAAM,IAAI;;;;;;;CAkJrE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnimations.js","sources":["../../../src/components/CycleTimer/useAnimations.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\"\nimport type { AnimationState } from \"./types\"\n\nexport const useAnimations = () => {\n const [animationState, setAnimationState] = useState<AnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showPulsatingText: false,\n pulsatingFinished: false,\n showLabels: true,\n showMainText: true,\n showIdlePulsating: false,\n idleDotsCount: 0,\n })\n\n // Refs for managing timeouts and intervals\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulseCountRef = useRef<number>(0)\n const idlePulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const idleDotsIntervalRef = 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 startPulsatingAnimation = useCallback((onComplete?: () => void) => {\n pulseCountRef.current = 0\n // Start with fade to success color\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: true,\n pulsatingFinished: false,\n }))\n\n // After initial success color fade, start slow pulsating like idle\n setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n pulsatingFinished: true, // This will keep the success color and start slow pulsating\n }))\n\n // Start slow pulsating animation similar to idle\n pulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: !prev.showPulsatingText,\n }))\n }, 2000) // Same slow timing as idle pulsating\n\n if (onComplete) {\n onComplete()\n }\n }, 800) // Initial success color display duration\n }, [])\n\n const stopPulsatingAnimation = useCallback(() => {\n if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n pulsatingIntervalRef.current = null\n }\n // Reset all pulsating states to ensure colors are reset\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: false,\n pulsatingFinished: false,\n }))\n pulseCountRef.current = 0\n }, [])\n\n const startIdleAnimations = useCallback(() => {\n // Start pulsating animation for the text\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: true,\n }))\n\n idlePulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: !prev.showIdlePulsating,\n }))\n }, 2000) // Slower pulsate every 2 seconds\n\n // Start animated dots\n idleDotsIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n idleDotsCount: (prev.idleDotsCount + 1) % 4, // Cycle through 0, 1, 2, 3\n }))\n }, 800) // Change dots every 800ms\n }, [])\n\n const stopIdleAnimations = useCallback(() => {\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n idlePulsatingIntervalRef.current = null\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n idleDotsIntervalRef.current = null\n }\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: false,\n idleDotsCount: 0,\n }))\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: false,\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 showLabels: true,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: true,\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 if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n }\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n"],"names":["useAnimations","animationState","setAnimationState","useState","pauseAnimationTimeoutRef","useRef","errorAnimationTimeoutRef","pulsatingIntervalRef","fadeTimeoutRef","pulseCountRef","idlePulsatingIntervalRef","idleDotsIntervalRef","triggerPauseAnimation","useCallback","prev","triggerErrorAnimation","clearErrorAnimation","startPulsatingAnimation","onComplete","stopPulsatingAnimation","startIdleAnimations","stopIdleAnimations","triggerFadeTransition","setInitialAnimationState","cleanup"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.cjs","sources":["../../../src/components/CycleTimer/useTimerLogic.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\nimport { calculateExactProgress } from \"./utils\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n onCycleEnd?: () => void\n onMeasuringComplete?: () => void\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n onStartPulsating: (onComplete?: () => void) => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n onStartPulsating,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n currentState: \"idle\",\n remainingTime: 0,\n maxTime: null,\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\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 setIdle = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n currentState: \"idle\",\n maxTime: null,\n // Don't reset remainingTime - keep the last value\n isRunning: false,\n isPausedState: false,\n currentProgress: 0, // Reset progress to 0 for gauge\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n progressInterpolator.setImmediate([0]) // Use setImmediate for instant reset\n }, [progressInterpolator])\n\n const startMeasuring = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n currentState: \"measuring\",\n maxTime: null,\n remainingTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress, // Immediately set progress\n }))\n pausedTimeRef.current = 0\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\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 startNewCycle = useCallback(\n (maxTimeSeconds: number, elapsedSeconds: number = 0) => {\n // Stop any running timer first to prevent conflicts\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n\n setTimerState((prev) => ({\n ...prev,\n currentState: \"countdown\",\n maxTime: maxTimeSeconds,\n isPausedState: false,\n }))\n pausedTimeRef.current = 0\n\n // Count-down mode\n const remainingSeconds = Math.max(0, maxTimeSeconds - elapsedSeconds)\n const initialProgress =\n elapsedSeconds > 0 ? (elapsedSeconds / maxTimeSeconds) * 100 : 0\n\n setTimerState((prev) => ({\n ...prev,\n remainingTime: remainingSeconds,\n currentProgress: initialProgress, // Immediately set progress\n }))\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\n\n if (remainingSeconds === 0) {\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n } else if (autoStart) {\n setTimeout(() => {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n }, 0)\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, onCycleEnd, progressInterpolator],\n )\n\n const completeMeasuring = useCallback(() => {\n // Always trigger completion regardless of current state\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n currentState: \"measured\",\n }))\n startTimeRef.current = null\n\n onStartPulsating(() => {\n if (onMeasuringComplete) {\n onMeasuringComplete()\n }\n })\n }, [onStartPulsating, onMeasuringComplete])\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const additionalElapsed = now - startTimeRef.current\n pausedTimeRef.current += additionalElapsed\n\n const totalElapsed = pausedTimeRef.current / 1000\n const exactProgress = calculateExactProgress(\n timerState.currentState,\n totalElapsed,\n timerState.maxTime,\n )\n progressInterpolator.setTarget([exactProgress])\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [\n timerState.isRunning,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n onPauseAnimation,\n ])\n\n const resume = useCallback(() => {\n if (\n timerState.isPausedState &&\n (timerState.remainingTime > 0 || timerState.currentState !== \"countdown\")\n ) {\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [\n timerState.isPausedState,\n timerState.remainingTime,\n timerState.currentState,\n ])\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 && !timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.isPausedState,\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 elapsed =\n (now - startTimeRef.current + pausedTimeRef.current) / 1000\n\n if (\n timerState.currentState === \"countdown\" &&\n timerState.maxTime !== null\n ) {\n const remaining = Math.max(0, timerState.maxTime - elapsed)\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.ceil(remaining),\n }))\n\n const progress = Math.min(100, (elapsed / timerState.maxTime) * 100)\n progressInterpolator.setTarget([progress])\n\n if (remaining <= 0) {\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n remainingTime: 0,\n }))\n startTimeRef.current = null\n progressInterpolator.setTarget([100])\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n return\n }\n } else if (timerState.currentState === \"measuring\") {\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.floor(elapsed),\n }))\n const progress = ((elapsed / 60) % 1) * 100\n progressInterpolator.setTarget([progress])\n }\n\n if (timerState.isRunning) {\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n }\n }\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 }\n }\n }, [\n timerState.isRunning,\n onCycleEnd,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n ])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update(1 / 60)\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 startNewCycle,\n startMeasuring,\n setIdle,\n completeMeasuring,\n pause,\n resume,\n isPaused,\n },\n }\n}\n"],"names":["useTimerLogic","autoStart","onCycleEnd","onMeasuringComplete","hasError","onPauseAnimation","onErrorAnimation","onClearErrorAnimation","onStartPulsating","timerState","setTimerState","useState","animationRef","useRef","startTimeRef","pausedTimeRef","progressInterpolator","useInterpolation","progress","prev","setIdle","useCallback","startMeasuring","elapsedSeconds","initialProgress","startNewCycle","maxTimeSeconds","remainingSeconds","completeMeasuring","pause","additionalElapsed","totalElapsed","exactProgress","calculateExactProgress","resume","isPaused","useEffect","updateTimer","elapsed","remaining","interpolationAnimationId","animateInterpolation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.d.ts","sourceRoot":"","sources":["../../../src/components/CycleTimer/useTimerLogic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,qBAAqB,EAAE,MAAM,IAAI,CAAA;IACjC,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACpD;AAED,eAAO,MAAM,aAAa,GAAI,wIAS3B,kBAAkB;;;wCAkEA,MAAM,mBAAkB,MAAM;0CAzB9B,MAAM;;;;;;;CAuQ1B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimerLogic.js","sources":["../../../src/components/CycleTimer/useTimerLogic.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\nimport { calculateExactProgress } from \"./utils\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n onCycleEnd?: () => void\n onMeasuringComplete?: () => void\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n onStartPulsating: (onComplete?: () => void) => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n onStartPulsating,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n currentState: \"idle\",\n remainingTime: 0,\n maxTime: null,\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\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 setIdle = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n currentState: \"idle\",\n maxTime: null,\n // Don't reset remainingTime - keep the last value\n isRunning: false,\n isPausedState: false,\n currentProgress: 0, // Reset progress to 0 for gauge\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n progressInterpolator.setImmediate([0]) // Use setImmediate for instant reset\n }, [progressInterpolator])\n\n const startMeasuring = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n currentState: \"measuring\",\n maxTime: null,\n remainingTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress, // Immediately set progress\n }))\n pausedTimeRef.current = 0\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\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 startNewCycle = useCallback(\n (maxTimeSeconds: number, elapsedSeconds: number = 0) => {\n // Stop any running timer first to prevent conflicts\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n\n setTimerState((prev) => ({\n ...prev,\n currentState: \"countdown\",\n maxTime: maxTimeSeconds,\n isPausedState: false,\n }))\n pausedTimeRef.current = 0\n\n // Count-down mode\n const remainingSeconds = Math.max(0, maxTimeSeconds - elapsedSeconds)\n const initialProgress =\n elapsedSeconds > 0 ? (elapsedSeconds / maxTimeSeconds) * 100 : 0\n\n setTimerState((prev) => ({\n ...prev,\n remainingTime: remainingSeconds,\n currentProgress: initialProgress, // Immediately set progress\n }))\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\n\n if (remainingSeconds === 0) {\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n } else if (autoStart) {\n setTimeout(() => {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n }, 0)\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, onCycleEnd, progressInterpolator],\n )\n\n const completeMeasuring = useCallback(() => {\n // Always trigger completion regardless of current state\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n currentState: \"measured\",\n }))\n startTimeRef.current = null\n\n onStartPulsating(() => {\n if (onMeasuringComplete) {\n onMeasuringComplete()\n }\n })\n }, [onStartPulsating, onMeasuringComplete])\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const additionalElapsed = now - startTimeRef.current\n pausedTimeRef.current += additionalElapsed\n\n const totalElapsed = pausedTimeRef.current / 1000\n const exactProgress = calculateExactProgress(\n timerState.currentState,\n totalElapsed,\n timerState.maxTime,\n )\n progressInterpolator.setTarget([exactProgress])\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [\n timerState.isRunning,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n onPauseAnimation,\n ])\n\n const resume = useCallback(() => {\n if (\n timerState.isPausedState &&\n (timerState.remainingTime > 0 || timerState.currentState !== \"countdown\")\n ) {\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [\n timerState.isPausedState,\n timerState.remainingTime,\n timerState.currentState,\n ])\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 && !timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.isPausedState,\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 elapsed =\n (now - startTimeRef.current + pausedTimeRef.current) / 1000\n\n if (\n timerState.currentState === \"countdown\" &&\n timerState.maxTime !== null\n ) {\n const remaining = Math.max(0, timerState.maxTime - elapsed)\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.ceil(remaining),\n }))\n\n const progress = Math.min(100, (elapsed / timerState.maxTime) * 100)\n progressInterpolator.setTarget([progress])\n\n if (remaining <= 0) {\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n remainingTime: 0,\n }))\n startTimeRef.current = null\n progressInterpolator.setTarget([100])\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n return\n }\n } else if (timerState.currentState === \"measuring\") {\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.floor(elapsed),\n }))\n const progress = ((elapsed / 60) % 1) * 100\n progressInterpolator.setTarget([progress])\n }\n\n if (timerState.isRunning) {\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n }\n }\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 }\n }\n }, [\n timerState.isRunning,\n onCycleEnd,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n ])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update(1 / 60)\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 startNewCycle,\n startMeasuring,\n setIdle,\n completeMeasuring,\n pause,\n resume,\n isPaused,\n },\n }\n}\n"],"names":["useTimerLogic","autoStart","onCycleEnd","onMeasuringComplete","hasError","onPauseAnimation","onErrorAnimation","onClearErrorAnimation","onStartPulsating","timerState","setTimerState","useState","animationRef","useRef","startTimeRef","pausedTimeRef","progressInterpolator","useInterpolation","progress","prev","setIdle","useCallback","startMeasuring","elapsedSeconds","initialProgress","startNewCycle","maxTimeSeconds","remainingSeconds","completeMeasuring","pause","additionalElapsed","totalElapsed","exactProgress","calculateExactProgress","resume","isPaused","useEffect","updateTimer","elapsed","remaining","interpolationAnimationId","animateInterpolation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../../src/components/CycleTimer/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 - DurationFormat is not yet in TypeScript 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 different timer states\n */\nexport const calculateProgress = (\n currentState: string,\n remainingTime: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"idle\") {\n return 0\n }\n\n if (currentState === \"countdown\" && maxTime !== null) {\n // Count-down mode: progress based on elapsed time\n const elapsed = maxTime - remainingTime\n return Math.min(100, (elapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n // Measuring mode: progress based on minute steps (0-100% per minute)\n return ((remainingTime / 60) % 1) * 100\n }\n\n return 0\n}\n\n/**\n * Calculates exact progress position based on elapsed time\n */\nexport const calculateExactProgress = (\n currentState: string,\n totalElapsed: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"countdown\" && maxTime !== null) {\n return Math.min(100, (totalElapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n return ((totalElapsed / 60) % 1) * 100\n }\n\n return 0\n}\n"],"names":["formatTime","seconds","days","hours","minutes","remainingSeconds","parts","formatTimeLocalized","locale","duration","calculateExactProgress","currentState","totalElapsed","maxTime"],"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,GAIH,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,EA+BaI,EAAyB,CACpCC,EACAC,EACAC,IAEIF,IAAiB,aAAeE,IAAY,KACvC,KAAK,IAAI,IAAMD,EAAeC,EAAW,GAAG,EAGjDF,IAAiB,YACVC,EAAe,GAAM,EAAK,IAG9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/CycleTimer/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,MAoCF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,SAAS,MAAM,GAAG,IAAI,KACrB,MAiBF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GACjC,cAAc,MAAM,EACpB,cAAc,MAAM,EACpB,SAAS,MAAM,GAAG,IAAI,KACrB,MAUF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/CycleTimer/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 - DurationFormat is not yet in TypeScript 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 different timer states\n */\nexport const calculateProgress = (\n currentState: string,\n remainingTime: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"idle\") {\n return 0\n }\n\n if (currentState === \"countdown\" && maxTime !== null) {\n // Count-down mode: progress based on elapsed time\n const elapsed = maxTime - remainingTime\n return Math.min(100, (elapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n // Measuring mode: progress based on minute steps (0-100% per minute)\n return ((remainingTime / 60) % 1) * 100\n }\n\n return 0\n}\n\n/**\n * Calculates exact progress position based on elapsed time\n */\nexport const calculateExactProgress = (\n currentState: string,\n totalElapsed: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"countdown\" && maxTime !== null) {\n return Math.min(100, (totalElapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n return ((totalElapsed / 60) % 1) * 100\n }\n\n return 0\n}\n"],"names":["formatTime","seconds","days","hours","minutes","remainingSeconds","parts","formatTimeLocalized","locale","duration","calculateExactProgress","currentState","totalElapsed","maxTime"],"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,IAIH,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,GA+BaI,IAAyB,CACpCC,GACAC,GACAC,MAEIF,MAAiB,eAAeE,MAAY,OACvC,KAAK,IAAI,KAAMD,IAAeC,IAAW,GAAG,IAGjDF,MAAiB,cACVC,IAAe,KAAM,IAAK,MAG9B;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CycleTimer.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CycleTimer.d.ts","sourceRoot":"","sources":["../../src/components/CycleTimer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CycleTimer.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataGrid.cjs","sources":["../../src/components/DataGrid.tsx"],"sourcesContent":["import ClearIcon from \"@mui/icons-material/Clear\"\nimport FilterListIcon from \"@mui/icons-material/FilterList\"\nimport SearchIcon from \"@mui/icons-material/Search\"\nimport { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Divider from \"@mui/material/Divider\"\nimport Typography from \"@mui/material/Typography\"\nimport {\n DataGrid,\n type DataGridProps,\n FilterPanelTrigger,\n type GridColDef,\n type GridRowParams,\n QuickFilter,\n QuickFilterClear,\n QuickFilterControl,\n QuickFilterTrigger,\n Toolbar,\n ToolbarButton,\n useGridApiRef,\n} from \"@mui/x-data-grid\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport interface WandelbotsDataGridProps<T = Record<string, unknown>> {\n /**\n * Array of data items to display in the grid\n */\n data: T[]\n\n /**\n * Column definitions for the DataGrid\n */\n columns: GridColDef[]\n\n /**\n * Function to transform data items into DataGrid rows\n * Should return an object with an 'id' field and other fields matching column definitions\n */\n getRowData: (item: T) => Record<string, unknown> & { id: string | number }\n\n /**\n * Callback when a row is clicked\n */\n onRowClick?: (item: T, params: GridRowParams) => void\n\n /**\n * Currently selected item (for highlighting)\n */\n selectedItem?: T | null\n\n /**\n * Function to get the ID of an item (used for selection highlighting)\n */\n getItemId?: (item: T) => string | number\n\n /**\n * Title displayed in the toolbar\n */\n title?: string\n\n /**\n * Show item count in title\n * @default true\n */\n showCount?: boolean\n\n /**\n * Placeholder text for the search input\n * @default \"Search programs\"\n */\n searchPlaceholder?: string\n\n /**\n * Additional DataGrid props to pass through\n */\n dataGridProps?: Partial<DataGridProps>\n\n /**\n * Custom toolbar component to replace the default one\n */\n CustomToolbar?: React.ComponentType\n\n /**\n * Select the first item by default\n * @default false\n */\n selectFirstByDefault?: boolean\n\n /**\n * Custom sx styles for the root container\n */\n sx?: React.ComponentProps<typeof Box>[\"sx\"]\n}\n\nexport const WandelbotsDataGrid = externalizeComponent(\n observer(\n <T,>({\n data,\n columns,\n getRowData,\n onRowClick,\n selectedItem,\n getItemId,\n title,\n showCount = true,\n searchPlaceholder = \"Search programs\",\n dataGridProps,\n CustomToolbar,\n selectFirstByDefault = false,\n sx,\n }: WandelbotsDataGridProps<T>) => {\n const theme = useTheme()\n const apiRef = useGridApiRef()\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Internal state for selection when not controlled\n const [internalSelectedItem, setInternalSelectedItem] =\n useState<T | null>(null)\n\n // Prepare rows for the DataGrid\n const rows = useMemo(() => data.map(getRowData), [data, getRowData])\n\n // Auto-resize columns when data changes\n useEffect(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, [rows, columns, apiRef])\n\n // Auto-resize columns when the DataGrid container is resized\n useEffect(() => {\n if (!containerRef.current || !apiRef.current) return\n\n const resizeObserver = new ResizeObserver(() => {\n // Use a small timeout to ensure the DataGrid has processed the size change\n setTimeout(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, 100)\n })\n\n resizeObserver.observe(containerRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [apiRef, rows.length, columns])\n\n // Handle default selection - only use if no selectedItem is explicitly provided\n const effectiveSelectedItem = useMemo(() => {\n // If selectedItem is explicitly provided, use it (including null)\n if (selectedItem !== undefined) {\n return selectedItem\n }\n // If we have an internal selection, use it\n if (internalSelectedItem !== null) {\n return internalSelectedItem\n }\n // Otherwise, use first item if selectFirstByDefault is true\n if (selectFirstByDefault && data.length > 0) {\n const firstItem = data[0]\n // Set internal state to first item on initial load\n setInternalSelectedItem(firstItem)\n return firstItem\n }\n return null\n }, [selectFirstByDefault, data, selectedItem, internalSelectedItem])\n\n // Handle row click\n const handleRowClick = (params: GridRowParams) => {\n const item = data.find((item) => {\n const rowData = getRowData(item)\n return rowData.id === params.id\n })\n\n if (item) {\n // Update internal selection state if not controlled by props\n if (selectedItem === undefined) {\n setInternalSelectedItem(item)\n }\n\n // Call the user's onRowClick callback\n if (onRowClick) {\n onRowClick(item, params)\n }\n }\n }\n\n // Get selected row ID for highlighting\n const selectedRowId = useMemo(() => {\n if (!effectiveSelectedItem || !getItemId) return null\n return getItemId(effectiveSelectedItem)\n }, [effectiveSelectedItem, getItemId])\n\n // Default toolbar with filter and quick filter\n function DefaultToolbar() {\n return (\n <Toolbar>\n <Box\n sx={{\n display: \"flex\",\n width: \"100%\",\n gap: 1,\n p: 0.5,\n alignItems: \"center\",\n }}\n >\n {title && (\n <Typography\n variant=\"h6\"\n sx={{\n fontWeight: 500,\n color: \"white\",\n }}\n >\n {title}\n {showCount && ` (${data.length})`}\n </Typography>\n )}\n <Box\n sx={{\n ml: \"auto\",\n display: \"flex\",\n gap: 0.5,\n alignItems: \"center\",\n pr: 1,\n }}\n >\n <FilterPanelTrigger\n render={\n <ToolbarButton aria-label=\"Show filters\">\n <FilterListIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{\n height: \"24px\",\n alignSelf: \"center\",\n }}\n />\n <QuickFilter\n render={(props, state) => (\n <Box\n {...props}\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n }}\n >\n {!state.expanded && (\n <QuickFilterTrigger\n render={\n <ToolbarButton aria-label=\"Search\">\n <SearchIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n )}\n <Box\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n transition: \"all 0.3s ease-in-out\",\n width: state.expanded ? \"200px\" : \"0px\",\n position: \"relative\",\n }}\n >\n <Box\n sx={{\n flex: 1,\n position: \"relative\",\n \"& .MuiInputBase-root\": {\n height: \"32px\",\n borderRadius: \"16px\",\n backgroundColor: \"#171927\",\n paddingLeft: \"40px\",\n paddingRight:\n state.expanded && state.value !== \"\"\n ? \"40px\"\n : \"12px\",\n color: \"white\",\n fontSize: \"14px\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&:hover\": {\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&:focus-within\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&.Mui-focused\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"& .MuiInputBase-input\": {\n padding: \"8px 0\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&:focus\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n border: \"none !important\",\n },\n \"&::placeholder\": {\n color: \"rgba(255, 255, 255, 0.3)\",\n opacity: 1,\n },\n },\n \"& fieldset\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n },\n }}\n >\n {state.expanded && (\n <SearchIcon\n fontSize=\"small\"\n sx={{\n position: \"absolute\",\n left: \"12px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: \"rgba(255, 255, 255, 0.6)\",\n zIndex: 1,\n pointerEvents: \"none\",\n }}\n />\n )}\n <QuickFilterControl placeholder={searchPlaceholder} />\n </Box>\n {state.expanded && state.value !== \"\" && (\n <QuickFilterClear\n render={\n <Box\n sx={{\n position: \"absolute\",\n right: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n zIndex: 1,\n }}\n >\n <Box\n sx={{\n minWidth: \"24px\",\n width: \"24px\",\n height: \"24px\",\n padding: 0,\n color: \"rgba(255, 255, 255, 0.6)\",\n \"&:hover\": {\n backgroundColor:\n \"rgba(255, 255, 255, 0.1)\",\n },\n }}\n >\n <ToolbarButton aria-label=\"Clear\">\n <ClearIcon fontSize=\"small\" />\n </ToolbarButton>\n </Box>\n </Box>\n }\n />\n )}\n </Box>\n </Box>\n )}\n />\n </Box>\n </Box>\n </Toolbar>\n )\n }\n\n const ToolbarComponent = CustomToolbar || DefaultToolbar\n\n return (\n <Box\n ref={containerRef}\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n // Apply scrollbar styling like in the theme\n \"& *\": {\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n },\n \"&:hover *\": {\n scrollbarWidth: \"thin\",\n scrollbarColor: `${theme.palette.divider} transparent`,\n \"&::-webkit-scrollbar\": {\n display: \"block\",\n width: \"8px\",\n height: \"8px\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n background: theme.palette.divider,\n borderRadius: \"4px\",\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n background: theme.palette.action.hover,\n },\n },\n ...sx,\n }}\n >\n <DataGrid\n apiRef={apiRef}\n rows={rows}\n columns={columns}\n onRowClick={handleRowClick}\n disableColumnMenu={false}\n disableRowSelectionOnClick={true}\n disableMultipleRowSelection={true}\n hideFooterSelectedRowCount={true}\n filterMode=\"client\"\n sortingOrder={[\"desc\", \"asc\"]}\n hideFooter={false}\n showToolbar={true}\n slots={{\n toolbar: ToolbarComponent,\n }}\n initialState={{\n sorting: {\n sortModel: [],\n },\n filter: {\n filterModel: {\n items: [],\n },\n },\n ...dataGridProps?.initialState,\n }}\n {...dataGridProps}\n // Ensure autosize properties are always enabled and not overridden by dataGridProps\n autosizeOnMount={true}\n autosizeOptions={{\n // Merge any custom autosize options first\n ...(dataGridProps?.autosizeOptions || {}),\n // Force these key properties to always be true to maintain autosize behavior\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n // Auto-size all columns by default (can be overridden by dataGridProps)\n columns:\n dataGridProps?.autosizeOptions?.columns ||\n columns.map((col) => col.field),\n }}\n sx={{\n border: \"none\",\n\n width: \"100%\",\n // Remove any MUI overlays and elevation effects\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& .MuiDataGrid-overlay\": {},\n \"& .MuiDataGrid-main\": {\n border: \"none\",\n\n // Remove any surface or paper overlays\n \"& .MuiPaper-root\": {},\n },\n \"& .MuiDataGrid-container--top [role=row]\": {},\n \"& .MuiDataGrid-topContainer\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-columnHeaders\": {\n border: \"none\",\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-row\": {\n cursor: onRowClick ? \"pointer\" : \"default\",\n border: \"none\",\n margin: \"1px 0\",\n position: \"relative\",\n // Disable all default MUI hover effects\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"action.hover\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n },\n // Disable MUI's built-in selection styling completely\n \"&.Mui-selected\": {\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n // Highlight selected row with a distinct color using data attribute\n ...(selectedRowId !== null && {\n [`&[data-id=\"${selectedRowId}\"]`]: {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.08) !important\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n \"&:hover::before\": {\n backgroundColor: \"rgba(255, 255, 255, 0.12) !important\",\n },\n },\n }),\n },\n \"& .MuiDataGrid-cell--textLeft\": {\n paddingLeft: \"40px\",\n },\n \"& .MuiDataGrid-cell\": {\n border: \"none\",\n position: \"relative\",\n zIndex: 1,\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:focus-within\": {\n outline: \"none\",\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n \"& .MuiDataGrid-columnHeader\": {\n border: \"none\",\n paddingLeft: \"40px\",\n paddingRight: \"40px\",\n\n \"& .MuiDataGrid-columnHeaderTitle\": {\n color: \"rgba(255, 255, 255, 0.6)\",\n },\n },\n \"& .MuiDataGrid-toolbarContainer\": {\n padding: \"8px\",\n border: \"none !important\",\n borderBottom: \"none !important\",\n\n \"& .MuiBox-root\": {},\n \"& .MuiFormControl-root\": {},\n \"& .MuiInputBase-root\": {},\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& *\": {\n borderBottom: \"none !important\",\n },\n },\n \"& .MuiDataGrid-toolbar\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-toolbarFilterList\": {\n border: \"none\",\n },\n \"& .MuiDataGrid-withBorderColor\": {\n borderColor: \"transparent !important\",\n },\n \"& .MuiDataGrid-columnSeparator\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-footerContainer\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-filler\": {\n border: \"none !important\",\n borderTop: \"none !important\",\n borderBottom: \"none !important\",\n borderLeft: \"none !important\",\n borderRight: \"none !important\",\n\n \"--rowBorderColor\": \"none !important\",\n },\n // Remove any remaining MUI background overlays\n \"& .MuiBackdrop-root\": {},\n \"& .MuiModal-backdrop\": {},\n ...dataGridProps?.sx,\n }}\n />\n </Box>\n )\n },\n ),\n)\n\nWandelbotsDataGrid.displayName = \"WandelbotsDataGrid\"\n\nexport default WandelbotsDataGrid\n"],"names":["WandelbotsDataGrid","externalizeComponent","observer","data","columns","getRowData","onRowClick","selectedItem","getItemId","title","showCount","searchPlaceholder","dataGridProps","CustomToolbar","selectFirstByDefault","sx","theme","useTheme","apiRef","useGridApiRef","containerRef","useRef","internalSelectedItem","setInternalSelectedItem","useState","rows","useMemo","useEffect","col","resizeObserver","effectiveSelectedItem","firstItem","handleRowClick","params","item","selectedRowId","DefaultToolbar","Toolbar","jsxs","Box","Typography","jsx","FilterPanelTrigger","ToolbarButton","FilterListIcon","Divider","QuickFilter","props","state","QuickFilterTrigger","SearchIcon","QuickFilterControl","QuickFilterClear","ClearIcon","ToolbarComponent","DataGrid","_a"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../src/components/DataGrid.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,mBAAmB,CAAA;AAGnC,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,aAAa,EAQnB,MAAM,kBAAkB,CAAA;AAKzB,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAA;IAET;;OAEG;IACH,OAAO,EAAE,UAAU,EAAE,CAAA;IAErB;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAE1E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IAErD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAA;IAExC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAEtC;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAEnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,eAAO,MAAM,kBAAkB,IAE1B,CAAC,oKAcC,uBAAuB,CAAC,CAAC,CAAC;;CAmiBhC,CAAA;AAID,eAAe,kBAAkB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataGrid.js","sources":["../../src/components/DataGrid.tsx"],"sourcesContent":["import ClearIcon from \"@mui/icons-material/Clear\"\nimport FilterListIcon from \"@mui/icons-material/FilterList\"\nimport SearchIcon from \"@mui/icons-material/Search\"\nimport { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Divider from \"@mui/material/Divider\"\nimport Typography from \"@mui/material/Typography\"\nimport {\n DataGrid,\n type DataGridProps,\n FilterPanelTrigger,\n type GridColDef,\n type GridRowParams,\n QuickFilter,\n QuickFilterClear,\n QuickFilterControl,\n QuickFilterTrigger,\n Toolbar,\n ToolbarButton,\n useGridApiRef,\n} from \"@mui/x-data-grid\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport interface WandelbotsDataGridProps<T = Record<string, unknown>> {\n /**\n * Array of data items to display in the grid\n */\n data: T[]\n\n /**\n * Column definitions for the DataGrid\n */\n columns: GridColDef[]\n\n /**\n * Function to transform data items into DataGrid rows\n * Should return an object with an 'id' field and other fields matching column definitions\n */\n getRowData: (item: T) => Record<string, unknown> & { id: string | number }\n\n /**\n * Callback when a row is clicked\n */\n onRowClick?: (item: T, params: GridRowParams) => void\n\n /**\n * Currently selected item (for highlighting)\n */\n selectedItem?: T | null\n\n /**\n * Function to get the ID of an item (used for selection highlighting)\n */\n getItemId?: (item: T) => string | number\n\n /**\n * Title displayed in the toolbar\n */\n title?: string\n\n /**\n * Show item count in title\n * @default true\n */\n showCount?: boolean\n\n /**\n * Placeholder text for the search input\n * @default \"Search programs\"\n */\n searchPlaceholder?: string\n\n /**\n * Additional DataGrid props to pass through\n */\n dataGridProps?: Partial<DataGridProps>\n\n /**\n * Custom toolbar component to replace the default one\n */\n CustomToolbar?: React.ComponentType\n\n /**\n * Select the first item by default\n * @default false\n */\n selectFirstByDefault?: boolean\n\n /**\n * Custom sx styles for the root container\n */\n sx?: React.ComponentProps<typeof Box>[\"sx\"]\n}\n\nexport const WandelbotsDataGrid = externalizeComponent(\n observer(\n <T,>({\n data,\n columns,\n getRowData,\n onRowClick,\n selectedItem,\n getItemId,\n title,\n showCount = true,\n searchPlaceholder = \"Search programs\",\n dataGridProps,\n CustomToolbar,\n selectFirstByDefault = false,\n sx,\n }: WandelbotsDataGridProps<T>) => {\n const theme = useTheme()\n const apiRef = useGridApiRef()\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Internal state for selection when not controlled\n const [internalSelectedItem, setInternalSelectedItem] =\n useState<T | null>(null)\n\n // Prepare rows for the DataGrid\n const rows = useMemo(() => data.map(getRowData), [data, getRowData])\n\n // Auto-resize columns when data changes\n useEffect(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, [rows, columns, apiRef])\n\n // Auto-resize columns when the DataGrid container is resized\n useEffect(() => {\n if (!containerRef.current || !apiRef.current) return\n\n const resizeObserver = new ResizeObserver(() => {\n // Use a small timeout to ensure the DataGrid has processed the size change\n setTimeout(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, 100)\n })\n\n resizeObserver.observe(containerRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [apiRef, rows.length, columns])\n\n // Handle default selection - only use if no selectedItem is explicitly provided\n const effectiveSelectedItem = useMemo(() => {\n // If selectedItem is explicitly provided, use it (including null)\n if (selectedItem !== undefined) {\n return selectedItem\n }\n // If we have an internal selection, use it\n if (internalSelectedItem !== null) {\n return internalSelectedItem\n }\n // Otherwise, use first item if selectFirstByDefault is true\n if (selectFirstByDefault && data.length > 0) {\n const firstItem = data[0]\n // Set internal state to first item on initial load\n setInternalSelectedItem(firstItem)\n return firstItem\n }\n return null\n }, [selectFirstByDefault, data, selectedItem, internalSelectedItem])\n\n // Handle row click\n const handleRowClick = (params: GridRowParams) => {\n const item = data.find((item) => {\n const rowData = getRowData(item)\n return rowData.id === params.id\n })\n\n if (item) {\n // Update internal selection state if not controlled by props\n if (selectedItem === undefined) {\n setInternalSelectedItem(item)\n }\n\n // Call the user's onRowClick callback\n if (onRowClick) {\n onRowClick(item, params)\n }\n }\n }\n\n // Get selected row ID for highlighting\n const selectedRowId = useMemo(() => {\n if (!effectiveSelectedItem || !getItemId) return null\n return getItemId(effectiveSelectedItem)\n }, [effectiveSelectedItem, getItemId])\n\n // Default toolbar with filter and quick filter\n function DefaultToolbar() {\n return (\n <Toolbar>\n <Box\n sx={{\n display: \"flex\",\n width: \"100%\",\n gap: 1,\n p: 0.5,\n alignItems: \"center\",\n }}\n >\n {title && (\n <Typography\n variant=\"h6\"\n sx={{\n fontWeight: 500,\n color: \"white\",\n }}\n >\n {title}\n {showCount && ` (${data.length})`}\n </Typography>\n )}\n <Box\n sx={{\n ml: \"auto\",\n display: \"flex\",\n gap: 0.5,\n alignItems: \"center\",\n pr: 1,\n }}\n >\n <FilterPanelTrigger\n render={\n <ToolbarButton aria-label=\"Show filters\">\n <FilterListIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{\n height: \"24px\",\n alignSelf: \"center\",\n }}\n />\n <QuickFilter\n render={(props, state) => (\n <Box\n {...props}\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n }}\n >\n {!state.expanded && (\n <QuickFilterTrigger\n render={\n <ToolbarButton aria-label=\"Search\">\n <SearchIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n )}\n <Box\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n transition: \"all 0.3s ease-in-out\",\n width: state.expanded ? \"200px\" : \"0px\",\n position: \"relative\",\n }}\n >\n <Box\n sx={{\n flex: 1,\n position: \"relative\",\n \"& .MuiInputBase-root\": {\n height: \"32px\",\n borderRadius: \"16px\",\n backgroundColor: \"#171927\",\n paddingLeft: \"40px\",\n paddingRight:\n state.expanded && state.value !== \"\"\n ? \"40px\"\n : \"12px\",\n color: \"white\",\n fontSize: \"14px\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&:hover\": {\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&:focus-within\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&.Mui-focused\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"& .MuiInputBase-input\": {\n padding: \"8px 0\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&:focus\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n border: \"none !important\",\n },\n \"&::placeholder\": {\n color: \"rgba(255, 255, 255, 0.3)\",\n opacity: 1,\n },\n },\n \"& fieldset\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n },\n }}\n >\n {state.expanded && (\n <SearchIcon\n fontSize=\"small\"\n sx={{\n position: \"absolute\",\n left: \"12px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: \"rgba(255, 255, 255, 0.6)\",\n zIndex: 1,\n pointerEvents: \"none\",\n }}\n />\n )}\n <QuickFilterControl placeholder={searchPlaceholder} />\n </Box>\n {state.expanded && state.value !== \"\" && (\n <QuickFilterClear\n render={\n <Box\n sx={{\n position: \"absolute\",\n right: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n zIndex: 1,\n }}\n >\n <Box\n sx={{\n minWidth: \"24px\",\n width: \"24px\",\n height: \"24px\",\n padding: 0,\n color: \"rgba(255, 255, 255, 0.6)\",\n \"&:hover\": {\n backgroundColor:\n \"rgba(255, 255, 255, 0.1)\",\n },\n }}\n >\n <ToolbarButton aria-label=\"Clear\">\n <ClearIcon fontSize=\"small\" />\n </ToolbarButton>\n </Box>\n </Box>\n }\n />\n )}\n </Box>\n </Box>\n )}\n />\n </Box>\n </Box>\n </Toolbar>\n )\n }\n\n const ToolbarComponent = CustomToolbar || DefaultToolbar\n\n return (\n <Box\n ref={containerRef}\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n // Apply scrollbar styling like in the theme\n \"& *\": {\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n },\n \"&:hover *\": {\n scrollbarWidth: \"thin\",\n scrollbarColor: `${theme.palette.divider} transparent`,\n \"&::-webkit-scrollbar\": {\n display: \"block\",\n width: \"8px\",\n height: \"8px\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n background: theme.palette.divider,\n borderRadius: \"4px\",\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n background: theme.palette.action.hover,\n },\n },\n ...sx,\n }}\n >\n <DataGrid\n apiRef={apiRef}\n rows={rows}\n columns={columns}\n onRowClick={handleRowClick}\n disableColumnMenu={false}\n disableRowSelectionOnClick={true}\n disableMultipleRowSelection={true}\n hideFooterSelectedRowCount={true}\n filterMode=\"client\"\n sortingOrder={[\"desc\", \"asc\"]}\n hideFooter={false}\n showToolbar={true}\n slots={{\n toolbar: ToolbarComponent,\n }}\n initialState={{\n sorting: {\n sortModel: [],\n },\n filter: {\n filterModel: {\n items: [],\n },\n },\n ...dataGridProps?.initialState,\n }}\n {...dataGridProps}\n // Ensure autosize properties are always enabled and not overridden by dataGridProps\n autosizeOnMount={true}\n autosizeOptions={{\n // Merge any custom autosize options first\n ...(dataGridProps?.autosizeOptions || {}),\n // Force these key properties to always be true to maintain autosize behavior\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n // Auto-size all columns by default (can be overridden by dataGridProps)\n columns:\n dataGridProps?.autosizeOptions?.columns ||\n columns.map((col) => col.field),\n }}\n sx={{\n border: \"none\",\n\n width: \"100%\",\n // Remove any MUI overlays and elevation effects\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& .MuiDataGrid-overlay\": {},\n \"& .MuiDataGrid-main\": {\n border: \"none\",\n\n // Remove any surface or paper overlays\n \"& .MuiPaper-root\": {},\n },\n \"& .MuiDataGrid-container--top [role=row]\": {},\n \"& .MuiDataGrid-topContainer\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-columnHeaders\": {\n border: \"none\",\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-row\": {\n cursor: onRowClick ? \"pointer\" : \"default\",\n border: \"none\",\n margin: \"1px 0\",\n position: \"relative\",\n // Disable all default MUI hover effects\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"action.hover\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n },\n // Disable MUI's built-in selection styling completely\n \"&.Mui-selected\": {\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n // Highlight selected row with a distinct color using data attribute\n ...(selectedRowId !== null && {\n [`&[data-id=\"${selectedRowId}\"]`]: {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.08) !important\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n \"&:hover::before\": {\n backgroundColor: \"rgba(255, 255, 255, 0.12) !important\",\n },\n },\n }),\n },\n \"& .MuiDataGrid-cell--textLeft\": {\n paddingLeft: \"40px\",\n },\n \"& .MuiDataGrid-cell\": {\n border: \"none\",\n position: \"relative\",\n zIndex: 1,\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:focus-within\": {\n outline: \"none\",\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n \"& .MuiDataGrid-columnHeader\": {\n border: \"none\",\n paddingLeft: \"40px\",\n paddingRight: \"40px\",\n\n \"& .MuiDataGrid-columnHeaderTitle\": {\n color: \"rgba(255, 255, 255, 0.6)\",\n },\n },\n \"& .MuiDataGrid-toolbarContainer\": {\n padding: \"8px\",\n border: \"none !important\",\n borderBottom: \"none !important\",\n\n \"& .MuiBox-root\": {},\n \"& .MuiFormControl-root\": {},\n \"& .MuiInputBase-root\": {},\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& *\": {\n borderBottom: \"none !important\",\n },\n },\n \"& .MuiDataGrid-toolbar\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-toolbarFilterList\": {\n border: \"none\",\n },\n \"& .MuiDataGrid-withBorderColor\": {\n borderColor: \"transparent !important\",\n },\n \"& .MuiDataGrid-columnSeparator\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-footerContainer\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-filler\": {\n border: \"none !important\",\n borderTop: \"none !important\",\n borderBottom: \"none !important\",\n borderLeft: \"none !important\",\n borderRight: \"none !important\",\n\n \"--rowBorderColor\": \"none !important\",\n },\n // Remove any remaining MUI background overlays\n \"& .MuiBackdrop-root\": {},\n \"& .MuiModal-backdrop\": {},\n ...dataGridProps?.sx,\n }}\n />\n </Box>\n )\n },\n ),\n)\n\nWandelbotsDataGrid.displayName = \"WandelbotsDataGrid\"\n\nexport default WandelbotsDataGrid\n"],"names":["WandelbotsDataGrid","externalizeComponent","observer","data","columns","getRowData","onRowClick","selectedItem","getItemId","title","showCount","searchPlaceholder","dataGridProps","CustomToolbar","selectFirstByDefault","sx","theme","useTheme","apiRef","useGridApiRef","containerRef","useRef","internalSelectedItem","setInternalSelectedItem","useState","rows","useMemo","useEffect","col","resizeObserver","effectiveSelectedItem","firstItem","handleRowClick","params","item","selectedRowId","DefaultToolbar","Toolbar","jsxs","Box","Typography","jsx","FilterPanelTrigger","ToolbarButton","FilterListIcon","Divider","QuickFilter","props","state","QuickFilterTrigger","SearchIcon","QuickFilterControl","QuickFilterClear","ClearIcon","ToolbarComponent","DataGrid","_a"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover.cjs","sources":["../../src/components/LoadingCover.tsx"],"sourcesContent":["import CircularProgress from \"@mui/material/CircularProgress\"\nimport Stack from \"@mui/material/Stack\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { capitalize } from \"@mui/material/utils\"\nimport { lowerFirst } from \"lodash-es\"\nimport { useEffect, useState } from \"react\"\nimport { makeErrorMessage } from \"./utils/errorHandling\"\n\nexport const LoadingCover = (props: {\n message?: string\n error?: unknown\n softTimeout?: number\n}) => {\n const softTimeout = props.softTimeout || 3000\n\n const [showSlowLoadingMessage, setShowSlowLoadingMessage] = useState(false)\n const theme = useTheme()\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setShowSlowLoadingMessage(true)\n }, softTimeout)\n\n return () => clearTimeout(timeout)\n })\n\n return (\n <Stack\n width=\"100%\"\n height=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{ color: theme.palette.text.primary }}\n >\n {props.error ? (\n <LoadingErrorMessage\n loadingMessage={props.message}\n error={props.error}\n />\n ) : (\n <>\n <CircularProgress sx={{ marginBottom: \"24px\" }} />\n {!!props.message && <div>{props.message}</div>}\n <Stack\n sx={{\n visibility: showSlowLoadingMessage ? \"visible\" : \"hidden\",\n marginTop: \"1rem\",\n color: theme.palette.text.secondary,\n }}\n >\n {\"This is taking longer than expected...\"}\n </Stack>\n </>\n )}\n </Stack>\n )\n}\n\nexport const LoadingErrorMessage = (props: {\n loadingMessage?: string\n error: unknown\n}) => {\n const errorMessage = makeErrorMessage(props.error)\n const stack = props.error instanceof Error ? props.error.stack : null\n const theme = useTheme()\n\n return (\n <Stack\n sx={{\n maxHeight: \"100%\",\n maxWidth: \"min(100%, 800px)\",\n padding: 2,\n overflow: \"auto\",\n color: theme.palette.error.main,\n \"& pre\": {\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n paddingBottom: \"3rem\",\n },\n }}\n >\n {(props.loadingMessage\n ? `Error while ${lowerFirst(capitalize(props.loadingMessage))} - `\n : \"\") + errorMessage}\n <br />\n {stack && <pre>{stack}</pre>}\n </Stack>\n )\n}\n\nexport default LoadingCover\n"],"names":["LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","makeErrorMessage","stack","lowerFirst","capitalize"],"mappings":"kXAQaA,EAAgBC,GAIvB,CACJ,MAAMC,EAAcD,EAAM,aAAe,IAEnC,CAACE,EAAwBC,CAAyB,EAAIC,EAAAA,SAAS,EAAK,EACpEC,EAAQC,EAAAA,SAAA,EAEdC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAU,WAAW,IAAM,CAC/BL,EAA0B,EAAI,CAChC,EAAGF,CAAW,EAEd,MAAO,IAAM,aAAaO,CAAO,CACnC,CAAC,EAGCC,EAAAA,IAACC,EAAA,CACC,MAAM,OACN,OAAO,OACP,WAAW,SACX,eAAe,SACf,GAAI,CAAE,MAAOL,EAAM,QAAQ,KAAK,OAAA,EAE/B,WAAM,MACLI,EAAAA,IAACE,EAAA,CACC,eAAgBX,EAAM,QACtB,MAAOA,EAAM,KAAA,CAAA,EAGfY,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAJ,EAAAA,IAACK,EAAA,CAAiB,GAAI,CAAE,aAAc,QAAU,EAC/C,CAAC,CAACd,EAAM,SAAWS,EAAAA,IAAC,MAAA,CAAK,WAAM,QAAQ,EACxCA,EAAAA,IAACC,EAAA,CACC,GAAI,CACF,WAAYR,EAAyB,UAAY,SACjD,UAAW,OACX,MAAOG,EAAM,QAAQ,KAAK,SAAA,EAG3B,SAAA,wCAAA,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAIR,EAEaM,EAAuBX,GAG9B,CACJ,MAAMe,EAAeC,EAAAA,iBAAiBhB,EAAM,KAAK,EAC3CiB,EAAQjB,EAAM,iBAAiB,MAAQA,EAAM,MAAM,MAAQ,KAC3DK,EAAQC,EAAAA,SAAA,EAEd,OACEM,EAAAA,KAACF,EAAA,CACC,GAAI,CACF,UAAW,OACX,SAAU,mBACV,QAAS,EACT,SAAU,OACV,MAAOL,EAAM,QAAQ,MAAM,KAC3B,QAAS,CACP,WAAY,WACZ,UAAW,aACX,cAAe,MAAA,CACjB,EAGA,SAAA,EAAAL,EAAM,eACJ,eAAekB,EAAAA,WAAWC,EAAAA,WAAWnB,EAAM,cAAc,CAAC,CAAC,MAC3D,IAAMe,QACT,KAAA,EAAG,EACHE,GAASR,EAAAA,IAAC,MAAA,CAAK,SAAAQ,CAAA,CAAM,CAAA,CAAA,CAAA,CAG5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover.d.ts","sourceRoot":"","sources":["../../src/components/LoadingCover.tsx"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,GAAI,OAAO;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,4CA4CA,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACzC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;CACf,4CA2BA,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingCover.js","sources":["../../src/components/LoadingCover.tsx"],"sourcesContent":["import CircularProgress from \"@mui/material/CircularProgress\"\nimport Stack from \"@mui/material/Stack\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { capitalize } from \"@mui/material/utils\"\nimport { lowerFirst } from \"lodash-es\"\nimport { useEffect, useState } from \"react\"\nimport { makeErrorMessage } from \"./utils/errorHandling\"\n\nexport const LoadingCover = (props: {\n message?: string\n error?: unknown\n softTimeout?: number\n}) => {\n const softTimeout = props.softTimeout || 3000\n\n const [showSlowLoadingMessage, setShowSlowLoadingMessage] = useState(false)\n const theme = useTheme()\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setShowSlowLoadingMessage(true)\n }, softTimeout)\n\n return () => clearTimeout(timeout)\n })\n\n return (\n <Stack\n width=\"100%\"\n height=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n sx={{ color: theme.palette.text.primary }}\n >\n {props.error ? (\n <LoadingErrorMessage\n loadingMessage={props.message}\n error={props.error}\n />\n ) : (\n <>\n <CircularProgress sx={{ marginBottom: \"24px\" }} />\n {!!props.message && <div>{props.message}</div>}\n <Stack\n sx={{\n visibility: showSlowLoadingMessage ? \"visible\" : \"hidden\",\n marginTop: \"1rem\",\n color: theme.palette.text.secondary,\n }}\n >\n {\"This is taking longer than expected...\"}\n </Stack>\n </>\n )}\n </Stack>\n )\n}\n\nexport const LoadingErrorMessage = (props: {\n loadingMessage?: string\n error: unknown\n}) => {\n const errorMessage = makeErrorMessage(props.error)\n const stack = props.error instanceof Error ? props.error.stack : null\n const theme = useTheme()\n\n return (\n <Stack\n sx={{\n maxHeight: \"100%\",\n maxWidth: \"min(100%, 800px)\",\n padding: 2,\n overflow: \"auto\",\n color: theme.palette.error.main,\n \"& pre\": {\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n paddingBottom: \"3rem\",\n },\n }}\n >\n {(props.loadingMessage\n ? `Error while ${lowerFirst(capitalize(props.loadingMessage))} - `\n : \"\") + errorMessage}\n <br />\n {stack && <pre>{stack}</pre>}\n </Stack>\n )\n}\n\nexport default LoadingCover\n"],"names":["LoadingCover","props","softTimeout","showSlowLoadingMessage","setShowSlowLoadingMessage","useState","theme","useTheme","useEffect","timeout","jsx","Stack","LoadingErrorMessage","jsxs","Fragment","CircularProgress","errorMessage","makeErrorMessage","stack","lowerFirst","capitalize"],"mappings":";;;;;;;;AAQO,MAAMA,IAAe,CAACC,MAIvB;AACJ,QAAMC,IAAcD,EAAM,eAAe,KAEnC,CAACE,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpEC,IAAQC,EAAA;AAEd,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAU,WAAW,MAAM;AAC/B,MAAAL,EAA0B,EAAI;AAAA,IAChC,GAAGF,CAAW;AAEd,WAAO,MAAM,aAAaO,CAAO;AAAA,EACnC,CAAC,GAGC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,IAAI,EAAE,OAAOL,EAAM,QAAQ,KAAK,QAAA;AAAA,MAE/B,YAAM,QACL,gBAAAI;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,gBAAgBX,EAAM;AAAA,UACtB,OAAOA,EAAM;AAAA,QAAA;AAAA,MAAA,IAGf,gBAAAY,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAJ,EAACK,GAAA,EAAiB,IAAI,EAAE,cAAc,UAAU;AAAA,QAC/C,CAAC,CAACd,EAAM,WAAW,gBAAAS,EAAC,OAAA,EAAK,YAAM,SAAQ;AAAA,QACxC,gBAAAA;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,YAAYR,IAAyB,YAAY;AAAA,cACjD,WAAW;AAAA,cACX,OAAOG,EAAM,QAAQ,KAAK;AAAA,YAAA;AAAA,YAG3B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR,GAEaM,IAAsB,CAACX,MAG9B;AACJ,QAAMe,IAAeC,EAAiBhB,EAAM,KAAK,GAC3CiB,IAAQjB,EAAM,iBAAiB,QAAQA,EAAM,MAAM,QAAQ,MAC3DK,IAAQC,EAAA;AAEd,SACE,gBAAAM;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,WAAW;AAAA,QACX,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAOL,EAAM,QAAQ,MAAM;AAAA,QAC3B,SAAS;AAAA,UACP,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MAGA,UAAA;AAAA,SAAAL,EAAM,iBACJ,eAAekB,EAAWC,EAAWnB,EAAM,cAAc,CAAC,CAAC,QAC3D,MAAMe;AAAA,0BACT,MAAA,EAAG;AAAA,QACHE,KAAS,gBAAAR,EAAC,OAAA,EAAK,UAAAQ,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG5B;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogPanel.cjs","sources":["../../src/components/LogPanel.tsx"],"sourcesContent":["import type { SxProps } from \"@mui/material/styles\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useMemo, useRef } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { LogStore } from \"./LogStore\"\nimport { LogViewer } from \"./LogViewer\"\n\nexport type LogPanelProps = {\n /** Log store instance to use, or create one automatically if not provided */\n store?: LogStore\n /** Height of the component */\n height?: string | number\n /** Additional styles */\n sx?: SxProps\n /** Ref to the log store for external access */\n onStoreReady?: (store: LogStore) => void\n}\n\n/**\n * A complete log panel component with built-in state management.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const [logStore, setLogStore] = useState<LogStore>()\n *\n * return (\n * <LogPanel\n * height={400}\n * onStoreReady={setLogStore}\n * />\n * )\n * }\n *\n * // Then use the store to add messages\n * logStore?.addInfo(\"Operation completed successfully\")\n * logStore?.addError(\"Something went wrong\")\n * logStore?.addWarning(\"Warning message\")\n * ```\n */\nexport const LogPanel = externalizeComponent(\n observer((props: LogPanelProps) => {\n const { store: externalStore, onStoreReady, ...logViewerProps } = props\n const onStoreReadyRef = useRef(onStoreReady)\n\n // Update ref when callback changes\n useEffect(() => {\n onStoreReadyRef.current = onStoreReady\n }, [onStoreReady])\n\n const store = useMemo(() => {\n const logStore = externalStore || new LogStore()\n onStoreReadyRef.current?.(logStore)\n return logStore\n }, [externalStore])\n\n const handleClear = () => {\n store.clearMessages()\n }\n\n return (\n <LogViewer\n {...logViewerProps}\n messages={store.messages}\n onClear={handleClear}\n />\n )\n }),\n)\n\nexport default LogPanel\n"],"names":["LogPanel","externalizeComponent","observer","props","externalStore","onStoreReady","logViewerProps","onStoreReadyRef","useRef","useEffect","store","useMemo","logStore","LogStore","_a","handleClear","jsx","LogViewer"],"mappings":"mSAwCaA,EAAWC,EAAAA,qBACtBC,EAAAA,SAAUC,GAAyB,CACjC,KAAM,CAAE,MAAOC,EAAe,aAAAC,EAAc,GAAGC,GAAmBH,EAC5DI,EAAkBC,EAAAA,OAAOH,CAAY,EAG3CI,EAAAA,UAAU,IAAM,CACdF,EAAgB,QAAUF,CAC5B,EAAG,CAACA,CAAY,CAAC,EAEjB,MAAMK,EAAQC,EAAAA,QAAQ,IAAM,OAC1B,MAAMC,EAAWR,GAAiB,IAAIS,WACtC,OAAAC,EAAAP,EAAgB,UAAhB,MAAAO,EAAA,KAAAP,EAA0BK,GACnBA,CACT,EAAG,CAACR,CAAa,CAAC,EAEZW,EAAc,IAAM,CACxBL,EAAM,cAAA,CACR,EAEA,OACEM,EAAAA,IAACC,EAAAA,UAAA,CACE,GAAGX,EACJ,SAAUI,EAAM,SAChB,QAASK,CAAA,CAAA,CAGf,CAAC,CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogPanel.d.ts","sourceRoot":"","sources":["../../src/components/LogPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAInD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,MAAM,aAAa,GAAG;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,wBAAwB;IACxB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CACzC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,WACF,aAAa;;CA2B/B,CAAA;AAED,eAAe,QAAQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogPanel.js","sources":["../../src/components/LogPanel.tsx"],"sourcesContent":["import type { SxProps } from \"@mui/material/styles\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useMemo, useRef } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { LogStore } from \"./LogStore\"\nimport { LogViewer } from \"./LogViewer\"\n\nexport type LogPanelProps = {\n /** Log store instance to use, or create one automatically if not provided */\n store?: LogStore\n /** Height of the component */\n height?: string | number\n /** Additional styles */\n sx?: SxProps\n /** Ref to the log store for external access */\n onStoreReady?: (store: LogStore) => void\n}\n\n/**\n * A complete log panel component with built-in state management.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const [logStore, setLogStore] = useState<LogStore>()\n *\n * return (\n * <LogPanel\n * height={400}\n * onStoreReady={setLogStore}\n * />\n * )\n * }\n *\n * // Then use the store to add messages\n * logStore?.addInfo(\"Operation completed successfully\")\n * logStore?.addError(\"Something went wrong\")\n * logStore?.addWarning(\"Warning message\")\n * ```\n */\nexport const LogPanel = externalizeComponent(\n observer((props: LogPanelProps) => {\n const { store: externalStore, onStoreReady, ...logViewerProps } = props\n const onStoreReadyRef = useRef(onStoreReady)\n\n // Update ref when callback changes\n useEffect(() => {\n onStoreReadyRef.current = onStoreReady\n }, [onStoreReady])\n\n const store = useMemo(() => {\n const logStore = externalStore || new LogStore()\n onStoreReadyRef.current?.(logStore)\n return logStore\n }, [externalStore])\n\n const handleClear = () => {\n store.clearMessages()\n }\n\n return (\n <LogViewer\n {...logViewerProps}\n messages={store.messages}\n onClear={handleClear}\n />\n )\n }),\n)\n\nexport default LogPanel\n"],"names":["LogPanel","externalizeComponent","observer","props","externalStore","onStoreReady","logViewerProps","onStoreReadyRef","useRef","useEffect","store","useMemo","logStore","LogStore","_a","handleClear","jsx","LogViewer"],"mappings":";;;;;;AAwCO,MAAMA,IAAWC;AAAA,EACtBC,EAAS,CAACC,MAAyB;AACjC,UAAM,EAAE,OAAOC,GAAe,cAAAC,GAAc,GAAGC,MAAmBH,GAC5DI,IAAkBC,EAAOH,CAAY;AAG3C,IAAAI,EAAU,MAAM;AACd,MAAAF,EAAgB,UAAUF;AAAA,IAC5B,GAAG,CAACA,CAAY,CAAC;AAEjB,UAAMK,IAAQC,EAAQ,MAAM;;AAC1B,YAAMC,IAAWR,KAAiB,IAAIS,EAAA;AACtC,cAAAC,IAAAP,EAAgB,YAAhB,QAAAO,EAAA,KAAAP,GAA0BK,IACnBA;AAAA,IACT,GAAG,CAACR,CAAa,CAAC,GAEZW,IAAc,MAAM;AACxB,MAAAL,EAAM,cAAA;AAAA,IACR;AAEA,WACE,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGX;AAAA,QACJ,UAAUI,EAAM;AAAA,QAChB,SAASK;AAAA,MAAA;AAAA,IAAA;AAAA,EAGf,CAAC;AACH;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogStore.cjs","sources":["../../src/components/LogStore.ts"],"sourcesContent":["import { action, makeObservable, observable } from \"mobx\"\nimport type { LogLevel, LogMessage } from \"./LogViewer\"\n\nexport class LogStore {\n messages: LogMessage[] = []\n\n constructor() {\n makeObservable(this, {\n messages: observable,\n addMessage: action,\n clearMessages: action,\n })\n }\n\n addMessage = (message: string, level: LogLevel = \"info\") => {\n const logMessage: LogMessage = {\n id: Math.random().toString(36).substring(2, 11),\n timestamp: new Date(),\n message,\n level,\n }\n this.messages.push(logMessage)\n }\n\n clearMessages = () => {\n this.messages = []\n }\n\n addInfo = (message: string) => {\n this.addMessage(message, \"info\")\n }\n\n addWarning = (message: string) => {\n this.addMessage(message, \"warning\")\n }\n\n addError = (message: string) => {\n this.addMessage(message, \"error\")\n }\n\n addDebug = (message: string) => {\n this.addMessage(message, \"debug\")\n }\n}\n\nexport default LogStore\n"],"names":["LogStore","message","level","logMessage","makeObservable","observable","action"],"mappings":"oIAGO,MAAMA,CAAS,CAGpB,aAAc,CAFd,KAAA,SAAyB,CAAA,EAUzB,KAAA,WAAa,CAACC,EAAiBC,EAAkB,SAAW,CAC1D,MAAMC,EAAyB,CAC7B,GAAI,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,EAC9C,cAAe,KACf,QAAAF,EACA,MAAAC,CAAA,EAEF,KAAK,SAAS,KAAKC,CAAU,CAC/B,EAEA,KAAA,cAAgB,IAAM,CACpB,KAAK,SAAW,CAAA,CAClB,EAEA,KAAA,QAAWF,GAAoB,CAC7B,KAAK,WAAWA,EAAS,MAAM,CACjC,EAEA,KAAA,WAAcA,GAAoB,CAChC,KAAK,WAAWA,EAAS,SAAS,CACpC,EAEA,KAAA,SAAYA,GAAoB,CAC9B,KAAK,WAAWA,EAAS,OAAO,CAClC,EAEA,KAAA,SAAYA,GAAoB,CAC9B,KAAK,WAAWA,EAAS,OAAO,CAClC,EAnCEG,EAAAA,eAAe,KAAM,CACnB,SAAUC,EAAAA,WACV,WAAYC,EAAAA,OACZ,cAAeA,EAAAA,MAAA,CAChB,CACH,CA+BF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogStore.d.ts","sourceRoot":"","sources":["../../src/components/LogStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvD,qBAAa,QAAQ;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAK;;IAU3B,UAAU,GAAI,SAAS,MAAM,EAAE,QAAO,QAAiB,UAQtD;IAED,aAAa,aAEZ;IAED,OAAO,GAAI,SAAS,MAAM,UAEzB;IAED,UAAU,GAAI,SAAS,MAAM,UAE5B;IAED,QAAQ,GAAI,SAAS,MAAM,UAE1B;IAED,QAAQ,GAAI,SAAS,MAAM,UAE1B;CACF;AAED,eAAe,QAAQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogStore.js","sources":["../../src/components/LogStore.ts"],"sourcesContent":["import { action, makeObservable, observable } from \"mobx\"\nimport type { LogLevel, LogMessage } from \"./LogViewer\"\n\nexport class LogStore {\n messages: LogMessage[] = []\n\n constructor() {\n makeObservable(this, {\n messages: observable,\n addMessage: action,\n clearMessages: action,\n })\n }\n\n addMessage = (message: string, level: LogLevel = \"info\") => {\n const logMessage: LogMessage = {\n id: Math.random().toString(36).substring(2, 11),\n timestamp: new Date(),\n message,\n level,\n }\n this.messages.push(logMessage)\n }\n\n clearMessages = () => {\n this.messages = []\n }\n\n addInfo = (message: string) => {\n this.addMessage(message, \"info\")\n }\n\n addWarning = (message: string) => {\n this.addMessage(message, \"warning\")\n }\n\n addError = (message: string) => {\n this.addMessage(message, \"error\")\n }\n\n addDebug = (message: string) => {\n this.addMessage(message, \"debug\")\n }\n}\n\nexport default LogStore\n"],"names":["LogStore","message","level","logMessage","makeObservable","observable","action"],"mappings":";AAGO,MAAMA,EAAS;AAAA,EAGpB,cAAc;AAFd,SAAA,WAAyB,CAAA,GAUzB,KAAA,aAAa,CAACC,GAAiBC,IAAkB,WAAW;AAC1D,YAAMC,IAAyB;AAAA,QAC7B,IAAI,KAAK,SAAS,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE;AAAA,QAC9C,+BAAe,KAAA;AAAA,QACf,SAAAF;AAAA,QACA,OAAAC;AAAA,MAAA;AAEF,WAAK,SAAS,KAAKC,CAAU;AAAA,IAC/B,GAEA,KAAA,gBAAgB,MAAM;AACpB,WAAK,WAAW,CAAA;AAAA,IAClB,GAEA,KAAA,UAAU,CAACF,MAAoB;AAC7B,WAAK,WAAWA,GAAS,MAAM;AAAA,IACjC,GAEA,KAAA,aAAa,CAACA,MAAoB;AAChC,WAAK,WAAWA,GAAS,SAAS;AAAA,IACpC,GAEA,KAAA,WAAW,CAACA,MAAoB;AAC9B,WAAK,WAAWA,GAAS,OAAO;AAAA,IAClC,GAEA,KAAA,WAAW,CAACA,MAAoB;AAC9B,WAAK,WAAWA,GAAS,OAAO;AAAA,IAClC,GAnCEG,EAAe,MAAM;AAAA,MACnB,UAAUC;AAAA,MACV,YAAYC;AAAA,MACZ,eAAeA;AAAA,IAAA,CAChB;AAAA,EACH;AA+BF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogViewer.cjs","sources":["../../src/components/LogViewer.tsx"],"sourcesContent":["import ContentCopy from \"@mui/icons-material/ContentCopy\"\nimport DocumentIcon from \"@mui/icons-material/DescriptionOutlined\"\nimport ExpandLess from \"@mui/icons-material/ExpandLess\"\nimport ExpandMore from \"@mui/icons-material/ExpandMore\"\nimport type { SxProps } from \"@mui/material/styles\"\nimport { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Button from \"@mui/material/Button\"\nimport IconButton from \"@mui/material/IconButton\"\nimport Paper from \"@mui/material/Paper\"\nimport Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useRef, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport type LogLevel = \"info\" | \"error\" | \"warning\" | \"debug\"\n\nexport type LogMessage = {\n id: string\n timestamp: Date\n message: string\n level: LogLevel\n}\n\nexport type LogViewerProps = {\n /** Log messages to display */\n messages: LogMessage[]\n /** Callback when clear button is clicked */\n onClear?: () => void\n /** Height of the component */\n height?: string | number\n /** Additional styles */\n sx?: SxProps\n}\n\n/**\n * Utility function to create a log message\n */\nexport const createLogMessage = (\n message: string,\n level: LogLevel,\n id?: string,\n): LogMessage => ({\n id: id || `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`,\n timestamp: new Date(),\n message,\n level,\n})\n\n/**\n * Utility function to create a debug log message\n */\nexport const createDebugMessage = (message: string, id?: string): LogMessage =>\n createLogMessage(message, \"debug\", id)\n\n/**\n * Utility function to create an info log message\n */\nexport const createInfoMessage = (message: string, id?: string): LogMessage =>\n createLogMessage(message, \"info\", id)\n\n/**\n * Utility function to create a warning log message\n */\nexport const createWarningMessage = (\n message: string,\n id?: string,\n): LogMessage => createLogMessage(message, \"warning\", id)\n\n/**\n * Utility function to create an error log message\n */\nexport const createErrorMessage = (message: string, id?: string): LogMessage =>\n createLogMessage(message, \"error\", id)\n\n/**\n * A log viewer component that displays timestamped log messages with different levels.\n * Features a header with document icon and clear button, and scrollable message area.\n */\nexport const LogViewer = externalizeComponent(\n observer((props: LogViewerProps) => {\n const { messages = [], onClear, height = 400, sx } = props\n const theme = useTheme()\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n // Auto-scroll to bottom when new messages are added\n useEffect(() => {\n if (messages.length === 0) return\n\n const scrollContainer = scrollContainerRef.current\n if (!scrollContainer) return\n\n // Use a timeout to scroll after the DOM updates\n const timeoutId = setTimeout(() => {\n // Scroll the container to the bottom, not the entire browser\n scrollContainer.scrollTop = scrollContainer.scrollHeight\n }, 10)\n\n return () => clearTimeout(timeoutId)\n }, [messages.length])\n\n const formatTimestamp = (timestamp: Date) => {\n return timestamp.toLocaleTimeString(\"en-US\", {\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n })\n }\n\n const getMessageColor = (level: LogLevel) => {\n switch (level) {\n case \"error\":\n return theme.palette.error.main\n case \"warning\":\n return theme.palette.warning.main\n case \"info\":\n return theme.palette.info.main\n case \"debug\":\n return theme.palette.text.disabled\n default:\n return theme.palette.text.secondary\n }\n }\n\n // Component for individual log messages with expand/copy functionality\n const LogMessage = ({ message }: { message: LogMessage }) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [copyTooltip, setCopyTooltip] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const isLongMessage = message.message.length > 150\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(message.message)\n setCopyTooltip(true)\n setTimeout(() => setCopyTooltip(false), 2000)\n } catch (err) {\n console.error(\"Failed to copy message:\", err)\n }\n }\n\n const displayMessage =\n isLongMessage && !isExpanded\n ? `${message.message.substring(0, 150)}...`\n : message.message\n\n return (\n <Box\n key={message.id}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n sx={{\n display: \"flex\",\n gap: 1,\n fontFamily: \"monospace\",\n flexDirection: \"column\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n borderRadius: \"4px\",\n padding: \"2px 4px\",\n margin: \"-2px -4px\",\n }}\n >\n <Box sx={{ display: \"flex\", gap: 1 }}>\n {/* Timestamp */}\n <Typography\n component=\"span\"\n sx={{\n fontWeight: 400,\n fontSize: \"12px\",\n lineHeight: \"18px\",\n letterSpacing: \"0.4px\",\n color: theme.palette.text.disabled,\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n >\n [{formatTimestamp(message.timestamp)}]\n </Typography>\n\n {/* Message */}\n <Typography\n component=\"span\"\n sx={{\n fontWeight: 400,\n fontSize: \"12px\",\n lineHeight: \"18px\",\n letterSpacing: \"0.4px\",\n color: getMessageColor(message.level),\n wordBreak: \"break-word\",\n overflowWrap: \"anywhere\",\n hyphens: \"auto\",\n flex: 1,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {displayMessage}\n </Typography>\n\n {/* Action buttons - only visible on hover */}\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 0.5,\n opacity: isHovered ? 1 : 0,\n transition: \"opacity 0.2s ease-in-out\",\n visibility: isHovered ? \"visible\" : \"hidden\",\n }}\n >\n <IconButton\n size=\"small\"\n onClick={handleCopy}\n sx={{\n padding: \"2px\",\n color: theme.palette.text.secondary,\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n }}\n title={copyTooltip ? \"Copied!\" : \"Copy message\"}\n >\n <ContentCopy sx={{ fontSize: 12 }} />\n </IconButton>\n\n {isLongMessage && (\n <IconButton\n size=\"small\"\n onClick={() => setIsExpanded(!isExpanded)}\n sx={{\n padding: \"2px\",\n color: theme.palette.text.secondary,\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n }}\n title={isExpanded ? \"Collapse\" : \"Expand\"}\n >\n {isExpanded ? (\n <ExpandLess sx={{ fontSize: 12 }} />\n ) : (\n <ExpandMore sx={{ fontSize: 12 }} />\n )}\n </IconButton>\n )}\n </Box>\n </Box>\n </Box>\n )\n }\n\n return (\n <Paper\n sx={{\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[2] || \"#171927\",\n backgroundImage: \"none\", // Override any gradient from elevation\n height,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n ...sx,\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n <DocumentIcon\n sx={{\n fontSize: 16,\n color: theme.palette.action.active,\n opacity: 0.56,\n }}\n />\n <Typography\n sx={{\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"143%\",\n letterSpacing: \"0.17px\",\n color: theme.palette.text.primary,\n }}\n >\n Log\n </Typography>\n </Box>\n <Button\n onClick={onClear}\n variant=\"text\"\n sx={{\n fontWeight: 500,\n fontSize: \"13px\",\n lineHeight: \"22px\",\n letterSpacing: \"0.46px\",\n color: theme.palette.primary.main,\n textTransform: \"none\",\n minWidth: \"auto\",\n padding: \"4px 8px\",\n \"&:hover\": {\n backgroundColor: `${theme.palette.primary.main}14`, // 8% opacity\n },\n }}\n >\n Clear\n </Button>\n </Box>\n\n {/* Messages Container */}\n <Box\n ref={scrollContainerRef}\n sx={{\n flex: 1,\n overflow: \"auto\",\n padding: \"8px 16px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2px\",\n // Custom scrollbar styling to keep it consistently dark\n scrollbarWidth: \"thin\",\n scrollbarColor: `${theme.palette.divider} transparent`,\n \"&::-webkit-scrollbar\": {\n width: \"6px\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n backgroundColor: theme.palette.divider,\n borderRadius: \"3px\",\n \"&:hover\": {\n backgroundColor: theme.palette.divider,\n },\n },\n }}\n >\n {messages.length === 0 ? (\n <Typography\n sx={{\n color: theme.palette.text.disabled,\n fontSize: \"12px\",\n fontStyle: \"italic\",\n textAlign: \"center\",\n marginTop: 2,\n }}\n >\n No log messages\n </Typography>\n ) : (\n messages.map((message) => (\n <LogMessage key={message.id} message={message} />\n ))\n )}\n </Box>\n </Paper>\n )\n }),\n)\n\nexport default LogViewer\n"],"names":["createLogMessage","message","level","id","createDebugMessage","createInfoMessage","createWarningMessage","createErrorMessage","LogViewer","externalizeComponent","observer","props","messages","onClear","height","sx","theme","useTheme","scrollContainerRef","useRef","useEffect","scrollContainer","timeoutId","formatTimestamp","timestamp","getMessageColor","LogMessage","isExpanded","setIsExpanded","useState","copyTooltip","setCopyTooltip","isHovered","setIsHovered","isLongMessage","handleCopy","err","displayMessage","jsx","Box","jsxs","Typography","IconButton","ContentCopy","ExpandLess","ExpandMore","Paper","_a","DocumentIcon","Button"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogViewer.d.ts","sourceRoot":"","sources":["../../src/components/LogViewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAWnD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7D,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,wBAAwB;IACxB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,OAAO,QAAQ,EACf,KAAK,MAAM,KACV,UAKD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,KAAK,MAAM,KACV,UAAsD,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,UAC1B,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,SAAS,WACH,cAAc;;CA6RhC,CAAA;AAED,eAAe,SAAS,CAAA"}