@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.
- package/dist/3d.cjs +1 -2
- package/dist/3d.d.ts +0 -1
- package/dist/3d.js +0 -1
- package/dist/Setup.d.ts +0 -1
- package/dist/chunks/JoggingPanel-CQH_oXTB.js +586 -0
- package/dist/chunks/JoggingPanel-DZN2Y39k.cjs +2 -0
- package/dist/chunks/controller-type-virtual-BuJWQOvV.cjs +1 -0
- package/dist/{components/safetyBar/icons/controller-type-physical.svg.js → chunks/controller-type-virtual-CWOoMRfl.js} +10 -6
- package/dist/chunks/externalizeComponent-DOwkaDcw.cjs +2 -0
- package/dist/chunks/externalizeComponent-eiCc5DIh.js +209 -0
- package/dist/chunks/jog-plus-CAUurv4S.js +15 -0
- package/dist/chunks/jog-plus-Dy1r7-r5.cjs +1 -0
- package/dist/chunks/operation-mode-manual-Di4Z1KM1.js +20 -0
- package/dist/chunks/operation-mode-manual-eHwVILeI.cjs +1 -0
- package/dist/chunks/robot-CrNbCELh.cjs +1 -0
- package/dist/{icons/robot.svg.js → chunks/robot-D97QEl_l.js} +2 -3
- package/dist/chunks/rotation-CIOAnn9q.cjs +1 -0
- package/dist/chunks/rotation-Dm5YL3NM.js +25 -0
- package/dist/chunks/safety-state-stop-Bg0VUsM4.js +30 -0
- package/dist/chunks/safety-state-stop-CNxVYiap.cjs +1 -0
- package/dist/chunks/theming-Chx_tewl.cjs +3 -0
- package/dist/chunks/theming-Cw6qwBM7.js +600 -0
- package/dist/chunks/wbLogo-CObCmqTw.js +30 -0
- package/dist/chunks/wbLogo-G_IfZ03l.cjs +1 -0
- package/dist/components/3d-viewport/CoordinateSystemTransform.cjs +1 -0
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts +0 -1
- package/dist/components/3d-viewport/CoordinateSystemTransform.js +37 -0
- package/dist/components/3d-viewport/PresetEnvironment.cjs +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.d.ts +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.js +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.cjs +1 -2
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.js +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.cjs +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.js +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.cjs +1 -2
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.js +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.cjs +1 -2
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.js +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs +1 -2
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js +0 -1
- package/dist/components/AppHeader.cjs +1 -2
- package/dist/components/AppHeader.d.ts +0 -1
- package/dist/components/AppHeader.js +40 -34
- package/dist/components/ConsoleFilter.cjs +0 -1
- package/dist/components/ConsoleFilter.d.ts +0 -1
- package/dist/components/ConsoleFilter.js +0 -1
- package/dist/components/CopyableText.cjs +0 -1
- package/dist/components/CopyableText.d.ts +0 -1
- package/dist/components/CopyableText.js +0 -1
- package/dist/components/CycleTimer/CycleTimer.cjs +1 -0
- package/dist/components/CycleTimer/CycleTimer.d.ts +0 -1
- package/dist/components/CycleTimer/CycleTimer.js +5 -0
- package/dist/components/CycleTimer/DefaultVariant.cjs +1 -2
- package/dist/components/CycleTimer/DefaultVariant.d.ts +0 -1
- package/dist/components/CycleTimer/DefaultVariant.js +0 -1
- package/dist/components/CycleTimer/SmallVariant.cjs +0 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts +0 -1
- package/dist/components/CycleTimer/SmallVariant.js +0 -1
- package/dist/components/CycleTimer/index.cjs +1 -2
- package/dist/components/CycleTimer/index.d.ts +0 -1
- package/dist/components/CycleTimer/index.js +1 -2
- package/dist/components/CycleTimer/types.cjs +1 -0
- package/dist/components/CycleTimer/types.d.ts +0 -1
- package/dist/components/CycleTimer/types.js +1 -0
- package/dist/components/CycleTimer/useAnimations.cjs +0 -1
- package/dist/components/CycleTimer/useAnimations.d.ts +0 -1
- package/dist/components/CycleTimer/useAnimations.js +9 -2
- package/dist/components/CycleTimer/useTimerLogic.cjs +1 -2
- package/dist/components/CycleTimer/useTimerLogic.d.ts +0 -1
- package/dist/components/CycleTimer/useTimerLogic.js +0 -1
- package/dist/components/CycleTimer/utils.cjs +1 -2
- package/dist/components/CycleTimer/utils.d.ts +0 -1
- package/dist/components/CycleTimer/utils.js +19 -11
- package/dist/components/CycleTimer.cjs +0 -1
- package/dist/components/CycleTimer.d.ts +0 -1
- package/dist/components/CycleTimer.js +0 -1
- package/dist/components/DataGrid.cjs +1 -2
- package/dist/components/DataGrid.d.ts +0 -1
- package/dist/components/DataGrid.js +1 -2
- package/dist/components/LoadingCover.cjs +1 -2
- package/dist/components/LoadingCover.d.ts +0 -1
- package/dist/components/LoadingCover.js +0 -1
- package/dist/components/LogPanel.cjs +1 -2
- package/dist/components/LogPanel.d.ts +0 -1
- package/dist/components/LogPanel.js +1 -2
- package/dist/components/LogStore.cjs +0 -1
- package/dist/components/LogStore.d.ts +0 -1
- package/dist/components/LogStore.js +0 -1
- package/dist/components/LogViewer.cjs +1 -2
- package/dist/components/LogViewer.d.ts +0 -1
- package/dist/components/LogViewer.js +1 -2
- package/dist/components/ProgramControl.cjs +1 -2
- package/dist/components/ProgramControl.d.ts +0 -1
- package/dist/components/ProgramControl.js +6 -7
- package/dist/components/ProgramStateIndicator.cjs +1 -2
- package/dist/components/ProgramStateIndicator.d.ts +0 -1
- package/dist/components/ProgramStateIndicator.js +28 -29
- package/dist/components/RobotCard.cjs +1 -2
- package/dist/components/RobotCard.d.ts +0 -1
- package/dist/components/RobotCard.js +1 -2
- package/dist/components/RobotListItem.cjs +1 -2
- package/dist/components/RobotListItem.d.ts +0 -1
- package/dist/components/RobotListItem.js +25 -26
- package/dist/components/RobotSetupReadinessIndicator.cjs +1 -2
- package/dist/components/RobotSetupReadinessIndicator.d.ts +0 -1
- package/dist/components/RobotSetupReadinessIndicator.js +1 -2
- package/dist/components/SelectableFab.cjs +0 -1
- package/dist/components/SelectableFab.d.ts +0 -1
- package/dist/components/SelectableFab.js +0 -1
- package/dist/components/TabBar.cjs +1 -2
- package/dist/components/TabBar.d.ts +0 -1
- package/dist/components/TabBar.js +1 -2
- package/dist/components/ThemeSelect.cjs +1 -0
- package/dist/components/ThemeSelect.d.ts +0 -1
- package/dist/components/ThemeSelect.js +38 -0
- package/dist/components/Timer/Timer.cjs +1 -0
- package/dist/components/Timer/Timer.d.ts +0 -1
- package/dist/components/Timer/Timer.js +5 -0
- package/dist/components/Timer/TimerDefaultVariant.cjs +0 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts +0 -1
- package/dist/components/Timer/TimerDefaultVariant.js +0 -1
- package/dist/components/Timer/TimerSmallVariant.cjs +0 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts +0 -1
- package/dist/components/Timer/TimerSmallVariant.js +0 -1
- package/dist/components/Timer/index.cjs +1 -2
- package/dist/components/Timer/index.d.ts +0 -1
- package/dist/components/Timer/index.js +11 -12
- package/dist/components/Timer/types.cjs +1 -0
- package/dist/components/Timer/types.d.ts +0 -1
- package/dist/components/Timer/types.js +1 -0
- package/dist/components/Timer/useTimerAnimations.cjs +0 -1
- package/dist/components/Timer/useTimerAnimations.d.ts +0 -1
- package/dist/components/Timer/useTimerAnimations.js +5 -2
- package/dist/components/Timer/useTimerLogic.cjs +0 -1
- package/dist/components/Timer/useTimerLogic.d.ts +0 -1
- package/dist/components/Timer/useTimerLogic.js +0 -1
- package/dist/components/Timer/utils.cjs +1 -2
- package/dist/components/Timer/utils.d.ts +0 -1
- package/dist/components/Timer/utils.js +10 -10
- package/dist/components/Timer.cjs +0 -1
- package/dist/components/Timer.d.ts +0 -1
- package/dist/components/Timer.js +0 -1
- package/dist/components/TransparentOverlay.cjs +1 -0
- package/dist/components/TransparentOverlay.d.ts +0 -1
- package/dist/components/TransparentOverlay.js +26 -0
- package/dist/components/VelocitySlider.cjs +1 -2
- package/dist/components/VelocitySlider.d.ts +0 -1
- package/dist/components/VelocitySlider.js +8 -9
- package/dist/components/experimental/utils/AdornedSelect.cjs +0 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts +0 -1
- package/dist/components/experimental/utils/AdornedSelect.js +0 -1
- package/dist/components/jogging/JoggingBlocked.cjs +0 -1
- package/dist/components/jogging/JoggingBlocked.d.ts +0 -1
- package/dist/components/jogging/JoggingBlocked.js +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.cjs +1 -2
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.js +18 -20
- package/dist/components/jogging/JoggingCartesianTab.cjs +1 -2
- package/dist/components/jogging/JoggingCartesianTab.d.ts +0 -1
- package/dist/components/jogging/JoggingCartesianTab.js +37 -41
- package/dist/components/jogging/JoggingFreedriveTab.cjs +1 -0
- package/dist/components/jogging/JoggingFreedriveTab.d.ts +0 -1
- package/dist/components/jogging/JoggingFreedriveTab.js +6 -0
- package/dist/components/jogging/JoggingJointLimitDetector.cjs +1 -2
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.js +4 -5
- package/dist/components/jogging/JoggingJointTab.cjs +1 -2
- package/dist/components/jogging/JoggingJointTab.d.ts +0 -1
- package/dist/components/jogging/JoggingJointTab.js +0 -1
- package/dist/components/jogging/JoggingJointValueControl.cjs +1 -2
- package/dist/components/jogging/JoggingJointValueControl.d.ts +0 -1
- package/dist/components/jogging/JoggingJointValueControl.js +7 -8
- package/dist/components/jogging/JoggingOptions.cjs +1 -2
- package/dist/components/jogging/JoggingOptions.d.ts +0 -1
- package/dist/components/jogging/JoggingOptions.js +0 -1
- package/dist/components/jogging/JoggingPanel.cjs +1 -2
- package/dist/components/jogging/JoggingPanel.d.ts +0 -1
- package/dist/components/jogging/JoggingPanel.js +21 -119
- package/dist/components/jogging/JoggingStore.cjs +1 -2
- package/dist/components/jogging/JoggingStore.d.ts +0 -1
- package/dist/components/jogging/JoggingStore.js +2 -3
- package/dist/components/jogging/JoggingToggleButtonGroup.cjs +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.js +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.cjs +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.js +0 -1
- package/dist/components/jogging/PoseCartesianValues.cjs +1 -2
- package/dist/components/jogging/PoseCartesianValues.d.ts +0 -1
- package/dist/components/jogging/PoseCartesianValues.js +4 -5
- package/dist/components/jogging/PoseJointValues.cjs +1 -2
- package/dist/components/jogging/PoseJointValues.d.ts +0 -1
- package/dist/components/jogging/PoseJointValues.js +1 -2
- package/dist/components/modal/NoMotionGroupModal.cjs +0 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts +0 -1
- package/dist/components/modal/NoMotionGroupModal.js +0 -1
- package/dist/components/robots/AxisConfig.cjs +0 -1
- package/dist/components/robots/AxisConfig.d.ts +0 -1
- package/dist/components/robots/AxisConfig.js +0 -1
- package/dist/components/robots/DHLinearAxis.cjs +1 -2
- package/dist/components/robots/DHLinearAxis.d.ts +0 -1
- package/dist/components/robots/DHLinearAxis.js +0 -1
- package/dist/components/robots/DHRobot.cjs +1 -2
- package/dist/components/robots/DHRobot.d.ts +0 -1
- package/dist/components/robots/DHRobot.js +0 -1
- package/dist/components/robots/GenericRobot.cjs +0 -1
- package/dist/components/robots/GenericRobot.d.ts +0 -1
- package/dist/components/robots/GenericRobot.js +0 -1
- package/dist/components/robots/LinearAxis.cjs +1 -2
- package/dist/components/robots/LinearAxis.d.ts +0 -1
- package/dist/components/robots/LinearAxis.js +0 -1
- package/dist/components/robots/LinearAxisAnimator.cjs +1 -2
- package/dist/components/robots/LinearAxisAnimator.d.ts +0 -1
- package/dist/components/robots/LinearAxisAnimator.js +0 -1
- package/dist/components/robots/MotionGroupVisualizer.cjs +1 -2
- package/dist/components/robots/MotionGroupVisualizer.d.ts +0 -1
- package/dist/components/robots/MotionGroupVisualizer.js +4 -5
- package/dist/components/robots/Robot.cjs +1 -2
- package/dist/components/robots/Robot.d.ts +0 -1
- package/dist/components/robots/Robot.js +0 -1
- package/dist/components/robots/RobotAnimator.cjs +1 -2
- package/dist/components/robots/RobotAnimator.d.ts +0 -1
- package/dist/components/robots/RobotAnimator.js +0 -1
- package/dist/components/robots/SupportedLinearAxis.cjs +1 -2
- package/dist/components/robots/SupportedLinearAxis.d.ts +0 -1
- package/dist/components/robots/SupportedLinearAxis.js +7 -8
- package/dist/components/robots/SupportedRobot.cjs +1 -2
- package/dist/components/robots/SupportedRobot.d.ts +0 -1
- package/dist/components/robots/SupportedRobot.js +6 -7
- package/dist/components/robots/ghostStyle.cjs +0 -1
- package/dist/components/robots/ghostStyle.d.ts +0 -1
- package/dist/components/robots/ghostStyle.js +0 -1
- package/dist/components/robots/manufacturerHomePositions.cjs +0 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts +0 -1
- package/dist/components/robots/manufacturerHomePositions.js +0 -1
- package/dist/components/robots/robotModelLogic.cjs +1 -2
- package/dist/components/robots/robotModelLogic.d.ts +0 -1
- package/dist/components/robots/robotModelLogic.js +58 -34
- package/dist/components/safetyBar/ControllerTypeIndicator.cjs +1 -2
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.js +10 -12
- package/dist/components/safetyBar/IndicatorWithExplanation.cjs +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.js +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.cjs +1 -2
- package/dist/components/safetyBar/OperationModeIndicator.d.ts +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.js +21 -24
- package/dist/components/safetyBar/SafetyBar.cjs +1 -2
- package/dist/components/safetyBar/SafetyBar.d.ts +0 -1
- package/dist/components/safetyBar/SafetyBar.js +15 -16
- package/dist/components/safetyBar/SafetyStateIndicator.cjs +1 -2
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.js +25 -30
- package/dist/components/safetyBar/icons/index.cjs +1 -0
- package/dist/components/safetyBar/icons/index.d.ts +0 -1
- package/dist/components/safetyBar/icons/index.js +15 -0
- package/dist/components/utils/converters.cjs +1 -2
- package/dist/components/utils/converters.d.ts +0 -1
- package/dist/components/utils/converters.js +26 -11
- package/dist/components/utils/errorHandling.cjs +1 -2
- package/dist/components/utils/errorHandling.d.ts +0 -1
- package/dist/components/utils/errorHandling.js +17 -9
- package/dist/components/utils/hooks.cjs +0 -1
- package/dist/components/utils/hooks.d.ts +0 -1
- package/dist/components/utils/hooks.js +3 -4
- package/dist/components/utils/interpolation.cjs +0 -1
- package/dist/components/utils/interpolation.d.ts +0 -1
- package/dist/components/utils/interpolation.js +0 -1
- package/dist/core.cjs +1 -2
- package/dist/core.d.ts +0 -1
- package/dist/core.js +70 -75
- package/dist/externalizeComponent.d.ts +0 -1
- package/dist/i18n/config.d.ts +0 -1
- package/dist/icons/DropdownArrowIcon.d.ts +0 -1
- package/dist/icons/index.d.ts +0 -1
- package/dist/index.cjs +1 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +120 -140
- package/dist/lib/ConnectedMotionGroup.d.ts +0 -1
- package/dist/lib/JoggerConnection.d.ts +0 -1
- package/dist/lib/MotionStreamConnection.d.ts +0 -1
- package/dist/lib/motionStateUpdate.d.ts +0 -1
- package/dist/themes/createDarkTheme.d.ts +0 -1
- package/dist/themes/createLightTheme.d.ts +0 -1
- package/dist/themes/themeTypes.d.ts +0 -1
- package/dist/themes/theming.d.ts +0 -1
- package/dist/wb-icons.cjs +1 -2
- package/dist/wb-icons.d.ts +0 -1
- package/dist/wb-icons.js +28 -44
- package/package.json +5 -6
- package/dist/3d.cjs.map +0 -1
- package/dist/3d.d.ts.map +0 -1
- package/dist/3d.js.map +0 -1
- package/dist/Setup.d.ts.map +0 -1
- package/dist/components/3d-viewport/CoordinateSystemTransform.d.ts.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.cjs.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.d.ts.map +0 -1
- package/dist/components/3d-viewport/PresetEnvironment.js.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/SafetyZonesRenderer.js.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/TrajectoryRenderer.js.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderCollection.js.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/ColliderElement.js.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/CollisionSceneRenderer.js.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.cjs.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.d.ts.map +0 -1
- package/dist/components/3d-viewport/collider/colliderShapeToBufferGeometry.js.map +0 -1
- package/dist/components/AppHeader.cjs.map +0 -1
- package/dist/components/AppHeader.d.ts.map +0 -1
- package/dist/components/AppHeader.js.map +0 -1
- package/dist/components/ConsoleFilter.cjs.map +0 -1
- package/dist/components/ConsoleFilter.d.ts.map +0 -1
- package/dist/components/ConsoleFilter.js.map +0 -1
- package/dist/components/CopyableText.cjs.map +0 -1
- package/dist/components/CopyableText.d.ts.map +0 -1
- package/dist/components/CopyableText.js.map +0 -1
- package/dist/components/CycleTimer/CycleTimer.d.ts.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.cjs.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.d.ts.map +0 -1
- package/dist/components/CycleTimer/DefaultVariant.js.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.cjs.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.d.ts.map +0 -1
- package/dist/components/CycleTimer/SmallVariant.js.map +0 -1
- package/dist/components/CycleTimer/index.cjs.map +0 -1
- package/dist/components/CycleTimer/index.d.ts.map +0 -1
- package/dist/components/CycleTimer/index.js.map +0 -1
- package/dist/components/CycleTimer/types.d.ts.map +0 -1
- package/dist/components/CycleTimer/useAnimations.cjs.map +0 -1
- package/dist/components/CycleTimer/useAnimations.d.ts.map +0 -1
- package/dist/components/CycleTimer/useAnimations.js.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.cjs.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.d.ts.map +0 -1
- package/dist/components/CycleTimer/useTimerLogic.js.map +0 -1
- package/dist/components/CycleTimer/utils.cjs.map +0 -1
- package/dist/components/CycleTimer/utils.d.ts.map +0 -1
- package/dist/components/CycleTimer/utils.js.map +0 -1
- package/dist/components/CycleTimer.cjs.map +0 -1
- package/dist/components/CycleTimer.d.ts.map +0 -1
- package/dist/components/CycleTimer.js.map +0 -1
- package/dist/components/DataGrid.cjs.map +0 -1
- package/dist/components/DataGrid.d.ts.map +0 -1
- package/dist/components/DataGrid.js.map +0 -1
- package/dist/components/LoadingCover.cjs.map +0 -1
- package/dist/components/LoadingCover.d.ts.map +0 -1
- package/dist/components/LoadingCover.js.map +0 -1
- package/dist/components/LogPanel.cjs.map +0 -1
- package/dist/components/LogPanel.d.ts.map +0 -1
- package/dist/components/LogPanel.js.map +0 -1
- package/dist/components/LogStore.cjs.map +0 -1
- package/dist/components/LogStore.d.ts.map +0 -1
- package/dist/components/LogStore.js.map +0 -1
- package/dist/components/LogViewer.cjs.map +0 -1
- package/dist/components/LogViewer.d.ts.map +0 -1
- package/dist/components/LogViewer.js.map +0 -1
- package/dist/components/ProgramControl.cjs.map +0 -1
- package/dist/components/ProgramControl.d.ts.map +0 -1
- package/dist/components/ProgramControl.js.map +0 -1
- package/dist/components/ProgramStateIndicator.cjs.map +0 -1
- package/dist/components/ProgramStateIndicator.d.ts.map +0 -1
- package/dist/components/ProgramStateIndicator.js.map +0 -1
- package/dist/components/RobotCard.cjs.map +0 -1
- package/dist/components/RobotCard.d.ts.map +0 -1
- package/dist/components/RobotCard.js.map +0 -1
- package/dist/components/RobotListItem.cjs.map +0 -1
- package/dist/components/RobotListItem.d.ts.map +0 -1
- package/dist/components/RobotListItem.js.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.cjs.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.d.ts.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.js.map +0 -1
- package/dist/components/RobotSetupReadinessIndicator.test.d.ts +0 -2
- package/dist/components/RobotSetupReadinessIndicator.test.d.ts.map +0 -1
- package/dist/components/SelectableFab.cjs.map +0 -1
- package/dist/components/SelectableFab.d.ts.map +0 -1
- package/dist/components/SelectableFab.js.map +0 -1
- package/dist/components/TabBar.cjs.map +0 -1
- package/dist/components/TabBar.d.ts.map +0 -1
- package/dist/components/TabBar.js.map +0 -1
- package/dist/components/ThemeSelect.d.ts.map +0 -1
- package/dist/components/Timer/Timer.d.ts.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.cjs.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.d.ts.map +0 -1
- package/dist/components/Timer/TimerDefaultVariant.js.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.cjs.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.d.ts.map +0 -1
- package/dist/components/Timer/TimerSmallVariant.js.map +0 -1
- package/dist/components/Timer/index.cjs.map +0 -1
- package/dist/components/Timer/index.d.ts.map +0 -1
- package/dist/components/Timer/index.js.map +0 -1
- package/dist/components/Timer/types.d.ts.map +0 -1
- package/dist/components/Timer/useTimerAnimations.cjs.map +0 -1
- package/dist/components/Timer/useTimerAnimations.d.ts.map +0 -1
- package/dist/components/Timer/useTimerAnimations.js.map +0 -1
- package/dist/components/Timer/useTimerLogic.cjs.map +0 -1
- package/dist/components/Timer/useTimerLogic.d.ts.map +0 -1
- package/dist/components/Timer/useTimerLogic.js.map +0 -1
- package/dist/components/Timer/utils.cjs.map +0 -1
- package/dist/components/Timer/utils.d.ts.map +0 -1
- package/dist/components/Timer/utils.js.map +0 -1
- package/dist/components/Timer.cjs.map +0 -1
- package/dist/components/Timer.d.ts.map +0 -1
- package/dist/components/Timer.js.map +0 -1
- package/dist/components/TransparentOverlay.d.ts.map +0 -1
- package/dist/components/VelocitySlider.cjs.map +0 -1
- package/dist/components/VelocitySlider.d.ts.map +0 -1
- package/dist/components/VelocitySlider.js.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.cjs.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.d.ts.map +0 -1
- package/dist/components/experimental/utils/AdornedSelect.js.map +0 -1
- package/dist/components/jogging/JoggingBlocked.cjs.map +0 -1
- package/dist/components/jogging/JoggingBlocked.d.ts.map +0 -1
- package/dist/components/jogging/JoggingBlocked.js.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.cjs.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.d.ts.map +0 -1
- package/dist/components/jogging/JoggingCartesianAxisControl.js.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.cjs.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingCartesianTab.js.map +0 -1
- package/dist/components/jogging/JoggingFreedriveTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointLimitDetector.js.map +0 -1
- package/dist/components/jogging/JoggingJointTab.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointTab.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointTab.js.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.cjs.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.d.ts.map +0 -1
- package/dist/components/jogging/JoggingJointValueControl.js.map +0 -1
- package/dist/components/jogging/JoggingOptions.cjs.map +0 -1
- package/dist/components/jogging/JoggingOptions.d.ts.map +0 -1
- package/dist/components/jogging/JoggingOptions.js.map +0 -1
- package/dist/components/jogging/JoggingPanel.cjs.map +0 -1
- package/dist/components/jogging/JoggingPanel.d.ts.map +0 -1
- package/dist/components/jogging/JoggingPanel.js.map +0 -1
- package/dist/components/jogging/JoggingPanel.test.d.ts +0 -2
- package/dist/components/jogging/JoggingPanel.test.d.ts.map +0 -1
- package/dist/components/jogging/JoggingStore.cjs.map +0 -1
- package/dist/components/jogging/JoggingStore.d.ts.map +0 -1
- package/dist/components/jogging/JoggingStore.js.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.cjs.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.d.ts.map +0 -1
- package/dist/components/jogging/JoggingToggleButtonGroup.js.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.cjs.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.d.ts.map +0 -1
- package/dist/components/jogging/JoggingVelocitySlider.js.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.cjs.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.d.ts.map +0 -1
- package/dist/components/jogging/PoseCartesianValues.js.map +0 -1
- package/dist/components/jogging/PoseJointValues.cjs.map +0 -1
- package/dist/components/jogging/PoseJointValues.d.ts.map +0 -1
- package/dist/components/jogging/PoseJointValues.js.map +0 -1
- package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts +0 -11
- package/dist/components/jogging/__fixtures__/motionStreamMockData.d.ts.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.cjs.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.d.ts.map +0 -1
- package/dist/components/modal/NoMotionGroupModal.js.map +0 -1
- package/dist/components/robots/AxisConfig.cjs.map +0 -1
- package/dist/components/robots/AxisConfig.d.ts.map +0 -1
- package/dist/components/robots/AxisConfig.js.map +0 -1
- package/dist/components/robots/DHLinearAxis.cjs.map +0 -1
- package/dist/components/robots/DHLinearAxis.d.ts.map +0 -1
- package/dist/components/robots/DHLinearAxis.js.map +0 -1
- package/dist/components/robots/DHRobot.cjs.map +0 -1
- package/dist/components/robots/DHRobot.d.ts.map +0 -1
- package/dist/components/robots/DHRobot.js.map +0 -1
- package/dist/components/robots/GenericRobot.cjs.map +0 -1
- package/dist/components/robots/GenericRobot.d.ts.map +0 -1
- package/dist/components/robots/GenericRobot.js.map +0 -1
- package/dist/components/robots/LinearAxis.cjs.map +0 -1
- package/dist/components/robots/LinearAxis.d.ts.map +0 -1
- package/dist/components/robots/LinearAxis.js.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.cjs.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.d.ts.map +0 -1
- package/dist/components/robots/LinearAxisAnimator.js.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.cjs.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.d.ts.map +0 -1
- package/dist/components/robots/MotionGroupVisualizer.js.map +0 -1
- package/dist/components/robots/Robot.cjs.map +0 -1
- package/dist/components/robots/Robot.d.ts.map +0 -1
- package/dist/components/robots/Robot.js.map +0 -1
- package/dist/components/robots/RobotAnimator.cjs.map +0 -1
- package/dist/components/robots/RobotAnimator.d.ts.map +0 -1
- package/dist/components/robots/RobotAnimator.js.map +0 -1
- package/dist/components/robots/RobotAnimator.test.d.ts +0 -2
- package/dist/components/robots/RobotAnimator.test.d.ts.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.cjs.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.d.ts.map +0 -1
- package/dist/components/robots/SupportedLinearAxis.js.map +0 -1
- package/dist/components/robots/SupportedRobot.cjs.map +0 -1
- package/dist/components/robots/SupportedRobot.d.ts.map +0 -1
- package/dist/components/robots/SupportedRobot.js.map +0 -1
- package/dist/components/robots/ghostStyle.cjs.map +0 -1
- package/dist/components/robots/ghostStyle.d.ts.map +0 -1
- package/dist/components/robots/ghostStyle.js.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.cjs.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.d.ts.map +0 -1
- package/dist/components/robots/manufacturerHomePositions.js.map +0 -1
- package/dist/components/robots/robotModelLogic.cjs.map +0 -1
- package/dist/components/robots/robotModelLogic.d.ts.map +0 -1
- package/dist/components/robots/robotModelLogic.js.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/ControllerTypeIndicator.js.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.cjs.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.d.ts.map +0 -1
- package/dist/components/safetyBar/IndicatorWithExplanation.js.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/OperationModeIndicator.js.map +0 -1
- package/dist/components/safetyBar/SafetyBar.cjs.map +0 -1
- package/dist/components/safetyBar/SafetyBar.d.ts.map +0 -1
- package/dist/components/safetyBar/SafetyBar.js.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.cjs.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.d.ts.map +0 -1
- package/dist/components/safetyBar/SafetyStateIndicator.js.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/controller-type-physical.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-physical.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/controller-type-physical.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.js +0 -11
- package/dist/components/safetyBar/icons/controller-type-virtual.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/index.d.ts.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-automatic.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-error.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-error.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-error.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-error.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.js +0 -11
- package/dist/components/safetyBar/icons/operation-mode-manual.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-error.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-error.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-error.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-error.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-error.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-estop.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-estop.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-estop.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-estop.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-manual-action-required.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-normal.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-normal.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-normal.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-normal.svg.js.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs +0 -2
- package/dist/components/safetyBar/icons/safety-state-stop.svg.cjs.map +0 -1
- package/dist/components/safetyBar/icons/safety-state-stop.svg.d.ts +0 -3
- package/dist/components/safetyBar/icons/safety-state-stop.svg.js +0 -11
- package/dist/components/safetyBar/icons/safety-state-stop.svg.js.map +0 -1
- package/dist/components/utils/converters.cjs.map +0 -1
- package/dist/components/utils/converters.d.ts.map +0 -1
- package/dist/components/utils/converters.js.map +0 -1
- package/dist/components/utils/errorHandling.cjs.map +0 -1
- package/dist/components/utils/errorHandling.d.ts.map +0 -1
- package/dist/components/utils/errorHandling.js.map +0 -1
- package/dist/components/utils/errorHandling.test.d.ts +0 -2
- package/dist/components/utils/errorHandling.test.d.ts.map +0 -1
- package/dist/components/utils/hooks.cjs.map +0 -1
- package/dist/components/utils/hooks.d.ts.map +0 -1
- package/dist/components/utils/hooks.js.map +0 -1
- package/dist/components/utils/interpolation.cjs.map +0 -1
- package/dist/components/utils/interpolation.d.ts.map +0 -1
- package/dist/components/utils/interpolation.js.map +0 -1
- package/dist/components/utils/interpolation.test.d.ts +0 -2
- package/dist/components/utils/interpolation.test.d.ts.map +0 -1
- package/dist/core.cjs.map +0 -1
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js.map +0 -1
- package/dist/externalizeComponent.cjs +0 -2
- package/dist/externalizeComponent.cjs.map +0 -1
- package/dist/externalizeComponent.d.ts.map +0 -1
- package/dist/externalizeComponent.js +0 -13
- package/dist/externalizeComponent.js.map +0 -1
- package/dist/i18n/config.cjs +0 -2
- package/dist/i18n/config.cjs.map +0 -1
- package/dist/i18n/config.d.ts.map +0 -1
- package/dist/i18n/config.js +0 -25
- package/dist/i18n/config.js.map +0 -1
- package/dist/i18n/locales/de/translations.json.cjs +0 -3
- package/dist/i18n/locales/de/translations.json.cjs.map +0 -1
- package/dist/i18n/locales/de/translations.json.js +0 -94
- package/dist/i18n/locales/de/translations.json.js.map +0 -1
- package/dist/i18n/locales/en/translations.json.cjs +0 -2
- package/dist/i18n/locales/en/translations.json.cjs.map +0 -1
- package/dist/i18n/locales/en/translations.json.js +0 -94
- package/dist/i18n/locales/en/translations.json.js.map +0 -1
- package/dist/icons/DropdownArrowIcon.cjs +0 -2
- package/dist/icons/DropdownArrowIcon.cjs.map +0 -1
- package/dist/icons/DropdownArrowIcon.d.ts.map +0 -1
- package/dist/icons/DropdownArrowIcon.js +0 -14
- package/dist/icons/DropdownArrowIcon.js.map +0 -1
- package/dist/icons/axis-x.svg.cjs +0 -2
- package/dist/icons/axis-x.svg.cjs.map +0 -1
- package/dist/icons/axis-x.svg.d.ts +0 -3
- package/dist/icons/axis-x.svg.js +0 -11
- package/dist/icons/axis-x.svg.js.map +0 -1
- package/dist/icons/axis-y.svg.cjs +0 -2
- package/dist/icons/axis-y.svg.cjs.map +0 -1
- package/dist/icons/axis-y.svg.d.ts +0 -3
- package/dist/icons/axis-y.svg.js +0 -11
- package/dist/icons/axis-y.svg.js.map +0 -1
- package/dist/icons/axis-z.svg.cjs +0 -2
- package/dist/icons/axis-z.svg.cjs.map +0 -1
- package/dist/icons/axis-z.svg.d.ts +0 -3
- package/dist/icons/axis-z.svg.js +0 -11
- package/dist/icons/axis-z.svg.js.map +0 -1
- package/dist/icons/home.svg.cjs +0 -2
- package/dist/icons/home.svg.cjs.map +0 -1
- package/dist/icons/home.svg.d.ts +0 -3
- package/dist/icons/home.svg.js +0 -11
- package/dist/icons/home.svg.js.map +0 -1
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/jog-minus.svg.cjs +0 -2
- package/dist/icons/jog-minus.svg.cjs.map +0 -1
- package/dist/icons/jog-minus.svg.d.ts +0 -3
- package/dist/icons/jog-minus.svg.js +0 -11
- package/dist/icons/jog-minus.svg.js.map +0 -1
- package/dist/icons/jog-plus.svg.cjs +0 -2
- package/dist/icons/jog-plus.svg.cjs.map +0 -1
- package/dist/icons/jog-plus.svg.d.ts +0 -3
- package/dist/icons/jog-plus.svg.js +0 -11
- package/dist/icons/jog-plus.svg.js.map +0 -1
- package/dist/icons/jogging.svg.cjs +0 -2
- package/dist/icons/jogging.svg.cjs.map +0 -1
- package/dist/icons/jogging.svg.d.ts +0 -3
- package/dist/icons/jogging.svg.js +0 -11
- package/dist/icons/jogging.svg.js.map +0 -1
- package/dist/icons/orientation-coord-system.svg.cjs +0 -2
- package/dist/icons/orientation-coord-system.svg.cjs.map +0 -1
- package/dist/icons/orientation-coord-system.svg.d.ts +0 -3
- package/dist/icons/orientation-coord-system.svg.js +0 -11
- package/dist/icons/orientation-coord-system.svg.js.map +0 -1
- package/dist/icons/orientation-tool.svg.cjs +0 -2
- package/dist/icons/orientation-tool.svg.cjs.map +0 -1
- package/dist/icons/orientation-tool.svg.d.ts +0 -3
- package/dist/icons/orientation-tool.svg.js +0 -11
- package/dist/icons/orientation-tool.svg.js.map +0 -1
- package/dist/icons/robot.svg.cjs +0 -2
- package/dist/icons/robot.svg.cjs.map +0 -1
- package/dist/icons/robot.svg.d.ts +0 -3
- package/dist/icons/robot.svg.js.map +0 -1
- package/dist/icons/rotation.svg.cjs +0 -2
- package/dist/icons/rotation.svg.cjs.map +0 -1
- package/dist/icons/rotation.svg.d.ts +0 -3
- package/dist/icons/rotation.svg.js +0 -11
- package/dist/icons/rotation.svg.js.map +0 -1
- package/dist/icons/wbLogo.svg.cjs +0 -2
- package/dist/icons/wbLogo.svg.cjs.map +0 -1
- package/dist/icons/wbLogo.svg.d.ts +0 -3
- package/dist/icons/wbLogo.svg.js +0 -11
- package/dist/icons/wbLogo.svg.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/ConnectedMotionGroup.cjs +0 -4
- package/dist/lib/ConnectedMotionGroup.cjs.map +0 -1
- package/dist/lib/ConnectedMotionGroup.d.ts.map +0 -1
- package/dist/lib/ConnectedMotionGroup.js +0 -250
- package/dist/lib/ConnectedMotionGroup.js.map +0 -1
- package/dist/lib/JoggerConnection.cjs +0 -2
- package/dist/lib/JoggerConnection.cjs.map +0 -1
- package/dist/lib/JoggerConnection.d.ts.map +0 -1
- package/dist/lib/JoggerConnection.js +0 -342
- package/dist/lib/JoggerConnection.js.map +0 -1
- package/dist/lib/JoggerConnection.test.d.ts +0 -2
- package/dist/lib/JoggerConnection.test.d.ts.map +0 -1
- package/dist/lib/MotionStreamConnection.cjs +0 -3
- package/dist/lib/MotionStreamConnection.cjs.map +0 -1
- package/dist/lib/MotionStreamConnection.d.ts.map +0 -1
- package/dist/lib/MotionStreamConnection.js +0 -94
- package/dist/lib/MotionStreamConnection.js.map +0 -1
- package/dist/lib/MotionStreamConnection.test.d.ts +0 -2
- package/dist/lib/MotionStreamConnection.test.d.ts.map +0 -1
- package/dist/lib/motionStateUpdate.cjs +0 -2
- package/dist/lib/motionStateUpdate.cjs.map +0 -1
- package/dist/lib/motionStateUpdate.d.ts.map +0 -1
- package/dist/lib/motionStateUpdate.js +0 -49
- package/dist/lib/motionStateUpdate.js.map +0 -1
- package/dist/lib/motionStateUpdate.test.d.ts +0 -2
- package/dist/lib/motionStateUpdate.test.d.ts.map +0 -1
- package/dist/test/consumer.test.d.ts +0 -2
- package/dist/test/consumer.test.d.ts.map +0 -1
- package/dist/test/setup.d.ts +0 -2
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/themes/createDarkTheme.cjs +0 -2
- package/dist/themes/createDarkTheme.cjs.map +0 -1
- package/dist/themes/createDarkTheme.d.ts.map +0 -1
- package/dist/themes/createDarkTheme.js +0 -344
- package/dist/themes/createDarkTheme.js.map +0 -1
- package/dist/themes/createLightTheme.cjs +0 -2
- package/dist/themes/createLightTheme.cjs.map +0 -1
- package/dist/themes/createLightTheme.d.ts.map +0 -1
- package/dist/themes/createLightTheme.js +0 -9
- package/dist/themes/createLightTheme.js.map +0 -1
- package/dist/themes/themeTypes.d.ts.map +0 -1
- package/dist/themes/theming.cjs +0 -2
- package/dist/themes/theming.cjs.map +0 -1
- package/dist/themes/theming.d.ts.map +0 -1
- package/dist/themes/theming.js +0 -14
- package/dist/themes/theming.js.map +0 -1
- package/dist/wb-icons.cjs.map +0 -1
- package/dist/wb-icons.d.ts.map +0 -1
- package/dist/wb-icons.js.map +0 -1
- package/src/3d.ts +0 -18
- package/src/Setup.tsx +0 -33
- package/src/components/3d-viewport/CoordinateSystemTransform.tsx +0 -57
- package/src/components/3d-viewport/PresetEnvironment.tsx +0 -81
- package/src/components/3d-viewport/SafetyZonesRenderer.tsx +0 -198
- package/src/components/3d-viewport/TrajectoryRenderer.tsx +0 -41
- package/src/components/3d-viewport/collider/ColliderCollection.tsx +0 -35
- package/src/components/3d-viewport/collider/ColliderElement.tsx +0 -36
- package/src/components/3d-viewport/collider/CollisionSceneRenderer.tsx +0 -26
- package/src/components/3d-viewport/collider/colliderShapeToBufferGeometry.ts +0 -48
- package/src/components/AppHeader.md +0 -84
- package/src/components/AppHeader.tsx +0 -197
- package/src/components/ConsoleFilter.tsx +0 -24
- package/src/components/CopyableText.tsx +0 -89
- package/src/components/CycleTimer/CycleTimer.ts +0 -8
- package/src/components/CycleTimer/DefaultVariant.tsx +0 -326
- package/src/components/CycleTimer/SmallVariant.tsx +0 -229
- package/src/components/CycleTimer/index.tsx +0 -158
- package/src/components/CycleTimer/types.ts +0 -58
- package/src/components/CycleTimer/useAnimations.ts +0 -202
- package/src/components/CycleTimer/useTimerLogic.ts +0 -330
- package/src/components/CycleTimer/utils.ts +0 -122
- package/src/components/CycleTimer.tsx +0 -8
- package/src/components/DataGrid.tsx +0 -664
- package/src/components/LoadingCover.tsx +0 -91
- package/src/components/LogPanel.tsx +0 -71
- package/src/components/LogStore.ts +0 -46
- package/src/components/LogViewer.tsx +0 -368
- package/src/components/ProgramControl.tsx +0 -267
- package/src/components/ProgramStateIndicator.tsx +0 -195
- package/src/components/RobotCard.tsx +0 -495
- package/src/components/RobotListItem.tsx +0 -155
- package/src/components/RobotSetupReadinessIndicator.test.tsx +0 -60
- package/src/components/RobotSetupReadinessIndicator.tsx +0 -161
- package/src/components/SelectableFab.tsx +0 -52
- package/src/components/TabBar.tsx +0 -325
- package/src/components/ThemeSelect.tsx +0 -51
- package/src/components/Timer/Timer.ts +0 -4
- package/src/components/Timer/TimerDefaultVariant.tsx +0 -143
- package/src/components/Timer/TimerSmallVariant.tsx +0 -141
- package/src/components/Timer/index.tsx +0 -103
- package/src/components/Timer/types.ts +0 -38
- package/src/components/Timer/useTimerAnimations.ts +0 -94
- package/src/components/Timer/useTimerLogic.ts +0 -214
- package/src/components/Timer/utils.ts +0 -87
- package/src/components/Timer.ts +0 -4
- package/src/components/TransparentOverlay.tsx +0 -28
- package/src/components/VelocitySlider.tsx +0 -117
- package/src/components/experimental/utils/AdornedSelect.tsx +0 -38
- package/src/components/jogging/JoggingBlocked.tsx +0 -43
- package/src/components/jogging/JoggingCartesianAxisControl.tsx +0 -237
- package/src/components/jogging/JoggingCartesianTab.tsx +0 -349
- package/src/components/jogging/JoggingFreedriveTab.tsx +0 -8
- package/src/components/jogging/JoggingJointLimitDetector.tsx +0 -57
- package/src/components/jogging/JoggingJointTab.tsx +0 -126
- package/src/components/jogging/JoggingJointValueControl.tsx +0 -293
- package/src/components/jogging/JoggingOptions.tsx +0 -163
- package/src/components/jogging/JoggingPanel.test.tsx +0 -645
- package/src/components/jogging/JoggingPanel.tsx +0 -204
- package/src/components/jogging/JoggingStore.ts +0 -485
- package/src/components/jogging/JoggingToggleButtonGroup.tsx +0 -25
- package/src/components/jogging/JoggingVelocitySlider.tsx +0 -39
- package/src/components/jogging/PoseCartesianValues.tsx +0 -55
- package/src/components/jogging/PoseJointValues.tsx +0 -54
- package/src/components/jogging/__fixtures__/motionStreamMockData.ts +0 -136
- package/src/components/modal/NoMotionGroupModal.tsx +0 -91
- package/src/components/robots/AxisConfig.ts +0 -3
- package/src/components/robots/DHLinearAxis.tsx +0 -147
- package/src/components/robots/DHRobot.tsx +0 -152
- package/src/components/robots/GenericRobot.tsx +0 -137
- package/src/components/robots/LinearAxis.tsx +0 -74
- package/src/components/robots/LinearAxisAnimator.tsx +0 -118
- package/src/components/robots/MotionGroupVisualizer.tsx +0 -73
- package/src/components/robots/Robot.tsx +0 -57
- package/src/components/robots/RobotAnimator.test.tsx +0 -98
- package/src/components/robots/RobotAnimator.tsx +0 -116
- package/src/components/robots/SupportedLinearAxis.tsx +0 -110
- package/src/components/robots/SupportedRobot.tsx +0 -111
- package/src/components/robots/ghostStyle.ts +0 -71
- package/src/components/robots/manufacturerHomePositions.ts +0 -76
- package/src/components/robots/robotModelLogic.ts +0 -158
- package/src/components/safetyBar/ControllerTypeIndicator.tsx +0 -79
- package/src/components/safetyBar/IndicatorWithExplanation.tsx +0 -137
- package/src/components/safetyBar/OperationModeIndicator.tsx +0 -98
- package/src/components/safetyBar/SafetyBar.tsx +0 -72
- package/src/components/safetyBar/SafetyStateIndicator.tsx +0 -163
- package/src/components/safetyBar/icons/controller-type-physical.svg +0 -1
- package/src/components/safetyBar/icons/controller-type-virtual.svg +0 -1
- package/src/components/safetyBar/icons/index.ts +0 -10
- package/src/components/safetyBar/icons/operation-mode-automatic.svg +0 -1
- package/src/components/safetyBar/icons/operation-mode-error.svg +0 -1
- package/src/components/safetyBar/icons/operation-mode-manual.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-error.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-estop.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-manual-action-required.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-normal.svg +0 -1
- package/src/components/safetyBar/icons/safety-state-stop.svg +0 -1
- package/src/components/utils/converters.ts +0 -90
- package/src/components/utils/errorHandling.test.ts +0 -41
- package/src/components/utils/errorHandling.ts +0 -38
- package/src/components/utils/hooks.tsx +0 -55
- package/src/components/utils/interpolation.test.ts +0 -1138
- package/src/components/utils/interpolation.ts +0 -380
- package/src/core.ts +0 -33
- package/src/declarations.d.ts +0 -10
- package/src/env.d.ts +0 -3
- package/src/externalizeComponent.tsx +0 -28
- package/src/i18n/config.ts +0 -26
- package/src/i18n/locales/de/translations.json +0 -89
- package/src/i18n/locales/en/translations.json +0 -90
- package/src/icons/DropdownArrowIcon.tsx +0 -12
- package/src/icons/axis-x.svg +0 -1
- package/src/icons/axis-y.svg +0 -1
- package/src/icons/axis-z.svg +0 -1
- package/src/icons/home.svg +0 -1
- package/src/icons/index.ts +0 -12
- package/src/icons/jog-minus.svg +0 -5
- package/src/icons/jog-plus.svg +0 -9
- package/src/icons/jogging.svg +0 -1
- package/src/icons/orientation-coord-system.svg +0 -1
- package/src/icons/orientation-tool.svg +0 -1
- package/src/icons/robot.svg +0 -1
- package/src/icons/rotation.svg +0 -3
- package/src/icons/wbLogo.svg +0 -1
- package/src/index.ts +0 -4
- package/src/lib/ConnectedMotionGroup.ts +0 -441
- package/src/lib/JoggerConnection.test.ts +0 -122
- package/src/lib/JoggerConnection.ts +0 -694
- package/src/lib/MotionStreamConnection.test.ts +0 -23
- package/src/lib/MotionStreamConnection.ts +0 -186
- package/src/lib/motionStateUpdate.test.ts +0 -28
- package/src/lib/motionStateUpdate.ts +0 -117
- package/src/test/consumer.test.ts +0 -230
- package/src/test/setup.ts +0 -111
- package/src/themes/createDarkTheme.ts +0 -343
- package/src/themes/createLightTheme.ts +0 -8
- package/src/themes/themeTypes.ts +0 -96
- package/src/themes/theming.ts +0 -29
- package/src/wb-icons.ts +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LogViewer.js","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":";;;;;;;;;;;;;;AAsCO,MAAMA,IAAmB,CAC9BC,GACAC,GACAC,OACgB;AAAA,EAChB,IAAIA,KAAM,GAAG,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AAAA,EACtE,+BAAe,KAAA;AAAA,EACf,SAAAF;AAAA,EACA,OAAAC;AACF,IAKaE,KAAqB,CAACH,GAAiBE,MAClDH,EAAiBC,GAAS,SAASE,CAAE,GAK1BE,KAAoB,CAACJ,GAAiBE,MACjDH,EAAiBC,GAAS,QAAQE,CAAE,GAKzBG,KAAuB,CAClCL,GACAE,MACeH,EAAiBC,GAAS,WAAWE,CAAE,GAK3CI,KAAqB,CAACN,GAAiBE,MAClDH,EAAiBC,GAAS,SAASE,CAAE,GAM1BK,KAAYC;AAAA,EACvBC,EAAS,CAACC,MAA0B;;AAClC,UAAM,EAAE,UAAAC,IAAW,IAAI,SAAAC,GAAS,QAAAC,IAAS,KAAK,IAAAC,MAAOJ,GAC/CK,IAAQC,EAAA,GACRC,IAAqBC,EAAuB,IAAI;AAGtD,IAAAC,EAAU,MAAM;AACd,UAAIR,EAAS,WAAW,EAAG;AAE3B,YAAMS,IAAkBH,EAAmB;AAC3C,UAAI,CAACG,EAAiB;AAGtB,YAAMC,IAAY,WAAW,MAAM;AAEjC,QAAAD,EAAgB,YAAYA,EAAgB;AAAA,MAC9C,GAAG,EAAE;AAEL,aAAO,MAAM,aAAaC,CAAS;AAAA,IACrC,GAAG,CAACV,EAAS,MAAM,CAAC;AAEpB,UAAMW,IAAkB,CAACC,MAChBA,EAAU,mBAAmB,SAAS;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA,CACT,GAGGC,IAAkB,CAACvB,MAAoB;AAC3C,cAAQA,GAAA;AAAA,QACN,KAAK;AACH,iBAAOc,EAAM,QAAQ,MAAM;AAAA,QAC7B,KAAK;AACH,iBAAOA,EAAM,QAAQ,QAAQ;AAAA,QAC/B,KAAK;AACH,iBAAOA,EAAM,QAAQ,KAAK;AAAA,QAC5B,KAAK;AACH,iBAAOA,EAAM,QAAQ,KAAK;AAAA,QAC5B;AACE,iBAAOA,EAAM,QAAQ,KAAK;AAAA,MAAA;AAAA,IAEhC,GAGMU,IAAa,CAAC,EAAE,SAAAzB,QAAuC;AAC3D,YAAM,CAAC0B,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAK,GAC9C,CAACG,GAAWC,CAAY,IAAIJ,EAAS,EAAK,GAC1CK,IAAgBjC,EAAQ,QAAQ,SAAS,KAEzCkC,IAAa,YAAY;AAC7B,YAAI;AACF,gBAAM,UAAU,UAAU,UAAUlC,EAAQ,OAAO,GACnD8B,EAAe,EAAI,GACnB,WAAW,MAAMA,EAAe,EAAK,GAAG,GAAI;AAAA,QAC9C,SAASK,GAAK;AACZ,kBAAQ,MAAM,2BAA2BA,CAAG;AAAA,QAC9C;AAAA,MACF,GAEMC,IACJH,KAAiB,CAACP,IACd,GAAG1B,EAAQ,QAAQ,UAAU,GAAG,GAAG,CAAC,QACpCA,EAAQ;AAEd,aACE,gBAAAqC;AAAA,QAACC;AAAA,QAAA;AAAA,UAEC,cAAc,MAAMN,EAAa,EAAI;AAAA,UACrC,cAAc,MAAMA,EAAa,EAAK;AAAA,UACtC,IAAI;AAAA,YACF,SAAS;AAAA,YACT,KAAK;AAAA,YACL,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,WAAW;AAAA,cACT,iBAAiBjB,EAAM,QAAQ,OAAO;AAAA,YAAA;AAAA,YAExC,cAAc;AAAA,YACd,SAAS;AAAA,YACT,QAAQ;AAAA,UAAA;AAAA,UAGV,UAAA,gBAAAwB,EAACD,KAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAE/B,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,IAAI;AAAA,kBACF,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,eAAe;AAAA,kBACf,OAAOzB,EAAM,QAAQ,KAAK;AAAA,kBAC1B,YAAY;AAAA,kBACZ,YAAY;AAAA,gBAAA;AAAA,gBAEf,UAAA;AAAA,kBAAA;AAAA,kBACGO,EAAgBtB,EAAQ,SAAS;AAAA,kBAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAIvC,gBAAAqC;AAAA,cAACG;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,IAAI;AAAA,kBACF,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,eAAe;AAAA,kBACf,OAAOhB,EAAgBxB,EAAQ,KAAK;AAAA,kBACpC,WAAW;AAAA,kBACX,cAAc;AAAA,kBACd,SAAS;AAAA,kBACT,MAAM;AAAA,kBACN,YAAY;AAAA,gBAAA;AAAA,gBAGb,UAAAoC;AAAA,cAAA;AAAA,YAAA;AAAA,YAIH,gBAAAG;AAAA,cAACD;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,KAAK;AAAA,kBACL,SAASP,IAAY,IAAI;AAAA,kBACzB,YAAY;AAAA,kBACZ,YAAYA,IAAY,YAAY;AAAA,gBAAA;AAAA,gBAGtC,UAAA;AAAA,kBAAA,gBAAAM;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAASP;AAAA,sBACT,IAAI;AAAA,wBACF,SAAS;AAAA,wBACT,OAAOnB,EAAM,QAAQ,KAAK;AAAA,wBAC1B,WAAW;AAAA,0BACT,iBAAiBA,EAAM,QAAQ,OAAO;AAAA,wBAAA;AAAA,sBACxC;AAAA,sBAEF,OAAOc,IAAc,YAAY;AAAA,sBAEjC,4BAACa,GAAA,EAAY,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGpCT,KACC,gBAAAI;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,MAAMd,EAAc,CAACD,CAAU;AAAA,sBACxC,IAAI;AAAA,wBACF,SAAS;AAAA,wBACT,OAAOX,EAAM,QAAQ,KAAK;AAAA,wBAC1B,WAAW;AAAA,0BACT,iBAAiBA,EAAM,QAAQ,OAAO;AAAA,wBAAA;AAAA,sBACxC;AAAA,sBAEF,OAAOW,IAAa,aAAa;AAAA,sBAEhC,UAAAA,IACC,gBAAAW,EAACM,GAAA,EAAW,IAAI,EAAE,UAAU,GAAA,EAAG,CAAG,sBAEjCC,GAAA,EAAW,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAEtC;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ,EAAA,CACF;AAAA,QAAA;AAAA,QAnGK5C,EAAQ;AAAA,MAAA;AAAA,IAsGnB;AAEA,WACE,gBAAAuC;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,mBACEC,IAAA/B,EAAM,QAAQ,6BAAd,gBAAA+B,EAAyC,OAAM;AAAA,UACjD,iBAAiB;AAAA;AAAA,UACjB,QAAAjC;AAAA,UACA,SAAS;AAAA,UACT,eAAe;AAAA,UACf,UAAU;AAAA,UACV,GAAGC;AAAA,QAAA;AAAA,QAIL,UAAA;AAAA,UAAA,gBAAAyB;AAAA,YAACD;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,gBAAgB;AAAA,gBAChB,SAAS;AAAA,cAAA;AAAA,cAGX,UAAA;AAAA,gBAAA,gBAAAC,EAACD,GAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EAAA,GACrD,UAAA;AAAA,kBAAA,gBAAAD;AAAA,oBAACU;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,UAAU;AAAA,wBACV,OAAOhC,EAAM,QAAQ,OAAO;AAAA,wBAC5B,SAAS;AAAA,sBAAA;AAAA,oBACX;AAAA,kBAAA;AAAA,kBAEF,gBAAAsB;AAAA,oBAACG;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,YAAY;AAAA,wBACZ,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,eAAe;AAAA,wBACf,OAAOzB,EAAM,QAAQ,KAAK;AAAA,sBAAA;AAAA,sBAE7B,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAED,GACF;AAAA,gBACA,gBAAAsB;AAAA,kBAACW;AAAA,kBAAA;AAAA,oBACC,SAASpC;AAAA,oBACT,SAAQ;AAAA,oBACR,IAAI;AAAA,sBACF,YAAY;AAAA,sBACZ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,eAAe;AAAA,sBACf,OAAOG,EAAM,QAAQ,QAAQ;AAAA,sBAC7B,eAAe;AAAA,sBACf,UAAU;AAAA,sBACV,SAAS;AAAA,sBACT,WAAW;AAAA,wBACT,iBAAiB,GAAGA,EAAM,QAAQ,QAAQ,IAAI;AAAA;AAAA,sBAAA;AAAA,oBAChD;AAAA,oBAEH,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAED;AAAA,YAAA;AAAA,UAAA;AAAA,UAIF,gBAAAsB;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,KAAKrB;AAAA,cACL,IAAI;AAAA,gBACF,MAAM;AAAA,gBACN,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,SAAS;AAAA,gBACT,eAAe;AAAA,gBACf,KAAK;AAAA;AAAA,gBAEL,gBAAgB;AAAA,gBAChB,gBAAgB,GAAGF,EAAM,QAAQ,OAAO;AAAA,gBACxC,wBAAwB;AAAA,kBACtB,OAAO;AAAA,gBAAA;AAAA,gBAET,8BAA8B;AAAA,kBAC5B,YAAY;AAAA,gBAAA;AAAA,gBAEd,8BAA8B;AAAA,kBAC5B,iBAAiBA,EAAM,QAAQ;AAAA,kBAC/B,cAAc;AAAA,kBACd,WAAW;AAAA,oBACT,iBAAiBA,EAAM,QAAQ;AAAA,kBAAA;AAAA,gBACjC;AAAA,cACF;AAAA,cAGD,UAAAJ,EAAS,WAAW,IACnB,gBAAA0B;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,OAAOzB,EAAM,QAAQ,KAAK;AAAA,oBAC1B,UAAU;AAAA,oBACV,WAAW;AAAA,oBACX,WAAW;AAAA,oBACX,WAAW;AAAA,kBAAA;AAAA,kBAEd,UAAA;AAAA,gBAAA;AAAA,cAAA,IAIDJ,EAAS,IAAI,CAACX,wBACXyB,GAAA,EAA4B,SAAAzB,EAAA,GAAZA,EAAQ,EAAsB,CAChD;AAAA,YAAA;AAAA,UAAA;AAAA,QAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN,CAAC;AACH;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramControl.cjs","sources":["../../src/components/ProgramControl.tsx"],"sourcesContent":["import Pause from \"@mui/icons-material/Pause\"\nimport PlayArrow from \"@mui/icons-material/PlayArrow\"\nimport Stop from \"@mui/icons-material/Stop\"\nimport { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Button from \"@mui/material/Button\"\nimport Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport enum ProgramState {\n IDLE = \"idle\",\n PREPARING = \"preparing\",\n STARTING = \"starting\",\n RUNNING = \"running\",\n PAUSING = \"pausing\",\n PAUSED = \"paused\",\n STOPPING = \"stopping\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n STOPPED = \"stopped\",\n ERROR = \"error\",\n}\n\nexport interface ProgramControlProps {\n /** The current state of the program control */\n state: ProgramState\n /** Callback fired when the run/resume button is clicked */\n onRun: () => void\n /** Callback fired when the pause button is clicked (only available in 'with_pause' variant) */\n onPause?: () => void\n /** Callback fired when the stop button is clicked */\n onStop: () => void\n /**\n * Function to reset the component from 'stopping' state back to 'idle'.\n * This must be called manually by the user when requiresManualReset is true.\n */\n onReset?: () => void\n /**\n * When true, the component will stay in 'stopping' state until onReset is called manually.\n * When false (default), auto-resets to 'idle' after 2 seconds.\n */\n requiresManualReset?: boolean\n /**\n * Variant of the component:\n * - 'with_pause': Shows run/pause/stop buttons (default)\n * - 'without_pause': Shows only run/stop buttons\n */\n variant?: \"with_pause\" | \"without_pause\"\n /** Additional CSS class name */\n className?: string\n}\n\ninterface ButtonConfig {\n enabled: boolean\n label: string\n color: string\n onClick: () => void\n}\n\n/**\n * A control component for program execution with run, pause, and stop functionality.\n *\n * Features:\n * - State machine with idle, preparing, starting, running, pausing, paused, stopping, completed, failed, stopped, and error states\n * - Two variants: with_pause (3 buttons) and without_pause (2 buttons)\n * - Optional manual reset functionality\n * - Responsive design with 110px circular buttons\n * - Material-UI theming integration\n */\nexport const ProgramControl = externalizeComponent(\n observer(\n ({\n state,\n onRun,\n onPause,\n onStop,\n onReset,\n requiresManualReset = false,\n variant = \"with_pause\",\n className,\n }: ProgramControlProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getButtonConfigs = (): ButtonConfig[] => {\n const baseConfigs: Record<string, ButtonConfig> = {\n run: {\n enabled:\n state === ProgramState.IDLE ||\n state === ProgramState.STOPPED ||\n state === ProgramState.PAUSED ||\n state === ProgramState.COMPLETED ||\n state === ProgramState.FAILED ||\n state === ProgramState.ERROR,\n label:\n state === ProgramState.PAUSED\n ? t(\"ProgramControl.Resume.bt\")\n : state === ProgramState.ERROR || state === ProgramState.FAILED\n ? t(\"ProgramControl.Retry.bt\")\n : t(\"ProgramControl.Start.bt\"),\n color: theme.palette.success.main,\n onClick: onRun,\n },\n pause: {\n enabled: state === ProgramState.RUNNING,\n label: t(\"ProgramControl.Pause.bt\"),\n color: \"#FFFFFF33\",\n onClick: onPause || (() => {}),\n },\n stop: {\n enabled:\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.RUNNING ||\n state === ProgramState.PAUSING ||\n state === ProgramState.PAUSED,\n label: t(\"ProgramControl.Stop.bt\"),\n color: theme.palette.error.main,\n onClick: onStop,\n },\n }\n\n if (variant === \"without_pause\") {\n return [baseConfigs.run, baseConfigs.stop]\n }\n\n return [baseConfigs.run, baseConfigs.pause, baseConfigs.stop]\n }\n\n const getButtonIcon = (index: number) => {\n const iconProps = { sx: { fontSize: \"55px\" } }\n\n if (variant === \"without_pause\") {\n return index === 0 ? (\n <PlayArrow {...iconProps} />\n ) : (\n <Stop {...iconProps} />\n )\n }\n\n switch (index) {\n case 0:\n return <PlayArrow {...iconProps} />\n case 1:\n return <Pause {...iconProps} />\n case 2:\n return <Stop {...iconProps} />\n default:\n return null\n }\n }\n\n const buttonConfigs = getButtonConfigs()\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n gap: \"40px\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n {buttonConfigs.map((config, index) => (\n <Box\n key={config.label}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Button\n variant=\"contained\"\n disabled={\n !config.enabled ||\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.PAUSING ||\n (state === ProgramState.STOPPING && !requiresManualReset)\n }\n onClick={config.onClick}\n sx={{\n width: \"88px\",\n height: \"88px\",\n borderRadius: \"88px\",\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n \"&:hover\": {\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(\n state === ProgramState.STOPPING &&\n !requiresManualReset\n )\n ? 0.8\n : 0.3,\n },\n \"&:disabled\": {\n backgroundColor: config.color,\n opacity: 0.3,\n },\n minWidth: \"88px\",\n flexShrink: 0,\n }}\n >\n {getButtonIcon(index)}\n </Button>\n\n <Typography\n variant=\"body1\"\n sx={{\n color:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? config.color\n : theme.palette.text.disabled,\n textAlign: \"center\",\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n }}\n >\n {config.label}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n },\n ),\n)\n\nexport default ProgramControl\n"],"names":["ProgramState","ProgramControl","externalizeComponent","observer","state","onRun","onPause","onStop","onReset","requiresManualReset","variant","className","theme","useTheme","t","useTranslation","getButtonConfigs","baseConfigs","getButtonIcon","index","iconProps","jsx","PlayArrow","Stop","Pause","buttonConfigs","Box","config","jsxs","Button","Typography"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramControl.d.ts","sourceRoot":"","sources":["../../src/components/ProgramControl.tsx"],"names":[],"mappings":"AAWA,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,YAAY,CAAA;IACnB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,qDAAqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAAA;IACxC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,0FAWpB,mBAAmB;;CAsLzB,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramControl.js","sources":["../../src/components/ProgramControl.tsx"],"sourcesContent":["import Pause from \"@mui/icons-material/Pause\"\nimport PlayArrow from \"@mui/icons-material/PlayArrow\"\nimport Stop from \"@mui/icons-material/Stop\"\nimport { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Button from \"@mui/material/Button\"\nimport Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport enum ProgramState {\n IDLE = \"idle\",\n PREPARING = \"preparing\",\n STARTING = \"starting\",\n RUNNING = \"running\",\n PAUSING = \"pausing\",\n PAUSED = \"paused\",\n STOPPING = \"stopping\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n STOPPED = \"stopped\",\n ERROR = \"error\",\n}\n\nexport interface ProgramControlProps {\n /** The current state of the program control */\n state: ProgramState\n /** Callback fired when the run/resume button is clicked */\n onRun: () => void\n /** Callback fired when the pause button is clicked (only available in 'with_pause' variant) */\n onPause?: () => void\n /** Callback fired when the stop button is clicked */\n onStop: () => void\n /**\n * Function to reset the component from 'stopping' state back to 'idle'.\n * This must be called manually by the user when requiresManualReset is true.\n */\n onReset?: () => void\n /**\n * When true, the component will stay in 'stopping' state until onReset is called manually.\n * When false (default), auto-resets to 'idle' after 2 seconds.\n */\n requiresManualReset?: boolean\n /**\n * Variant of the component:\n * - 'with_pause': Shows run/pause/stop buttons (default)\n * - 'without_pause': Shows only run/stop buttons\n */\n variant?: \"with_pause\" | \"without_pause\"\n /** Additional CSS class name */\n className?: string\n}\n\ninterface ButtonConfig {\n enabled: boolean\n label: string\n color: string\n onClick: () => void\n}\n\n/**\n * A control component for program execution with run, pause, and stop functionality.\n *\n * Features:\n * - State machine with idle, preparing, starting, running, pausing, paused, stopping, completed, failed, stopped, and error states\n * - Two variants: with_pause (3 buttons) and without_pause (2 buttons)\n * - Optional manual reset functionality\n * - Responsive design with 110px circular buttons\n * - Material-UI theming integration\n */\nexport const ProgramControl = externalizeComponent(\n observer(\n ({\n state,\n onRun,\n onPause,\n onStop,\n onReset,\n requiresManualReset = false,\n variant = \"with_pause\",\n className,\n }: ProgramControlProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getButtonConfigs = (): ButtonConfig[] => {\n const baseConfigs: Record<string, ButtonConfig> = {\n run: {\n enabled:\n state === ProgramState.IDLE ||\n state === ProgramState.STOPPED ||\n state === ProgramState.PAUSED ||\n state === ProgramState.COMPLETED ||\n state === ProgramState.FAILED ||\n state === ProgramState.ERROR,\n label:\n state === ProgramState.PAUSED\n ? t(\"ProgramControl.Resume.bt\")\n : state === ProgramState.ERROR || state === ProgramState.FAILED\n ? t(\"ProgramControl.Retry.bt\")\n : t(\"ProgramControl.Start.bt\"),\n color: theme.palette.success.main,\n onClick: onRun,\n },\n pause: {\n enabled: state === ProgramState.RUNNING,\n label: t(\"ProgramControl.Pause.bt\"),\n color: \"#FFFFFF33\",\n onClick: onPause || (() => {}),\n },\n stop: {\n enabled:\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.RUNNING ||\n state === ProgramState.PAUSING ||\n state === ProgramState.PAUSED,\n label: t(\"ProgramControl.Stop.bt\"),\n color: theme.palette.error.main,\n onClick: onStop,\n },\n }\n\n if (variant === \"without_pause\") {\n return [baseConfigs.run, baseConfigs.stop]\n }\n\n return [baseConfigs.run, baseConfigs.pause, baseConfigs.stop]\n }\n\n const getButtonIcon = (index: number) => {\n const iconProps = { sx: { fontSize: \"55px\" } }\n\n if (variant === \"without_pause\") {\n return index === 0 ? (\n <PlayArrow {...iconProps} />\n ) : (\n <Stop {...iconProps} />\n )\n }\n\n switch (index) {\n case 0:\n return <PlayArrow {...iconProps} />\n case 1:\n return <Pause {...iconProps} />\n case 2:\n return <Stop {...iconProps} />\n default:\n return null\n }\n }\n\n const buttonConfigs = getButtonConfigs()\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 2,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n gap: \"40px\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n {buttonConfigs.map((config, index) => (\n <Box\n key={config.label}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Button\n variant=\"contained\"\n disabled={\n !config.enabled ||\n state === ProgramState.PREPARING ||\n state === ProgramState.STARTING ||\n state === ProgramState.PAUSING ||\n (state === ProgramState.STOPPING && !requiresManualReset)\n }\n onClick={config.onClick}\n sx={{\n width: \"88px\",\n height: \"88px\",\n borderRadius: \"88px\",\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n \"&:hover\": {\n backgroundColor: config.color,\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(\n state === ProgramState.STOPPING &&\n !requiresManualReset\n )\n ? 0.8\n : 0.3,\n },\n \"&:disabled\": {\n backgroundColor: config.color,\n opacity: 0.3,\n },\n minWidth: \"88px\",\n flexShrink: 0,\n }}\n >\n {getButtonIcon(index)}\n </Button>\n\n <Typography\n variant=\"body1\"\n sx={{\n color:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? config.color\n : theme.palette.text.disabled,\n textAlign: \"center\",\n opacity:\n config.enabled &&\n state !== ProgramState.PREPARING &&\n state !== ProgramState.STARTING &&\n state !== ProgramState.PAUSING &&\n !(state === ProgramState.STOPPING && !requiresManualReset)\n ? 1\n : 0.3,\n }}\n >\n {config.label}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n },\n ),\n)\n\nexport default ProgramControl\n"],"names":["ProgramState","ProgramControl","externalizeComponent","observer","state","onRun","onPause","onStop","onReset","requiresManualReset","variant","className","theme","useTheme","t","useTranslation","getButtonConfigs","baseConfigs","getButtonIcon","index","iconProps","jsx","PlayArrow","Stop","Pause","buttonConfigs","Box","config","jsxs","Button","Typography"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramStateIndicator.cjs","sources":["../../src/components/ProgramStateIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Chip from \"@mui/material/Chip\"\nimport Typography from \"@mui/material/Typography\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { ProgramState } from \"./ProgramControl\"\n\nexport interface ProgramStateIndicatorProps {\n /** The current state of the program */\n programState: ProgramState\n /** The current safety state of the robot controller */\n safetyState: SafetyStateType\n /** The current operation mode of the robot controller */\n operationMode: OperationMode\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current program execution state\n * combined with robot controller safety and operation mode states.\n *\n * Features:\n * - Combines program state with safety and operation mode states\n * - Color-coded based on state severity (success, warning, error)\n * - Rendered as Material-UI filled chip\n * - Localization support via react-i18next\n */\nexport const ProgramStateIndicator = externalizeComponent(\n observer(\n ({\n programState,\n safetyState,\n operationMode,\n className,\n }: ProgramStateIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n // First check for emergency stop or critical safety states\n if (\n safetyState === \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP_0\" ||\n safetyState === \"SAFETY_STATE_STOP_1\" ||\n safetyState === \"SAFETY_STATE_STOP_2\" ||\n safetyState === \"SAFETY_STATE_PROTECTIVE_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP\" ||\n safetyState === \"SAFETY_STATE_REDUCED\" ||\n safetyState === \"SAFETY_STATE_MASTERING\" ||\n safetyState === \"SAFETY_STATE_CONFIRM_SAFETY\" ||\n safetyState === \"SAFETY_STATE_OPERATOR_SAFETY\" ||\n safetyState === \"SAFETY_STATE_RECOVERY\" ||\n safetyState === \"SAFETY_STATE_VIOLATION\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.EStop.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // Check for error states\n if (\n safetyState === \"SAFETY_STATE_UNKNOWN\" ||\n safetyState === \"SAFETY_STATE_FAULT\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // For normal safety states, check program state\n if (safetyState === \"SAFETY_STATE_NORMAL\") {\n switch (programState) {\n case ProgramState.PREPARING:\n return {\n label: t(\"ProgramStateIndicator.Preparing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.STARTING:\n return {\n label: t(\"ProgramStateIndicator.Starting.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.RUNNING:\n return {\n label: t(\"ProgramStateIndicator.Running.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.PAUSING:\n return {\n label: t(\"ProgramStateIndicator.Pausing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.PAUSED:\n return {\n label: t(\"ProgramStateIndicator.Paused.lb\"),\n color: theme.palette.grey[600],\n }\n case ProgramState.STOPPING:\n return {\n label: t(\"ProgramStateIndicator.Stopping.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.COMPLETED:\n return {\n label: t(\"ProgramStateIndicator.Completed.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.FAILED:\n return {\n label: t(\"ProgramStateIndicator.Failed.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.STOPPED:\n return {\n label: t(\"ProgramStateIndicator.Stopped.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.ERROR:\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n default:\n return {\n label: t(\"ProgramStateIndicator.Ready.lb\"),\n color: theme.palette.success.main,\n }\n }\n }\n\n // Default fallback\n return {\n label: t(\"ProgramStateIndicator.Idle.lb\"),\n color: theme.palette.grey[600],\n }\n }\n\n const { label, color } = getStateInfo()\n\n // Add operation mode suffix if not automatic\n const getOperationModeText = () => {\n switch (operationMode) {\n case \"OPERATION_MODE_AUTO\":\n return t(\"ProgramStateIndicator.Auto.lb\")\n case \"OPERATION_MODE_MANUAL\":\n return t(\"ProgramStateIndicator.Manual.lb\")\n case \"OPERATION_MODE_MANUAL_T1\":\n return t(\"ProgramStateIndicator.ManualT1.lb\")\n case \"OPERATION_MODE_MANUAL_T2\":\n return t(\"ProgramStateIndicator.ManualT2.lb\")\n default:\n return t(\"ProgramStateIndicator.Auto.lb\") // Default to Auto for unknown modes\n }\n }\n\n const fullLabel = `${label} / ${getOperationModeText()}`\n\n return (\n <Chip\n className={className}\n label={\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {fullLabel}\n </Typography>\n }\n variant=\"filled\"\n sx={{\n backgroundColor: color,\n color: theme.palette.getContrastText(color),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n },\n ),\n)\n\nexport default ProgramStateIndicator\n"],"names":["ProgramStateIndicator","externalizeComponent","observer","programState","safetyState","operationMode","className","theme","useTheme","t","useTranslation","getStateInfo","ProgramState","label","color","fullLabel","jsx","Chip","Typography"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramStateIndicator.d.ts","sourceRoot":"","sources":["../../src/components/ProgramStateIndicator.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAI5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAA;IAC1B,uDAAuD;IACvD,WAAW,EAAE,eAAe,CAAA;IAC5B,yDAAyD;IACzD,aAAa,EAAE,aAAa,CAAA;IAC5B,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,8DAO3B,0BAA0B;;CA2JhC,CAAA;AAED,eAAe,qBAAqB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramStateIndicator.js","sources":["../../src/components/ProgramStateIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Chip from \"@mui/material/Chip\"\nimport Typography from \"@mui/material/Typography\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { ProgramState } from \"./ProgramControl\"\n\nexport interface ProgramStateIndicatorProps {\n /** The current state of the program */\n programState: ProgramState\n /** The current safety state of the robot controller */\n safetyState: SafetyStateType\n /** The current operation mode of the robot controller */\n operationMode: OperationMode\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current program execution state\n * combined with robot controller safety and operation mode states.\n *\n * Features:\n * - Combines program state with safety and operation mode states\n * - Color-coded based on state severity (success, warning, error)\n * - Rendered as Material-UI filled chip\n * - Localization support via react-i18next\n */\nexport const ProgramStateIndicator = externalizeComponent(\n observer(\n ({\n programState,\n safetyState,\n operationMode,\n className,\n }: ProgramStateIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n // First check for emergency stop or critical safety states\n if (\n safetyState === \"SAFETY_STATE_DEVICE_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_ROBOT_EMERGENCY_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP_0\" ||\n safetyState === \"SAFETY_STATE_STOP_1\" ||\n safetyState === \"SAFETY_STATE_STOP_2\" ||\n safetyState === \"SAFETY_STATE_PROTECTIVE_STOP\" ||\n safetyState === \"SAFETY_STATE_STOP\" ||\n safetyState === \"SAFETY_STATE_REDUCED\" ||\n safetyState === \"SAFETY_STATE_MASTERING\" ||\n safetyState === \"SAFETY_STATE_CONFIRM_SAFETY\" ||\n safetyState === \"SAFETY_STATE_OPERATOR_SAFETY\" ||\n safetyState === \"SAFETY_STATE_RECOVERY\" ||\n safetyState === \"SAFETY_STATE_VIOLATION\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.EStop.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // Check for error states\n if (\n safetyState === \"SAFETY_STATE_UNKNOWN\" ||\n safetyState === \"SAFETY_STATE_FAULT\"\n ) {\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n }\n\n // For normal safety states, check program state\n if (safetyState === \"SAFETY_STATE_NORMAL\") {\n switch (programState) {\n case ProgramState.PREPARING:\n return {\n label: t(\"ProgramStateIndicator.Preparing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.STARTING:\n return {\n label: t(\"ProgramStateIndicator.Starting.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.RUNNING:\n return {\n label: t(\"ProgramStateIndicator.Running.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.PAUSING:\n return {\n label: t(\"ProgramStateIndicator.Pausing.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.PAUSED:\n return {\n label: t(\"ProgramStateIndicator.Paused.lb\"),\n color: theme.palette.grey[600],\n }\n case ProgramState.STOPPING:\n return {\n label: t(\"ProgramStateIndicator.Stopping.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.COMPLETED:\n return {\n label: t(\"ProgramStateIndicator.Completed.lb\"),\n color: theme.palette.success.main,\n }\n case ProgramState.FAILED:\n return {\n label: t(\"ProgramStateIndicator.Failed.lb\"),\n color: theme.palette.error.main,\n }\n case ProgramState.STOPPED:\n return {\n label: t(\"ProgramStateIndicator.Stopped.lb\"),\n color: theme.palette.warning.main,\n }\n case ProgramState.ERROR:\n return {\n label: t(\"ProgramStateIndicator.Error.lb\"),\n color: theme.palette.error.main,\n }\n default:\n return {\n label: t(\"ProgramStateIndicator.Ready.lb\"),\n color: theme.palette.success.main,\n }\n }\n }\n\n // Default fallback\n return {\n label: t(\"ProgramStateIndicator.Idle.lb\"),\n color: theme.palette.grey[600],\n }\n }\n\n const { label, color } = getStateInfo()\n\n // Add operation mode suffix if not automatic\n const getOperationModeText = () => {\n switch (operationMode) {\n case \"OPERATION_MODE_AUTO\":\n return t(\"ProgramStateIndicator.Auto.lb\")\n case \"OPERATION_MODE_MANUAL\":\n return t(\"ProgramStateIndicator.Manual.lb\")\n case \"OPERATION_MODE_MANUAL_T1\":\n return t(\"ProgramStateIndicator.ManualT1.lb\")\n case \"OPERATION_MODE_MANUAL_T2\":\n return t(\"ProgramStateIndicator.ManualT2.lb\")\n default:\n return t(\"ProgramStateIndicator.Auto.lb\") // Default to Auto for unknown modes\n }\n }\n\n const fullLabel = `${label} / ${getOperationModeText()}`\n\n return (\n <Chip\n className={className}\n label={\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {fullLabel}\n </Typography>\n }\n variant=\"filled\"\n sx={{\n backgroundColor: color,\n color: theme.palette.getContrastText(color),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n },\n ),\n)\n\nexport default ProgramStateIndicator\n"],"names":["ProgramStateIndicator","externalizeComponent","observer","programState","safetyState","operationMode","className","theme","useTheme","t","useTranslation","getStateInfo","ProgramState","label","color","fullLabel","jsx","Chip","Typography"],"mappings":";;;;;;;;AA8BO,MAAMA,IAAwBC;AAAA,EACnCC;AAAA,IACE,CAAC;AAAA,MACC,cAAAC;AAAA,MACA,aAAAC;AAAA,MACA,eAAAC;AAAA,MACA,WAAAC;AAAA,IAAA,MACgC;AAChC,YAAMC,IAAQC,EAAA,GACR,EAAE,GAAAC,EAAA,IAAMC,EAAA,GAERC,IAAe,MAAM;AAEzB,YACEP,MAAgB,wCAChBA,MAAgB,uCAChBA,MAAgB,yBAChBA,MAAgB,yBAChBA,MAAgB,yBAChBA,MAAgB,kCAChBA,MAAgB,uBAChBA,MAAgB,0BAChBA,MAAgB,4BAChBA,MAAgB,iCAChBA,MAAgB,kCAChBA,MAAgB,2BAChBA,MAAgB;AAEhB,iBAAO;AAAA,YACL,OAAOK,EAAE,gCAAgC;AAAA,YACzC,OAAOF,EAAM,QAAQ,MAAM;AAAA,UAAA;AAK/B,YACEH,MAAgB,0BAChBA,MAAgB;AAEhB,iBAAO;AAAA,YACL,OAAOK,EAAE,gCAAgC;AAAA,YACzC,OAAOF,EAAM,QAAQ,MAAM;AAAA,UAAA;AAK/B,YAAIH,MAAgB;AAClB,kBAAQD,GAAA;AAAA,YACN,KAAKS,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,oCAAoC;AAAA,gBAC7C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,mCAAmC;AAAA,gBAC5C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,kCAAkC;AAAA,gBAC3C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,kCAAkC;AAAA,gBAC3C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,iCAAiC;AAAA,gBAC1C,OAAOF,EAAM,QAAQ,KAAK,GAAG;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,mCAAmC;AAAA,gBAC5C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,oCAAoC;AAAA,gBAC7C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,iCAAiC;AAAA,gBAC1C,OAAOF,EAAM,QAAQ,MAAM;AAAA,cAAA;AAAA,YAE/B,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,kCAAkC;AAAA,gBAC3C,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,YAEjC,KAAKK,EAAa;AAChB,qBAAO;AAAA,gBACL,OAAOH,EAAE,gCAAgC;AAAA,gBACzC,OAAOF,EAAM,QAAQ,MAAM;AAAA,cAAA;AAAA,YAE/B;AACE,qBAAO;AAAA,gBACL,OAAOE,EAAE,gCAAgC;AAAA,gBACzC,OAAOF,EAAM,QAAQ,QAAQ;AAAA,cAAA;AAAA,UAC/B;AAKN,eAAO;AAAA,UACL,OAAOE,EAAE,+BAA+B;AAAA,UACxC,OAAOF,EAAM,QAAQ,KAAK,GAAG;AAAA,QAAA;AAAA,MAEjC,GAEM,EAAE,OAAAM,GAAO,OAAAC,EAAA,IAAUH,EAAA,GAkBnBI,IAAY,GAAGF,CAAK,OAfG,MAAM;AACjC,gBAAQR,GAAA;AAAA,UACN,KAAK;AACH,mBAAOI,EAAE,+BAA+B;AAAA,UAC1C,KAAK;AACH,mBAAOA,EAAE,iCAAiC;AAAA,UAC5C,KAAK;AACH,mBAAOA,EAAE,mCAAmC;AAAA,UAC9C,KAAK;AACH,mBAAOA,EAAE,mCAAmC;AAAA,UAC9C;AACE,mBAAOA,EAAE,+BAA+B;AAAA,QAAA;AAAA,MAE9C,IAEsD;AAEtD,aACE,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAAX;AAAA,UACA,OACE,gBAAAU;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,IAAI;AAAA,gBACF,UAAU;AAAA;AAAA,gBACV,YAAY;AAAA,cAAA;AAAA,cAGb,UAAAH;AAAA,YAAA;AAAA,UAAA;AAAA,UAGL,SAAQ;AAAA,UACR,IAAI;AAAA,YACF,iBAAiBD;AAAA,YACjB,OAAOP,EAAM,QAAQ,gBAAgBO,CAAK;AAAA,YAC1C,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,oBAAoB;AAAA,cAClB,UAAU;AAAA,cACV,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,QACF;AAAA,MAAA;AAAA,IAGN;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotCard.cjs","sources":["../../src/components/RobotCard.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Button from \"@mui/material/Button\"\nimport Card from \"@mui/material/Card\"\nimport Divider from \"@mui/material/Divider\"\nimport Typography from \"@mui/material/Typography\"\nimport { Bounds } from \"@react-three/drei\"\nimport { Canvas } from \"@react-three/fiber\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport type { Group } from \"three\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport type { ConnectedMotionGroup } from \"../lib/ConnectedMotionGroup\"\nimport { PresetEnvironment } from \"./3d-viewport/PresetEnvironment\"\nimport type { ProgramState } from \"./ProgramControl\"\nimport { ProgramStateIndicator } from \"./ProgramStateIndicator\"\nimport { Robot } from \"./robots/Robot\"\n\nexport interface RobotCardProps {\n /** Name of the robot displayed at the top */\n robotName: string\n /** Current program state */\n programState: ProgramState\n /** Current safety state of the robot controller */\n safetyState: SafetyStateType\n /** Current operation mode of the robot controller */\n operationMode: OperationMode\n /** Whether the \"Drive to Home\" button should be enabled */\n driveToHomeEnabled?: boolean\n /** Callback fired when \"Drive to Home\" button is pressed */\n onDriveToHomePress?: () => void\n /** Callback fired when \"Drive to Home\" button is released */\n onDriveToHomeRelease?: () => void\n /**\n * Callback fired when \"Drive to Home\" button is pressed, with the default home position.\n * If provided, this will be called instead of onDriveToHomePress, providing the recommended\n * home position joint configuration based on the robot manufacturer.\n */\n onDriveToHomePressWithConfig?: (homePosition: number[]) => void\n /**\n * Callback fired when \"Drive to Home\" button is released after using onDriveToHomePressWithConfig.\n * If provided, this will be called instead of onDriveToHomeRelease.\n */\n onDriveToHomeReleaseWithConfig?: () => void\n /**\n * Custom default joint configuration to use if manufacturer-based defaults are not available.\n * Joint values should be in radians.\n */\n defaultJointConfig?: number[]\n /** Connected motion group for the robot */\n connectedMotionGroup: ConnectedMotionGroup\n /** Custom robot component to render (optional, defaults to Robot) */\n robotComponent?: React.ComponentType<{\n connectedMotionGroup: ConnectedMotionGroup\n flangeRef?: React.Ref<Group>\n postModelRender?: () => void\n transparentColor?: string\n getModel?: (modelFromController: string) => Promise<string>\n }>\n /** Custom component to render in the content area (optional) */\n customContentComponent?: React.ComponentType<Record<string, unknown>>\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A responsive card component that displays a 3D robot with states and controls.\n * The card automatically adapts to its container's size and aspect ratio.\n *\n * Features:\n * - Fully responsive Material-UI Card that adapts to container dimensions\n * - Automatic layout switching based on aspect ratio:\n * - Portrait mode: Vertical layout with robot in center\n * - Landscape mode: Horizontal layout with robot on left, content on right (left-aligned)\n * - Responsive 3D robot rendering:\n * - Scales dynamically with container size\n * - Hides at very small sizes to preserve usability\n * - Adaptive margin based on available space\n * - Smart spacing and padding that reduces at smaller sizes\n * - Minimum size constraints for usability while maximizing content density\n * - Robot name displayed in Typography h6 at top-left\n * - Program state indicator below the name\n * - Auto-fitting 3D robot model that scales with container size\n * - Customizable content area for displaying custom React components\n * - Transparent gray divider line\n * - \"Drive to Home\" button with press-and-hold functionality\n * - Localization support via react-i18next\n * - Material-UI theming integration\n *\n * Usage with custom content:\n * ```tsx\n * // Example custom timer component\n * const CustomTimer = () => (\n * <Box>\n * <Typography variant=\"body1\" sx={{ color: \"text.secondary\" }}>\n * Runtime\n * </Typography>\n * <Typography variant=\"h6\">05:23</Typography>\n * </Box>\n * )\n *\n * <RobotCard\n * robotName=\"UR5e Robot\"\n * programState={ProgramState.RUNNING}\n * customContentComponent={CustomTimer}\n * // ... other props\n * />\n * ```\n */\nexport const RobotCard = externalizeComponent(\n observer(\n ({\n robotName,\n programState,\n safetyState,\n operationMode,\n driveToHomeEnabled = false,\n onDriveToHomePress,\n onDriveToHomeRelease,\n connectedMotionGroup,\n robotComponent: RobotComponent = Robot,\n customContentComponent: CustomContentComponent,\n className,\n }: RobotCardProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n const [isDriveToHomePressed, setIsDriveToHomePressed] = useState(false)\n const driveButtonRef = useRef<HTMLButtonElement>(null)\n const cardRef = useRef<HTMLDivElement>(null)\n const [isLandscape, setIsLandscape] = useState(false)\n const [cardSize, setCardSize] = useState<{\n width: number\n height: number\n }>({ width: 400, height: 600 })\n const [modelRenderTrigger, setModelRenderTrigger] = useState(0)\n\n // Hook to detect aspect ratio and size changes\n useEffect(() => {\n const checkDimensions = () => {\n if (cardRef.current) {\n const { offsetWidth, offsetHeight } = cardRef.current\n setIsLandscape(offsetWidth > offsetHeight)\n setCardSize({ width: offsetWidth, height: offsetHeight })\n }\n }\n\n // Initial check\n checkDimensions()\n\n // Set up ResizeObserver to watch for size changes\n const resizeObserver = new ResizeObserver(checkDimensions)\n if (cardRef.current) {\n resizeObserver.observe(cardRef.current)\n }\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n const handleModelRender = useCallback(() => {\n // Trigger bounds refresh when model renders\n setModelRenderTrigger((prev) => prev + 1)\n }, [])\n\n const handleDriveToHomeMouseDown = useCallback(() => {\n if (!driveToHomeEnabled || !onDriveToHomePress) return\n setIsDriveToHomePressed(true)\n onDriveToHomePress()\n }, [driveToHomeEnabled, onDriveToHomePress])\n\n const handleDriveToHomeMouseUp = useCallback(() => {\n if (!driveToHomeEnabled || !onDriveToHomeRelease) return\n setIsDriveToHomePressed(false)\n onDriveToHomeRelease()\n }, [driveToHomeEnabled, onDriveToHomeRelease])\n\n const handleDriveToHomeMouseLeave = useCallback(() => {\n if (isDriveToHomePressed && onDriveToHomeRelease) {\n setIsDriveToHomePressed(false)\n onDriveToHomeRelease()\n }\n }, [isDriveToHomePressed, onDriveToHomeRelease])\n\n // Determine if robot should be hidden at small sizes to save space\n const shouldHideRobot = isLandscape\n ? cardSize.width < 350\n : cardSize.height < 200 // Hide robot at height < 200px in portrait\n\n // Determine if custom content should be hidden when height is too low\n // Custom content should be hidden BEFORE the robot (at higher threshold)\n const shouldHideCustomContent = isLandscape\n ? cardSize.height < 310 // Landscape: hide custom content at height < 310px\n : cardSize.height < 450 // Portrait: hide custom content at height < 450px\n\n return (\n <Card\n ref={cardRef}\n className={className}\n sx={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: isLandscape ? \"row\" : \"column\",\n position: \"relative\",\n overflow: \"hidden\",\n minWidth: { xs: 180, sm: 220, md: 250 },\n minHeight: isLandscape\n ? { xs: 200, sm: 240, md: 260 } // Allow runtime hiding at < 283px\n : { xs: 150, sm: 180, md: 220 }, // Allow progressive hiding in portrait mode\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: \"18px\",\n boxShadow: \"none\",\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[8] || \"#2A2A3F\",\n backgroundImage: \"none\", // Override any gradient from elevation\n }}\n >\n {isLandscape ? (\n <>\n {/* Landscape Layout: Robot on left, content on right */}\n <Box\n sx={{\n flex: \"0 0 50%\",\n position: \"relative\",\n height: \"100%\",\n minHeight: \"100%\",\n maxHeight: \"100%\",\n borderRadius: 1,\n m: { xs: 1.5, sm: 2, md: 3 },\n mr: { xs: 0.75, sm: 1, md: 1.5 },\n overflow: \"hidden\", // Prevent content from affecting container size\n display: shouldHideRobot ? \"none\" : \"block\",\n }}\n >\n {!shouldHideRobot && (\n <Canvas\n orthographic\n camera={{\n position: [3, 2, 3],\n zoom: 1,\n }}\n shadows\n frameloop=\"demand\"\n style={{\n borderRadius: theme.shape.borderRadius,\n width: \"100%\",\n height: \"100%\",\n background: \"transparent\",\n position: \"absolute\",\n top: 0,\n left: 0,\n }}\n dpr={[1, 2]}\n gl={{ alpha: true, antialias: true }}\n >\n <PresetEnvironment />\n <Bounds fit observe margin={1} maxDuration={1}>\n <RobotComponent\n connectedMotionGroup={connectedMotionGroup}\n postModelRender={handleModelRender}\n />\n </Bounds>\n </Canvas>\n )}\n </Box>\n\n {/* Content container on right */}\n <Box\n sx={{\n flex: shouldHideRobot ? \"1\" : \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: shouldHideRobot ? \"100%\" : \"50%\",\n }}\n >\n {/* Header section with robot name and program state */}\n <Box\n sx={{\n p: { xs: 1.5, sm: 2, md: 3 },\n pb: { xs: 1, sm: 1.5, md: 2 },\n textAlign: \"left\",\n }}\n >\n <Typography variant=\"h6\" component=\"h2\" sx={{ mb: 1 }}>\n {robotName}\n </Typography>\n <ProgramStateIndicator\n programState={programState}\n safetyState={safetyState}\n operationMode={operationMode}\n />\n </Box>\n\n {/* Bottom section with custom content and button */}\n <Box\n sx={{\n p: { xs: 1.5, sm: 2, md: 3 },\n pt: 0,\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n }}\n >\n {/* Custom content section - hidden if height is too low in landscape mode */}\n {!shouldHideCustomContent && CustomContentComponent && (\n <Box>\n <CustomContentComponent />\n\n {/* Divider */}\n <Divider\n sx={{\n mt: 1,\n mb: 0,\n borderColor: theme.palette.divider,\n opacity: 0.5,\n }}\n />\n </Box>\n )}\n\n <Box\n sx={{\n mt:\n !shouldHideCustomContent && CustomContentComponent\n ? \"auto\"\n : 0,\n }}\n >\n {/* Drive to Home button with some space */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n mt: { xs: 1, sm: 1.5, md: 2 },\n mb: { xs: 0.5, sm: 0.75, md: 1 },\n }}\n >\n <Button\n ref={driveButtonRef}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n disabled={!driveToHomeEnabled}\n onMouseDown={handleDriveToHomeMouseDown}\n onMouseUp={handleDriveToHomeMouseUp}\n onMouseLeave={handleDriveToHomeMouseLeave}\n onTouchStart={handleDriveToHomeMouseDown}\n onTouchEnd={handleDriveToHomeMouseUp}\n sx={{\n textTransform: \"none\",\n px: 1.5,\n py: 0.5,\n }}\n >\n {t(\"RobotCard.DriveToHome.bt\")}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </>\n ) : (\n <>\n {/* Portrait Layout: Header, Robot, Footer */}\n <Box\n sx={{\n p: 3,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* Header section with robot name and program state */}\n <Box>\n <Typography variant=\"h6\" component=\"h2\" sx={{ mb: 1 }}>\n {robotName}\n </Typography>\n <ProgramStateIndicator\n programState={programState}\n safetyState={safetyState}\n operationMode={operationMode}\n />\n </Box>\n\n {/* 3D Robot viewport in center */}\n <Box\n sx={{\n flex: shouldHideRobot ? 0 : 1,\n position: \"relative\",\n minHeight: shouldHideRobot\n ? 0\n : { xs: 120, sm: 150, md: 200 },\n height: shouldHideRobot ? 0 : \"auto\",\n borderRadius: 1,\n overflow: \"hidden\",\n display: shouldHideRobot ? \"none\" : \"block\",\n }}\n >\n {!shouldHideRobot && (\n <Canvas\n orthographic\n camera={{\n position: [3, 2, 3],\n zoom: 1,\n }}\n shadows\n frameloop=\"demand\"\n style={{\n borderRadius: theme.shape.borderRadius,\n width: \"100%\",\n height: \"100%\",\n background: \"transparent\",\n position: \"absolute\",\n }}\n dpr={[1, 2]}\n gl={{ alpha: true, antialias: true }}\n >\n <PresetEnvironment />\n <Bounds fit clip observe margin={1} maxDuration={1}>\n <RobotComponent\n connectedMotionGroup={connectedMotionGroup}\n postModelRender={handleModelRender}\n />\n </Bounds>\n </Canvas>\n )}\n </Box>\n\n {/* Bottom section with custom content and button */}\n <Box>\n {/* Custom content section - hidden if height is too low */}\n {!shouldHideCustomContent && CustomContentComponent && (\n <>\n <CustomContentComponent />\n\n {/* Divider */}\n <Divider\n sx={{\n mt: 1,\n mb: 0,\n borderColor: theme.palette.divider,\n opacity: 0.5,\n }}\n />\n </>\n )}\n\n {/* Drive to Home button with some space */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n mt:\n !shouldHideCustomContent && CustomContentComponent\n ? { xs: 1, sm: 2, md: 5 }\n : { xs: 0.5, sm: 1, md: 2 },\n mb: { xs: 0.5, sm: 0.75, md: 1 },\n }}\n >\n <Button\n ref={driveButtonRef}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n disabled={!driveToHomeEnabled}\n onMouseDown={handleDriveToHomeMouseDown}\n onMouseUp={handleDriveToHomeMouseUp}\n onMouseLeave={handleDriveToHomeMouseLeave}\n onTouchStart={handleDriveToHomeMouseDown}\n onTouchEnd={handleDriveToHomeMouseUp}\n sx={{\n textTransform: \"none\",\n px: 1.5,\n py: 0.5,\n }}\n >\n {t(\"RobotCard.DriveToHome.bt\")}\n </Button>\n </Box>\n </Box>\n </Box>\n </>\n )}\n </Card>\n )\n },\n ),\n)\n\nexport default RobotCard\n"],"names":["RobotCard","externalizeComponent","observer","robotName","programState","safetyState","operationMode","driveToHomeEnabled","onDriveToHomePress","onDriveToHomeRelease","connectedMotionGroup","RobotComponent","Robot","CustomContentComponent","className","theme","useTheme","t","useTranslation","isDriveToHomePressed","setIsDriveToHomePressed","useState","driveButtonRef","useRef","cardRef","isLandscape","setIsLandscape","cardSize","setCardSize","modelRenderTrigger","setModelRenderTrigger","useEffect","checkDimensions","offsetWidth","offsetHeight","resizeObserver","handleModelRender","useCallback","prev","handleDriveToHomeMouseDown","handleDriveToHomeMouseUp","handleDriveToHomeMouseLeave","shouldHideRobot","shouldHideCustomContent","jsx","Card","_a","jsxs","Fragment","Box","Canvas","PresetEnvironment","Bounds","Typography","ProgramStateIndicator","Divider","Button"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotCard.d.ts","sourceRoot":"","sources":["../../src/components/RobotCard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAI5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAIpD,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,mDAAmD;IACnD,WAAW,EAAE,eAAe,CAAA;IAC5B,qDAAqD;IACrD,aAAa,EAAE,aAAa,CAAA;IAC5B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC/D;;;OAGG;IACH,8BAA8B,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,2CAA2C;IAC3C,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,qEAAqE;IACrE,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACnC,oBAAoB,EAAE,oBAAoB,CAAA;QAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAC5D,CAAC,CAAA;IACF,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrE,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,SAAS,6OAcf,cAAc;;CA+WpB,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotCard.js","sources":["../../src/components/RobotCard.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Button from \"@mui/material/Button\"\nimport Card from \"@mui/material/Card\"\nimport Divider from \"@mui/material/Divider\"\nimport Typography from \"@mui/material/Typography\"\nimport { Bounds } from \"@react-three/drei\"\nimport { Canvas } from \"@react-three/fiber\"\nimport type { OperationMode, SafetyStateType } from \"@wandelbots/nova-js/v2\"\nimport { observer } from \"mobx-react-lite\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport type { Group } from \"three\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport type { ConnectedMotionGroup } from \"../lib/ConnectedMotionGroup\"\nimport { PresetEnvironment } from \"./3d-viewport/PresetEnvironment\"\nimport type { ProgramState } from \"./ProgramControl\"\nimport { ProgramStateIndicator } from \"./ProgramStateIndicator\"\nimport { Robot } from \"./robots/Robot\"\n\nexport interface RobotCardProps {\n /** Name of the robot displayed at the top */\n robotName: string\n /** Current program state */\n programState: ProgramState\n /** Current safety state of the robot controller */\n safetyState: SafetyStateType\n /** Current operation mode of the robot controller */\n operationMode: OperationMode\n /** Whether the \"Drive to Home\" button should be enabled */\n driveToHomeEnabled?: boolean\n /** Callback fired when \"Drive to Home\" button is pressed */\n onDriveToHomePress?: () => void\n /** Callback fired when \"Drive to Home\" button is released */\n onDriveToHomeRelease?: () => void\n /**\n * Callback fired when \"Drive to Home\" button is pressed, with the default home position.\n * If provided, this will be called instead of onDriveToHomePress, providing the recommended\n * home position joint configuration based on the robot manufacturer.\n */\n onDriveToHomePressWithConfig?: (homePosition: number[]) => void\n /**\n * Callback fired when \"Drive to Home\" button is released after using onDriveToHomePressWithConfig.\n * If provided, this will be called instead of onDriveToHomeRelease.\n */\n onDriveToHomeReleaseWithConfig?: () => void\n /**\n * Custom default joint configuration to use if manufacturer-based defaults are not available.\n * Joint values should be in radians.\n */\n defaultJointConfig?: number[]\n /** Connected motion group for the robot */\n connectedMotionGroup: ConnectedMotionGroup\n /** Custom robot component to render (optional, defaults to Robot) */\n robotComponent?: React.ComponentType<{\n connectedMotionGroup: ConnectedMotionGroup\n flangeRef?: React.Ref<Group>\n postModelRender?: () => void\n transparentColor?: string\n getModel?: (modelFromController: string) => Promise<string>\n }>\n /** Custom component to render in the content area (optional) */\n customContentComponent?: React.ComponentType<Record<string, unknown>>\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A responsive card component that displays a 3D robot with states and controls.\n * The card automatically adapts to its container's size and aspect ratio.\n *\n * Features:\n * - Fully responsive Material-UI Card that adapts to container dimensions\n * - Automatic layout switching based on aspect ratio:\n * - Portrait mode: Vertical layout with robot in center\n * - Landscape mode: Horizontal layout with robot on left, content on right (left-aligned)\n * - Responsive 3D robot rendering:\n * - Scales dynamically with container size\n * - Hides at very small sizes to preserve usability\n * - Adaptive margin based on available space\n * - Smart spacing and padding that reduces at smaller sizes\n * - Minimum size constraints for usability while maximizing content density\n * - Robot name displayed in Typography h6 at top-left\n * - Program state indicator below the name\n * - Auto-fitting 3D robot model that scales with container size\n * - Customizable content area for displaying custom React components\n * - Transparent gray divider line\n * - \"Drive to Home\" button with press-and-hold functionality\n * - Localization support via react-i18next\n * - Material-UI theming integration\n *\n * Usage with custom content:\n * ```tsx\n * // Example custom timer component\n * const CustomTimer = () => (\n * <Box>\n * <Typography variant=\"body1\" sx={{ color: \"text.secondary\" }}>\n * Runtime\n * </Typography>\n * <Typography variant=\"h6\">05:23</Typography>\n * </Box>\n * )\n *\n * <RobotCard\n * robotName=\"UR5e Robot\"\n * programState={ProgramState.RUNNING}\n * customContentComponent={CustomTimer}\n * // ... other props\n * />\n * ```\n */\nexport const RobotCard = externalizeComponent(\n observer(\n ({\n robotName,\n programState,\n safetyState,\n operationMode,\n driveToHomeEnabled = false,\n onDriveToHomePress,\n onDriveToHomeRelease,\n connectedMotionGroup,\n robotComponent: RobotComponent = Robot,\n customContentComponent: CustomContentComponent,\n className,\n }: RobotCardProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n const [isDriveToHomePressed, setIsDriveToHomePressed] = useState(false)\n const driveButtonRef = useRef<HTMLButtonElement>(null)\n const cardRef = useRef<HTMLDivElement>(null)\n const [isLandscape, setIsLandscape] = useState(false)\n const [cardSize, setCardSize] = useState<{\n width: number\n height: number\n }>({ width: 400, height: 600 })\n const [modelRenderTrigger, setModelRenderTrigger] = useState(0)\n\n // Hook to detect aspect ratio and size changes\n useEffect(() => {\n const checkDimensions = () => {\n if (cardRef.current) {\n const { offsetWidth, offsetHeight } = cardRef.current\n setIsLandscape(offsetWidth > offsetHeight)\n setCardSize({ width: offsetWidth, height: offsetHeight })\n }\n }\n\n // Initial check\n checkDimensions()\n\n // Set up ResizeObserver to watch for size changes\n const resizeObserver = new ResizeObserver(checkDimensions)\n if (cardRef.current) {\n resizeObserver.observe(cardRef.current)\n }\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n const handleModelRender = useCallback(() => {\n // Trigger bounds refresh when model renders\n setModelRenderTrigger((prev) => prev + 1)\n }, [])\n\n const handleDriveToHomeMouseDown = useCallback(() => {\n if (!driveToHomeEnabled || !onDriveToHomePress) return\n setIsDriveToHomePressed(true)\n onDriveToHomePress()\n }, [driveToHomeEnabled, onDriveToHomePress])\n\n const handleDriveToHomeMouseUp = useCallback(() => {\n if (!driveToHomeEnabled || !onDriveToHomeRelease) return\n setIsDriveToHomePressed(false)\n onDriveToHomeRelease()\n }, [driveToHomeEnabled, onDriveToHomeRelease])\n\n const handleDriveToHomeMouseLeave = useCallback(() => {\n if (isDriveToHomePressed && onDriveToHomeRelease) {\n setIsDriveToHomePressed(false)\n onDriveToHomeRelease()\n }\n }, [isDriveToHomePressed, onDriveToHomeRelease])\n\n // Determine if robot should be hidden at small sizes to save space\n const shouldHideRobot = isLandscape\n ? cardSize.width < 350\n : cardSize.height < 200 // Hide robot at height < 200px in portrait\n\n // Determine if custom content should be hidden when height is too low\n // Custom content should be hidden BEFORE the robot (at higher threshold)\n const shouldHideCustomContent = isLandscape\n ? cardSize.height < 310 // Landscape: hide custom content at height < 310px\n : cardSize.height < 450 // Portrait: hide custom content at height < 450px\n\n return (\n <Card\n ref={cardRef}\n className={className}\n sx={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: isLandscape ? \"row\" : \"column\",\n position: \"relative\",\n overflow: \"hidden\",\n minWidth: { xs: 180, sm: 220, md: 250 },\n minHeight: isLandscape\n ? { xs: 200, sm: 240, md: 260 } // Allow runtime hiding at < 283px\n : { xs: 150, sm: 180, md: 220 }, // Allow progressive hiding in portrait mode\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: \"18px\",\n boxShadow: \"none\",\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[8] || \"#2A2A3F\",\n backgroundImage: \"none\", // Override any gradient from elevation\n }}\n >\n {isLandscape ? (\n <>\n {/* Landscape Layout: Robot on left, content on right */}\n <Box\n sx={{\n flex: \"0 0 50%\",\n position: \"relative\",\n height: \"100%\",\n minHeight: \"100%\",\n maxHeight: \"100%\",\n borderRadius: 1,\n m: { xs: 1.5, sm: 2, md: 3 },\n mr: { xs: 0.75, sm: 1, md: 1.5 },\n overflow: \"hidden\", // Prevent content from affecting container size\n display: shouldHideRobot ? \"none\" : \"block\",\n }}\n >\n {!shouldHideRobot && (\n <Canvas\n orthographic\n camera={{\n position: [3, 2, 3],\n zoom: 1,\n }}\n shadows\n frameloop=\"demand\"\n style={{\n borderRadius: theme.shape.borderRadius,\n width: \"100%\",\n height: \"100%\",\n background: \"transparent\",\n position: \"absolute\",\n top: 0,\n left: 0,\n }}\n dpr={[1, 2]}\n gl={{ alpha: true, antialias: true }}\n >\n <PresetEnvironment />\n <Bounds fit observe margin={1} maxDuration={1}>\n <RobotComponent\n connectedMotionGroup={connectedMotionGroup}\n postModelRender={handleModelRender}\n />\n </Bounds>\n </Canvas>\n )}\n </Box>\n\n {/* Content container on right */}\n <Box\n sx={{\n flex: shouldHideRobot ? \"1\" : \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: shouldHideRobot ? \"100%\" : \"50%\",\n }}\n >\n {/* Header section with robot name and program state */}\n <Box\n sx={{\n p: { xs: 1.5, sm: 2, md: 3 },\n pb: { xs: 1, sm: 1.5, md: 2 },\n textAlign: \"left\",\n }}\n >\n <Typography variant=\"h6\" component=\"h2\" sx={{ mb: 1 }}>\n {robotName}\n </Typography>\n <ProgramStateIndicator\n programState={programState}\n safetyState={safetyState}\n operationMode={operationMode}\n />\n </Box>\n\n {/* Bottom section with custom content and button */}\n <Box\n sx={{\n p: { xs: 1.5, sm: 2, md: 3 },\n pt: 0,\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n }}\n >\n {/* Custom content section - hidden if height is too low in landscape mode */}\n {!shouldHideCustomContent && CustomContentComponent && (\n <Box>\n <CustomContentComponent />\n\n {/* Divider */}\n <Divider\n sx={{\n mt: 1,\n mb: 0,\n borderColor: theme.palette.divider,\n opacity: 0.5,\n }}\n />\n </Box>\n )}\n\n <Box\n sx={{\n mt:\n !shouldHideCustomContent && CustomContentComponent\n ? \"auto\"\n : 0,\n }}\n >\n {/* Drive to Home button with some space */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n mt: { xs: 1, sm: 1.5, md: 2 },\n mb: { xs: 0.5, sm: 0.75, md: 1 },\n }}\n >\n <Button\n ref={driveButtonRef}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n disabled={!driveToHomeEnabled}\n onMouseDown={handleDriveToHomeMouseDown}\n onMouseUp={handleDriveToHomeMouseUp}\n onMouseLeave={handleDriveToHomeMouseLeave}\n onTouchStart={handleDriveToHomeMouseDown}\n onTouchEnd={handleDriveToHomeMouseUp}\n sx={{\n textTransform: \"none\",\n px: 1.5,\n py: 0.5,\n }}\n >\n {t(\"RobotCard.DriveToHome.bt\")}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </>\n ) : (\n <>\n {/* Portrait Layout: Header, Robot, Footer */}\n <Box\n sx={{\n p: 3,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* Header section with robot name and program state */}\n <Box>\n <Typography variant=\"h6\" component=\"h2\" sx={{ mb: 1 }}>\n {robotName}\n </Typography>\n <ProgramStateIndicator\n programState={programState}\n safetyState={safetyState}\n operationMode={operationMode}\n />\n </Box>\n\n {/* 3D Robot viewport in center */}\n <Box\n sx={{\n flex: shouldHideRobot ? 0 : 1,\n position: \"relative\",\n minHeight: shouldHideRobot\n ? 0\n : { xs: 120, sm: 150, md: 200 },\n height: shouldHideRobot ? 0 : \"auto\",\n borderRadius: 1,\n overflow: \"hidden\",\n display: shouldHideRobot ? \"none\" : \"block\",\n }}\n >\n {!shouldHideRobot && (\n <Canvas\n orthographic\n camera={{\n position: [3, 2, 3],\n zoom: 1,\n }}\n shadows\n frameloop=\"demand\"\n style={{\n borderRadius: theme.shape.borderRadius,\n width: \"100%\",\n height: \"100%\",\n background: \"transparent\",\n position: \"absolute\",\n }}\n dpr={[1, 2]}\n gl={{ alpha: true, antialias: true }}\n >\n <PresetEnvironment />\n <Bounds fit clip observe margin={1} maxDuration={1}>\n <RobotComponent\n connectedMotionGroup={connectedMotionGroup}\n postModelRender={handleModelRender}\n />\n </Bounds>\n </Canvas>\n )}\n </Box>\n\n {/* Bottom section with custom content and button */}\n <Box>\n {/* Custom content section - hidden if height is too low */}\n {!shouldHideCustomContent && CustomContentComponent && (\n <>\n <CustomContentComponent />\n\n {/* Divider */}\n <Divider\n sx={{\n mt: 1,\n mb: 0,\n borderColor: theme.palette.divider,\n opacity: 0.5,\n }}\n />\n </>\n )}\n\n {/* Drive to Home button with some space */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-start\",\n mt:\n !shouldHideCustomContent && CustomContentComponent\n ? { xs: 1, sm: 2, md: 5 }\n : { xs: 0.5, sm: 1, md: 2 },\n mb: { xs: 0.5, sm: 0.75, md: 1 },\n }}\n >\n <Button\n ref={driveButtonRef}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n disabled={!driveToHomeEnabled}\n onMouseDown={handleDriveToHomeMouseDown}\n onMouseUp={handleDriveToHomeMouseUp}\n onMouseLeave={handleDriveToHomeMouseLeave}\n onTouchStart={handleDriveToHomeMouseDown}\n onTouchEnd={handleDriveToHomeMouseUp}\n sx={{\n textTransform: \"none\",\n px: 1.5,\n py: 0.5,\n }}\n >\n {t(\"RobotCard.DriveToHome.bt\")}\n </Button>\n </Box>\n </Box>\n </Box>\n </>\n )}\n </Card>\n )\n },\n ),\n)\n\nexport default RobotCard\n"],"names":["RobotCard","externalizeComponent","observer","robotName","programState","safetyState","operationMode","driveToHomeEnabled","onDriveToHomePress","onDriveToHomeRelease","connectedMotionGroup","RobotComponent","Robot","CustomContentComponent","className","theme","useTheme","t","useTranslation","isDriveToHomePressed","setIsDriveToHomePressed","useState","driveButtonRef","useRef","cardRef","isLandscape","setIsLandscape","cardSize","setCardSize","modelRenderTrigger","setModelRenderTrigger","useEffect","checkDimensions","offsetWidth","offsetHeight","resizeObserver","handleModelRender","useCallback","prev","handleDriveToHomeMouseDown","handleDriveToHomeMouseUp","handleDriveToHomeMouseLeave","shouldHideRobot","shouldHideCustomContent","jsx","Card","_a","jsxs","Fragment","Box","Canvas","PresetEnvironment","Bounds","Typography","ProgramStateIndicator","Divider","Button"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotListItem.cjs","sources":["../../src/components/RobotListItem.tsx"],"sourcesContent":["import ErrorIcon from \"@mui/icons-material/Error\"\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 { observer } from \"mobx-react-lite\"\nimport type { ComponentType } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { RobotIcon } from \"../icons\"\nimport {\n RobotSetupReadinessIndicator,\n RobotSetupReadinessState,\n} from \"./RobotSetupReadinessIndicator\"\n\nexport interface RobotListItemProps {\n /** The name of the robot */\n robotName: string\n /** The type/model of the robot (will try to derive from nova if not provided) */\n robotType?: string\n /** The current setup readiness state of the robot */\n setupState: RobotSetupReadinessState\n /**\n * Component to render for the precondition indicator.\n * Defaults to RobotSetupReadinessIndicator.\n * Pass null or undefined to hide the indicator.\n */\n PreconditionComponent?: ComponentType<{\n setupState: RobotSetupReadinessState\n }> | null\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A list item component that displays robot information and setup readiness state.\n *\n * Features:\n * - Shows robot name, type, and customizable precondition component\n * - Color-coded icon based on readiness state (robot icon for ready, warning for issues)\n * - Styled with consistent border, background, and spacing\n * - Responsive layout with proper spacing and alignment\n * - Flexible precondition component that can be customized or hidden\n */\nexport const RobotListItem = externalizeComponent(\n observer(\n ({\n robotName,\n robotType,\n setupState,\n PreconditionComponent = RobotSetupReadinessIndicator,\n className,\n }: RobotListItemProps) => {\n const theme = useTheme()\n\n // Use provided robot type or default\n const displayRobotType = robotType || \"Robot\"\n\n const isReady = setupState === RobotSetupReadinessState.READY\n\n return (\n <Box\n className={className}\n sx={{\n border: `1px solid ${theme.palette.divider}`,\n background:\n theme.palette.backgroundPaperElevation?.[8] || \"#292B3F\",\n borderRadius: \"8px\",\n padding: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n opacity: 1,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n flex: 1,\n }}\n >\n {/* Robot/Warning Icon */}\n {isReady ? (\n <Box\n sx={{\n fontSize: 24,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n \"& svg\": {\n fill: `${theme.palette.primary.main} !important`,\n },\n \"& svg path\": {\n fill: `${theme.palette.primary.main} !important`,\n },\n }}\n >\n <RobotIcon />\n </Box>\n ) : (\n <ErrorIcon\n sx={{\n color: theme.palette.error.main,\n fontSize: 24,\n }}\n />\n )}\n\n {/* Robot Name */}\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 500,\n color: theme.palette.text.primary,\n }}\n >\n {robotName}\n </Typography>\n\n {/* Divider */}\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{\n backgroundColor: theme.palette.text.secondary,\n opacity: 0.3,\n width: \"1px\",\n }}\n />\n\n {/* Robot Type */}\n <Typography\n variant=\"body2\"\n sx={{\n color: theme.palette.text.secondary,\n }}\n >\n {displayRobotType}\n </Typography>\n </Box>\n\n {/* Setup Readiness Indicator */}\n {PreconditionComponent && (\n <PreconditionComponent setupState={setupState} />\n )}\n </Box>\n )\n },\n ),\n)\n\nexport default RobotListItem\n"],"names":["RobotListItem","externalizeComponent","observer","robotName","robotType","setupState","PreconditionComponent","RobotSetupReadinessIndicator","className","theme","useTheme","displayRobotType","isReady","RobotSetupReadinessState","jsxs","Box","_a","jsx","RobotIcon","ErrorIcon","Typography","Divider"],"mappings":"4dA2CaA,EAAgBC,EAAAA,qBAC3BC,EAAAA,SACE,CAAC,CACC,UAAAC,EACA,UAAAC,EACA,WAAAC,EACA,sBAAAC,EAAwBC,EAAAA,6BACxB,UAAAC,CAAA,IACwB,OACxB,MAAMC,EAAQC,EAAAA,SAAA,EAGRC,EAAmBP,GAAa,QAEhCQ,EAAUP,IAAeQ,EAAAA,yBAAyB,MAExD,OACEC,EAAAA,KAACC,EAAA,CACC,UAAAP,EACA,GAAI,CACF,OAAQ,aAAaC,EAAM,QAAQ,OAAO,GAC1C,aACEO,EAAAP,EAAM,QAAQ,2BAAd,YAAAO,EAAyC,KAAM,UACjD,aAAc,MACd,QAAS,OACT,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,QAAS,CAAA,EAGX,SAAA,CAAAF,EAAAA,KAACC,EAAA,CACC,GAAI,CACF,QAAS,OACT,WAAY,SACZ,IAAK,EACL,KAAM,CAAA,EAIP,SAAA,CAAAH,EACCK,EAAAA,IAACF,EAAA,CACC,GAAI,CACF,SAAU,GACV,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,MAAO,GACP,OAAQ,GACR,QAAS,CACP,KAAM,GAAGN,EAAM,QAAQ,QAAQ,IAAI,aAAA,EAErC,aAAc,CACZ,KAAM,GAAGA,EAAM,QAAQ,QAAQ,IAAI,aAAA,CACrC,EAGF,eAACS,EAAAA,QAAA,CAAA,CAAU,CAAA,CAAA,EAGbD,EAAAA,IAACE,EAAA,CACC,GAAI,CACF,MAAOV,EAAM,QAAQ,MAAM,KAC3B,SAAU,EAAA,CACZ,CAAA,EAKJQ,EAAAA,IAACG,EAAA,CACC,QAAQ,QACR,GAAI,CACF,WAAY,IACZ,MAAOX,EAAM,QAAQ,KAAK,OAAA,EAG3B,SAAAN,CAAA,CAAA,EAIHc,EAAAA,IAACI,EAAA,CACC,YAAY,WACZ,SAAQ,GACR,GAAI,CACF,gBAAiBZ,EAAM,QAAQ,KAAK,UACpC,QAAS,GACT,MAAO,KAAA,CACT,CAAA,EAIFQ,EAAAA,IAACG,EAAA,CACC,QAAQ,QACR,GAAI,CACF,MAAOX,EAAM,QAAQ,KAAK,SAAA,EAG3B,SAAAE,CAAA,CAAA,CACH,CAAA,CAAA,EAIDL,GACCW,EAAAA,IAACX,EAAA,CAAsB,WAAAD,CAAA,CAAwB,CAAA,CAAA,CAAA,CAIvD,CAAA,CAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotListItem.d.ts","sourceRoot":"","sources":["../../src/components/RobotListItem.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,EAEL,wBAAwB,EACzB,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,UAAU,EAAE,wBAAwB,CAAA;IACpC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;QACpC,UAAU,EAAE,wBAAwB,CAAA;KACrC,CAAC,GAAG,IAAI,CAAA;IACT,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,6EAQnB,kBAAkB;;CAqGxB,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotListItem.js","sources":["../../src/components/RobotListItem.tsx"],"sourcesContent":["import ErrorIcon from \"@mui/icons-material/Error\"\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 { observer } from \"mobx-react-lite\"\nimport type { ComponentType } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\nimport { RobotIcon } from \"../icons\"\nimport {\n RobotSetupReadinessIndicator,\n RobotSetupReadinessState,\n} from \"./RobotSetupReadinessIndicator\"\n\nexport interface RobotListItemProps {\n /** The name of the robot */\n robotName: string\n /** The type/model of the robot (will try to derive from nova if not provided) */\n robotType?: string\n /** The current setup readiness state of the robot */\n setupState: RobotSetupReadinessState\n /**\n * Component to render for the precondition indicator.\n * Defaults to RobotSetupReadinessIndicator.\n * Pass null or undefined to hide the indicator.\n */\n PreconditionComponent?: ComponentType<{\n setupState: RobotSetupReadinessState\n }> | null\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A list item component that displays robot information and setup readiness state.\n *\n * Features:\n * - Shows robot name, type, and customizable precondition component\n * - Color-coded icon based on readiness state (robot icon for ready, warning for issues)\n * - Styled with consistent border, background, and spacing\n * - Responsive layout with proper spacing and alignment\n * - Flexible precondition component that can be customized or hidden\n */\nexport const RobotListItem = externalizeComponent(\n observer(\n ({\n robotName,\n robotType,\n setupState,\n PreconditionComponent = RobotSetupReadinessIndicator,\n className,\n }: RobotListItemProps) => {\n const theme = useTheme()\n\n // Use provided robot type or default\n const displayRobotType = robotType || \"Robot\"\n\n const isReady = setupState === RobotSetupReadinessState.READY\n\n return (\n <Box\n className={className}\n sx={{\n border: `1px solid ${theme.palette.divider}`,\n background:\n theme.palette.backgroundPaperElevation?.[8] || \"#292B3F\",\n borderRadius: \"8px\",\n padding: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n opacity: 1,\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n flex: 1,\n }}\n >\n {/* Robot/Warning Icon */}\n {isReady ? (\n <Box\n sx={{\n fontSize: 24,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n \"& svg\": {\n fill: `${theme.palette.primary.main} !important`,\n },\n \"& svg path\": {\n fill: `${theme.palette.primary.main} !important`,\n },\n }}\n >\n <RobotIcon />\n </Box>\n ) : (\n <ErrorIcon\n sx={{\n color: theme.palette.error.main,\n fontSize: 24,\n }}\n />\n )}\n\n {/* Robot Name */}\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 500,\n color: theme.palette.text.primary,\n }}\n >\n {robotName}\n </Typography>\n\n {/* Divider */}\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{\n backgroundColor: theme.palette.text.secondary,\n opacity: 0.3,\n width: \"1px\",\n }}\n />\n\n {/* Robot Type */}\n <Typography\n variant=\"body2\"\n sx={{\n color: theme.palette.text.secondary,\n }}\n >\n {displayRobotType}\n </Typography>\n </Box>\n\n {/* Setup Readiness Indicator */}\n {PreconditionComponent && (\n <PreconditionComponent setupState={setupState} />\n )}\n </Box>\n )\n },\n ),\n)\n\nexport default RobotListItem\n"],"names":["RobotListItem","externalizeComponent","observer","robotName","robotType","setupState","PreconditionComponent","RobotSetupReadinessIndicator","className","theme","useTheme","displayRobotType","isReady","RobotSetupReadinessState","jsxs","Box","_a","jsx","RobotIcon","ErrorIcon","Typography","Divider"],"mappings":";;;;;;;;;;AA2CO,MAAMA,IAAgBC;AAAA,EAC3BC;AAAA,IACE,CAAC;AAAA,MACC,WAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,uBAAAC,IAAwBC;AAAA,MACxB,WAAAC;AAAA,IAAA,MACwB;;AACxB,YAAMC,IAAQC,EAAA,GAGRC,IAAmBP,KAAa,SAEhCQ,IAAUP,MAAeQ,EAAyB;AAExD,aACE,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAAP;AAAA,UACA,IAAI;AAAA,YACF,QAAQ,aAAaC,EAAM,QAAQ,OAAO;AAAA,YAC1C,cACEO,IAAAP,EAAM,QAAQ,6BAAd,gBAAAO,EAAyC,OAAM;AAAA,YACjD,cAAc;AAAA,YACd,SAAS;AAAA,YACT,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,SAAS;AAAA,UAAA;AAAA,UAGX,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,KAAK;AAAA,kBACL,MAAM;AAAA,gBAAA;AAAA,gBAIP,UAAA;AAAA,kBAAAH,IACC,gBAAAK;AAAA,oBAACF;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,UAAU;AAAA,wBACV,SAAS;AAAA,wBACT,YAAY;AAAA,wBACZ,gBAAgB;AAAA,wBAChB,OAAO;AAAA,wBACP,QAAQ;AAAA,wBACR,SAAS;AAAA,0BACP,MAAM,GAAGN,EAAM,QAAQ,QAAQ,IAAI;AAAA,wBAAA;AAAA,wBAErC,cAAc;AAAA,0BACZ,MAAM,GAAGA,EAAM,QAAQ,QAAQ,IAAI;AAAA,wBAAA;AAAA,sBACrC;AAAA,sBAGF,4BAACS,GAAA,CAAA,CAAU;AAAA,oBAAA;AAAA,kBAAA,IAGb,gBAAAD;AAAA,oBAACE;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,OAAOV,EAAM,QAAQ,MAAM;AAAA,wBAC3B,UAAU;AAAA,sBAAA;AAAA,oBACZ;AAAA,kBAAA;AAAA,kBAKJ,gBAAAQ;AAAA,oBAACG;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI;AAAA,wBACF,YAAY;AAAA,wBACZ,OAAOX,EAAM,QAAQ,KAAK;AAAA,sBAAA;AAAA,sBAG3B,UAAAN;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIH,gBAAAc;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,aAAY;AAAA,sBACZ,UAAQ;AAAA,sBACR,IAAI;AAAA,wBACF,iBAAiBZ,EAAM,QAAQ,KAAK;AAAA,wBACpC,SAAS;AAAA,wBACT,OAAO;AAAA,sBAAA;AAAA,oBACT;AAAA,kBAAA;AAAA,kBAIF,gBAAAQ;AAAA,oBAACG;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI;AAAA,wBACF,OAAOX,EAAM,QAAQ,KAAK;AAAA,sBAAA;AAAA,sBAG3B,UAAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACH;AAAA,cAAA;AAAA,YAAA;AAAA,YAIDL,KACC,gBAAAW,EAACX,GAAA,EAAsB,YAAAD,EAAA,CAAwB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAIvD;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotSetupReadinessIndicator.cjs","sources":["../../src/components/RobotSetupReadinessIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Chip from \"@mui/material/Chip\"\nimport Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\n/**\n * Enum representing the robot setup readiness state\n */\nexport enum RobotSetupReadinessState {\n /** Preconditions are not fulfilled for robot operation */\n PRECONDITION_NOT_FULFILLED = \"PRECONDITION_NOT_FULFILLED\",\n /** Robot is disconnected from the system */\n ROBOT_DISCONNECTED = \"ROBOT_DISCONNECTED\",\n /** Safety cell is open and robot cannot operate */\n CELL_OPEN = \"CELL_OPEN\",\n /** Emergency stop is active and robot cannot operate */\n E_STOP = \"E_STOP\",\n /** Robot is in manual mode and requires manual intervention */\n MANUAL_MODE = \"MANUAL_MODE\",\n /** Robot is ready for operation */\n READY = \"READY\",\n}\n\nexport interface RobotSetupReadinessIndicatorProps {\n /** The current setup readiness state of the robot */\n setupState: RobotSetupReadinessState\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current robot setup readiness state.\n *\n * Features:\n * - Shows six states: Precondition not fulfilled, Robot disconnected, Cell open, E-Stop, Manual mode, Ready\n * - Color-coded based on state (ready: tertiary/main, others: error/main)\n * - Rendered as Material-UI filled chip with paper-elevation-11 background\n * - Includes colored circle indicator (8px width)\n * - Localization support via react-i18next\n */\nexport const RobotSetupReadinessIndicator = externalizeComponent(\n observer(({ setupState, className }: RobotSetupReadinessIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n switch (setupState) {\n case RobotSetupReadinessState.READY:\n return {\n label: t(\"RobotSetupReadinessIndicator.Ready.lb\"),\n indicatorColor:\n theme.palette.tertiary?.main || theme.palette.primary.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.ROBOT_DISCONNECTED:\n return {\n label: t(\"RobotSetupReadinessIndicator.RobotDisconnected.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.CELL_OPEN:\n return {\n label: t(\"RobotSetupReadinessIndicator.CellOpen.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.E_STOP:\n return {\n label: t(\"RobotSetupReadinessIndicator.EStop.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.MANUAL_MODE:\n return {\n label: t(\"RobotSetupReadinessIndicator.ManualMode.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n default:\n return {\n label: t(\n \"RobotSetupReadinessIndicator.PreconditionNotFulfilled.lb\",\n ),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n }\n }\n\n const { label, indicatorColor, backgroundColor, textColor } = getStateInfo()\n\n return (\n <Chip\n className={className}\n label={\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n backgroundColor: indicatorColor,\n flexShrink: 0,\n }}\n />\n <Typography\n variant=\"body2\"\n sx={{\n color: textColor,\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {label}\n </Typography>\n </Box>\n }\n variant=\"filled\"\n sx={{\n backgroundColor,\n color: theme.palette.getContrastText(backgroundColor),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n }),\n)\n\nexport default RobotSetupReadinessIndicator\n"],"names":["RobotSetupReadinessState","RobotSetupReadinessIndicator","externalizeComponent","observer","setupState","className","theme","useTheme","t","useTranslation","getStateInfo","_a","_b","_c","_d","_e","_f","_g","label","indicatorColor","backgroundColor","textColor","jsx","Chip","jsxs","Box","Typography"],"mappings":"yXAWO,IAAKA,GAAAA,IAEVA,EAAA,2BAA6B,6BAE7BA,EAAA,mBAAqB,qBAErBA,EAAA,UAAY,YAEZA,EAAA,OAAS,SAETA,EAAA,YAAc,cAEdA,EAAA,MAAQ,QAZEA,IAAAA,GAAA,CAAA,CAAA,EAgCL,MAAMC,EAA+BC,EAAAA,qBAC1CC,EAAAA,SAAS,CAAC,CAAE,WAAAC,EAAY,UAAAC,KAAmD,CACzE,MAAMC,EAAQC,EAAAA,SAAA,EACR,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAERC,EAAe,IAAM,mBACzB,OAAQN,EAAA,CACN,IAAK,QACH,MAAO,CACL,MAAOI,EAAE,uCAAuC,EAChD,iBACEG,EAAAL,EAAM,QAAQ,WAAd,YAAAK,EAAwB,OAAQL,EAAM,QAAQ,QAAQ,KACxD,kBACEM,EAAAN,EAAM,QAAQ,2BAAd,YAAAM,EAAyC,MACzCN,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,EAEvC,IAAK,qBACH,MAAO,CACL,MAAOE,EAAE,mDAAmD,EAC5D,eAAgBF,EAAM,QAAQ,MAAM,KACpC,kBACEO,EAAAP,EAAM,QAAQ,2BAAd,YAAAO,EAAyC,MACzCP,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,EAEvC,IAAK,YACH,MAAO,CACL,MAAOE,EAAE,0CAA0C,EACnD,eAAgBF,EAAM,QAAQ,MAAM,KACpC,kBACEQ,EAAAR,EAAM,QAAQ,2BAAd,YAAAQ,EAAyC,MACzCR,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,EAEvC,IAAK,SACH,MAAO,CACL,MAAOE,EAAE,uCAAuC,EAChD,eAAgBF,EAAM,QAAQ,MAAM,KACpC,kBACES,EAAAT,EAAM,QAAQ,2BAAd,YAAAS,EAAyC,MACzCT,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,EAEvC,IAAK,cACH,MAAO,CACL,MAAOE,EAAE,4CAA4C,EACrD,eAAgBF,EAAM,QAAQ,MAAM,KACpC,kBACEU,EAAAV,EAAM,QAAQ,2BAAd,YAAAU,EAAyC,MACzCV,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,EAEvC,QACE,MAAO,CACL,MAAOE,EACL,0DAAA,EAEF,eAAgBF,EAAM,QAAQ,MAAM,KACpC,kBACEW,EAAAX,EAAM,QAAQ,2BAAd,YAAAW,EAAyC,MACzCX,EAAM,QAAQ,WAAW,MAC3B,UAAWA,EAAM,QAAQ,UAAU,YAAA,CACrC,CAEN,EAEM,CAAE,MAAAY,EAAO,eAAAC,EAAgB,gBAAAC,EAAiB,UAAAC,CAAA,EAAcX,EAAA,EAE9D,OACEY,EAAAA,IAACC,EAAA,CACC,UAAAlB,EACA,MACEmB,EAAAA,KAACC,EAAA,CACC,GAAI,CACF,QAAS,OACT,WAAY,SACZ,IAAK,CAAA,EAGP,SAAA,CAAAH,EAAAA,IAACG,EAAA,CACC,GAAI,CACF,MAAO,EACP,OAAQ,EACR,aAAc,MACd,gBAAiBN,EACjB,WAAY,CAAA,CACd,CAAA,EAEFG,EAAAA,IAACI,EAAA,CACC,QAAQ,QACR,GAAI,CACF,MAAOL,EACP,SAAU,UACV,WAAY,GAAA,EAGb,SAAAH,CAAA,CAAA,CACH,CAAA,CAAA,EAGJ,QAAQ,SACR,GAAI,CACF,gBAAAE,EACA,MAAOd,EAAM,QAAQ,gBAAgBc,CAAe,EACpD,WAAY,IACZ,OAAQ,OACR,mBAAoB,CAClB,SAAU,IACV,SAAU,EAAA,CACZ,CACF,CAAA,CAGN,CAAC,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotSetupReadinessIndicator.d.ts","sourceRoot":"","sources":["../../src/components/RobotSetupReadinessIndicator.tsx"],"names":[],"mappings":"AAQA;;GAEG;AACH,oBAAY,wBAAwB;IAClC,0DAA0D;IAC1D,0BAA0B,+BAA+B;IACzD,4CAA4C;IAC5C,kBAAkB,uBAAuB;IACzC,mDAAmD;IACnD,SAAS,cAAc;IACvB,wDAAwD;IACxD,MAAM,WAAW;IACjB,+DAA+D;IAC/D,WAAW,gBAAgB;IAC3B,mCAAmC;IACnC,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,qDAAqD;IACrD,UAAU,EAAE,wBAAwB,CAAA;IACpC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,+BACF,iCAAiC;;CAkHvE,CAAA;AAED,eAAe,4BAA4B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotSetupReadinessIndicator.js","sources":["../../src/components/RobotSetupReadinessIndicator.tsx"],"sourcesContent":["import { useTheme } from \"@mui/material/styles\"\nimport Box from \"@mui/material/Box\"\nimport Chip from \"@mui/material/Chip\"\nimport Typography from \"@mui/material/Typography\"\nimport { observer } from \"mobx-react-lite\"\nimport { useTranslation } from \"react-i18next\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\n/**\n * Enum representing the robot setup readiness state\n */\nexport enum RobotSetupReadinessState {\n /** Preconditions are not fulfilled for robot operation */\n PRECONDITION_NOT_FULFILLED = \"PRECONDITION_NOT_FULFILLED\",\n /** Robot is disconnected from the system */\n ROBOT_DISCONNECTED = \"ROBOT_DISCONNECTED\",\n /** Safety cell is open and robot cannot operate */\n CELL_OPEN = \"CELL_OPEN\",\n /** Emergency stop is active and robot cannot operate */\n E_STOP = \"E_STOP\",\n /** Robot is in manual mode and requires manual intervention */\n MANUAL_MODE = \"MANUAL_MODE\",\n /** Robot is ready for operation */\n READY = \"READY\",\n}\n\nexport interface RobotSetupReadinessIndicatorProps {\n /** The current setup readiness state of the robot */\n setupState: RobotSetupReadinessState\n /** Additional CSS class name */\n className?: string\n}\n\n/**\n * A state indicator component that displays the current robot setup readiness state.\n *\n * Features:\n * - Shows six states: Precondition not fulfilled, Robot disconnected, Cell open, E-Stop, Manual mode, Ready\n * - Color-coded based on state (ready: tertiary/main, others: error/main)\n * - Rendered as Material-UI filled chip with paper-elevation-11 background\n * - Includes colored circle indicator (8px width)\n * - Localization support via react-i18next\n */\nexport const RobotSetupReadinessIndicator = externalizeComponent(\n observer(({ setupState, className }: RobotSetupReadinessIndicatorProps) => {\n const theme = useTheme()\n const { t } = useTranslation()\n\n const getStateInfo = () => {\n switch (setupState) {\n case RobotSetupReadinessState.READY:\n return {\n label: t(\"RobotSetupReadinessIndicator.Ready.lb\"),\n indicatorColor:\n theme.palette.tertiary?.main || theme.palette.primary.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.ROBOT_DISCONNECTED:\n return {\n label: t(\"RobotSetupReadinessIndicator.RobotDisconnected.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.CELL_OPEN:\n return {\n label: t(\"RobotSetupReadinessIndicator.CellOpen.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.E_STOP:\n return {\n label: t(\"RobotSetupReadinessIndicator.EStop.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n case RobotSetupReadinessState.MANUAL_MODE:\n return {\n label: t(\"RobotSetupReadinessIndicator.ManualMode.lb\"),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n default:\n return {\n label: t(\n \"RobotSetupReadinessIndicator.PreconditionNotFulfilled.lb\",\n ),\n indicatorColor: theme.palette.error.main,\n backgroundColor:\n theme.palette.backgroundPaperElevation?.[11] ||\n theme.palette.background.paper,\n textColor: theme.palette.secondary.contrastText,\n }\n }\n }\n\n const { label, indicatorColor, backgroundColor, textColor } = getStateInfo()\n\n return (\n <Chip\n className={className}\n label={\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n backgroundColor: indicatorColor,\n flexShrink: 0,\n }}\n />\n <Typography\n variant=\"body2\"\n sx={{\n color: textColor,\n fontSize: \"0.75rem\", // Smaller than body2\n lineHeight: 1.2,\n }}\n >\n {label}\n </Typography>\n </Box>\n }\n variant=\"filled\"\n sx={{\n backgroundColor,\n color: theme.palette.getContrastText(backgroundColor),\n fontWeight: 500,\n height: \"auto\",\n \"& .MuiChip-label\": {\n paddingX: 1.5,\n paddingY: 0.5,\n },\n }}\n />\n )\n }),\n)\n\nexport default RobotSetupReadinessIndicator\n"],"names":["RobotSetupReadinessState","RobotSetupReadinessIndicator","externalizeComponent","observer","setupState","className","theme","useTheme","t","useTranslation","getStateInfo","_a","_b","_c","_d","_e","_f","_g","label","indicatorColor","backgroundColor","textColor","jsx","Chip","jsxs","Box","Typography"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RobotSetupReadinessIndicator.test.d.ts","sourceRoot":"","sources":["../../src/components/RobotSetupReadinessIndicator.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectableFab.cjs","sources":["../../src/components/SelectableFab.tsx"],"sourcesContent":["import { styled } from \"@mui/material/styles\"\nimport Fab, { type FabProps } from \"@mui/material/Fab\"\nconst StyledSelectableFab = styled(Fab, {\n shouldForwardProp: (prop) => prop !== \"selected\",\n})<CodeFabProps>(({ theme }) => ({\n borderRadius: \"20px\",\n\n \"&:hover\": {\n background: theme.palette.backgroundPaperElevation?.[7],\n },\n\n variants: [\n {\n props: ({ selected }) => !selected,\n style: {\n background: theme.palette.backgroundPaperElevation?.[0],\n color: theme.palette.action.disabled,\n \"> img\": {\n opacity: 0.4,\n },\n },\n },\n {\n props: ({ selected }) => selected,\n style: {\n background: theme.palette.backgroundPaperElevation?.[11],\n border: `1px solid ${theme.palette.divider}`,\n color: theme.palette.primary.contrastText,\n },\n },\n ],\n}))\n\ntype CodeFabProps = {\n selected?: boolean\n ref?: React.Ref<HTMLButtonElement>\n} & Omit<FabProps, \"variant\" | \"color\">\n\nexport const SelectableFab = (props: CodeFabProps) => {\n const { ref, ...otherProps } = props\n return (\n <StyledSelectableFab\n ref={ref}\n selected={props.selected}\n {...otherProps}\n color={\"secondary\"}\n variant=\"circular\"\n />\n )\n}\n\nexport default SelectableFab\n"],"names":["StyledSelectableFab","styled","Fab","prop","theme","_a","selected","_b","_c","SelectableFab","props","ref","otherProps","jsx"],"mappings":"kNAEMA,EAAsBC,EAAAA,OAAOC,EAAK,CACtC,kBAAoBC,GAASA,IAAS,UACxC,CAAC,EAAgB,CAAC,CAAE,MAAAC,KAAM,WAAO,OAC/B,aAAc,OAEd,UAAW,CACT,YAAYC,EAAAD,EAAM,QAAQ,2BAAd,YAAAC,EAAyC,EAAC,EAGxD,SAAU,CACR,CACE,MAAO,CAAC,CAAE,SAAAC,CAAA,IAAe,CAACA,EAC1B,MAAO,CACL,YAAYC,EAAAH,EAAM,QAAQ,2BAAd,YAAAG,EAAyC,GACrD,MAAOH,EAAM,QAAQ,OAAO,SAC5B,QAAS,CACP,QAAS,EAAA,CACX,CACF,EAEF,CACE,MAAO,CAAC,CAAE,SAAAE,CAAA,IAAeA,EACzB,MAAO,CACL,YAAYE,EAAAJ,EAAM,QAAQ,2BAAd,YAAAI,EAAyC,IACrD,OAAQ,aAAaJ,EAAM,QAAQ,OAAO,GAC1C,MAAOA,EAAM,QAAQ,QAAQ,YAAA,CAC/B,CACF,CAEJ,EAAE,EAOWK,EAAiBC,GAAwB,CACpD,KAAM,CAAE,IAAAC,EAAK,GAAGC,CAAA,EAAeF,EAC/B,OACEG,EAAAA,IAACb,EAAA,CACC,IAAAW,EACA,SAAUD,EAAM,SACf,GAAGE,EACJ,MAAO,YACP,QAAQ,UAAA,CAAA,CAGd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectableFab.d.ts","sourceRoot":"","sources":["../../src/components/SelectableFab.tsx"],"names":[],"mappings":"AACA,OAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAgCtD,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CACnC,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,CAAA;AAEvC,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,4CAWhD,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectableFab.js","sources":["../../src/components/SelectableFab.tsx"],"sourcesContent":["import { styled } from \"@mui/material/styles\"\nimport Fab, { type FabProps } from \"@mui/material/Fab\"\nconst StyledSelectableFab = styled(Fab, {\n shouldForwardProp: (prop) => prop !== \"selected\",\n})<CodeFabProps>(({ theme }) => ({\n borderRadius: \"20px\",\n\n \"&:hover\": {\n background: theme.palette.backgroundPaperElevation?.[7],\n },\n\n variants: [\n {\n props: ({ selected }) => !selected,\n style: {\n background: theme.palette.backgroundPaperElevation?.[0],\n color: theme.palette.action.disabled,\n \"> img\": {\n opacity: 0.4,\n },\n },\n },\n {\n props: ({ selected }) => selected,\n style: {\n background: theme.palette.backgroundPaperElevation?.[11],\n border: `1px solid ${theme.palette.divider}`,\n color: theme.palette.primary.contrastText,\n },\n },\n ],\n}))\n\ntype CodeFabProps = {\n selected?: boolean\n ref?: React.Ref<HTMLButtonElement>\n} & Omit<FabProps, \"variant\" | \"color\">\n\nexport const SelectableFab = (props: CodeFabProps) => {\n const { ref, ...otherProps } = props\n return (\n <StyledSelectableFab\n ref={ref}\n selected={props.selected}\n {...otherProps}\n color={\"secondary\"}\n variant=\"circular\"\n />\n )\n}\n\nexport default SelectableFab\n"],"names":["StyledSelectableFab","styled","Fab","prop","theme","_a","selected","_b","_c","SelectableFab","props","ref","otherProps","jsx"],"mappings":";;;AAEA,MAAMA,IAAsBC,EAAOC,GAAK;AAAA,EACtC,mBAAmB,CAACC,MAASA,MAAS;AACxC,CAAC,EAAgB,CAAC,EAAE,OAAAC,QAAM;;AAAO;AAAA,IAC/B,cAAc;AAAA,IAEd,WAAW;AAAA,MACT,aAAYC,IAAAD,EAAM,QAAQ,6BAAd,gBAAAC,EAAyC;AAAA,IAAC;AAAA,IAGxD,UAAU;AAAA,MACR;AAAA,QACE,OAAO,CAAC,EAAE,UAAAC,EAAA,MAAe,CAACA;AAAA,QAC1B,OAAO;AAAA,UACL,aAAYC,IAAAH,EAAM,QAAQ,6BAAd,gBAAAG,EAAyC;AAAA,UACrD,OAAOH,EAAM,QAAQ,OAAO;AAAA,UAC5B,SAAS;AAAA,YACP,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,MAEF;AAAA,QACE,OAAO,CAAC,EAAE,UAAAE,EAAA,MAAeA;AAAA,QACzB,OAAO;AAAA,UACL,aAAYE,IAAAJ,EAAM,QAAQ,6BAAd,gBAAAI,EAAyC;AAAA,UACrD,QAAQ,aAAaJ,EAAM,QAAQ,OAAO;AAAA,UAC1C,OAAOA,EAAM,QAAQ,QAAQ;AAAA,QAAA;AAAA,MAC/B;AAAA,IACF;AAAA,EAEJ;AAAA,CAAE,GAOWK,IAAgB,CAACC,MAAwB;AACpD,QAAM,EAAE,KAAAC,GAAK,GAAGC,EAAA,IAAeF;AAC/B,SACE,gBAAAG;AAAA,IAACb;AAAA,IAAA;AAAA,MACC,KAAAW;AAAA,MACA,UAAUD,EAAM;AAAA,MACf,GAAGE;AAAA,MACJ,OAAO;AAAA,MACP,SAAQ;AAAA,IAAA;AAAA,EAAA;AAGd;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.cjs","sources":["../../src/components/TabBar.tsx"],"sourcesContent":["import type { SxProps } from \"@mui/material/styles\"\nimport Badge from \"@mui/material/Badge\"\nimport Box from \"@mui/material/Box\"\nimport Tab from \"@mui/material/Tab\"\nimport Tabs from \"@mui/material/Tabs\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport interface TabItem {\n /** Unique identifier for the tab */\n id: string\n /** Label text for the tab */\n label: string\n /** Content to display when tab is active */\n content: React.ReactNode\n /** Optional icon component to display with the tab */\n icon?: React.ReactElement\n /** Optional badge configuration */\n badge?: {\n /** Badge content (number or string) */\n content: React.ReactNode\n /** Badge color variant */\n color?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"info\"\n | \"success\"\n | \"warning\"\n /** Maximum number to display (e.g., 99+) */\n max?: number\n /** Show badge even when content is zero */\n showZero?: boolean\n }\n}\n\nexport interface TabBarProps {\n /** Array of tab items to display */\n items: TabItem[]\n /** Controlled active tab index */\n activeTab?: number\n /** Default active tab index */\n defaultActiveTab?: number\n /** Callback when tab changes */\n onTabChange?: (index: number) => void\n /** Additional styling */\n sx?: SxProps\n /** Ref to the root container element */\n ref?: React.Ref<HTMLDivElement>\n}\n\ninterface TabPanelProps {\n children?: React.ReactNode\n index: number\n value: number\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n {...other}\n >\n {value === index && <Box>{children}</Box>}\n </div>\n )\n}\n\n/**\n * Wrapper component that filters out MUI Tabs internal props\n * to prevent them from being passed to DOM elements\n */\ninterface TabWrapperProps {\n children: React.ReactNode\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n [key: string]: any\n}\n\nfunction TabWrapper({ children, ...props }: TabWrapperProps) {\n // Filter out MUI Tabs internal props that shouldn't reach the DOM\n const {\n fullWidth,\n indicator,\n onChange,\n orientation,\n scrollButtons,\n selectionFollowsFocus,\n textColor,\n value,\n variant,\n ...cleanProps\n } = props\n\n return <Box {...cleanProps}>{children}</Box>\n}\n\n/**\n * A styled tab bar component with configurable tabs and content.\n * Features the same styling as the Wandelbots design system with rounded tabs\n * and smooth transitions.\n */\nexport const TabBar = externalizeComponent(\n observer((props: TabBarProps) => {\n const {\n items,\n activeTab,\n defaultActiveTab = 0,\n onTabChange,\n sx,\n ref,\n } = props\n const isControlled = activeTab !== undefined\n const [uncontrolledActiveTab, setUncontrolledActiveTab] =\n useState(defaultActiveTab)\n\n // biome-ignore lint/style/noNonNullAssertion: pre-biome code\n const currentValue = isControlled ? activeTab! : uncontrolledActiveTab\n\n // Keep uncontrolled state in range when items change\n useEffect(() => {\n if (isControlled) return\n if (items.length === 0) return\n if (\n uncontrolledActiveTab < 0 ||\n uncontrolledActiveTab > items.length - 1\n ) {\n setUncontrolledActiveTab(0)\n }\n }, [items.length, isControlled, uncontrolledActiveTab])\n\n const handleTabChange = (\n _event: React.SyntheticEvent,\n newValue: number,\n ) => {\n if (!isControlled) {\n setUncontrolledActiveTab(newValue)\n }\n onTabChange?.(newValue)\n }\n\n return (\n <Box\n ref={ref}\n sx={{ height: \"100%\", display: \"flex\", flexDirection: \"column\", ...sx }}\n >\n {/* Tabs */}\n <Box\n sx={{\n px: 0,\n py: 0,\n overflow: \"visible\",\n position: \"relative\",\n // Extra padding to prevent badge clipping\n // Top: accommodates badge positioned at top: -6px with 20px height\n // Right: accommodates badge positioned at right: -8px with 20px width\n paddingTop: (theme) => theme.spacing(2), // 16px\n paddingRight: (theme) => theme.spacing(2.5), // 20px\n }}\n >\n <Tabs\n value={currentValue}\n onChange={handleTabChange}\n sx={{\n minHeight: \"32px\",\n backgroundColor: \"transparent\",\n overflow: \"visible\",\n \"& .MuiTabs-indicator\": {\n display: \"none\", // Hide the default indicator\n },\n \"& .MuiTabs-flexContainer\": {\n gap: 2,\n overflow: \"visible\",\n paddingTop: 0,\n paddingBottom: 0,\n },\n \"& .MuiTabs-scroller\": {\n overflow: \"visible !important\",\n },\n \"& .MuiTab-root\": {\n overflow: \"visible\",\n },\n }}\n >\n {items.map((item, index) => {\n // Helper functions for badge logic\n const getBadgeContent = () => {\n if (!item.badge) return undefined\n const content = item.badge.content\n const max = item.badge.max\n\n // Handle numeric content with max limit\n if (typeof content === \"number\" && max && content > max) {\n return `${max}+`\n }\n\n return content\n }\n\n const shouldShowBadge = () => {\n if (!item.badge) return false\n const content = item.badge.content\n const showZero = item.badge.showZero\n\n // If content is 0 and showZero is false, hide badge\n if (content === 0 && !showZero) return false\n\n return true\n }\n\n const badgeContent = getBadgeContent()\n const showBadge = shouldShowBadge()\n\n const handleTabClick = () => {\n if (!isControlled) {\n setUncontrolledActiveTab(index)\n }\n onTabChange?.(index)\n }\n\n const tab = (\n <Tab\n key={item.id}\n label={item.label}\n icon={item.icon}\n iconPosition=\"start\"\n disableRipple\n onClick={handleTabClick}\n sx={{\n minHeight: \"32px\",\n height: \"32px\",\n padding: \"0px 10px\",\n borderRadius: \"12px\",\n backgroundColor: (theme) =>\n theme.palette.backgroundPaperElevation?.[11] || \"#32344B\",\n color: \"text.primary\",\n opacity: currentValue === index ? 1 : 0.38,\n fontSize: \"13px\",\n transition: \"all 0.2s ease-in-out\",\n position: \"relative\",\n overflow: \"visible\",\n \"&:hover\": {\n opacity: currentValue === index ? 1 : 0.6,\n },\n \"&.Mui-selected\": {\n opacity: 1,\n backgroundColor: (theme) =>\n theme.palette.backgroundPaperElevation?.[11] ||\n \"#32344B\",\n color: \"text.primary\",\n },\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:active\": {\n transform: \"none\",\n },\n }}\n />\n )\n\n if (!showBadge) {\n return tab\n }\n\n return (\n <TabWrapper\n key={item.id}\n component=\"span\"\n sx={{ display: \"inline-flex\" }}\n >\n <Badge\n badgeContent={badgeContent}\n color={item.badge?.color || \"error\"}\n max={item.badge?.max}\n showZero={item.badge?.showZero}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n overlap=\"rectangular\"\n sx={{\n \"& .MuiBadge-badge\": {\n // Ensure badge doesn't inherit tab opacity\n opacity: \"1 !important\",\n },\n }}\n >\n {tab}\n </Badge>\n </TabWrapper>\n )\n })}\n </Tabs>\n </Box>\n\n {/* Border line */}\n <Box\n sx={{\n mt: (theme) => theme.spacing(2),\n borderBottom: 1,\n borderColor: \"divider\",\n }}\n />\n\n {/* Tab Content */}\n <Box sx={{ flex: 1, overflow: \"auto\" }}>\n {items.map((item, index) => (\n <TabPanel key={item.id} value={currentValue} index={index}>\n {item.content}\n </TabPanel>\n ))}\n </Box>\n </Box>\n )\n }),\n)\n\nexport default TabBar\n"],"names":["TabPanel","props","children","value","index","other","jsx","Box","TabWrapper","fullWidth","indicator","onChange","orientation","scrollButtons","selectionFollowsFocus","textColor","variant","cleanProps","TabBar","externalizeComponent","observer","items","activeTab","defaultActiveTab","onTabChange","sx","ref","isControlled","uncontrolledActiveTab","setUncontrolledActiveTab","useState","currentValue","useEffect","handleTabChange","_event","newValue","jsxs","theme","Tabs","item","getBadgeContent","content","max","shouldShowBadge","showZero","badgeContent","showBadge","handleTabClick","tab","Tab","_a","Badge","_b","_c"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../src/components/TabBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AASnD,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IACzB,mCAAmC;IACnC,KAAK,CAAC,EAAE;QACN,uCAAuC;QACvC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;QACxB,0BAA0B;QAC1B,KAAK,CAAC,EACF,SAAS,GACT,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,CAAA;QACb,4CAA4C;QAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,2CAA2C;QAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,yBAAyB;IACzB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;CAChC;AAoDD;;;;GAIG;AACH,eAAO,MAAM,MAAM,WACA,WAAW;;CAqN7B,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.js","sources":["../../src/components/TabBar.tsx"],"sourcesContent":["import type { SxProps } from \"@mui/material/styles\"\nimport Badge from \"@mui/material/Badge\"\nimport Box from \"@mui/material/Box\"\nimport Tab from \"@mui/material/Tab\"\nimport Tabs from \"@mui/material/Tabs\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport interface TabItem {\n /** Unique identifier for the tab */\n id: string\n /** Label text for the tab */\n label: string\n /** Content to display when tab is active */\n content: React.ReactNode\n /** Optional icon component to display with the tab */\n icon?: React.ReactElement\n /** Optional badge configuration */\n badge?: {\n /** Badge content (number or string) */\n content: React.ReactNode\n /** Badge color variant */\n color?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"info\"\n | \"success\"\n | \"warning\"\n /** Maximum number to display (e.g., 99+) */\n max?: number\n /** Show badge even when content is zero */\n showZero?: boolean\n }\n}\n\nexport interface TabBarProps {\n /** Array of tab items to display */\n items: TabItem[]\n /** Controlled active tab index */\n activeTab?: number\n /** Default active tab index */\n defaultActiveTab?: number\n /** Callback when tab changes */\n onTabChange?: (index: number) => void\n /** Additional styling */\n sx?: SxProps\n /** Ref to the root container element */\n ref?: React.Ref<HTMLDivElement>\n}\n\ninterface TabPanelProps {\n children?: React.ReactNode\n index: number\n value: number\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n {...other}\n >\n {value === index && <Box>{children}</Box>}\n </div>\n )\n}\n\n/**\n * Wrapper component that filters out MUI Tabs internal props\n * to prevent them from being passed to DOM elements\n */\ninterface TabWrapperProps {\n children: React.ReactNode\n // biome-ignore lint/suspicious/noExplicitAny: pre-biome code\n [key: string]: any\n}\n\nfunction TabWrapper({ children, ...props }: TabWrapperProps) {\n // Filter out MUI Tabs internal props that shouldn't reach the DOM\n const {\n fullWidth,\n indicator,\n onChange,\n orientation,\n scrollButtons,\n selectionFollowsFocus,\n textColor,\n value,\n variant,\n ...cleanProps\n } = props\n\n return <Box {...cleanProps}>{children}</Box>\n}\n\n/**\n * A styled tab bar component with configurable tabs and content.\n * Features the same styling as the Wandelbots design system with rounded tabs\n * and smooth transitions.\n */\nexport const TabBar = externalizeComponent(\n observer((props: TabBarProps) => {\n const {\n items,\n activeTab,\n defaultActiveTab = 0,\n onTabChange,\n sx,\n ref,\n } = props\n const isControlled = activeTab !== undefined\n const [uncontrolledActiveTab, setUncontrolledActiveTab] =\n useState(defaultActiveTab)\n\n // biome-ignore lint/style/noNonNullAssertion: pre-biome code\n const currentValue = isControlled ? activeTab! : uncontrolledActiveTab\n\n // Keep uncontrolled state in range when items change\n useEffect(() => {\n if (isControlled) return\n if (items.length === 0) return\n if (\n uncontrolledActiveTab < 0 ||\n uncontrolledActiveTab > items.length - 1\n ) {\n setUncontrolledActiveTab(0)\n }\n }, [items.length, isControlled, uncontrolledActiveTab])\n\n const handleTabChange = (\n _event: React.SyntheticEvent,\n newValue: number,\n ) => {\n if (!isControlled) {\n setUncontrolledActiveTab(newValue)\n }\n onTabChange?.(newValue)\n }\n\n return (\n <Box\n ref={ref}\n sx={{ height: \"100%\", display: \"flex\", flexDirection: \"column\", ...sx }}\n >\n {/* Tabs */}\n <Box\n sx={{\n px: 0,\n py: 0,\n overflow: \"visible\",\n position: \"relative\",\n // Extra padding to prevent badge clipping\n // Top: accommodates badge positioned at top: -6px with 20px height\n // Right: accommodates badge positioned at right: -8px with 20px width\n paddingTop: (theme) => theme.spacing(2), // 16px\n paddingRight: (theme) => theme.spacing(2.5), // 20px\n }}\n >\n <Tabs\n value={currentValue}\n onChange={handleTabChange}\n sx={{\n minHeight: \"32px\",\n backgroundColor: \"transparent\",\n overflow: \"visible\",\n \"& .MuiTabs-indicator\": {\n display: \"none\", // Hide the default indicator\n },\n \"& .MuiTabs-flexContainer\": {\n gap: 2,\n overflow: \"visible\",\n paddingTop: 0,\n paddingBottom: 0,\n },\n \"& .MuiTabs-scroller\": {\n overflow: \"visible !important\",\n },\n \"& .MuiTab-root\": {\n overflow: \"visible\",\n },\n }}\n >\n {items.map((item, index) => {\n // Helper functions for badge logic\n const getBadgeContent = () => {\n if (!item.badge) return undefined\n const content = item.badge.content\n const max = item.badge.max\n\n // Handle numeric content with max limit\n if (typeof content === \"number\" && max && content > max) {\n return `${max}+`\n }\n\n return content\n }\n\n const shouldShowBadge = () => {\n if (!item.badge) return false\n const content = item.badge.content\n const showZero = item.badge.showZero\n\n // If content is 0 and showZero is false, hide badge\n if (content === 0 && !showZero) return false\n\n return true\n }\n\n const badgeContent = getBadgeContent()\n const showBadge = shouldShowBadge()\n\n const handleTabClick = () => {\n if (!isControlled) {\n setUncontrolledActiveTab(index)\n }\n onTabChange?.(index)\n }\n\n const tab = (\n <Tab\n key={item.id}\n label={item.label}\n icon={item.icon}\n iconPosition=\"start\"\n disableRipple\n onClick={handleTabClick}\n sx={{\n minHeight: \"32px\",\n height: \"32px\",\n padding: \"0px 10px\",\n borderRadius: \"12px\",\n backgroundColor: (theme) =>\n theme.palette.backgroundPaperElevation?.[11] || \"#32344B\",\n color: \"text.primary\",\n opacity: currentValue === index ? 1 : 0.38,\n fontSize: \"13px\",\n transition: \"all 0.2s ease-in-out\",\n position: \"relative\",\n overflow: \"visible\",\n \"&:hover\": {\n opacity: currentValue === index ? 1 : 0.6,\n },\n \"&.Mui-selected\": {\n opacity: 1,\n backgroundColor: (theme) =>\n theme.palette.backgroundPaperElevation?.[11] ||\n \"#32344B\",\n color: \"text.primary\",\n },\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:active\": {\n transform: \"none\",\n },\n }}\n />\n )\n\n if (!showBadge) {\n return tab\n }\n\n return (\n <TabWrapper\n key={item.id}\n component=\"span\"\n sx={{ display: \"inline-flex\" }}\n >\n <Badge\n badgeContent={badgeContent}\n color={item.badge?.color || \"error\"}\n max={item.badge?.max}\n showZero={item.badge?.showZero}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n overlap=\"rectangular\"\n sx={{\n \"& .MuiBadge-badge\": {\n // Ensure badge doesn't inherit tab opacity\n opacity: \"1 !important\",\n },\n }}\n >\n {tab}\n </Badge>\n </TabWrapper>\n )\n })}\n </Tabs>\n </Box>\n\n {/* Border line */}\n <Box\n sx={{\n mt: (theme) => theme.spacing(2),\n borderBottom: 1,\n borderColor: \"divider\",\n }}\n />\n\n {/* Tab Content */}\n <Box sx={{ flex: 1, overflow: \"auto\" }}>\n {items.map((item, index) => (\n <TabPanel key={item.id} value={currentValue} index={index}>\n {item.content}\n </TabPanel>\n ))}\n </Box>\n </Box>\n )\n }),\n)\n\nexport default TabBar\n"],"names":["TabPanel","props","children","value","index","other","jsx","Box","TabWrapper","fullWidth","indicator","onChange","orientation","scrollButtons","selectionFollowsFocus","textColor","variant","cleanProps","TabBar","externalizeComponent","observer","items","activeTab","defaultActiveTab","onTabChange","sx","ref","isControlled","uncontrolledActiveTab","setUncontrolledActiveTab","useState","currentValue","useEffect","handleTabChange","_event","newValue","jsxs","theme","Tabs","item","getBadgeContent","content","max","shouldShowBadge","showZero","badgeContent","showBadge","handleTabClick","tab","Tab","_a","Badge","_b","_c"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeSelect.d.ts","sourceRoot":"","sources":["../../src/components/ThemeSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAGzC,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;CACrC,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAA;AAEvC,eAAO,MAAM,WAAW,GAAI,uBAAuB,gBAAgB,4CAsClE,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/Timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TimerDefaultVariant.cjs","sources":["../../../src/components/Timer/TimerDefaultVariant.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\"\nimport Fade from \"@mui/material/Fade\"\nimport Typography from \"@mui/material/Typography\"\nimport { Gauge } from \"@mui/x-charts\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { useTranslation } from \"react-i18next\"\nimport type { TimerState, TimerAnimationState } from \"./types\"\nimport { formatTime } from \"./utils\"\n\ninterface TimerDefaultVariantProps {\n timerState: TimerState\n animationState: TimerAnimationState\n hasError: boolean\n className?: string\n}\n\nexport const TimerDefaultVariant = ({\n timerState,\n animationState,\n hasError,\n className,\n}: TimerDefaultVariantProps) => {\n const { t } = useTranslation()\n const theme = useTheme()\n const { elapsedTime, currentProgress } = timerState\n const { showErrorAnimation, showPauseAnimation, showMainText } =\n animationState\n\n return (\n <Box\n className={className}\n sx={{\n position: \"relative\",\n width: 264,\n height: 264,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Gauge\n width={264}\n height={264}\n value={currentProgress}\n valueMin={0}\n valueMax={100}\n innerRadius=\"85%\"\n outerRadius=\"100%\"\n margin={0}\n skipAnimation={true}\n text={() => \"\"}\n sx={{\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n \"& .MuiGauge-valueArc\": {\n fill: hasError\n ? theme.palette.error.light\n : theme.palette.success.main,\n transition: \"fill 0.5s ease-out\",\n },\n \"& .MuiGauge-referenceArc\": {\n fill: \"#171927\",\n stroke: \"transparent\",\n strokeWidth: 0,\n transition:\n \"fill 0.5s ease-out, stroke 0.5s ease-out, stroke-width 0.5s ease-out\",\n },\n \"& .MuiGauge-valueText\": {\n display: \"none\",\n },\n \"& .MuiGauge-text\": {\n display: \"none\",\n },\n }}\n />\n\n {/* Center content overlay */}\n <Box\n sx={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 225,\n height: 225,\n borderRadius: \"50%\",\n backgroundColor: \"#292B3F\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 1,\n transition: \"background-color 0.5s ease-out\",\n }}\n >\n {/* Main display */}\n <Box\n sx={{\n position: \"relative\",\n height: \"48px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: 0.5,\n }}\n >\n {/* Error text */}\n <Fade in={showMainText && hasError} timeout={200}>\n <Typography\n variant=\"h6\"\n sx={{\n position: \"absolute\",\n fontSize: \"16px\",\n fontWeight: 500,\n color: theme.palette.error.light,\n }}\n >\n {t(\"timer.error\")}\n </Typography>\n </Fade>\n\n {/* Timer display */}\n <Fade in={showMainText && !hasError} timeout={300}>\n <Typography\n variant=\"h1\"\n sx={{\n position: \"absolute\",\n fontSize: \"48px\",\n fontWeight: 500,\n color: theme.palette.text.primary,\n lineHeight: 1,\n letterSpacing: \"-0.5px\",\n }}\n >\n {formatTime(elapsedTime)}\n </Typography>\n </Fade>\n </Box>\n </Box>\n </Box>\n )\n}\n"],"names":["TimerDefaultVariant","timerState","animationState","hasError","className","t","useTranslation","theme","useTheme","elapsedTime","currentProgress","showErrorAnimation","showPauseAnimation","showMainText","jsxs","Box","jsx","Gauge","Fade","Typography"],"mappings":"2UAgBaA,EAAsB,CAAC,CAClC,WAAAC,EACA,eAAAC,EACA,SAAAC,EACA,UAAAC,CACF,IAAgC,CAC9B,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EACRC,EAAQC,EAAAA,SAAA,EACR,CAAE,YAAAC,EAAa,gBAAAC,CAAA,EAAoBT,EACnC,CAAE,mBAAAU,EAAoB,mBAAAC,EAAoB,aAAAC,CAAA,EAC9CX,EAEF,OACEY,EAAAA,KAACC,EAAA,CACC,UAAAX,EACA,GAAI,CACF,SAAU,WACV,MAAO,IACP,OAAQ,IACR,QAAS,OACT,WAAY,SACZ,eAAgB,QAAA,EAGlB,SAAA,CAAAY,EAAAA,IAACC,EAAAA,MAAA,CACC,MAAO,IACP,OAAQ,IACR,MAAOP,EACP,SAAU,EACV,SAAU,IACV,YAAY,MACZ,YAAY,OACZ,OAAQ,EACR,cAAe,GACf,KAAM,IAAM,GACZ,GAAI,CACF,QAASE,GAAsBD,EAAqB,GAAM,EAC1D,WAAY,wBACZ,uBAAwB,CACtB,KAAMR,EACFI,EAAM,QAAQ,MAAM,MACpBA,EAAM,QAAQ,QAAQ,KAC1B,WAAY,oBAAA,EAEd,2BAA4B,CAC1B,KAAM,UACN,OAAQ,cACR,YAAa,EACb,WACE,sEAAA,EAEJ,wBAAyB,CACvB,QAAS,MAAA,EAEX,mBAAoB,CAClB,QAAS,MAAA,CACX,CACF,CAAA,EAIFS,EAAAA,IAACD,EAAA,CACC,GAAI,CACF,SAAU,WACV,IAAK,MACL,KAAM,MACN,UAAW,wBACX,MAAO,IACP,OAAQ,IACR,aAAc,MACd,gBAAiB,UACjB,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,UAAW,SACX,IAAK,EACL,WAAY,gCAAA,EAId,SAAAD,EAAAA,KAACC,EAAA,CACC,GAAI,CACF,SAAU,WACV,OAAQ,OACR,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,aAAc,EAAA,EAIhB,SAAA,CAAAC,MAACE,EAAA,CAAK,GAAIL,GAAgBV,EAAU,QAAS,IAC3C,SAAAa,EAAAA,IAACG,EAAA,CACC,QAAQ,KACR,GAAI,CACF,SAAU,WACV,SAAU,OACV,WAAY,IACZ,MAAOZ,EAAM,QAAQ,MAAM,KAAA,EAG5B,WAAE,aAAa,CAAA,CAAA,EAEpB,QAGCW,EAAA,CAAK,GAAIL,GAAgB,CAACV,EAAU,QAAS,IAC5C,SAAAa,EAAAA,IAACG,EAAA,CACC,QAAQ,KACR,GAAI,CACF,SAAU,WACV,SAAU,OACV,WAAY,IACZ,MAAOZ,EAAM,QAAQ,KAAK,QAC1B,WAAY,EACZ,cAAe,QAAA,EAGhB,sBAAWE,CAAW,CAAA,CAAA,CACzB,CACF,CAAA,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAGN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TimerDefaultVariant.d.ts","sourceRoot":"","sources":["../../../src/components/Timer/TimerDefaultVariant.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAG9D,UAAU,wBAAwB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,mBAAmB,GAAI,sDAKjC,wBAAwB,4CAyH1B,CAAA"}
|