@wandelbots/wandelbots-js-react-components 3.1.1 → 3.2.0-pr.feat-improve-exports.414.40b4b4e
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/README.md +79 -2
- package/dist/3d.cjs.js +2 -0
- package/dist/3d.cjs.js.map +1 -0
- package/dist/3d.d.ts +11 -0
- package/dist/3d.d.ts.map +1 -0
- package/dist/3d.es.js +16 -0
- package/dist/3d.es.js.map +1 -0
- package/dist/PoseJointValues-C3bsJdfd.js +5446 -0
- package/dist/PoseJointValues-C3bsJdfd.js.map +1 -0
- package/dist/PoseJointValues-wLOjcYDe.cjs +21 -0
- package/dist/PoseJointValues-wLOjcYDe.cjs.map +1 -0
- package/dist/ProgramStateIndicator-CTT-CAcJ.js +268 -0
- package/dist/ProgramStateIndicator-CTT-CAcJ.js.map +1 -0
- package/dist/ProgramStateIndicator-DYKBcj1s.cjs +2 -0
- package/dist/ProgramStateIndicator-DYKBcj1s.cjs.map +1 -0
- package/dist/VelocitySlider-2Zme2MN7.cjs +5 -0
- package/dist/VelocitySlider-2Zme2MN7.cjs.map +1 -0
- package/dist/VelocitySlider-QSg_8eb1.js +1906 -0
- package/dist/VelocitySlider-QSg_8eb1.js.map +1 -0
- package/dist/components/jogging/JoggingStore.d.ts +1 -1
- package/dist/core.cjs.js +2 -0
- package/dist/core.cjs.js.map +1 -0
- package/dist/core.d.ts +23 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.es.js +46 -0
- package/dist/core.es.js.map +1 -0
- package/dist/createSvgIcon-BG4_bQuX.cjs +56 -0
- package/dist/createSvgIcon-BG4_bQuX.cjs.map +1 -0
- package/dist/createSvgIcon-D3GRPlVu.js +3072 -0
- package/dist/createSvgIcon-D3GRPlVu.js.map +1 -0
- package/dist/data.cjs.js +2 -0
- package/dist/data.cjs.js.map +1 -0
- package/dist/data.d.ts +4 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.es.js +7 -0
- package/dist/data.es.js.map +1 -0
- package/dist/externalizeComponent-C12Qf79R.cjs +24 -0
- package/dist/externalizeComponent-C12Qf79R.cjs.map +1 -0
- package/dist/externalizeComponent-RpcZ_G17.js +491 -0
- package/dist/externalizeComponent-RpcZ_G17.js.map +1 -0
- package/dist/index-8UEqiXug.cjs +7 -0
- package/dist/index-8UEqiXug.cjs.map +1 -0
- package/dist/index-CQDi5W62.cjs +2 -0
- package/dist/index-CQDi5W62.cjs.map +1 -0
- package/dist/index-DSz82V23.js +1801 -0
- package/dist/index-DSz82V23.js.map +1 -0
- package/dist/index-DZubFUuo.js +4909 -0
- package/dist/index-DZubFUuo.js.map +1 -0
- package/dist/index-MyU3fVEK.cjs +50 -0
- package/dist/index-MyU3fVEK.cjs.map +1 -0
- package/dist/index-VURe0U2S.js +9443 -0
- package/dist/index-VURe0U2S.js.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.es.js +72 -0
- package/dist/index.es.js.map +1 -0
- package/dist/interpolation-CVSmVNjc.cjs +2 -0
- package/dist/interpolation-CVSmVNjc.cjs.map +1 -0
- package/dist/interpolation-DjBX_Si-.js +138 -0
- package/dist/interpolation-DjBX_Si-.js.map +1 -0
- package/dist/jogging.cjs.js +2 -0
- package/dist/jogging.cjs.js.map +1 -0
- package/dist/jogging.d.ts +9 -0
- package/dist/jogging.d.ts.map +1 -0
- package/dist/jogging.es.js +12 -0
- package/dist/jogging.es.js.map +1 -0
- package/dist/manufacturerHomePositions-DHqcbFON.js +979 -0
- package/dist/manufacturerHomePositions-DHqcbFON.js.map +1 -0
- package/dist/manufacturerHomePositions-zd-CKEiQ.cjs +2 -0
- package/dist/manufacturerHomePositions-zd-CKEiQ.cjs.map +1 -0
- package/dist/theming-BO8z_Hpa.js +2198 -0
- package/dist/theming-BO8z_Hpa.js.map +1 -0
- package/dist/theming-D5DvGuxX.cjs +4 -0
- package/dist/theming-D5DvGuxX.cjs.map +1 -0
- package/dist/useThemeProps-P648Ox74.cjs +2 -0
- package/dist/useThemeProps-P648Ox74.cjs.map +1 -0
- package/dist/useThemeProps-jE_Qg6SI.js +40 -0
- package/dist/useThemeProps-jE_Qg6SI.js.map +1 -0
- package/package.json +24 -3
- package/src/3d.ts +15 -0
- package/src/core.ts +23 -0
- package/src/data.ts +4 -0
- package/src/jogging.ts +9 -0
- package/dist/index.cjs +0 -155
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -30530
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-VURe0U2S.js","sources":["../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@mui/material/esm/styles/useTheme.js","../node_modules/@mui/material/esm/styles/useThemeProps.js","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/x-charts/esm/internals/plugins/utils/ChartStore.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.js","../node_modules/reselect/dist/reselect.mjs","../node_modules/@mui/x-charts/esm/internals/plugins/utils/selectors.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/@mui/x-charts/esm/internals/store/useSelector.js","../node_modules/@mui/x-charts/esm/constants/index.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js","../node_modules/@mui/x-charts/esm/internals/defaultizeMargin.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.selectors.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.utils.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartId/useChartId.selectors.js","../node_modules/@mui/x-charts/esm/colorPalettes/categorical/rainbowSurge.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/processSeries.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/eventList.js","../node_modules/@mui/x-internal-gestures/esm/core/Gesture.js","../node_modules/@mui/x-internal-gestures/esm/core/ActiveGesturesRegistry.js","../node_modules/@mui/x-internal-gestures/esm/core/KeyboardManager.js","../node_modules/@mui/x-internal-gestures/esm/core/PointerManager.js","../node_modules/@mui/x-internal-gestures/esm/core/GestureManager.js","../node_modules/@mui/x-internal-gestures/esm/core/PointerGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/getDistance.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/calculateAverageDistance.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/calculateCentroid.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/createEventName.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/getDirection.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/isDirectionAllowed.js","../node_modules/@mui/x-internal-gestures/esm/core/utils/getPinchDirection.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/MoveGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/PanGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/PinchGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/PressGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/TapGesture.js","../node_modules/@mui/x-internal-gestures/esm/core/gestures/TurnWheelGesture.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.js","../node_modules/@mui/x-charts/esm/internals/plugins/corePlugins/corePlugins.js","../node_modules/@mui/x-charts/esm/internals/store/extractPluginParamsFromProps.js","../node_modules/@mui/x-charts/esm/internals/store/useCharts.js","../node_modules/@mui/x-charts/esm/context/ChartProvider/ChartContext.js","../node_modules/@mui/x-internals/esm/warning/warning.js","../node_modules/@mui/x-internals/esm/useAssertModelConsistency/useAssertModelConsistency.js","../node_modules/@mui/x-charts/esm/internals/constants.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/defaultizeZoom.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/defaultizeAxis.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/range.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/@mui/x-charts/esm/internals/defaultValueFormatters.js","../node_modules/@mui/x-charts/esm/models/axis.js","../node_modules/@mui/x-charts/esm/internals/colorScale.js","../node_modules/@mui/x-charts/esm/internals/ticks.js","../node_modules/@mui/x-charts/esm/internals/getScale.js","../node_modules/@mui/x-charts/esm/internals/dateHelpers.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/zoom.js","../node_modules/@mui/x-charts/esm/internals/configInit.js","../node_modules/@mui/x-charts/esm/internals/isCartesian.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisTriggerTooltip.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisDomainLimit.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js","../node_modules/@mui/x-charts/esm/internals/isDefined.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js","../node_modules/@mui/x-charts/esm/internals/isBandScale.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js","../node_modules/@mui/x-charts/esm/internals/getSVGPoint.js","../node_modules/@mui/x-internals/esm/fastObjectShallowCompare/fastObjectShallowCompare.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js","../node_modules/@mui/x-internals/esm/isDeepEqual/isDeepEqual.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/x-charts/esm/internals/plugins/utils/useLazySelectorEffect.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.selectors.js","../node_modules/@mui/x-charts/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/extremums.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/@mui/x-charts/esm/internals/stackSeries.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/seriesProcessor.js","../node_modules/@mui/x-charts/esm/internals/getLabel.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/legend.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/getColor.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/tooltip.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/getSeriesWithDefaultValues.js","../node_modules/@mui/x-charts/esm/BarChart/seriesConfig/index.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/extremums.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/seriesProcessor.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/getColor.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/legend.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/tooltip.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/getSeriesWithDefaultValues.js","../node_modules/@mui/x-charts/esm/ScatterChart/seriesConfig/index.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/extremums.js","../node_modules/@mui/x-charts/esm/internals/defaultizeValueFormatter.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/seriesProcessor.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/getColor.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/legend.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/tooltip.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/getSeriesWithDefaultValues.js","../node_modules/@mui/x-charts/esm/LineChart/seriesConfig/index.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/seriesProcessor.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/getColor.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/legend.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/tooltip.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/getSeriesWithDefaultValues.js","../node_modules/@mui/x-charts/esm/PieChart/seriesConfig/index.js","../node_modules/@mui/x-charts/esm/context/ChartProvider/ChartProvider.js","../node_modules/@mui/x-charts/esm/context/ChartProvider/useChartContext.js","../node_modules/@mui/x-charts/esm/internals/store/useStore.js","../node_modules/@mui/x-charts/esm/hooks/useDrawingArea.js","../node_modules/@mui/x-charts/esm/hooks/useChartId.js","../node_modules/@mui/x-charts/esm/internals/angleConversion.js","../node_modules/@mui/x-charts/esm/hooks/useAxis.js","../node_modules/@mui/x-charts/esm/hooks/useZAxis.js","../node_modules/@mui/x-charts/esm/hooks/useSvgRef.js","../node_modules/@mui/x-charts/esm/hooks/useChartGradientId.js","../node_modules/bezier-easing/src/index.js","../node_modules/@mui/x-charts/esm/internals/animation/animation.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/@mui/x-charts/esm/internals/animation/Transition.js","../node_modules/@mui/x-charts/esm/internals/shallowEqual.js","../node_modules/@mui/x-charts/esm/internals/animation/useAnimateInternal.js","../node_modules/@mui/x-charts/esm/hooks/animation/useAnimate.js","../node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js","../node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js","../node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.js","../node_modules/@mui/x-charts/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js","../node_modules/@mui/x-charts/esm/ChartsSurface/ChartsSurface.js","../node_modules/@mui/x-charts/esm/internals/getPercentageValue.js","../node_modules/@mui/x-charts/esm/Gauge/utils.js","../node_modules/@mui/x-charts/esm/Gauge/GaugeProvider.js","../node_modules/@mui/x-charts/esm/Gauge/GaugeContainer.js","../node_modules/@mui/x-charts/esm/hooks/useSkipAnimation.js","../node_modules/@mui/x-charts/esm/hooks/animation/useAnimateGaugeValueArc.js","../node_modules/@mui/x-charts/esm/Gauge/GaugeValueArc.js","../node_modules/@mui/x-charts/esm/Gauge/GaugeReferenceArc.js","../node_modules/@mui/x-charts/esm/Gauge/gaugeClasses.js","../node_modules/@mui/x-charts/esm/internals/domUtils.js","../node_modules/@mui/x-charts/esm/internals/getWordsByLines.js","../node_modules/@mui/x-charts/esm/hooks/useIsHydrated.js","../node_modules/@mui/x-charts/esm/ChartsText/ChartsText.js","../node_modules/@mui/x-charts/esm/Gauge/GaugeValueText.js","../node_modules/@mui/x-charts/esm/Gauge/Gauge.js","../src/components/CycleTimer/utils.ts","../src/components/CycleTimer/DefaultVariant.tsx","../src/components/CycleTimer/SmallVariant.tsx","../src/components/CycleTimer/useAnimations.ts","../src/components/CycleTimer/useTimerLogic.ts","../src/components/CycleTimer/index.tsx","../node_modules/@mui/icons-material/esm/Clear.js","../node_modules/@mui/icons-material/esm/FilterList.js","../node_modules/@mui/icons-material/esm/Search.js","../src/components/DataGrid.tsx","../src/components/Timer/utils.ts","../src/components/Timer/TimerDefaultVariant.tsx","../src/components/Timer/TimerSmallVariant.tsx","../src/components/Timer/useTimerAnimations.ts","../src/components/Timer/useTimerLogic.ts","../src/components/Timer/index.tsx"],"sourcesContent":["function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n // React.useId() is only available from React 17.0.0.\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride ?? reactId;\n }\n\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export class ChartStore {\n constructor(value) {\n this.value = void 0;\n this.listeners = void 0;\n this.subscribe = fn => {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n };\n this.getSnapshot = () => {\n return this.value;\n };\n this.update = updater => {\n const newState = updater(this.value);\n if (newState !== this.value) {\n this.value = newState;\n this.listeners.forEach(l => l(newState));\n }\n };\n this.value = value;\n this.listeners = new Set();\n }\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartAnimation = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n store.update(prevState => {\n return _extends({}, prevState, {\n animation: _extends({}, prevState.animation, {\n skip: params.skipAnimation\n })\n });\n });\n }, [store, params.skipAnimation]);\n const disableAnimation = React.useCallback(() => {\n let disableCalled = false;\n store.update(prevState => _extends({}, prevState, {\n animation: _extends({}, prevState.animation, {\n skipAnimationRequests: prevState.animation.skipAnimationRequests + 1\n })\n }));\n return () => {\n if (disableCalled) {\n return;\n }\n disableCalled = true;\n store.update(prevState => _extends({}, prevState, {\n animation: _extends({}, prevState.animation, {\n skipAnimationRequests: prevState.animation.skipAnimationRequests - 1\n })\n }));\n };\n }, [store]);\n useEnhancedEffect(() => {\n // Skip animation test/jsdom\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n if (isAnimationDisabledEnvironment) {\n return undefined;\n }\n let disableAnimationCleanup;\n const handleMediaChange = event => {\n if (event.matches) {\n disableAnimationCleanup = disableAnimation();\n } else {\n disableAnimationCleanup?.();\n }\n };\n const mql = window.matchMedia('(prefers-reduced-motion)');\n handleMediaChange(mql);\n mql.addEventListener('change', handleMediaChange);\n return () => {\n mql.removeEventListener('change', handleMediaChange);\n };\n }, [disableAnimation, store]);\n return {\n instance: {\n disableAnimation\n }\n };\n};\nuseChartAnimation.params = {\n skipAnimation: true\n};\nuseChartAnimation.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n skipAnimation: params.skipAnimation ?? false\n});\nuseChartAnimation.getInitialState = ({\n skipAnimation\n}) => {\n const isAnimationDisabledEnvironment = typeof window === 'undefined' || !window?.matchMedia;\n\n // We use the value of `isAnimationDisabledEnvironment` as the initial value of `skipAnimation` to avoid\n // re-rendering the component on environments where matchMedia is not supported, hence skipAnimation will always be true.\n const disableAnimations = process.env.NODE_ENV === 'test' ? isAnimationDisabledEnvironment : false;\n return {\n animation: {\n skip: skipAnimation,\n // By initializing the skipAnimationRequests to 1, we ensure that the animation is always skipped\n skipAnimationRequests: disableAnimations ? 1 : 0\n }\n };\n};","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","import { lruMemoize, createSelectorCreator } from 'reselect';\nconst reselectCreateSelector = createSelectorCreator({\n memoize: lruMemoize,\n memoizeOptions: {\n maxSize: 1,\n equalityCheck: Object.is\n }\n});\nconst cache = new WeakMap();\n/**\n * Method wrapping reselect's createSelector to provide caching for chart instances.\n *\n */\nexport const createSelector = (...createSelectorArgs) => {\n const selector = (state, ...selectorArgs) => {\n const cacheKey = state.cacheKey;\n\n // If there is no cache for the current chart instance, create one.\n let cacheForCurrentChartInstance = cache.get(cacheKey);\n if (!cacheForCurrentChartInstance) {\n cacheForCurrentChartInstance = new Map();\n cache.set(cacheKey, cacheForCurrentChartInstance);\n }\n\n // If there is a cached selector, execute it.\n const cachedSelector = cacheForCurrentChartInstance.get(createSelectorArgs);\n if (cachedSelector) {\n return cachedSelector(state, ...selectorArgs);\n }\n\n // Otherwise, create a new selector and cache it and execute it.\n const fn = reselectCreateSelector(...createSelectorArgs);\n cacheForCurrentChartInstance.set(createSelectorArgs, fn);\n return fn(state, ...selectorArgs);\n };\n return selector;\n};","import { createSelector } from \"../../utils/selectors.js\";\nconst selectorChartAnimationState = state => state.animation;\nexport const selectorChartSkipAnimation = createSelector([selectorChartAnimationState], state => state.skip || state.skipAnimationRequests > 0);","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/* We need to import the shim because React 17 does not support the `useSyncExternalStore` API.\n * More info: https://github.com/mui/mui-x/issues/18303#issuecomment-2958392341 */\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nconst defaultCompare = Object.is;\nexport const useSelector = (store, selector, args = [], equals = defaultCompare) => {\n const selectorWithArgs = state => selector(state, ...args);\n return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);\n};","export const DEFAULT_X_AXIS_KEY = 'DEFAULT_X_AXIS_KEY';\nexport const DEFAULT_Y_AXIS_KEY = 'DEFAULT_Y_AXIS_KEY';\nexport const DEFAULT_ROTATION_AXIS_KEY = 'DEFAULT_ROTATION_AXIS_KEY';\nexport const DEFAULT_RADIUS_AXIS_KEY = 'DEFAULT_RADIUS_AXIS_KEY';\nexport const DEFAULT_MARGINS = {\n top: 20,\n bottom: 20,\n left: 20,\n right: 20\n};\nexport const DEFAULT_AXIS_SIZE_WIDTH = 45;\nexport const DEFAULT_AXIS_SIZE_HEIGHT = 25;\n\n// How many pixels to add to the default axis size if that axis has a label\nexport const AXIS_LABEL_DEFAULT_HEIGHT = 20;","export const selectorChartCartesianAxisState = state => state.cartesianAxis;\nexport const selectorChartRawXAxis = state => state.cartesianAxis?.x;\nexport const selectorChartRawYAxis = state => state.cartesianAxis?.y;","import { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nimport { createSelector } from \"../../utils/selectors.js\";\nexport const selectorChartLeftAxisSize = createSelector([selectorChartRawYAxis], yAxis => (yAxis ?? []).reduce((acc, axis) => axis.position === 'left' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0));\nexport const selectorChartRightAxisSize = createSelector([selectorChartRawYAxis], yAxis => (yAxis ?? []).reduce((acc, axis) => axis.position === 'right' ? acc + (axis.width || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0));\nexport const selectorChartTopAxisSize = createSelector([selectorChartRawXAxis], xAxis => (xAxis ?? []).reduce((acc, axis) => axis.position === 'top' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0));\nexport const selectorChartBottomAxisSize = createSelector([selectorChartRawXAxis], xAxis => (xAxis ?? []).reduce((acc, axis) => axis.position === 'bottom' ? acc + (axis.height || 0) + (axis.zoom?.slider.enabled ? axis.zoom.slider.size : 0) : acc, 0));","import { createSelector } from \"../../utils/selectors.js\";\nimport { selectorChartBottomAxisSize, selectorChartLeftAxisSize, selectorChartRightAxisSize, selectorChartTopAxisSize } from \"../../featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.js\";\nexport const selectorChartDimensionsState = state => state.dimensions;\nexport const selectorChartMargin = state => state.dimensions.margin;\nconst selectorChartWidth = state => state.dimensions.width;\nconst selectorChartHeight = state => state.dimensions.height;\nconst selectorChartTopMargin = state => state.dimensions.margin.top;\nconst selectorChartRightMargin = state => state.dimensions.margin.right;\nconst selectorChartBottomMargin = state => state.dimensions.margin.bottom;\nconst selectorChartLeftMargin = state => state.dimensions.margin.left;\nexport const selectorChartDrawingArea = createSelector([selectorChartWidth, selectorChartHeight, selectorChartTopMargin, selectorChartRightMargin, selectorChartBottomMargin, selectorChartLeftMargin, selectorChartTopAxisSize, selectorChartRightAxisSize, selectorChartBottomAxisSize, selectorChartLeftAxisSize], (width, height, marginTop, marginRight, marginBottom, marginLeft, axisSizeTop, axisSizeRight, axisSizeBottom, axisSizeLeft) => ({\n width: width - marginLeft - marginRight - axisSizeLeft - axisSizeRight,\n left: marginLeft + axisSizeLeft,\n right: marginRight + axisSizeRight,\n height: height - marginTop - marginBottom - axisSizeTop - axisSizeBottom,\n top: marginTop + axisSizeTop,\n bottom: marginBottom + axisSizeBottom\n}));\nexport const selectorChartPropsSize = createSelector([selectorChartDimensionsState], dimensionsState => ({\n width: dimensionsState.propsWidth,\n height: dimensionsState.propsHeight\n}));\nexport const selectorChartContainerSize = createSelector([selectorChartWidth, selectorChartHeight], (width, height) => ({\n width,\n height\n}));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function defaultizeMargin(input, defaultMargin) {\n if (typeof input === 'number') {\n return {\n top: input,\n bottom: input,\n left: input,\n right: input\n };\n }\n if (defaultMargin) {\n return _extends({}, defaultMargin, input);\n }\n return input;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport ownerWindow from '@mui/utils/ownerWindow';\nimport { useSelector } from \"../../../store/useSelector.js\";\nimport { DEFAULT_MARGINS } from \"../../../../constants/index.js\";\nimport { selectorChartDrawingArea } from \"./useChartDimensions.selectors.js\";\nimport { defaultizeMargin } from \"../../../defaultizeMargin.js\";\nconst MAX_COMPUTE_RUN = 10;\nexport const useChartDimensions = ({\n params,\n store,\n svgRef\n}) => {\n const hasInSize = params.width !== undefined && params.height !== undefined;\n const stateRef = React.useRef({\n displayError: false,\n initialCompute: true,\n computeRun: 0\n });\n // States only used for the initialization of the size.\n const [innerWidth, setInnerWidth] = React.useState(0);\n const [innerHeight, setInnerHeight] = React.useState(0);\n const computeSize = React.useCallback(() => {\n const mainEl = svgRef?.current;\n if (!mainEl) {\n return {};\n }\n const win = ownerWindow(mainEl);\n const computedStyle = win.getComputedStyle(mainEl);\n const newHeight = Math.floor(parseFloat(computedStyle.height)) || 0;\n const newWidth = Math.floor(parseFloat(computedStyle.width)) || 0;\n store.update(prev => {\n if (prev.dimensions.width === newWidth && prev.dimensions.height === newHeight) {\n return prev;\n }\n return _extends({}, prev, {\n dimensions: {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width: params.width ?? newWidth,\n height: params.height ?? newHeight,\n propsWidth: params.width,\n propsHeight: params.height\n }\n });\n });\n return {\n height: newHeight,\n width: newWidth\n };\n }, [store, svgRef, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n React.useEffect(() => {\n store.update(prev => {\n const width = params.width ?? prev.dimensions.width;\n const height = params.height ?? prev.dimensions.height;\n return _extends({}, prev, {\n dimensions: {\n margin: {\n top: params.margin.top,\n right: params.margin.right,\n bottom: params.margin.bottom,\n left: params.margin.left\n },\n width,\n height,\n propsHeight: params.height,\n propsWidth: params.width\n }\n });\n });\n }, [store, params.height, params.width,\n // Margin is an object, so we need to include all the properties to prevent infinite loops.\n params.margin.left, params.margin.right, params.margin.top, params.margin.bottom]);\n React.useEffect(() => {\n // Ensure the error detection occurs after the first rendering.\n stateRef.current.displayError = true;\n }, []);\n\n // This effect is used to compute the size of the container on the initial render.\n // It is not bound to the raf loop to avoid an unwanted \"resize\" event.\n // https://github.com/mui/mui-x/issues/13477#issuecomment-2336634785\n useEnhancedEffect(() => {\n // computeRun is used to avoid infinite loops.\n if (hasInSize || !stateRef.current.initialCompute || stateRef.current.computeRun > MAX_COMPUTE_RUN) {\n return;\n }\n const computedSize = computeSize();\n if (computedSize.width !== innerWidth || computedSize.height !== innerHeight) {\n stateRef.current.computeRun += 1;\n if (computedSize.width !== undefined) {\n setInnerWidth(computedSize.width);\n }\n if (computedSize.height !== undefined) {\n setInnerHeight(computedSize.height);\n }\n } else if (stateRef.current.initialCompute) {\n stateRef.current.initialCompute = false;\n }\n }, [innerHeight, innerWidth, computeSize, hasInSize]);\n useEnhancedEffect(() => {\n if (hasInSize) {\n return () => {};\n }\n computeSize();\n const elementToObserve = svgRef.current;\n if (typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n let animationFrame;\n const observer = new ResizeObserver(() => {\n // See https://github.com/mui/mui-x/issues/8733\n animationFrame = requestAnimationFrame(() => {\n computeSize();\n });\n });\n if (elementToObserve) {\n observer.observe(elementToObserve);\n }\n return () => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame);\n }\n if (elementToObserve) {\n observer.unobserve(elementToObserve);\n }\n };\n }, [computeSize, hasInSize, svgRef]);\n if (process.env.NODE_ENV !== 'production') {\n if (stateRef.current.displayError && params.width === undefined && innerWidth === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`width\\` prop, and its container has no \\`width\\` defined.`);\n stateRef.current.displayError = false;\n }\n if (stateRef.current.displayError && params.height === undefined && innerHeight === 0) {\n console.error(`MUI X Charts: ChartContainer does not have \\`height\\` prop, and its container has no \\`height\\` defined.`);\n stateRef.current.displayError = false;\n }\n }\n const drawingArea = useSelector(store, selectorChartDrawingArea);\n const isXInside = React.useCallback(x => x >= drawingArea.left - 1 && x <= drawingArea.left + drawingArea.width, [drawingArea.left, drawingArea.width]);\n const isYInside = React.useCallback(y => y >= drawingArea.top - 1 && y <= drawingArea.top + drawingArea.height, [drawingArea.height, drawingArea.top]);\n const isPointInside = React.useCallback((x, y, targetElement) => {\n // For element allowed to overflow, wrapping them in <g data-drawing-container /> make them fully part of the drawing area.\n if (targetElement && 'closest' in targetElement && targetElement.closest('[data-drawing-container]')) {\n return true;\n }\n return isXInside(x) && isYInside(y);\n }, [isXInside, isYInside]);\n return {\n instance: {\n isPointInside,\n isXInside,\n isYInside\n }\n };\n};\nuseChartDimensions.params = {\n width: true,\n height: true,\n margin: true\n};\nuseChartDimensions.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n margin: defaultizeMargin(params.margin, DEFAULT_MARGINS)\n});\nuseChartDimensions.getInitialState = ({\n width,\n height,\n margin\n}) => {\n return {\n dimensions: {\n margin,\n width: width ?? 0,\n height: height ?? 0,\n propsWidth: width,\n propsHeight: height\n }\n };\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport const useChartExperimentalFeatures = ({\n params,\n store\n}) => {\n useEnhancedEffect(() => {\n store.update(prevState => {\n return _extends({}, prevState, {\n experimentalFeatures: params.experimentalFeatures\n });\n });\n }, [store, params.experimentalFeatures]);\n return {};\n};\nuseChartExperimentalFeatures.params = {\n experimentalFeatures: true\n};\nuseChartExperimentalFeatures.getInitialState = ({\n experimentalFeatures\n}) => {\n return {\n experimentalFeatures\n };\n};","import { createSelector } from \"../../utils/selectors.js\";\nexport const selectorChartExperimentalFeaturesState = state => state.experimentalFeatures;\nexport const selectorPreferStrictDomainInLineCharts = createSelector([selectorChartExperimentalFeaturesState], features => Boolean(features?.preferStrictDomainInLineCharts));","let globalChartDefaultId = 0;\nexport const createChartDefaultId = () => {\n globalChartDefaultId += 1;\n return `mui-chart-${globalChartDefaultId}`;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { createChartDefaultId } from \"./useChartId.utils.js\";\nexport const useChartId = ({\n params,\n store\n}) => {\n React.useEffect(() => {\n store.update(prevState => {\n if (params.id === undefined || params.id === prevState.id.providedChartId && prevState.id.chartId !== undefined) {\n return prevState;\n }\n return _extends({}, prevState, {\n id: _extends({}, prevState.id, {\n chartId: params.id ?? createChartDefaultId()\n })\n });\n });\n }, [store, params.id]);\n return {};\n};\nuseChartId.params = {\n id: true\n};\nuseChartId.getInitialState = ({\n id\n}) => ({\n id: {\n chartId: id,\n providedChartId: id\n }\n});","import { createSelector } from \"../../utils/selectors.js\";\nconst selectorChartIdState = state => state.id;\n\n/**\n * Get the id attribute of the chart.\n * @param {ChartState<[UseChartIdSignature]>} state The state of the chart.\n * @returns {string} The id attribute of the chart.\n */\nexport const selectorChartId = createSelector([selectorChartIdState], idState => idState.chartId);","export const rainbowSurgePaletteLight = ['#4254FB', '#FFB422', '#FA4F58', '#0DBEFF', '#22BF75', '#FA83B4', '#FF7511'];\nexport const rainbowSurgePaletteDark = ['#495AFB', '#FFC758', '#F35865', '#30C8FF', '#44CE8D', '#F286B3', '#FF8C39'];\nexport const rainbowSurgePalette = mode => mode === 'dark' ? rainbowSurgePaletteDark : rainbowSurgePaletteLight;","/**\n * This methods is the interface between what the developer is providing and what components receives\n * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified\n * It also add defaultized values such as the ids, colors\n * @param series The array of series provided by the developer\n * @param colors The color palette used to defaultize series colors\n * @returns An object structuring all the series by type.\n */\nexport const preprocessSeries = ({\n series,\n colors,\n seriesConfig,\n dataset\n}) => {\n // Group series by type\n const seriesGroups = {};\n // Notice the line about uses `ChartSeriesType` instead of TSeriesType.\n // That's probably because the series.type is not propagated from the generic but hardcoded in the config.\n\n series.forEach((seriesData, seriesIndex) => {\n const seriesWithDefaultValues = seriesConfig[seriesData.type].getSeriesWithDefaultValues(seriesData, seriesIndex, colors);\n const id = seriesWithDefaultValues.id;\n if (seriesGroups[seriesData.type] === undefined) {\n seriesGroups[seriesData.type] = {\n series: {},\n seriesOrder: []\n };\n }\n if (seriesGroups[seriesData.type]?.series[id] !== undefined) {\n throw new Error(`MUI X Charts: series' id \"${id}\" is not unique.`);\n }\n seriesGroups[seriesData.type].series[id] = seriesWithDefaultValues;\n seriesGroups[seriesData.type].seriesOrder.push(id);\n });\n const processedSeries = {};\n // Apply formatter on a type group\n Object.keys(seriesConfig).forEach(type => {\n const group = seriesGroups[type];\n if (group !== undefined) {\n processedSeries[type] = seriesConfig[type]?.seriesProcessor?.(group, dataset) ?? seriesGroups[type];\n }\n });\n return processedSeries;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { preprocessSeries } from \"./processSeries.js\";\nexport const useChartSeries = ({\n params,\n store,\n seriesConfig\n}) => {\n const {\n series,\n dataset,\n theme,\n colors\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartSeries`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.update(prev => _extends({}, prev, {\n series: _extends({}, prev.series, {\n processedSeries: preprocessSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig,\n dataset\n })\n })\n }));\n }, [colors, dataset, series, theme, seriesConfig, store]);\n return {};\n};\nuseChartSeries.params = {\n dataset: true,\n series: true,\n colors: true,\n theme: true\n};\nconst EMPTY_ARRAY = [];\nuseChartSeries.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n series: params.series?.length ? params.series : EMPTY_ARRAY,\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light'\n});\nuseChartSeries.getInitialState = ({\n series = [],\n colors,\n theme,\n dataset\n}, _, seriesConfig) => {\n return {\n series: {\n seriesConfig,\n processedSeries: preprocessSeries({\n series,\n colors: typeof colors === 'function' ? colors(theme) : colors,\n seriesConfig,\n dataset\n })\n }\n };\n};","import { createSelector } from \"../../utils/selectors.js\";\nexport const selectorChartSeriesState = state => state.series;\nexport const selectorChartSeriesProcessed = createSelector([selectorChartSeriesState], seriesState => seriesState.processedSeries);\nexport const selectorChartSeriesConfig = createSelector([selectorChartSeriesState], seriesState => seriesState.seriesConfig);","export const eventList = {\n abort: true,\n animationcancel: true,\n animationend: true,\n animationiteration: true,\n animationstart: true,\n auxclick: true,\n beforeinput: true,\n beforetoggle: true,\n blur: true,\n cancel: true,\n canplay: true,\n canplaythrough: true,\n change: true,\n click: true,\n close: true,\n compositionend: true,\n compositionstart: true,\n compositionupdate: true,\n contextlost: true,\n contextmenu: true,\n contextrestored: true,\n copy: true,\n cuechange: true,\n cut: true,\n dblclick: true,\n drag: true,\n dragend: true,\n dragenter: true,\n dragleave: true,\n dragover: true,\n dragstart: true,\n drop: true,\n durationchange: true,\n emptied: true,\n ended: true,\n error: true,\n focus: true,\n focusin: true,\n focusout: true,\n formdata: true,\n gotpointercapture: true,\n input: true,\n invalid: true,\n keydown: true,\n keypress: true,\n keyup: true,\n load: true,\n loadeddata: true,\n loadedmetadata: true,\n loadstart: true,\n lostpointercapture: true,\n mousedown: true,\n mouseenter: true,\n mouseleave: true,\n mousemove: true,\n mouseout: true,\n mouseover: true,\n mouseup: true,\n paste: true,\n pause: true,\n play: true,\n playing: true,\n pointercancel: true,\n pointerdown: true,\n pointerenter: true,\n pointerleave: true,\n pointermove: true,\n pointerout: true,\n pointerover: true,\n pointerup: true,\n progress: true,\n ratechange: true,\n reset: true,\n resize: true,\n scroll: true,\n scrollend: true,\n securitypolicyviolation: true,\n seeked: true,\n seeking: true,\n select: true,\n selectionchange: true,\n selectstart: true,\n slotchange: true,\n stalled: true,\n submit: true,\n suspend: true,\n timeupdate: true,\n toggle: true,\n touchcancel: true,\n touchend: true,\n touchmove: true,\n touchstart: true,\n transitioncancel: true,\n transitionend: true,\n transitionrun: true,\n transitionstart: true,\n volumechange: true,\n waiting: true,\n webkitanimationend: true,\n webkitanimationiteration: true,\n webkitanimationstart: true,\n webkittransitionend: true,\n wheel: true\n};","/**\n * Base Gesture module that provides common functionality for all gesture implementations\n */\n\nimport { eventList } from \"./utils/eventList.js\";\n\n/**\n * The possible phases of a gesture during its lifecycle.\n *\n * - 'start': The gesture has been recognized and is beginning\n * - 'ongoing': The gesture is in progress (e.g., a finger is moving)\n * - 'end': The gesture has completed successfully\n * - 'cancel': The gesture was interrupted or terminated abnormally\n */\n\n/**\n * Core data structure passed to gesture event handlers.\n * Contains all relevant information about a gesture event.\n */\n\n/**\n * Defines the types of pointers that can trigger a gesture.\n */\n\n/**\n * Configuration options for creating a gesture instance.\n */\n\n// eslint-disable-next-line no-underscore-dangle, @typescript-eslint/naming-convention\n\n/**\n * Type for the state of a gesture recognizer.\n */\n\n/**\n * Base abstract class for all gestures. This class provides the fundamental structure\n * and functionality for handling gestures, including registering and unregistering\n * gesture handlers, creating emitters, and managing gesture state.\n *\n * Gesture is designed as an extensible base for implementing specific gesture recognizers.\n * Concrete gesture implementations should extend this class or one of its subclasses.\n *\n * To implement:\n * - Non-pointer gestures (like wheel events): extend this Gesture class directly\n * - Pointer-based gestures: extend the PointerGesture class instead\n *\n * @example\n * ```ts\n * import { Gesture } from './Gesture';\n *\n * class CustomGesture extends Gesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n * }\n * ```\n */\nexport class Gesture {\n /**\n * Create a new gesture instance with the specified options\n *\n * @param options - Configuration options for this gesture\n */\n constructor(options) {\n /** Unique name identifying this gesture type */\n this.name = void 0;\n /** Whether to prevent default browser action for gesture events */\n this.preventDefault = void 0;\n /** Whether to stop propagation of gesture events */\n this.stopPropagation = void 0;\n /**\n * List of gesture names that should prevent this gesture from activating when they are active.\n */\n this.preventIf = void 0;\n /**\n * Array of keyboard keys that must be pressed for the gesture to be recognized.\n */\n this.requiredKeys = void 0;\n /**\n * KeyboardManager instance for tracking key presses\n */\n this.keyboardManager = void 0;\n /**\n * List of pointer types that can trigger this gesture.\n * If undefined, all pointer types are allowed.\n */\n this.pointerMode = void 0;\n /**\n * User-mutable data object for sharing state between gesture events\n * This object is included in all events emitted by this gesture\n */\n this.customData = {};\n /** Reference to the singleton PointerManager instance */\n this.pointerManager = void 0;\n /** Reference to the singleton ActiveGesturesRegistry instance */\n this.gesturesRegistry = void 0;\n /** The DOM element this gesture is attached to */\n this.element = void 0;\n /** Stores the active gesture state */\n this.state = void 0;\n /** @internal For types. If false enables phases (xStart, x, xEnd) */\n this.isSinglePhase = void 0;\n /** @internal For types. The event type this gesture is associated with */\n this.eventType = void 0;\n /** @internal For types. The options type for this gesture */\n this.optionsType = void 0;\n /** @internal For types. The options that can be changed at runtime */\n this.mutableOptionsType = void 0;\n /** @internal For types. The state that can be changed at runtime */\n this.mutableStateType = void 0;\n if (!options || !options.name) {\n throw new Error('Gesture must be initialized with a valid name.');\n }\n if (options.name in eventList) {\n throw new Error(`Gesture can't be created with a native event name. Tried to use \"${options.name}\". Please use a custom name instead.`);\n }\n this.name = options.name;\n this.preventDefault = options.preventDefault ?? false;\n this.stopPropagation = options.stopPropagation ?? false;\n this.preventIf = options.preventIf ?? [];\n this.requiredKeys = options.requiredKeys ?? [];\n this.pointerMode = options.pointerMode ?? [];\n }\n\n /**\n * Initialize the gesture by acquiring the pointer manager and gestures registry\n * Must be called before the gesture can be used\n */\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n this.element = element;\n this.pointerManager = pointerManager;\n this.gesturesRegistry = gestureRegistry;\n this.keyboardManager = keyboardManager;\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.addEventListener(changeOptionsEventName, this.handleOptionsChange.bind(this));\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.addEventListener(changeStateEventName, this.handleStateChange.bind(this));\n }\n\n /**\n * Handle option change events\n * @param event Custom event with new options in the detail property\n */\n handleOptionsChange(event) {\n if (event && event.detail) {\n this.updateOptions(event.detail);\n }\n }\n\n /**\n * Update the gesture options with new values\n * @param options Object containing properties to update\n */\n updateOptions(options) {\n // Update common options\n this.preventDefault = options.preventDefault ?? this.preventDefault;\n this.stopPropagation = options.stopPropagation ?? this.stopPropagation;\n this.preventIf = options.preventIf ?? this.preventIf;\n this.requiredKeys = options.requiredKeys ?? this.requiredKeys;\n this.pointerMode = options.pointerMode ?? this.pointerMode;\n }\n\n /**\n * Handle state change events\n * @param event Custom event with new state values in the detail property\n */\n handleStateChange(event) {\n if (event && event.detail) {\n this.updateState(event.detail);\n }\n }\n\n /**\n * Update the gesture state with new values\n * @param stateChanges Object containing state properties to update\n */\n updateState(stateChanges) {\n // This is a base implementation - concrete gesture classes should override\n // to handle specific state updates based on their state structure\n Object.assign(this.state, stateChanges);\n }\n\n /**\n * Create a deep clone of this gesture for a new element\n *\n * @param overrides - Optional configuration options that override the defaults\n * @returns A new instance of this gesture with the same configuration and any overrides applied\n */\n\n /**\n * Check if the event's target is or is contained within any of our registered elements\n *\n * @param event - The browser event to check\n * @returns The matching element or null if no match is found\n */\n getTargetElement(event) {\n if (this.isActive || this.element === event.target || this.element.contains(event.target)) {\n return this.element;\n }\n return null;\n }\n\n /** Whether the gesture is currently active */\n set isActive(isActive) {\n if (isActive) {\n this.gesturesRegistry.registerActiveGesture(this.element, this);\n } else {\n this.gesturesRegistry.unregisterActiveGesture(this.element, this);\n }\n }\n\n /** Whether the gesture is currently active */\n get isActive() {\n return this.gesturesRegistry.isGestureActive(this.element, this) ?? false;\n }\n\n /**\n * Checks if this gesture should be prevented from activating.\n *\n * @param element - The DOM element to check against\n * @returns true if the gesture should be prevented, false otherwise\n */\n shouldPreventGesture(element) {\n // First check if required keyboard keys are pressed\n if (!this.keyboardManager.areKeysPressed(this.requiredKeys)) {\n return true; // Prevent the gesture if required keys are not pressed\n }\n if (this.preventIf.length === 0) {\n return false; // No prevention rules, allow the gesture\n }\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Check if any of the gestures that would prevent this one are active\n return this.preventIf.some(gestureName => activeGestures[gestureName]);\n }\n\n /**\n * Checks if the given pointer type is allowed for this gesture based on the pointerMode setting.\n *\n * @param pointerType - The type of pointer to check.\n * @returns true if the pointer type is allowed, false otherwise.\n */\n isPointerTypeAllowed(pointerType) {\n // If no pointer mode is specified, all pointer types are allowed\n if (!this.pointerMode || this.pointerMode.length === 0) {\n return true;\n }\n\n // Check if the pointer type is in the allowed types list\n return this.pointerMode.includes(pointerType);\n }\n\n /**\n * Clean up the gesture and unregister any listeners\n * Call this method when the gesture is no longer needed to prevent memory leaks\n */\n destroy() {\n const changeOptionsEventName = `${this.name}ChangeOptions`;\n this.element.removeEventListener(changeOptionsEventName, this.handleOptionsChange.bind(this));\n const changeStateEventName = `${this.name}ChangeState`;\n this.element.removeEventListener(changeStateEventName, this.handleStateChange.bind(this));\n }\n\n /**\n * Reset the gesture state to its initial values\n */\n}","/**\n * ActiveGesturesRegistry - Centralized registry for tracking which gestures are active on elements\n *\n * This singleton class keeps track of all gesture instances that are currently in their active state,\n * allowing both the system and applications to query which gestures are active on specific elements.\n */\n\n/**\n * Type for entries in the active gestures registry\n */\n\n/**\n * Registry that maintains a record of all currently active gestures across elements\n */\nexport class ActiveGesturesRegistry {\n constructor() {\n /** Map of elements to their active gestures */\n this.activeGestures = new Map();\n }\n /**\n * Register a gesture as active on an element\n *\n * @param element - The DOM element on which the gesture is active\n * @param gesture - The gesture instance that is active\n */\n registerActiveGesture(element, gesture) {\n if (!this.activeGestures.has(element)) {\n this.activeGestures.set(element, new Set());\n }\n const elementGestures = this.activeGestures.get(element);\n const entry = {\n gesture,\n element\n };\n elementGestures.add(entry);\n }\n\n /**\n * Remove a gesture from the active registry\n *\n * @param element - The DOM element on which the gesture was active\n * @param gesture - The gesture instance to deactivate\n */\n unregisterActiveGesture(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return;\n }\n\n // Find and remove the specific gesture entry\n elementGestures.forEach(entry => {\n if (entry.gesture === gesture) {\n elementGestures.delete(entry);\n }\n });\n\n // Remove the element from the map if it no longer has any active gestures\n if (elementGestures.size === 0) {\n this.activeGestures.delete(element);\n }\n }\n\n /**\n * Get all active gestures for a specific element\n *\n * @param element - The DOM element to query\n * @returns Array of active gesture names\n */\n getActiveGestures(element) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return {};\n }\n return Array.from(elementGestures).reduce((acc, entry) => {\n acc[entry.gesture.name] = true;\n return acc;\n }, {});\n }\n\n /**\n * Check if a specific gesture is active on an element\n *\n * @param element - The DOM element to check\n * @param gesture - The gesture instance to check\n * @returns True if the gesture is active on the element, false otherwise\n */\n isGestureActive(element, gesture) {\n const elementGestures = this.activeGestures.get(element);\n if (!elementGestures) {\n return false;\n }\n return Array.from(elementGestures).some(entry => entry.gesture === gesture);\n }\n\n /**\n * Clear all active gestures from the registry\n */\n destroy() {\n this.activeGestures.clear();\n }\n\n /**\n * Clear all active gestures for a specific element\n *\n * @param element - The DOM element to clear\n */\n unregisterElement(element) {\n this.activeGestures.delete(element);\n }\n}","/**\n * KeyboardManager - Manager for keyboard events in the gesture recognition system\n *\n * This class tracks keyboard state:\n * 1. Capturing and tracking all pressed keys\n * 2. Providing methods to check if specific keys are pressed\n */\n\n/**\n * Type definition for keyboard keys\n */\n\n/**\n * Class responsible for tracking keyboard state\n */\nexport class KeyboardManager {\n /**\n * Create a new KeyboardManager instance\n */\n constructor() {\n this.pressedKeys = new Set();\n /**\n * Handle keydown events\n */\n this.handleKeyDown = event => {\n this.pressedKeys.add(event.key);\n };\n /**\n * Handle keyup events\n */\n this.handleKeyUp = event => {\n this.pressedKeys.delete(event.key);\n };\n /**\n * Clear all pressed keys\n */\n this.clearKeys = () => {\n this.pressedKeys.clear();\n };\n this.initialize();\n }\n\n /**\n * Initialize the keyboard event listeners\n */\n initialize() {\n if (typeof window === 'undefined') {\n return;\n }\n\n // Add keyboard event listeners\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('keyup', this.handleKeyUp);\n // Reset keys when window loses focus\n window.addEventListener('blur', this.clearKeys);\n }\n /**\n * Check if a set of keys are all currently pressed\n * @param keys The keys to check\n * @returns True if all specified keys are pressed, false otherwise\n */\n areKeysPressed(keys) {\n if (!keys || keys.length === 0) {\n return true; // No keys required means the condition is satisfied\n }\n return keys.every(key => {\n if (key === 'ControlOrMeta') {\n return this.pressedKeys.has('Control') || this.pressedKeys.has('Meta');\n }\n return this.pressedKeys.has(key);\n });\n }\n\n /**\n * Cleanup method to remove event listeners\n */\n destroy() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n window.removeEventListener('blur', this.clearKeys);\n }\n this.clearKeys();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PointerManager - Centralized manager for pointer events in the gesture recognition system\n *\n * This singleton class abstracts the complexity of working with pointer events by:\n * 1. Capturing and tracking all active pointers (touch, mouse, pen)\n * 2. Normalizing pointer data into a consistent format\n * 3. Managing pointer capture for proper tracking across elements\n * 4. Distributing events to registered gesture recognizers\n */\n\n/**\n * Normalized representation of a pointer, containing all relevant information\n * from the original PointerEvent plus additional tracking data.\n *\n * This data structure encapsulates everything gesture recognizers need to know\n * about a pointer's current state.\n */\n\n/**\n * Configuration options for initializing the PointerManager.\n */\n\n/**\n * Manager for handling pointer events across the application.\n *\n * PointerManager serves as the foundational layer for gesture recognition,\n * providing a centralized system for tracking active pointers and distributing\n * pointer events to gesture recognizers.\n *\n * It normalizes browser pointer events into a consistent format and simplifies\n * multi-touch handling by managing pointer capture and tracking multiple\n * simultaneous pointers.\n */\nexport class PointerManager {\n constructor(options) {\n /** Root element where pointer events are captured */\n this.root = void 0;\n /** CSS touch-action property value applied to the root element */\n this.touchAction = void 0;\n /** Whether to use passive event listeners */\n this.passive = void 0;\n /** Whether to prevent interrupt events like blur or contextmenu */\n this.preventEventInterruption = true;\n /** Map of all currently active pointers by their pointerId */\n this.pointers = new Map();\n /** Set of registered gesture handlers that receive pointer events */\n this.gestureHandlers = new Set();\n /**\n * Handle events that should interrupt all gestures.\n * This clears all active pointers and notifies handlers with a pointercancel-like event.\n *\n * @param event - The event that triggered the interruption (blur or contextmenu)\n */\n this.handleInterruptEvents = event => {\n if (this.preventEventInterruption && 'pointerType' in event && event.pointerType === 'touch') {\n event.preventDefault();\n return;\n }\n\n // Create a synthetic pointer cancel event\n const cancelEvent = new PointerEvent('forceCancel', {\n bubbles: false,\n cancelable: false\n });\n const firstPointer = this.pointers.values().next().value;\n if (this.pointers.size > 0 && firstPointer) {\n // If there are active pointers, use the first one as a template for coordinates\n\n // Update the synthetic event with the pointer's coordinates\n Object.defineProperties(cancelEvent, {\n clientX: {\n value: firstPointer.clientX\n },\n clientY: {\n value: firstPointer.clientY\n },\n pointerId: {\n value: firstPointer.pointerId\n },\n pointerType: {\n value: firstPointer.pointerType\n }\n });\n\n // Force update of all pointers to have type 'forceCancel'\n for (const [pointerId, pointer] of this.pointers.entries()) {\n const updatedPointer = _extends({}, pointer, {\n type: 'forceCancel'\n });\n this.pointers.set(pointerId, updatedPointer);\n }\n }\n\n // Notify all handlers about the interruption\n this.notifyHandlers(cancelEvent);\n\n // Clear all pointers\n this.pointers.clear();\n };\n /**\n * Event handler for all pointer events.\n *\n * This method:\n * 1. Updates the internal pointers map based on the event type\n * 2. Manages pointer capture for tracking pointers outside the root element\n * 3. Notifies all registered handlers with the current state\n *\n * @param event - The original pointer event from the browser\n */\n this.handlePointerEvent = event => {\n const {\n type,\n pointerId\n } = event;\n\n // Create or update pointer data\n if (type === 'pointerdown') {\n this.pointers.set(pointerId, this.createPointerData(event));\n // Capture the pointer to track it even when it leaves the element\n if (event.target instanceof Element) {\n try {\n event.target.setPointerCapture(pointerId);\n } catch (_) {\n // The target may not support pointer capture\n }\n }\n } else if (type === 'pointermove') {\n this.pointers.set(pointerId, this.createPointerData(event));\n }\n // Remove pointer data on up or cancel\n else if (type === 'pointerup' || type === 'pointercancel' || type === 'forceCancel') {\n // Release pointer capture on up or cancel\n if (event.target instanceof Element) {\n try {\n event.target.releasePointerCapture(pointerId);\n } catch (_) {\n // The target may not support pointer capture\n }\n }\n\n // Update one last time before removing\n this.pointers.set(pointerId, this.createPointerData(event));\n\n // Notify handlers with current state\n this.notifyHandlers(event);\n\n // Then remove the pointer\n this.pointers.delete(pointerId);\n return;\n }\n this.notifyHandlers(event);\n };\n this.root = options.root ?? document.documentElement;\n this.touchAction = options.touchAction || 'auto';\n this.passive = options.passive !== false;\n this.preventEventInterruption = options.preventEventInterruption !== false;\n this.setupEventListeners();\n }\n\n /**\n * Register a handler function to receive pointer events.\n *\n * The handler will be called whenever pointer events occur within the root element.\n * It receives the current map of all active pointers and the original event.\n *\n * @param {Function} handler - Function to receive pointer events and current pointer state\n * @returns {Function} An unregister function that removes this handler when called\n */\n registerGestureHandler(handler) {\n this.gestureHandlers.add(handler);\n\n // Return unregister function\n return () => {\n this.gestureHandlers.delete(handler);\n };\n }\n\n /**\n * Get a copy of the current active pointers map.\n *\n * Returns a new Map containing all currently active pointers.\n * Modifying the returned map will not affect the internal pointers state.\n *\n * @returns A new Map containing all active pointers\n */\n getPointers() {\n return new Map(this.pointers);\n }\n\n /**\n * Set up event listeners for pointer events on the root element.\n *\n * This method attaches all necessary event listeners and configures\n * the CSS touch-action property on the root element.\n */\n setupEventListeners() {\n // Set touch-action CSS property\n if (this.touchAction !== 'auto') {\n this.root.style.touchAction = this.touchAction;\n }\n\n // Add event listeners\n this.root.addEventListener('pointerdown', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointermove', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointerup', this.handlePointerEvent, {\n passive: this.passive\n });\n this.root.addEventListener('pointercancel', this.handlePointerEvent, {\n passive: this.passive\n });\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.addEventListener('forceCancel', this.handlePointerEvent, {\n passive: this.passive\n });\n\n // Add blur and contextmenu event listeners to interrupt all gestures\n this.root.addEventListener('blur', this.handleInterruptEvents);\n this.root.addEventListener('contextmenu', this.handleInterruptEvents);\n }\n /**\n * Notify all registered gesture handlers about a pointer event.\n *\n * Each handler receives the current map of active pointers and the original event.\n *\n * @param event - The original pointer event that triggered this notification\n */\n notifyHandlers(event) {\n this.gestureHandlers.forEach(handler => handler(this.pointers, event));\n }\n\n /**\n * Create a normalized PointerData object from a browser PointerEvent.\n *\n * This method extracts all relevant information from the original event\n * and formats it in a consistent way for gesture recognizers to use.\n *\n * @param event - The original browser pointer event\n * @returns A new PointerData object representing this pointer\n */\n // eslint-disable-next-line class-methods-use-this\n createPointerData(event) {\n return {\n pointerId: event.pointerId,\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY,\n target: event.target,\n timeStamp: event.timeStamp,\n type: event.type,\n isPrimary: event.isPrimary,\n pressure: event.pressure,\n width: event.width,\n height: event.height,\n pointerType: event.pointerType,\n srcEvent: event\n };\n }\n\n /**\n * Clean up all event listeners and reset the PointerManager state.\n *\n * This method should be called when the PointerManager is no longer needed\n * to prevent memory leaks. It removes all event listeners, clears the\n * internal state, and resets the singleton instance.\n */\n destroy() {\n this.root.removeEventListener('pointerdown', this.handlePointerEvent);\n this.root.removeEventListener('pointermove', this.handlePointerEvent);\n this.root.removeEventListener('pointerup', this.handlePointerEvent);\n this.root.removeEventListener('pointercancel', this.handlePointerEvent);\n // @ts-expect-error, forceCancel is not a standard event, but used for custom handling\n this.root.removeEventListener('forceCancel', this.handlePointerEvent);\n this.root.removeEventListener('blur', this.handleInterruptEvents);\n this.root.removeEventListener('contextmenu', this.handleInterruptEvents);\n this.pointers.clear();\n this.gestureHandlers.clear();\n }\n}","import { ActiveGesturesRegistry } from \"./ActiveGesturesRegistry.js\";\nimport { KeyboardManager } from \"./KeyboardManager.js\";\nimport { PointerManager } from \"./PointerManager.js\";\n\n/**\n * Configuration options for initializing the GestureManager\n */\n\n/**\n * The primary class responsible for setting up and managing gestures across multiple elements.\n *\n * GestureManager maintains a collection of gesture templates that can be instantiated for\n * specific DOM elements. It handles lifecycle management, event dispatching, and cleanup.\n *\n * @example\n * ```typescript\n * // Basic setup with default gestures\n * const manager = new GestureManager({\n * root: document.body,\n * touchAction: 'none',\n * gestures: [\n * new PanGesture({ name: 'pan' }),\n * ],\n * });\n *\n * // Register pan gestures on an element\n * const element = manager.registerElement('pan', document.querySelector('.draggable'));\n *\n * // Add event listeners with proper typing\n * element.addEventListener('panStart', (event) => {\n * console.log('Pan started');\n * });\n *\n * element.addEventListener('pan', (event) => {\n * console.log(`Pan delta: ${event.deltaX}, ${event.deltaY}`);\n * });\n *\n * // Custom gesture types\n * interface MyGestureEvents {\n * custom: { x: number, y: number }\n * }\n * const customManager = new GestureManager<MyGestureEvents>({\n * root: document.body\n * gestures: [\n * new CustomGesture({ name: 'custom' }),\n * ],\n * });\n * ```\n */\nexport class GestureManager {\n /**\n * Create a new GestureManager instance to coordinate gesture recognition\n *\n * @param options - Configuration options for the gesture manager\n */\n constructor(options) {\n /** Repository of gesture templates that can be cloned for specific elements */\n this.gestureTemplates = new Map();\n /** Maps DOM elements to their active gesture instances */\n this.elementGestureMap = new Map();\n this.activeGesturesRegistry = new ActiveGesturesRegistry();\n this.pointerManager = void 0;\n this.keyboardManager = new KeyboardManager();\n // Initialize the PointerManager\n this.pointerManager = new PointerManager({\n root: options.root,\n touchAction: options.touchAction,\n passive: options.passive\n });\n\n // Add initial gestures as templates if provided\n if (options.gestures && options.gestures.length > 0) {\n options.gestures.forEach(gesture => {\n this.addGestureTemplate(gesture);\n });\n }\n }\n\n /**\n * Add a gesture template to the manager's template registry.\n * Templates serve as prototypes that can be cloned for individual elements.\n *\n * @param gesture - The gesture instance to use as a template\n */\n addGestureTemplate(gesture) {\n if (this.gestureTemplates.has(gesture.name)) {\n console.warn(`Gesture template with name \"${gesture.name}\" already exists. It will be overwritten.`);\n }\n this.gestureTemplates.set(gesture.name, gesture);\n }\n\n /**\n * Updates the options for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose options should be updated\n * @param element - The DOM element where the gesture is attached\n * @param options - New options to apply to the gesture\n * @returns True if the options were successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update pan gesture sensitivity on the fly\n * manager.setGestureOptions('pan', element, { threshold: 5 });\n * ```\n */\n setGestureOptions(gestureName, element, options) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeOptions`, {\n detail: options,\n bubbles: false,\n cancelable: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Updates the state for a specific gesture on a given element and emits a change event.\n *\n * @param gestureName - Name of the gesture whose state should be updated\n * @param element - The DOM element where the gesture is attached\n * @param state - New state to apply to the gesture\n * @returns True if the state was successfully updated, false if the gesture wasn't found\n *\n * @example\n * ```typescript\n * // Update total delta for a turnWheel gesture\n * manager.setGestureState('turnWheel', element, { totalDeltaX: 10 });\n * ```\n */\n setGestureState(gestureName, element, state) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n console.error(`Gesture \"${gestureName}\" not found on the provided element.`);\n return;\n }\n const event = new CustomEvent(`${gestureName}ChangeState`, {\n detail: state,\n bubbles: false,\n cancelable: false\n });\n element.dispatchEvent(event);\n }\n\n /**\n * Register an element to recognize one or more gestures.\n *\n * This method clones the specified gesture template(s) and creates\n * gesture recognizer instance(s) specifically for the provided element.\n * The element is returned with enhanced TypeScript typing for gesture events.\n *\n * @param gestureNames - Name(s) of the gesture(s) to register (must match template names)\n * @param element - The DOM element to attach the gesture(s) to\n * @param options - Optional map of gesture-specific options to override when registering\n * @returns The same element with properly typed event listeners\n *\n * @example\n * ```typescript\n * // Register multiple gestures\n * const element = manager.registerElement(['pan', 'pinch'], myDiv);\n *\n * // Register a single gesture\n * const draggable = manager.registerElement('pan', dragHandle);\n *\n * // Register with customized options for each gesture\n * const customElement = manager.registerElement(\n * ['pan', 'pinch', 'rotate'],\n * myElement,\n * {\n * pan: { threshold: 20, direction: ['left', 'right'] },\n * pinch: { threshold: 0.1 }\n * }\n * );\n * ```\n */\n registerElement(gestureNames, element, options) {\n // Handle array of gesture names\n if (Array.isArray(gestureNames)) {\n gestureNames.forEach(name => {\n const gestureOptions = options?.[name];\n this.registerSingleGesture(name, element, gestureOptions);\n });\n return element;\n }\n\n // Handle single gesture name\n const gestureOptions = options?.[gestureNames];\n this.registerSingleGesture(gestureNames, element, gestureOptions);\n return element;\n }\n\n /**\n * Internal method to register a single gesture on an element.\n *\n * @param gestureName - Name of the gesture to register\n * @param element - DOM element to attach the gesture to\n * @param options - Optional options to override the gesture template configuration\n * @returns True if the registration was successful, false otherwise\n */\n registerSingleGesture(gestureName, element, options) {\n // Find the gesture template\n const gestureTemplate = this.gestureTemplates.get(gestureName);\n if (!gestureTemplate) {\n console.error(`Gesture template \"${gestureName}\" not found.`);\n return false;\n }\n\n // Create element's gesture map if it doesn't exist\n if (!this.elementGestureMap.has(element)) {\n this.elementGestureMap.set(element, new Map());\n }\n\n // Check if this element already has this gesture registered\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures.has(gestureName)) {\n console.warn(`Element already has gesture \"${gestureName}\" registered. It will be replaced.`);\n // Unregister the existing gesture first\n this.unregisterElement(gestureName, element);\n }\n\n // Clone the gesture template and create a new instance with optional overrides\n // This allows each element to have its own state, event listeners, and configuration\n const gestureInstance = gestureTemplate.clone(options);\n gestureInstance.init(element, this.pointerManager, this.activeGesturesRegistry, this.keyboardManager);\n\n // Store the gesture in the element's gesture map\n elementGestures.set(gestureName, gestureInstance);\n return true;\n }\n\n /**\n * Unregister a specific gesture from an element.\n * This removes the gesture recognizer and stops event emission for that gesture.\n *\n * @param gestureName - Name of the gesture to unregister\n * @param element - The DOM element to remove the gesture from\n * @returns True if the gesture was found and removed, false otherwise\n */\n unregisterElement(gestureName, element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (!elementGestures || !elementGestures.has(gestureName)) {\n return false;\n }\n\n // Destroy the gesture instance\n const gesture = elementGestures.get(gestureName);\n gesture.destroy();\n\n // Remove from the map\n elementGestures.delete(gestureName);\n this.activeGesturesRegistry.unregisterElement(element);\n\n // Remove the element from the map if it no longer has any gestures\n if (elementGestures.size === 0) {\n this.elementGestureMap.delete(element);\n }\n return true;\n }\n\n /**\n * Unregister all gestures from an element.\n * Completely removes the element from the gesture system.\n *\n * @param element - The DOM element to remove all gestures from\n */\n unregisterAllGestures(element) {\n const elementGestures = this.elementGestureMap.get(element);\n if (elementGestures) {\n // Unregister all gestures for this element\n for (const [, gesture] of elementGestures) {\n gesture.destroy();\n this.activeGesturesRegistry.unregisterElement(element);\n }\n\n // Clear the map\n this.elementGestureMap.delete(element);\n }\n }\n\n /**\n * Clean up all gestures and event listeners.\n * Call this method when the GestureManager is no longer needed to prevent memory leaks.\n */\n destroy() {\n // Unregister all element gestures\n for (const [element] of this.elementGestureMap) {\n this.unregisterAllGestures(element);\n }\n\n // Clear all templates\n this.gestureTemplates.clear();\n this.elementGestureMap.clear();\n this.activeGesturesRegistry.destroy();\n this.keyboardManager.destroy();\n }\n}","import { Gesture } from \"./Gesture.js\";\n\n/**\n * Configuration options for pointer-based gestures, extending the base GestureOptions.\n *\n * These options provide fine-grained control over how pointer events are interpreted\n * and when the gesture should be recognized.\n */\n\n/**\n * Base class for all pointer-based gestures.\n *\n * This class extends the base Gesture class with specialized functionality for\n * handling pointer events via the PointerManager. It provides common logic for\n * determining when a gesture should activate, tracking pointer movements, and\n * managing pointer thresholds.\n *\n * All pointer-based gesture implementations should extend this class rather than\n * the base Gesture class.\n *\n * @example\n * ```ts\n * import { PointerGesture } from './PointerGesture';\n *\n * class CustomGesture extends PointerGesture {\n * constructor(options) {\n * super(options);\n * }\n *\n * clone(overrides) {\n * return new CustomGesture({\n * name: this.name,\n * // ... other options\n * ...overrides,\n * });\n * }\n *\n * handlePointerEvent(pointers, event) {\n * // Handle pointer events here\n * }\n * }\n * ```\n */\nexport class PointerGesture extends Gesture {\n constructor(options) {\n super(options);\n /** Function to unregister from the PointerManager when destroying this gesture */\n this.unregisterHandler = null;\n /** The original target element when the gesture began, used to prevent limbo state if target is removed */\n this.originalTarget = null;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n /**\n * Minimum number of simultaneous pointers required to activate the gesture.\n * The gesture will not start until at least this many pointers are active.\n */\n this.minPointers = void 0;\n /**\n * Maximum number of simultaneous pointers allowed for this gesture.\n * If more than this many pointers are detected, the gesture may be canceled.\n */\n this.maxPointers = void 0;\n this.minPointers = options.minPointers ?? 1;\n this.maxPointers = options.maxPointers ?? Infinity;\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n this.unregisterHandler = this.pointerManager.registerGestureHandler((pointers, event) => this.handlePointerEvent(pointers, event));\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.minPointers = options.minPointers ?? this.minPointers;\n this.maxPointers = options.maxPointers ?? this.maxPointers;\n }\n\n /**\n * Handler for pointer events from the PointerManager.\n * Concrete gesture implementations must override this method to provide\n * gesture-specific logic for recognizing and tracking the gesture.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param event - The original pointer event from the browser\n */\n\n /**\n * Calculate the target element for the gesture based on the active pointers.\n *\n * It takes into account the original target element.\n *\n * @param pointers - Map of active pointers by pointer ID\n * @param calculatedTarget - The target element calculated from getTargetElement\n * @returns A list of relevant pointers for this gesture\n */\n getRelevantPointers(pointers, calculatedTarget) {\n return pointers.filter(pointer => this.isPointerTypeAllowed(pointer.pointerType) && (calculatedTarget === pointer.target || pointer.target === this.originalTarget || calculatedTarget === this.originalTarget || calculatedTarget.contains(pointer.target)));\n }\n destroy() {\n if (this.unregisterHandler) {\n this.unregisterHandler();\n this.unregisterHandler = null;\n }\n super.destroy();\n }\n}","/**\n * Calculate the distance between two points\n */\nexport function getDistance(pointA, pointB) {\n const deltaX = pointB.x - pointA.x;\n const deltaY = pointB.y - pointA.y;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n}","import { getDistance } from \"./getDistance.js\";\n\n/**\n * Calculate the average distance between all pairs of pointers\n */\nexport function calculateAverageDistance(pointers) {\n if (pointers.length < 2) {\n return 0;\n }\n let totalDistance = 0;\n let pairCount = 0;\n\n // Calculate distance between each pair of pointers\n for (let i = 0; i < pointers.length; i += 1) {\n for (let j = i + 1; j < pointers.length; j += 1) {\n totalDistance += getDistance({\n x: pointers[i].clientX,\n y: pointers[i].clientY\n }, {\n x: pointers[j].clientX,\n y: pointers[j].clientY\n });\n pairCount += 1;\n }\n }\n\n // Return average distance\n return pairCount > 0 ? totalDistance / pairCount : 0;\n}","/**\n * Calculate the centroid (average position) of multiple pointers\n */\nexport function calculateCentroid(pointers) {\n if (pointers.length === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n const sum = pointers.reduce((acc, pointer) => {\n acc.x += pointer.clientX;\n acc.y += pointer.clientY;\n return acc;\n }, {\n x: 0,\n y: 0\n });\n return {\n x: sum.x / pointers.length,\n y: sum.y / pointers.length\n };\n}","/**\n * Creates the event name for a specific gesture and phase\n */\nexport function createEventName(gesture, phase) {\n return `${gesture}${phase === 'ongoing' ? '' : phase.charAt(0).toUpperCase() + phase.slice(1)}`;\n}","const MAIN_THRESHOLD = 0.00001;\nconst ANGLE_THRESHOLD = 0.00001;\nconst SECONDARY_THRESHOLD = 0.15;\n\n/**\n * Get the direction of movement based on the current and previous positions\n */\nexport function getDirection(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n const direction = {\n vertical: null,\n horizontal: null,\n mainAxis: null\n };\n const isDiagonal = isDiagonalMovement(current, previous);\n const mainMovement = Math.abs(deltaX) > Math.abs(deltaY) ? 'horizontal' : 'vertical';\n\n // eslint-disable-next-line no-nested-ternary\n const horizontalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? MAIN_THRESHOLD : SECONDARY_THRESHOLD;\n // eslint-disable-next-line no-nested-ternary\n const verticalThreshold = isDiagonal ? MAIN_THRESHOLD : mainMovement === 'horizontal' ? SECONDARY_THRESHOLD : MAIN_THRESHOLD;\n\n // Set horizontal direction if there's a significant movement horizontally\n if (Math.abs(deltaX) > horizontalThreshold) {\n // Small threshold to avoid noise\n direction.horizontal = deltaX > 0 ? 'right' : 'left';\n }\n\n // Set vertical direction if there's a significant movement vertically\n if (Math.abs(deltaY) > verticalThreshold) {\n // Small threshold to avoid noise\n direction.vertical = deltaY > 0 ? 'down' : 'up';\n }\n direction.mainAxis = isDiagonal ? 'diagonal' : mainMovement;\n return direction;\n}\nfunction isDiagonalMovement(previous, current) {\n const deltaX = current.x - previous.x;\n const deltaY = current.y - previous.y;\n\n // Calculate the angle of movement\n const angle = Math.atan2(deltaY, deltaX) * 180 / Math.PI;\n\n // Check if the angle is within the diagonal range\n return angle >= -45 + ANGLE_THRESHOLD && angle <= -22.5 + ANGLE_THRESHOLD || angle >= 22.5 + ANGLE_THRESHOLD && angle <= 45 + ANGLE_THRESHOLD || angle >= 135 + ANGLE_THRESHOLD && angle <= 157.5 + ANGLE_THRESHOLD || angle >= -157.5 + ANGLE_THRESHOLD && angle <= -135 + ANGLE_THRESHOLD;\n}","/**\n * Check if a direction matches one of the allowed directions\n */\nexport function isDirectionAllowed(direction, allowedDirections) {\n if (!direction.vertical && !direction.horizontal) {\n return false;\n }\n if (allowedDirections.length === 0) {\n return true;\n }\n\n // Check if the vertical direction is allowed (if it exists)\n const verticalAllowed = direction.vertical === null || allowedDirections.includes(direction.vertical);\n\n // Check if the horizontal direction is allowed (if it exists)\n const horizontalAllowed = direction.horizontal === null || allowedDirections.includes(direction.horizontal);\n\n // Both directions must be allowed\n return verticalAllowed && horizontalAllowed;\n}","const DIRECTION_THRESHOLD = 0;\nexport const getPinchDirection = velocity => {\n if (velocity > DIRECTION_THRESHOLD) {\n return 1; // Zooming in\n }\n if (velocity < -DIRECTION_THRESHOLD) {\n return -1; // Zooming out\n }\n return 0; // No significant movement\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * MoveGesture - Detects when a pointer enters, moves within, and leaves an element\n *\n * This gesture tracks pointer movements over an element, firing events when:\n * - A pointer enters the element (start)\n * - A pointer moves within the element (ongoing)\n * - A pointer leaves the element (end)\n *\n * Unlike other gestures which often require specific actions to trigger,\n * the move gesture fires automatically when pointers interact with the target element.\n *\n * This gesture only works with mouse pointers, not touch or pen.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the MoveGesture\n * Extends the base PointerGestureOptions\n */\n\n/**\n * Event data specific to move gesture events\n * Includes the source pointer event and standard gesture data\n */\n\n/**\n * Type definition for the CustomEvent created by MoveGesture\n */\n\n/**\n * State tracking for the MoveGesture\n */\n\n/**\n * MoveGesture class for handling pointer movement over elements\n *\n * This gesture detects when pointers enter, move within, or leave target elements,\n * and dispatches corresponding custom events.\n *\n * This gesture only works with hovering mouse pointers, not touch.\n */\nexport class MoveGesture extends PointerGesture {\n constructor(options) {\n super(options);\n // Pre-bind handlers to this instance to maintain reference equality\n this.state = {\n lastPosition: null\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n this.threshold = void 0;\n // Store bound event handlers to properly remove them\n this.handleElementEnterBound = void 0;\n this.handleElementLeaveBound = void 0;\n this.handleElementEnterBound = this.handleElementEnter.bind(this);\n this.handleElementLeaveBound = this.handleElementLeave.bind(this);\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new MoveGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listeners for entering and leaving elements\n // These are different from pointer events handled by PointerManager\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerenter', this.handleElementEnterBound);\n // @ts-expect-error, PointerEvent is correct.\n this.element.addEventListener('pointerleave', this.handleElementLeaveBound);\n }\n destroy() {\n // Remove event listeners using the same function references\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerenter', this.handleElementEnterBound);\n // @ts-expect-error, PointerEvent is correct.\n this.element.removeEventListener('pointerleave', this.handleElementLeaveBound);\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n // Call parent method to handle common options\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = {\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer enter events for a specific element\n * @param event The original pointer event\n */\n handleElementEnter(event) {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Only activate if we're within pointer count constraints\n if (pointersArray.length >= this.minPointers && pointersArray.length <= this.maxPointers) {\n this.isActive = true;\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n\n // Emit start event\n this.emitMoveEvent(this.element, 'start', pointersArray, event);\n this.emitMoveEvent(this.element, 'ongoing', pointersArray, event);\n }\n }\n\n /**\n * Handle pointer leave events for a specific element\n * @param event The original pointer event\n */\n handleElementLeave(event) {\n if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (!this.isActive) {\n return;\n }\n\n // Get pointers from the PointerManager\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Emit end event and reset state\n this.emitMoveEvent(this.element, 'end', pointersArray, event);\n this.resetState();\n }\n\n /**\n * Handle pointer events for the move gesture (only handles move events now)\n * @param pointers Map of active pointers\n * @param event The original pointer event\n */\n handlePointerEvent(pointers, event) {\n if (event.type !== 'pointermove' || event.pointerType !== 'mouse' && event.pointerType !== 'pen') {\n return;\n }\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Make sure we're still within pointer count constraints\n if (pointersArray.length < this.minPointers || pointersArray.length > this.maxPointers) {\n return;\n }\n if (this.shouldPreventGesture(targetElement)) {\n if (!this.isActive) {\n return;\n }\n this.resetState();\n this.emitMoveEvent(targetElement, 'end', pointersArray, event);\n return;\n }\n\n // Update position\n const currentPosition = {\n x: event.clientX,\n y: event.clientY\n };\n this.state.lastPosition = currentPosition;\n if (!this.isActive) {\n this.isActive = true;\n this.emitMoveEvent(targetElement, 'start', pointersArray, event);\n }\n // Emit ongoing event\n this.emitMoveEvent(targetElement, 'ongoing', pointersArray, event);\n }\n\n /**\n * Emit move-specific events\n * @param element The DOM element the event is related to\n * @param phase The current phase of the gesture (start, ongoing, end)\n * @param pointers Array of active pointers\n * @param event The original pointer event\n */\n emitMoveEvent(element, phase, pointers, event) {\n const currentPosition = this.state.lastPosition || calculateCentroid(pointers);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: currentPosition,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PanGesture - Detects panning (dragging) movements\n *\n * This gesture tracks pointer dragging movements across elements, firing events when:\n * - The drag movement begins and passes the threshold distance (start)\n * - The drag movement continues (ongoing)\n * - The drag movement ends (end)\n *\n * The gesture can be configured to recognize movement only in specific directions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName, getDirection, isDirectionAllowed } from \"../utils/index.js\";\n\n/**\n * The direction of movement for the pan gesture\n * This type defines the detected directions based on the vertical and horizontal components\n * The values can be 'up', 'down', 'left', 'right' or null if not applicable.\n *\n * The null values indicate that the gesture is not moving in that direction.\n */\n\n/**\n * Configuration options for PanGesture\n * Extends PointerGestureOptions with direction constraints\n */\n\n/**\n * Event data specific to pan gesture events\n * Contains information about movement distance, direction, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PanGesture\n */\n\n/**\n * State tracking for the PanGesture\n */\n\n/**\n * PanGesture class for handling panning/dragging interactions\n *\n * This gesture detects when users drag across elements with one or more pointers,\n * and dispatches directional movement events with delta and velocity information.\n */\nexport class PanGesture extends PointerGesture {\n constructor(options) {\n super(options);\n this.state = {\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n movementThresholdReached: false,\n totalDeltaX: 0,\n totalDeltaY: 0,\n activeDeltaX: 0,\n activeDeltaY: 0,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n },\n lastDeltas: null\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n this.threshold = void 0;\n /**\n * Allowed directions for the pan gesture\n * Default allows all directions\n */\n this.direction = void 0;\n this.direction = options.direction || ['up', 'down', 'left', 'right'];\n this.threshold = options.threshold || 0;\n }\n clone(overrides) {\n return new PanGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n direction: [...this.direction],\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.direction = options.direction || this.direction;\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startPointers: new Map(),\n startCentroid: null,\n lastCentroid: null,\n lastDeltas: null,\n activeDeltaX: 0,\n activeDeltaY: 0,\n movementThresholdReached: false,\n lastDirection: {\n vertical: null,\n horizontal: null,\n mainAxis: null\n }\n });\n }\n\n /**\n * Handle pointer events for the pan gesture\n */\n handlePointerEvent(pointers, event) {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active pan gestures when we get a force reset event\n this.cancel(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement)) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancel(targetElement, pointersArray, event);\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n\n // Check if we have enough pointers and not too many\n if (relevantPointers.length < this.minPointers || relevantPointers.length > this.maxPointers) {\n // Cancel or end the gesture if it was active\n this.cancel(targetElement, relevantPointers, event);\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Store initial pointers\n relevantPointers.forEach(pointer => {\n this.state.startPointers.set(pointer.pointerId, pointer);\n });\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastCentroid = _extends({}, this.state.startCentroid);\n }\n break;\n case 'pointermove':\n if (this.state.startCentroid && relevantPointers.length >= this.minPointers) {\n // Calculate current centroid\n const currentCentroid = calculateCentroid(relevantPointers);\n\n // Calculate delta from start\n const distanceDeltaX = currentCentroid.x - this.state.startCentroid.x;\n const distanceDeltaY = currentCentroid.y - this.state.startCentroid.y;\n\n // Calculate movement distance\n const distance = Math.sqrt(distanceDeltaX * distanceDeltaX + distanceDeltaY * distanceDeltaY);\n\n // Determine movement direction\n const moveDirection = getDirection(this.state.lastCentroid ?? this.state.startCentroid, currentCentroid);\n\n // Calculate change in position since last move\n const lastDeltaX = this.state.lastCentroid ? currentCentroid.x - this.state.lastCentroid.x : 0;\n const lastDeltaY = this.state.lastCentroid ? currentCentroid.y - this.state.lastCentroid.y : 0;\n\n // Check if movement passes the threshold and is in an allowed direction\n if (!this.state.movementThresholdReached && distance >= this.threshold && isDirectionAllowed(moveDirection, this.direction)) {\n this.state.movementThresholdReached = true;\n this.isActive = true;\n\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit start event\n this.emitPanEvent(targetElement, 'start', relevantPointers, event, currentCentroid);\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n // If we've already crossed the threshold, continue tracking\n else if (this.state.movementThresholdReached && this.isActive) {\n // Update total accumulated delta\n this.state.lastDeltas = {\n x: lastDeltaX,\n y: lastDeltaY\n };\n this.state.totalDeltaX += lastDeltaX;\n this.state.totalDeltaY += lastDeltaY;\n this.state.activeDeltaX += lastDeltaX;\n this.state.activeDeltaY += lastDeltaY;\n\n // Emit ongoing event\n this.emitPanEvent(targetElement, 'ongoing', relevantPointers, event, currentCentroid);\n }\n\n // Update last centroid\n this.state.lastCentroid = currentCentroid;\n this.state.lastDirection = moveDirection;\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n // If the gesture was active (threshold was reached), emit end event\n if (this.isActive && this.state.movementThresholdReached) {\n // If we have less than the minimum required pointers, end the gesture\n if (relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel').length < this.minPointers) {\n // End the gesture\n const currentCentroid = this.state.lastCentroid || this.state.startCentroid;\n if (event.type === 'pointercancel') {\n this.emitPanEvent(targetElement, 'cancel', relevantPointers, event, currentCentroid);\n }\n this.emitPanEvent(targetElement, 'end', relevantPointers, event, currentCentroid);\n this.resetState();\n }\n } else {\n this.resetState();\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Emit pan-specific events with additional data\n */\n emitPanEvent(element, phase, pointers, event, currentCentroid) {\n if (!this.state.startCentroid) {\n return;\n }\n const deltaX = this.state.lastDeltas?.x ?? 0;\n const deltaY = this.state.lastDeltas?.y ?? 0;\n\n // Calculate velocity - time difference in seconds\n const firstPointer = this.state.startPointers.values().next().value;\n const timeElapsed = firstPointer ? (event.timeStamp - firstPointer.timeStamp) / 1000 : 0;\n const velocityX = timeElapsed > 0 ? deltaX / timeElapsed : 0;\n const velocityY = timeElapsed > 0 ? deltaY / timeElapsed : 0;\n const velocity = Math.sqrt(velocityX * velocityX + velocityY * velocityY);\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n initialCentroid: this.state.startCentroid,\n centroid: currentCentroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n deltaX,\n deltaY,\n direction: this.state.lastDirection,\n velocityX,\n velocityY,\n velocity,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n activeDeltaX: this.state.activeDeltaX,\n activeDeltaY: this.state.activeDeltaY,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current gesture\n */\n cancel(element, pointers, event) {\n if (this.isActive) {\n const el = element ?? this.element;\n this.emitPanEvent(el, 'cancel', pointers, event, this.state.lastCentroid);\n this.emitPanEvent(el, 'end', pointers, event, this.state.lastCentroid);\n }\n this.resetState();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PinchGesture - Detects pinch (zoom) movements with two or more pointers\n *\n * This gesture tracks when multiple pointers move toward or away from each other, firing events when:\n * - Two or more pointers begin moving (start)\n * - The pointers continue changing distance (ongoing)\n * - One or more pointers are released or lifted (end)\n *\n * This gesture is commonly used to implement zoom functionality in touch interfaces.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateAverageDistance, calculateCentroid, createEventName, getPinchDirection } from \"../utils/index.js\";\n\n/**\n * Configuration options for the PinchGesture\n * Uses the same options as the base PointerGesture\n */\n\n/**\n * Event data specific to pinch gesture events\n * Contains information about scale, distance, and velocity\n */\n\n/**\n * Type definition for the CustomEvent created by PinchGesture\n */\n\n/**\n * State tracking for the PinchGesture\n */\n\n/**\n * PinchGesture class for handling pinch/zoom interactions\n *\n * This gesture detects when users move multiple pointers toward or away from each other,\n * and dispatches scale-related events with distance and velocity information.\n */\nexport class PinchGesture extends PointerGesture {\n constructor(options) {\n super(_extends({}, options, {\n minPointers: options.minPointers ?? 2\n }));\n this.state = {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n totalScale: 1,\n deltaScale: 0\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Movement threshold in pixels that must be exceeded before the gesture activates.\n * Higher values reduce false positive gesture detection for small movements.\n */\n this.threshold = void 0;\n this.threshold = options.threshold ?? 0;\n }\n clone(overrides) {\n return new PinchGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n threshold: this.threshold,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n }\n resetState() {\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startDistance: 0,\n lastDistance: 0,\n lastScale: 1,\n lastTime: 0,\n velocity: 0,\n deltaScale: 0\n });\n }\n\n /**\n * Handle pointer events for the pinch gesture\n */\n handlePointerEvent(pointers, event) {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, end it gracefully\n this.emitPinchEvent(targetElement, 'cancel', pointersArray, event);\n this.resetState();\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n switch (event.type) {\n case 'pointerdown':\n if (relevantPointers.length >= 2 && !this.isActive) {\n // Calculate and store the starting distance between pointers\n const initialDistance = calculateAverageDistance(relevantPointers);\n this.state.startDistance = initialDistance;\n this.state.lastDistance = initialDistance;\n this.state.lastTime = event.timeStamp;\n\n // Store the original target element\n this.originalTarget = targetElement;\n }\n break;\n case 'pointermove':\n if (this.state.startDistance && relevantPointers.length >= this.minPointers) {\n // Calculate current distance between pointers\n const currentDistance = calculateAverageDistance(relevantPointers);\n\n // Calculate absolute distance change\n const distanceChange = Math.abs(currentDistance - this.state.lastDistance);\n\n // Only proceed if the distance between pointers has changed enough\n if (distanceChange !== 0 && distanceChange >= this.threshold) {\n // Calculate scale relative to starting distance\n const scale = this.state.startDistance ? currentDistance / this.state.startDistance : 1;\n\n // Calculate the relative scale change since last event\n const scaleChange = scale / this.state.lastScale;\n // Apply this change to the total accumulated scale\n this.state.totalScale *= scaleChange;\n // Calculate velocity (change in scale over time)\n const deltaTime = (event.timeStamp - this.state.lastTime) / 1000; // convert to seconds\n if (this.state.lastDistance) {\n const deltaDistance = currentDistance - this.state.lastDistance;\n const result = deltaDistance / deltaTime;\n this.state.velocity = Number.isNaN(result) ? 0 : result;\n }\n\n // Update state\n this.state.lastDistance = currentDistance;\n this.state.deltaScale = scale - this.state.lastScale;\n this.state.lastScale = scale;\n this.state.lastTime = event.timeStamp;\n if (!this.isActive) {\n // Mark gesture as active\n this.isActive = true;\n\n // Emit start event\n this.emitPinchEvent(targetElement, 'start', relevantPointers, event);\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n } else {\n // Emit ongoing event\n this.emitPinchEvent(targetElement, 'ongoing', relevantPointers, event);\n }\n }\n }\n break;\n case 'pointerup':\n case 'pointercancel':\n case 'forceCancel':\n if (this.isActive) {\n const remainingPointers = relevantPointers.filter(p => p.type !== 'pointerup' && p.type !== 'pointercancel');\n\n // If we have less than the minimum required pointers, end the gesture\n if (remainingPointers.length < this.minPointers) {\n if (event.type === 'pointercancel') {\n this.emitPinchEvent(targetElement, 'cancel', relevantPointers, event);\n }\n this.emitPinchEvent(targetElement, 'end', relevantPointers, event);\n\n // Reset state\n this.resetState();\n } else if (remainingPointers.length >= 2) {\n // If we still have enough pointers, update the start distance\n // to prevent jumping when a finger is lifted\n const newDistance = calculateAverageDistance(remainingPointers);\n this.state.startDistance = newDistance / this.state.lastScale;\n }\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Emit pinch-specific events with additional data\n */\n emitPinchEvent(element, phase, pointers, event) {\n // Calculate current centroid\n const centroid = calculateCentroid(pointers);\n\n // Create custom event data\n const distance = this.state.lastDistance;\n const scale = this.state.lastScale;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n scale,\n deltaScale: this.state.deltaScale,\n totalScale: this.state.totalScale,\n distance,\n velocity: this.state.velocity,\n activeGestures,\n direction: getPinchDirection(this.state.velocity),\n customData: this.customData\n };\n\n // Handle default event behavior\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * PressGesture - Detects press and hold interactions\n *\n * This gesture tracks when users press and hold on an element for a specified duration, firing events when:\n * - The press begins and passes the holding threshold time (start, ongoing)\n * - The press ends (end)\n * - The press is canceled by movement beyond threshold (cancel)\n *\n * This gesture is commonly used for contextual menus, revealing additional options, or alternate actions.\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for PressGesture\n * Extends PointerGestureOptions with press-specific options\n */\n\n/**\n * Event data specific to press gesture events\n * Contains information about the press location and duration\n */\n\n/**\n * Type definition for the CustomEvent created by PressGesture\n */\n\n/**\n * State tracking for the PressGesture\n */\n\n/**\n * PressGesture class for handling press/hold interactions\n *\n * This gesture detects when users press and hold on an element for a specified duration,\n * and dispatches press-related events when the user holds long enough.\n *\n * The `start` and `ongoing` events are dispatched at the same time once the press threshold is reached.\n * If the press is canceled (event.g., by moving too far), a `cancel` event is dispatched before the `end` event.\n */\nexport class PressGesture extends PointerGesture {\n constructor(options) {\n super(options);\n this.state = {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Duration in milliseconds required to hold before the press gesture is recognized\n */\n this.duration = void 0;\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a press\n */\n this.maxDistance = void 0;\n this.duration = options.duration ?? 500;\n this.maxDistance = options.maxDistance ?? 10;\n }\n clone(overrides) {\n return new PressGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n duration: this.duration,\n maxDistance: this.maxDistance,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n destroy() {\n this.clearPressTimer();\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.duration = options.duration ?? this.duration;\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n }\n resetState() {\n this.clearPressTimer();\n this.isActive = false;\n this.state = _extends({}, this.state, {\n startCentroid: null,\n lastPosition: null,\n timerId: null,\n startTime: 0,\n pressThresholdReached: false\n });\n }\n\n /**\n * Clear the press timer if it's active\n */\n clearPressTimer() {\n if (this.state.timerId !== null) {\n clearTimeout(this.state.timerId);\n this.state.timerId = null;\n }\n }\n\n /**\n * Handle pointer events for the press gesture\n */\n handlePointerEvent(pointers, event) {\n const pointersArray = Array.from(pointers.values());\n\n // Check for our forceCancel event to handle interrupted gestures (from contextmenu, blur)\n if (event.type === 'forceCancel') {\n // Reset all active press gestures when we get a force reset event\n this.cancelPress(event.target, pointersArray, event);\n return;\n }\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(targetElement)) {\n if (this.isActive) {\n // If the gesture was active but now should be prevented, cancel it gracefully\n this.cancelPress(targetElement, pointersArray, event);\n }\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n\n // Check if we have enough pointers and not too many\n if (relevantPointers.length < this.minPointers || relevantPointers.length > this.maxPointers) {\n if (this.isActive) {\n // Cancel or end the gesture if it was active\n this.cancelPress(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive && !this.state.startCentroid) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.state.startTime = event.timeStamp;\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n\n // Start the timer for press recognition\n this.clearPressTimer(); // Clear any existing timer first\n this.state.timerId = setTimeout(() => {\n if (this.isActive && this.state.startCentroid) {\n this.state.pressThresholdReached = true;\n const lastPosition = this.state.lastPosition;\n\n // Emit press start event\n this.emitPressEvent(targetElement, 'start', relevantPointers, event, lastPosition);\n this.emitPressEvent(targetElement, 'ongoing', relevantPointers, event, lastPosition);\n }\n }, this.duration);\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the press gesture\n if (distance > this.maxDistance) {\n this.cancelPress(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n if (this.state.pressThresholdReached) {\n // Complete the press gesture if we've held long enough\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(targetElement, 'end', relevantPointers, event, position);\n }\n\n // Reset state\n this.resetState();\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelPress(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n }\n\n /**\n * Emit press-specific events with additional data\n */\n emitPressEvent(element, phase, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Calculate current duration of the press\n const currentDuration = event.timeStamp - this.state.startTime;\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase,\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n duration: currentDuration,\n activeGestures,\n customData: this.customData\n };\n\n // Event names to trigger\n const eventName = createEventName(this.name, phase);\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current press gesture\n */\n cancelPress(element, pointers, event) {\n if (this.isActive && this.state.pressThresholdReached) {\n const position = this.state.lastPosition || this.state.startCentroid;\n this.emitPressEvent(element ?? this.element, 'cancel', pointers, event, position);\n this.emitPressEvent(element ?? this.element, 'end', pointers, event, position);\n }\n this.resetState();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TapGesture - Detects tap (quick touch without movement) gestures\n *\n * This gesture tracks simple tap interactions on elements, firing a single event when:\n * - A complete tap is detected (pointerup after brief touch without excessive movement)\n * - The tap is canceled (event.g., moved too far or held too long)\n */\n\nimport { PointerGesture } from \"../PointerGesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for TapGesture\n * Extends PointerGestureOptions with tap-specific settings\n */\n\n/**\n * Event data specific to tap gesture events\n * Contains information about the tap location and counts\n */\n\n/**\n * Type definition for the CustomEvent created by TapGesture\n */\n\n/**\n * State tracking for the TapGesture\n */\n\n/**\n * TapGesture class for handling tap interactions\n *\n * This gesture detects when users tap on elements without significant movement,\n * and can recognize single taps, double taps, or other multi-tap sequences.\n */\nexport class TapGesture extends PointerGesture {\n constructor(options) {\n super(options);\n this.state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Maximum distance a pointer can move for a gesture to still be considered a tap\n */\n this.maxDistance = void 0;\n /**\n * Number of consecutive taps to detect\n */\n this.taps = void 0;\n this.maxDistance = options.maxDistance ?? 10;\n this.taps = options.taps ?? 1;\n }\n clone(overrides) {\n return new TapGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n minPointers: this.minPointers,\n maxPointers: this.maxPointers,\n maxDistance: this.maxDistance,\n taps: this.taps,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n destroy() {\n this.resetState();\n super.destroy();\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.maxDistance = options.maxDistance ?? this.maxDistance;\n this.taps = options.taps ?? this.taps;\n }\n resetState() {\n this.isActive = false;\n this.state = {\n startCentroid: null,\n currentTapCount: 0,\n lastTapTime: 0,\n lastPosition: null\n };\n }\n\n /**\n * Handle pointer events for the tap gesture\n */\n handlePointerEvent(pointers, event) {\n const pointersArray = Array.from(pointers.values());\n\n // Find which element (if any) is being targeted\n const targetElement = this.getTargetElement(event);\n if (!targetElement) {\n return;\n }\n\n // Filter pointers to only include those targeting our element or its children\n const relevantPointers = this.getRelevantPointers(pointersArray, targetElement);\n\n // Check if we have enough pointers and not too many\n if (this.shouldPreventGesture(targetElement) || relevantPointers.length < this.minPointers || relevantPointers.length > this.maxPointers) {\n if (this.isActive) {\n // Cancel the gesture if it was active\n this.cancelTap(targetElement, relevantPointers, event);\n }\n return;\n }\n switch (event.type) {\n case 'pointerdown':\n if (!this.isActive) {\n // Calculate and store the starting centroid\n this.state.startCentroid = calculateCentroid(relevantPointers);\n this.state.lastPosition = _extends({}, this.state.startCentroid);\n this.isActive = true;\n\n // Store the original target element\n this.originalTarget = targetElement;\n }\n break;\n case 'pointermove':\n if (this.isActive && this.state.startCentroid) {\n // Calculate current position\n const currentPosition = calculateCentroid(relevantPointers);\n this.state.lastPosition = currentPosition;\n\n // Calculate distance from start position\n const deltaX = currentPosition.x - this.state.startCentroid.x;\n const deltaY = currentPosition.y - this.state.startCentroid.y;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n // If moved too far, cancel the tap gesture\n if (distance > this.maxDistance) {\n this.cancelTap(targetElement, relevantPointers, event);\n }\n }\n break;\n case 'pointerup':\n if (this.isActive) {\n // For valid tap: increment tap count\n this.state.currentTapCount += 1;\n\n // Make sure we have a valid position before firing the tap event\n const position = this.state.lastPosition || this.state.startCentroid;\n if (!position) {\n this.cancelTap(targetElement, relevantPointers, event);\n return;\n }\n\n // Check if we've reached the desired number of taps\n if (this.state.currentTapCount >= this.taps) {\n // The complete tap sequence has been detected - fire the tap event\n this.fireTapEvent(targetElement, relevantPointers, event, position);\n\n // Reset state after successful tap\n this.resetState();\n } else {\n // Store the time of this tap for multi-tap detection\n this.state.lastTapTime = event.timeStamp;\n\n // Reset active state but keep the tap count for multi-tap detection\n this.isActive = false;\n\n // For multi-tap detection: keep track of the last tap position\n // but clear the start centroid to prepare for next tap\n this.state.startCentroid = null;\n\n // Start a timeout to reset the tap count if the next tap doesn't come soon enough\n setTimeout(() => {\n if (this.state && this.state.currentTapCount > 0 && this.state.currentTapCount < this.taps) {\n this.state.currentTapCount = 0;\n }\n }, 300); // 300ms is a typical double-tap detection window\n }\n }\n break;\n case 'pointercancel':\n case 'forceCancel':\n // Cancel the gesture\n this.cancelTap(targetElement, relevantPointers, event);\n break;\n default:\n break;\n }\n }\n\n /**\n * Fire the main tap event when a valid tap is detected\n */\n fireTapEvent(element, pointers, event, position) {\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the tap event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'end',\n // The tap is complete, so we use 'end' state for the event data\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a single 'tap' event (not 'tapStart', 'tapEnd', etc.)\n const domEvent = new CustomEvent(this.name, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n\n // Apply preventDefault/stopPropagation if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n }\n\n /**\n * Cancel the current tap gesture\n */\n cancelTap(element, pointers, event) {\n if (this.state.startCentroid || this.state.lastPosition) {\n const position = this.state.lastPosition || this.state.startCentroid;\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(element);\n\n // Create custom event data for the cancel event\n const customEventData = {\n gestureName: this.name,\n centroid: position,\n target: event.target,\n srcEvent: event,\n phase: 'cancel',\n pointers,\n timeStamp: event.timeStamp,\n x: position.x,\n y: position.y,\n tapCount: this.state.currentTapCount,\n activeGestures,\n customData: this.customData\n };\n\n // Dispatch a 'tapCancel' event\n const eventName = createEventName(this.name, 'cancel');\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n element.dispatchEvent(domEvent);\n }\n this.resetState();\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * TurnWheelGesture - Detects wheel events on an element\n *\n * This gesture tracks mouse wheel or touchpad scroll events on elements, firing events when:\n * - The user scrolls/wheels on the element (ongoing)\n *\n * Unlike other gestures which may have start/ongoing/end states,\n * wheel gestures are always considered \"ongoing\" since they are discrete events.\n */\n\nimport { Gesture } from \"../Gesture.js\";\nimport { calculateCentroid, createEventName } from \"../utils/index.js\";\n\n/**\n * Configuration options for the TurnWheelGesture\n * Uses the base gesture options with additional wheel-specific options\n */\n\n/**\n * Event data specific to wheel gesture events\n * Contains information about scroll delta amounts and mode\n */\n\n/**\n * Type definition for the CustomEvent created by TurnWheelGesture\n */\n\n/**\n * State tracking for the TurnWheelGesture\n */\n\n/**\n * TurnWheelGesture class for handling wheel/scroll interactions\n *\n * This gesture detects when users scroll or use the mouse wheel on elements,\n * and dispatches corresponding scroll events with delta information.\n * Unlike most gestures, it extends directly from Gesture rather than PointerGesture.\n */\nexport class TurnWheelGesture extends Gesture {\n constructor(options) {\n super(options);\n this.state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n this.isSinglePhase = void 0;\n this.eventType = void 0;\n this.optionsType = void 0;\n this.mutableOptionsType = void 0;\n this.mutableStateType = void 0;\n /**\n * Scaling factor for delta values\n * Values > 1 increase sensitivity, values < 1 decrease sensitivity\n */\n this.sensitivity = void 0;\n /**\n * Maximum value for totalDelta values\n * Limits how large the accumulated wheel deltas can be\n */\n this.max = void 0;\n /**\n * Minimum value for totalDelta values\n * Sets a lower bound for accumulated wheel deltas\n */\n this.min = void 0;\n /**\n * Initial value for totalDelta values\n * Sets the starting value for delta trackers\n */\n this.initialDelta = void 0;\n /**\n * Whether to invert the direction of delta changes\n * When true, reverses the sign of deltaX, deltaY, and deltaZ values\n */\n this.invert = void 0;\n // Store bound event handlers to properly remove them\n this.handleWheelEventBound = void 0;\n this.sensitivity = options.sensitivity ?? 1;\n this.max = options.max ?? Number.MAX_SAFE_INTEGER;\n this.min = options.min ?? Number.MIN_SAFE_INTEGER;\n this.initialDelta = options.initialDelta ?? 0;\n this.invert = options.invert ?? false;\n this.state.totalDeltaX = this.initialDelta;\n this.state.totalDeltaY = this.initialDelta;\n this.state.totalDeltaZ = this.initialDelta;\n this.handleWheelEventBound = this.handleWheelEvent.bind(this);\n }\n clone(overrides) {\n return new TurnWheelGesture(_extends({\n name: this.name,\n preventDefault: this.preventDefault,\n stopPropagation: this.stopPropagation,\n sensitivity: this.sensitivity,\n max: this.max,\n min: this.min,\n initialDelta: this.initialDelta,\n invert: this.invert,\n requiredKeys: [...this.requiredKeys],\n pointerMode: [...this.pointerMode],\n preventIf: [...this.preventIf]\n }, overrides));\n }\n init(element, pointerManager, gestureRegistry, keyboardManager) {\n super.init(element, pointerManager, gestureRegistry, keyboardManager);\n\n // Add event listener directly to the element\n // @ts-expect-error, WheelEvent is correct.\n this.element.addEventListener('wheel', this.handleWheelEventBound);\n }\n destroy() {\n // Remove the element-specific event listener\n // @ts-expect-error, WheelEvent is correct.\n this.element.removeEventListener('wheel', this.handleWheelEventBound);\n this.resetState();\n super.destroy();\n }\n resetState() {\n this.isActive = false;\n this.state = {\n totalDeltaX: 0,\n totalDeltaY: 0,\n totalDeltaZ: 0\n };\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.sensitivity = options.sensitivity ?? this.sensitivity;\n this.max = options.max ?? this.max;\n this.min = options.min ?? this.min;\n this.initialDelta = options.initialDelta ?? this.initialDelta;\n this.invert = options.invert ?? this.invert;\n }\n\n /**\n * Handle wheel events for a specific element\n * @param element The element that received the wheel event\n * @param event The original wheel event\n */\n handleWheelEvent(event) {\n // Check if this gesture should be prevented by active gestures\n if (this.shouldPreventGesture(this.element)) {\n return;\n }\n\n // Get pointers from the PointerManager to use for centroid calculation\n const pointers = this.pointerManager.getPointers() || new Map();\n const pointersArray = Array.from(pointers.values());\n\n // Update total deltas with scaled values\n this.state.totalDeltaX += event.deltaX * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaY += event.deltaY * this.sensitivity * (this.invert ? -1 : 1);\n this.state.totalDeltaZ += event.deltaZ * this.sensitivity * (this.invert ? -1 : 1);\n\n // Apply proper min/max clamping for each axis\n // Ensure values stay between min and max bounds\n ['totalDeltaX', 'totalDeltaY', 'totalDeltaZ'].forEach(axis => {\n // First clamp at the minimum bound\n if (this.state[axis] < this.min) {\n this.state[axis] = this.min;\n }\n\n // Then clamp at the maximum bound\n if (this.state[axis] > this.max) {\n this.state[axis] = this.max;\n }\n });\n\n // Emit the wheel event\n this.emitWheelEvent(pointersArray, event);\n }\n\n /**\n * Emit wheel-specific events\n * @param pointers The current pointers on the element\n * @param event The original wheel event\n */\n emitWheelEvent(pointers, event) {\n // Calculate centroid - either from existing pointers or from the wheel event position\n const centroid = pointers.length > 0 ? calculateCentroid(pointers) : {\n x: event.clientX,\n y: event.clientY\n };\n\n // Get list of active gestures\n const activeGestures = this.gesturesRegistry.getActiveGestures(this.element);\n\n // Create custom event data\n const customEventData = {\n gestureName: this.name,\n centroid,\n target: event.target,\n srcEvent: event,\n phase: 'ongoing',\n // Wheel events are always in \"ongoing\" state\n pointers,\n timeStamp: event.timeStamp,\n deltaX: event.deltaX * this.sensitivity * (this.invert ? -1 : 1),\n deltaY: event.deltaY * this.sensitivity * (this.invert ? -1 : 1),\n deltaZ: event.deltaZ * this.sensitivity * (this.invert ? -1 : 1),\n deltaMode: event.deltaMode,\n totalDeltaX: this.state.totalDeltaX,\n totalDeltaY: this.state.totalDeltaY,\n totalDeltaZ: this.state.totalDeltaZ,\n activeGestures,\n customData: this.customData\n };\n\n // Apply default event behavior if configured\n if (this.preventDefault) {\n event.preventDefault();\n }\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n\n // Event names to trigger\n const eventName = createEventName(this.name, 'ongoing');\n\n // Dispatch custom events on the element\n const domEvent = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: customEventData\n });\n this.element.dispatchEvent(domEvent);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { GestureManager, MoveGesture, PanGesture, PinchGesture, PressGesture, TapGesture, TurnWheelGesture } from '@mui/x-internal-gestures/core';\nconst preventDefault = event => event.preventDefault();\nexport const useChartInteractionListener = ({\n svgRef\n}) => {\n React.useEffect(() => {\n const svg = svgRef.current;\n if (!svg) {\n return undefined;\n }\n const gestureManager = new GestureManager({\n gestures: [new PanGesture({\n name: 'pan',\n threshold: 0,\n maxPointers: 1\n }), new MoveGesture({\n name: 'move',\n preventIf: ['pan', 'pinch'] // Prevent move gesture when pan is active\n }), new PinchGesture({\n name: 'pinch',\n threshold: 5,\n preventIf: ['pan']\n }), new TurnWheelGesture({\n name: 'turnWheel',\n sensitivity: 0.01,\n initialDelta: 1\n }), new TapGesture({\n name: 'tap',\n maxDistance: 10,\n preventIf: ['pan', 'pinch']\n }), new PressGesture({\n name: 'quickPress',\n duration: 50,\n maxDistance: 10\n })]\n });\n gestureManager.registerElement(['pan', 'move', 'pinch', 'turnWheel', 'tap', 'quickPress'], svg);\n return () => {\n // Cleanup gesture manager\n gestureManager.destroy();\n };\n }, [svgRef]);\n const addInteractionListener = React.useCallback((interaction, callback, options) => {\n // Forcefully cast the svgRef to any, it is annoying to fix the types.\n const svg = svgRef.current;\n svg?.addEventListener(interaction, callback, options);\n return {\n cleanup: () => svg?.removeEventListener(interaction, callback)\n };\n }, [svgRef]);\n React.useEffect(() => {\n const svg = svgRef.current;\n\n // Disable gesture on safari\n // https://use-gesture.netlify.app/docs/gestures/#about-the-pinch-gesture\n svg?.addEventListener('gesturestart', preventDefault);\n svg?.addEventListener('gesturechange', preventDefault);\n svg?.addEventListener('gestureend', preventDefault);\n return () => {\n svg?.removeEventListener('gesturestart', preventDefault);\n svg?.removeEventListener('gesturechange', preventDefault);\n svg?.removeEventListener('gestureend', preventDefault);\n };\n }, [svgRef]);\n return {\n instance: {\n addInteractionListener\n }\n };\n};\nuseChartInteractionListener.params = {};\nuseChartInteractionListener.getInitialState = () => {\n return {};\n};","import { useChartAnimation } from \"./useChartAnimation/index.js\";\nimport { useChartDimensions } from \"./useChartDimensions/index.js\";\nimport { useChartExperimentalFeatures } from \"./useChartExperimentalFeature/index.js\";\nimport { useChartId } from \"./useChartId/index.js\";\nimport { useChartSeries } from \"./useChartSeries/index.js\";\nimport { useChartInteractionListener } from \"./useChartInteractionListener/index.js\";\n\n/**\n * Internal plugins that create the tools used by the other plugins.\n * These plugins are used by the Charts components.\n */\nexport const CHART_CORE_PLUGINS = [useChartId, useChartExperimentalFeatures, useChartDimensions, useChartSeries, useChartInteractionListener, useChartAnimation];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"apiRef\"];\nexport const extractPluginParamsFromProps = _ref => {\n let {\n plugins\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref.props, _excluded);\n const paramsLookup = {};\n plugins.forEach(plugin => {\n Object.assign(paramsLookup, plugin.params);\n });\n const pluginParams = {};\n Object.keys(props).forEach(propName => {\n const prop = props[propName];\n if (paramsLookup[propName]) {\n pluginParams[propName] = prop;\n }\n });\n const defaultizedPluginParams = plugins.reduce((acc, plugin) => {\n if (plugin.getDefaultizedParams) {\n return plugin.getDefaultizedParams({\n params: acc\n });\n }\n return acc;\n }, pluginParams);\n return defaultizedPluginParams;\n};","import * as React from 'react';\nimport useId from '@mui/utils/useId';\nimport { ChartStore } from \"../plugins/utils/ChartStore.js\";\nimport { CHART_CORE_PLUGINS } from \"../plugins/corePlugins/index.js\";\nimport { extractPluginParamsFromProps } from \"./extractPluginParamsFromProps.js\";\nlet globalId = 0;\n\n/**\n * This is the main hook that setups the plugin system for the chart.\n *\n * It manages the data used to create the charts.\n *\n * @param inPlugins All the plugins that will be used in the chart.\n * @param props The props passed to the chart.\n * @param seriesConfig The set of helpers used for series-specific computation.\n */\nexport function useCharts(inPlugins, props, seriesConfig) {\n const chartId = useId();\n const plugins = React.useMemo(() => [...CHART_CORE_PLUGINS, ...inPlugins], [inPlugins]);\n const pluginParams = extractPluginParamsFromProps({\n plugins,\n props\n });\n pluginParams.id = pluginParams.id ?? chartId;\n const instanceRef = React.useRef({});\n const instance = instanceRef.current;\n const publicAPI = useChartApiInitialization(props.apiRef);\n const innerChartRootRef = React.useRef(null);\n const innerSvgRef = React.useRef(null);\n const storeRef = React.useRef(null);\n if (storeRef.current == null) {\n // eslint-disable-next-line react-compiler/react-compiler\n globalId += 1;\n const initialState = {\n cacheKey: {\n id: globalId\n }\n };\n plugins.forEach(plugin => {\n if (plugin.getInitialState) {\n Object.assign(initialState, plugin.getInitialState(pluginParams, initialState, seriesConfig));\n }\n });\n storeRef.current = new ChartStore(initialState);\n }\n const runPlugin = plugin => {\n const pluginResponse = plugin({\n instance,\n params: pluginParams,\n plugins: plugins,\n store: storeRef.current,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef,\n seriesConfig\n });\n if (pluginResponse.publicAPI) {\n Object.assign(publicAPI.current, pluginResponse.publicAPI);\n }\n if (pluginResponse.instance) {\n Object.assign(instance, pluginResponse.instance);\n }\n };\n plugins.forEach(runPlugin);\n const contextValue = React.useMemo(() => ({\n store: storeRef.current,\n publicAPI: publicAPI.current,\n instance,\n svgRef: innerSvgRef,\n chartRootRef: innerChartRootRef\n }), [instance, publicAPI]);\n return {\n contextValue\n };\n}\nfunction initializeInputApiRef(inputApiRef) {\n if (inputApiRef.current == null) {\n inputApiRef.current = {};\n }\n return inputApiRef;\n}\nexport function useChartApiInitialization(inputApiRef) {\n const fallbackPublicApiRef = React.useRef({});\n if (inputApiRef) {\n return initializeInputApiRef(inputApiRef);\n }\n return fallbackPublicApiRef;\n}","'use client';\n\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\nexport const ChartContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") ChartContext.displayName = \"ChartContext\";","const warnedOnceCache = new Set();\n\n/**\n * Logs a message to the console on development mode. The warning will only be logged once.\n *\n * The message is the log's cache key. Two identical messages will only be logged once.\n *\n * This function is a no-op in production.\n *\n * @param message the message to log\n * @param gravity the gravity of the warning. Defaults to `'warning'`.\n * @returns\n */\nexport function warnOnce(message, gravity = 'warning') {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n if (!warnedOnceCache.has(cleanMessage)) {\n warnedOnceCache.add(cleanMessage);\n if (gravity === 'error') {\n console.error(cleanMessage);\n } else {\n console.warn(cleanMessage);\n }\n }\n}\nexport function clearWarningsCache() {\n warnedOnceCache.clear();\n}","'use client';\n\nimport * as React from 'react';\nimport { warnOnce } from \"../warning/index.js\";\n\n/**\n * Make sure a controlled prop is used correctly.\n * Logs errors if the prop either:\n *\n * - switch between controlled and uncontrolled\n * - modify it's default value\n * @param parameters\n */\nfunction useAssertModelConsistencyOutsideOfProduction(parameters) {\n const {\n componentName,\n propName,\n controlled,\n defaultValue,\n warningPrefix = 'MUI X'\n } = parameters;\n const [{\n initialDefaultValue,\n isControlled\n }] = React.useState({\n initialDefaultValue: defaultValue,\n isControlled: controlled !== undefined\n });\n if (isControlled !== (controlled !== undefined)) {\n warnOnce([`${warningPrefix}: A component is changing the ${isControlled ? '' : 'un'}controlled ${propName} state of ${componentName} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${propName} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'], 'error');\n }\n if (JSON.stringify(initialDefaultValue) !== JSON.stringify(defaultValue)) {\n warnOnce([`${warningPrefix}: A component is changing the default ${propName} state of an uncontrolled ${componentName} after being initialized. ` + `To suppress this warning opt to use a controlled ${componentName}.`], 'error');\n }\n}\nexport const useAssertModelConsistency = process.env.NODE_ENV === 'production' ? () => {} : useAssertModelConsistencyOutsideOfProduction;","/** Margin in the opposite direction of the axis, i.e., horizontal if the axis is vertical and vice versa. */\nexport const ZOOM_SLIDER_MARGIN = 4;\n\n/** Size of the zoom slider preview. */\nexport const ZOOM_SLIDER_PREVIEW_SIZE = 40;\n\n/** Size reserved for the zoom slider. The actual size of the slider might be smaller. */\nexport const DEFAULT_ZOOM_SLIDER_SIZE = 20 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE = 40 + 2 * ZOOM_SLIDER_MARGIN;\nexport const DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP = 'hover';\n\n/** Default margin for pie charts. */\nexport const DEFAULT_PIE_CHART_MARGIN = {\n top: 5,\n bottom: 5,\n left: 5,\n right: 5\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE, DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, DEFAULT_ZOOM_SLIDER_SIZE } from \"../../../constants.js\";\nexport const defaultZoomOptions = {\n minStart: 0,\n maxEnd: 100,\n step: 5,\n minSpan: 10,\n maxSpan: 100,\n panning: true,\n filterMode: 'keep',\n slider: {\n enabled: false,\n preview: false,\n size: DEFAULT_ZOOM_SLIDER_SIZE,\n showTooltip: DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP\n }\n};\nexport const defaultizeZoom = (zoom, axisId, axisDirection) => {\n if (!zoom) {\n return undefined;\n }\n if (zoom === true) {\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions);\n }\n return _extends({\n axisId,\n axisDirection\n }, defaultZoomOptions, zoom, {\n slider: _extends({}, defaultZoomOptions.slider, {\n size: zoom.slider?.preview ?? defaultZoomOptions.slider.preview ? DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE : DEFAULT_ZOOM_SLIDER_SIZE\n }, zoom.slider)\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { defaultizeZoom } from \"./defaultizeZoom.js\";\nimport { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY, DEFAULT_AXIS_SIZE_HEIGHT, DEFAULT_AXIS_SIZE_WIDTH, AXIS_LABEL_DEFAULT_HEIGHT } from \"../../../../constants/index.js\";\nexport function defaultizeXAxis(inAxes, dataset) {\n const offsets = {\n top: 0,\n bottom: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_X_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first x-axis is defaultized to the bottom\n const defaultPosition = index === 0 ? 'bottom' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultHeight = DEFAULT_AXIS_SIZE_HEIGHT + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-x-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n height: axisConfig.height ?? defaultHeight,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'x')\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.height;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: x-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}\nexport function defaultizeYAxis(inAxes, dataset) {\n const offsets = {\n right: 0,\n left: 0,\n none: 0\n };\n const inputAxes = inAxes && inAxes.length > 0 ? inAxes : [{\n id: DEFAULT_Y_AXIS_KEY,\n scaleType: 'linear'\n }];\n const parsedAxes = inputAxes.map((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n\n // The first y-axis is defaultized to the left\n const defaultPosition = index === 0 ? 'left' : 'none';\n const position = axisConfig.position ?? defaultPosition;\n const defaultWidth = DEFAULT_AXIS_SIZE_WIDTH + (axisConfig.label ? AXIS_LABEL_DEFAULT_HEIGHT : 0);\n const id = axisConfig.id ?? `defaultized-y-axis-${index}`;\n const sharedConfig = _extends({\n offset: offsets[position]\n }, axisConfig, {\n id,\n position,\n width: axisConfig.width ?? defaultWidth,\n zoom: defaultizeZoom(axisConfig.zoom, id, 'y')\n });\n\n // Increment the offset for the next axis\n if (position !== 'none') {\n offsets[position] += sharedConfig.width;\n if (sharedConfig.zoom?.slider.enabled) {\n offsets[position] += sharedConfig.zoom.slider.size;\n }\n }\n\n // If `dataKey` is NOT provided\n if (dataKey === undefined || axisConfig.data !== undefined) {\n return sharedConfig;\n }\n if (dataset === undefined) {\n throw new Error(`MUI X Charts: y-axis uses \\`dataKey\\` but no \\`dataset\\` is provided.`);\n }\n\n // If `dataKey` is provided\n return _extends({}, sharedConfig, {\n data: dataset.map(d => d[dataKey])\n });\n });\n return parsedAxes;\n}","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","/**\n * Creates a default formatter function for continuous scales (e.g., linear, sqrt, log).\n * @returns A formatter function for continuous values.\n */\nexport function createScalarFormatter(tickNumber, zoomScale) {\n return function defaultScalarValueFormatter(value, context) {\n if (context.location === 'tick') {\n return context.scale.tickFormat(tickNumber)(value);\n }\n if (context.location === 'zoom-slider-tooltip') {\n return zoomScale.tickFormat(2)(value);\n }\n return `${value}`;\n };\n}","/**\n * Use this type instead of `AxisScaleConfig` when the values\n * shouldn't be provided by the user.\n */\n\n/**\n * Config that is shared between cartesian and polar axes.\n */\n\n/**\n * Use this type for advanced typing. For basic usage, use `XAxis`, `YAxis`, `RotationAxis` or `RadiusAxis`.\n */\n\nexport function isBandScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'band';\n}\nexport function isPointScaleConfig(scaleConfig) {\n return scaleConfig.scaleType === 'point';\n}\n\n/**\n * The data format returned by onAxisClick.\n */\n\n/**\n * Identifies a data point within an axis.\n */\n\n/**\n * The axis configuration with missing values filled with default values.\n */\n\n/**\n * The x-axis configuration with missing values filled with default values.\n */\n\n/**\n * The y-axis configuration with missing values filled with default values.\n */","import { scaleOrdinal, scaleThreshold, scaleSequential } from '@mui/x-charts-vendor/d3-scale';\nexport function getSequentialColorScale(config) {\n if (config.type === 'piecewise') {\n return scaleThreshold(config.thresholds, config.colors);\n }\n return scaleSequential([config.min ?? 0, config.max ?? 100], config.color);\n}\nexport function getOrdinalColorScale(config) {\n if (config.values) {\n return scaleOrdinal(config.values, config.colors).unknown(config.unknownColor ?? null);\n }\n return scaleOrdinal(config.colors.map((_, index) => index), config.colors).unknown(config.unknownColor ?? null);\n}\nexport function getColorScale(config) {\n return config.type === 'ordinal' ? getOrdinalColorScale(config) : getSequentialColorScale(config);\n}","export function getTickNumber(params) {\n const {\n tickMaxStep,\n tickMinStep,\n tickNumber,\n range,\n domain\n } = params;\n const maxTicks = tickMinStep === undefined ? 999 : Math.floor(Math.abs(domain[1] - domain[0]) / tickMinStep);\n const minTicks = tickMaxStep === undefined ? 2 : Math.ceil(Math.abs(domain[1] - domain[0]) / tickMaxStep);\n const defaultizedTickNumber = tickNumber ?? Math.floor(Math.abs(range[1] - range[0]) / 50);\n return Math.min(maxTicks, Math.max(minTicks, defaultizedTickNumber));\n}\nexport function scaleTickNumberByRange(tickNumber, range) {\n const rangeGap = range[1] - range[0];\n\n /* If the range start and end are the same, `tickNumber` will become infinity, so we default to 1. */\n if (rangeGap === 0) {\n return 1;\n }\n return tickNumber / ((range[1] - range[0]) / 100);\n}","import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from '@mui/x-charts-vendor/d3-scale';\nexport function getScale(scaleType, domain, range) {\n switch (scaleType) {\n case 'log':\n return scaleLog(domain, range);\n case 'pow':\n return scalePow(domain, range);\n case 'sqrt':\n return scaleSqrt(domain, range);\n case 'time':\n return scaleTime(domain, range);\n case 'utc':\n return scaleUtc(domain, range);\n default:\n return scaleLinear(domain, range);\n }\n}","import { scaleTime } from '@mui/x-charts-vendor/d3-scale';\n/**\n * Checks if the provided data array contains Date objects.\n * @param data The data array to check.\n * @returns A type predicate indicating if the data is an array of Date objects.\n */\nexport const isDateData = data => data?.[0] instanceof Date;\n\n/**\n * Creates a formatter function for date values.\n * @param axis The axis configuration.\n * @param range The range for the time scale.\n * @returns A formatter function for date values.\n */\nexport function createDateFormatter(axis, range) {\n const timeScale = scaleTime(axis.data, range);\n return (v, {\n location\n }) => location === 'tick' ? timeScale.tickFormat(axis.tickNumber)(v) : `${v.toLocaleString()}`;\n}","/**\n * Applies the zoom into the scale range.\n * It changes the screen coordinates that the scale covers.\n * Not the data that is displayed.\n *\n * @param scaleRange the original range in real screen coordinates.\n * @param zoomRange the zoom range in percentage.\n * @returns zoomed range in real screen coordinates.\n */\nexport const zoomScaleRange = (scaleRange, zoomRange) => {\n const rangeGap = scaleRange[1] - scaleRange[0];\n const zoomGap = zoomRange[1] - zoomRange[0];\n\n // If current zoom show the scale between p1 and p2 percents\n // The range should be extended by adding [0, p1] and [p2, 100] segments\n const min = scaleRange[0] - zoomRange[0] * rangeGap / zoomGap;\n const max = scaleRange[1] + (100 - zoomRange[1]) * rangeGap / zoomGap;\n return [min, max];\n};","let cartesianInstance;\nlet polarInstance;\nclass CartesianSeriesTypes {\n constructor() {\n this.types = new Set();\n if (cartesianInstance) {\n throw new Error('You can only create one instance!');\n }\n cartesianInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nclass PolarSeriesTypes {\n constructor() {\n this.types = new Set();\n if (polarInstance) {\n throw new Error('You can only create one instance!');\n }\n polarInstance = this.types;\n }\n addType(value) {\n this.types.add(value);\n }\n getTypes() {\n return this.types;\n }\n}\nexport const cartesianSeriesTypes = new CartesianSeriesTypes();\ncartesianSeriesTypes.addType('bar');\ncartesianSeriesTypes.addType('line');\ncartesianSeriesTypes.addType('scatter');\nexport const polarSeriesTypes = new PolarSeriesTypes();\npolarSeriesTypes.addType('radar');","import { cartesianSeriesTypes } from \"./configInit.js\";\nexport function isCartesianSeriesType(seriesType) {\n return cartesianSeriesTypes.getTypes().has(seriesType);\n}","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nconst axisExtremumCallback = (acc, chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) => {\n const getter = axisDirection === 'x' ? seriesConfig[chartType].xExtremumGetter : seriesConfig[chartType].yExtremumGetter;\n const series = formattedSeries[chartType]?.series ?? {};\n const [minChartTypeData, maxChartTypeData] = getter?.({\n series,\n axis,\n axisIndex,\n isDefaultAxis: axisIndex === 0,\n getFilters\n }) ?? [Infinity, -Infinity];\n const [minData, maxData] = acc;\n return [Math.min(minChartTypeData, minData), Math.max(maxChartTypeData, maxData)];\n};\nexport const getAxisExtremum = (axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) => {\n const charTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n const extremums = charTypes.reduce((acc, charType) => axisExtremumCallback(acc, charType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters), [Infinity, -Infinity]);\n if (Number.isNaN(extremums[0]) || Number.isNaN(extremums[1])) {\n return [Infinity, -Infinity];\n }\n return extremums;\n};","import { isCartesianSeriesType } from \"../../../isCartesian.js\";\nexport const getAxisTriggerTooltip = (axisDirection, seriesConfig, formattedSeries, defaultAxisId) => {\n const tooltipAxesIds = new Set();\n const chartTypes = Object.keys(seriesConfig).filter(isCartesianSeriesType);\n chartTypes.forEach(chartType => {\n const series = formattedSeries[chartType]?.series ?? {};\n const tooltipAxes = seriesConfig[chartType].axisTooltipGetter?.(series);\n if (tooltipAxes === undefined) {\n return;\n }\n tooltipAxes.forEach(({\n axisId,\n direction\n }) => {\n if (direction === axisDirection) {\n tooltipAxesIds.add(axisId ?? defaultAxisId);\n }\n });\n });\n return tooltipAxesIds;\n};","export const getAxisDomainLimit = (axis, axisDirection, axisIndex, formattedSeries) => {\n if (axis.domainLimit !== undefined) {\n return axis.domainLimit;\n }\n if (axisDirection === 'x') {\n for (const seriesId of formattedSeries.line?.seriesOrder ?? []) {\n const series = formattedSeries.line.series[seriesId];\n if (series.xAxisId === axis.id || series.xAxisId === undefined && axisIndex === 0) {\n return 'strict';\n }\n }\n }\n return 'nice';\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { scaleBand, scalePoint } from '@mui/x-charts-vendor/d3-scale';\nimport { createScalarFormatter } from \"../../../defaultValueFormatters.js\";\nimport { isBandScaleConfig, isPointScaleConfig } from \"../../../../models/axis.js\";\nimport { getColorScale, getOrdinalColorScale } from \"../../../colorScale.js\";\nimport { getTickNumber, scaleTickNumberByRange } from \"../../../ticks.js\";\nimport { getScale } from \"../../../getScale.js\";\nimport { isDateData, createDateFormatter } from \"../../../dateHelpers.js\";\nimport { zoomScaleRange } from \"./zoom.js\";\nimport { getAxisExtremum } from \"./getAxisExtremum.js\";\nimport { getAxisTriggerTooltip } from \"./getAxisTriggerTooltip.js\";\nimport { getAxisDomainLimit } from \"./getAxisDomainLimit.js\";\nfunction getRange(drawingArea, axisDirection,\n// | 'rotation' | 'radius',\naxis) {\n const range = axisDirection === 'x' ? [drawingArea.left, drawingArea.left + drawingArea.width] : [drawingArea.top + drawingArea.height, drawingArea.top];\n return axis.reverse ? [range[1], range[0]] : range;\n}\nconst DEFAULT_CATEGORY_GAP_RATIO = 0.2;\nconst DEFAULT_BAR_GAP_RATIO = 0.1;\nexport function computeAxisValue({\n drawingArea,\n formattedSeries,\n axis: allAxis,\n seriesConfig,\n axisDirection,\n zoomMap,\n zoomOptions,\n getFilters,\n preferStrictDomainInLineCharts\n}) {\n if (allAxis === undefined) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const axisIdsTriggeringTooltip = getAxisTriggerTooltip(axisDirection, seriesConfig, formattedSeries, allAxis[0].id);\n const completeAxis = {};\n allAxis.forEach((eachAxis, axisIndex) => {\n const axis = eachAxis;\n const zoomOption = zoomOptions?.[axis.id];\n const zoom = zoomMap?.get(axis.id);\n const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];\n const range = getRange(drawingArea, axisDirection, axis);\n const [minData, maxData] = getAxisExtremum(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, zoom === undefined && !zoomOption ? getFilters : undefined // Do not apply filtering if zoom is already defined.\n );\n const triggerTooltip = !axis.ignoreTooltip && axisIdsTriggeringTooltip.has(axis.id);\n const data = axis.data ?? [];\n if (isBandScaleConfig(axis)) {\n const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;\n const barGapRatio = axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;\n // Reverse range because ordinal scales are presented from top to bottom on y-axis\n const scaleRange = axisDirection === 'y' ? [range[1], range[0]] : range;\n const zoomedRange = zoomScaleRange(scaleRange, zoomRange);\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n categoryGapRatio,\n barGapRatio,\n triggerTooltip\n }, axis, {\n data,\n scale: scaleBand(axis.data, zoomedRange).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),\n tickNumber: axis.data.length,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n if (isDateData(axis.data)) {\n const dateFormatter = createDateFormatter(axis, scaleRange);\n completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;\n }\n }\n if (isPointScaleConfig(axis)) {\n const scaleRange = axisDirection === 'y' ? [...range].reverse() : range;\n const zoomedRange = zoomScaleRange(scaleRange, zoomRange);\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, axis, {\n data,\n scale: scalePoint(axis.data, zoomedRange),\n tickNumber: axis.data.length,\n colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? getOrdinalColorScale(_extends({\n values: axis.data\n }, axis.colorMap)) : getColorScale(axis.colorMap))\n });\n if (isDateData(axis.data)) {\n const dateFormatter = createDateFormatter(axis, scaleRange);\n completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;\n }\n }\n if (axis.scaleType === 'band' || axis.scaleType === 'point') {\n // Could be merged with the two previous \"if conditions\" but then TS does not get that `axis.scaleType` can't be `band` or `point`.\n return;\n }\n const scaleType = axis.scaleType ?? 'linear';\n const domainLimit = preferStrictDomainInLineCharts ? getAxisDomainLimit(axis, axisDirection, axisIndex, formattedSeries) : axis.domainLimit ?? 'nice';\n const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];\n if (typeof domainLimit === 'function') {\n const {\n min,\n max\n } = domainLimit(minData, maxData);\n axisExtremums[0] = min;\n axisExtremums[1] = max;\n }\n const rawTickNumber = getTickNumber(_extends({}, axis, {\n range,\n domain: axisExtremums\n }));\n const tickNumber = scaleTickNumberByRange(rawTickNumber, zoomRange);\n const zoomedRange = zoomScaleRange(range, zoomRange);\n const scale = getScale(scaleType, axisExtremums, zoomedRange);\n const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;\n const [minDomain, maxDomain] = finalScale.domain();\n const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];\n completeAxis[axis.id] = _extends({\n offset: 0,\n height: 0,\n triggerTooltip\n }, axis, {\n data,\n scaleType: scaleType,\n scale: finalScale.domain(domain),\n tickNumber,\n colorScale: axis.colorMap && getColorScale(axis.colorMap),\n valueFormatter: axis.valueFormatter ?? createScalarFormatter(tickNumber, getScale(scaleType, range.map(v => scale.invert(v)), range))\n });\n });\n return {\n axis: completeAxis,\n axisIds: allAxis.map(({\n id\n }) => id)\n };\n}","export function isDefined(value) {\n return value !== null && value !== undefined;\n}","import { isDefined } from \"../../../isDefined.js\";\nimport { getAxisExtremum } from \"./getAxisExtremum.js\";\nimport { getScale } from \"../../../getScale.js\";\nexport function createAxisFilterMapper({\n zoomMap,\n zoomOptions,\n seriesConfig,\n formattedSeries,\n direction\n}) {\n return (axis, axisIndex) => {\n const zoomOption = zoomOptions[axis.id];\n if (!zoomOption || zoomOption.filterMode !== 'discard') {\n return null;\n }\n const zoom = zoomMap?.get(axis.id);\n if (zoom === undefined || zoom.start <= 0 && zoom.end >= 100) {\n // No zoom, or zoom with all data visible\n return null;\n }\n let extremums = [];\n const scaleType = axis.scaleType;\n if (scaleType === 'point' || scaleType === 'band') {\n extremums = [0, (axis.data?.length ?? 1) - 1];\n } else {\n extremums = getAxisExtremum(axis, direction, seriesConfig, axisIndex, formattedSeries);\n }\n let min;\n let max;\n const continuousScaleType = !scaleType || scaleType === 'band' || scaleType === 'point' ? 'linear' : scaleType;\n [min, max] = getScale(continuousScaleType, extremums, [0, 100]).nice().domain();\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n const minVal = min + zoom.start * (max - min) / 100;\n const maxVal = min + zoom.end * (max - min) / 100;\n return (value, dataIndex) => {\n const val = value[direction] ?? axis.data?.[dataIndex];\n if (val == null) {\n // If the value does not exist because of missing data point, or out of range index, we just ignore.\n return true;\n }\n if (axis.scaleType === 'point' || axis.scaleType === 'band' || typeof val === 'string') {\n return dataIndex >= minVal && dataIndex <= maxVal;\n }\n return val >= minVal && val <= maxVal;\n };\n };\n}\nexport const createGetAxisFilters = filters => ({\n currentAxisId,\n seriesXAxisId,\n seriesYAxisId,\n isDefaultAxis\n}) => {\n return (value, dataIndex) => {\n const axisId = currentAxisId === seriesXAxisId ? seriesYAxisId : seriesXAxisId;\n if (!axisId || isDefaultAxis) {\n return Object.values(filters ?? {})[0]?.(value, dataIndex) ?? true;\n }\n const data = [seriesYAxisId, seriesXAxisId].filter(id => id !== currentAxisId).map(id => filters[id ?? '']).filter(isDefined);\n return data.every(f => f(value, dataIndex));\n };\n};","import { defaultizeZoom } from \"./defaultizeZoom.js\";\nexport const createZoomLookup = axisDirection => (axes = []) => axes.reduce((acc, v) => {\n // @ts-ignore\n const {\n zoom,\n id: axisId\n } = v;\n const defaultizedZoom = defaultizeZoom(zoom, axisId, axisDirection);\n if (defaultizedZoom) {\n acc[axisId] = defaultizedZoom;\n }\n return acc;\n}, {});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/index.js\";\nimport { selectorChartSeriesConfig, selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/index.js\";\nimport { createSelector } from \"../../utils/selectors.js\";\nimport { computeAxisValue } from \"./computeAxisValue.js\";\nimport { createAxisFilterMapper, createGetAxisFilters } from \"./createAxisFilterMapper.js\";\nimport { createZoomLookup } from \"./createZoomLookup.js\";\nimport { selectorChartRawXAxis, selectorChartRawYAxis } from \"./useChartCartesianAxisLayout.selectors.js\";\nimport { selectorPreferStrictDomainInLineCharts } from \"../../corePlugins/useChartExperimentalFeature/index.js\";\nexport const createZoomMap = zoom => {\n const zoomItemMap = new Map();\n zoom.forEach(zoomItem => {\n zoomItemMap.set(zoomItem.axisId, zoomItem);\n });\n return zoomItemMap;\n};\nconst selectorChartZoomState = state => state.zoom;\n\n/**\n * Following selectors are not exported because they exist in the MIT chart only to ba able to reuse the Zoom state from the pro.\n */\n\nexport const selectorChartZoomIsInteracting = createSelector([selectorChartZoomState], zoom => zoom?.isInteracting);\nexport const selectorChartZoomMap = createSelector([selectorChartZoomState], zoom => zoom?.zoomData && createZoomMap(zoom?.zoomData));\nexport const selectorChartZoomOptionsLookup = createSelector([selectorChartRawXAxis, selectorChartRawYAxis], (xAxis, yAxis) => _extends({}, createZoomLookup('x')(xAxis), createZoomLookup('y')(yAxis)));\nexport const selectorChartAxisZoomOptionsLookup = createSelector([selectorChartZoomOptionsLookup, (_, axisId) => axisId], (axisLookup, axisId) => axisLookup[axisId]);\nconst selectorChartXFilter = createSelector([selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartSeriesConfig, selectorChartSeriesProcessed], (zoomMap, zoomOptions, seriesConfig, formattedSeries) => zoomMap && zoomOptions && createAxisFilterMapper({\n zoomMap,\n zoomOptions,\n seriesConfig,\n formattedSeries,\n direction: 'x'\n}));\nconst selectorChartYFilter = createSelector([selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartSeriesConfig, selectorChartSeriesProcessed], (zoomMap, zoomOptions, seriesConfig, formattedSeries) => zoomMap && zoomOptions && createAxisFilterMapper({\n zoomMap,\n zoomOptions,\n seriesConfig,\n formattedSeries,\n direction: 'y'\n}));\nexport const selectorChartZoomAxisFilters = createSelector([selectorChartXFilter, selectorChartYFilter, selectorChartRawXAxis, selectorChartRawYAxis], (xMapper, yMapper, xAxis, yAxis) => {\n if (xMapper === undefined || yMapper === undefined) {\n // Early return if there is no zoom.\n return undefined;\n }\n const xFilters = xAxis?.reduce((acc, axis, index) => {\n const filter = xMapper(axis, index);\n if (filter !== null) {\n acc[axis.id] = filter;\n }\n return acc;\n }, {});\n const yFilters = yAxis?.reduce((acc, axis, index) => {\n const filter = yMapper(axis, index);\n if (filter !== null) {\n acc[axis.id] = filter;\n }\n return acc;\n }, {});\n if (Object.keys(xFilters ?? {}).length === 0 && Object.keys(yFilters ?? {}).length === 0) {\n return undefined;\n }\n return createGetAxisFilters(_extends({}, xFilters, yFilters));\n});\n\n/**\n * The only interesting selectors that merge axis data and zoom if provided.\n */\n\nexport const selectorChartXAxis = createSelector([selectorChartRawXAxis, selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts], (axis, drawingArea, formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts) => computeAxisValue({\n drawingArea,\n formattedSeries,\n axis,\n seriesConfig,\n axisDirection: 'x',\n zoomMap,\n zoomOptions,\n getFilters,\n preferStrictDomainInLineCharts\n}));\nexport const selectorChartYAxis = createSelector([selectorChartRawYAxis, selectorChartDrawingArea, selectorChartSeriesProcessed, selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters, selectorPreferStrictDomainInLineCharts], (axis, drawingArea, formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters, preferStrictDomainInLineCharts) => computeAxisValue({\n drawingArea,\n formattedSeries,\n axis,\n seriesConfig,\n axisDirection: 'y',\n zoomMap,\n zoomOptions,\n getFilters,\n preferStrictDomainInLineCharts\n}));\nexport const selectorChartAxis = createSelector([selectorChartXAxis, selectorChartYAxis, (_, axisId) => axisId], (xAxes, yAxes, axisId) => xAxes?.axis[axisId] ?? yAxes?.axis[axisId]);\nexport const selectorChartRawAxis = createSelector([selectorChartRawXAxis, selectorChartRawYAxis, (state, axisId) => axisId], (xAxes, yAxes, axisId) => {\n const axis = xAxes?.find(a => a.id === axisId) ?? yAxes?.find(a => a.id === axisId) ?? null;\n if (!axis) {\n return undefined;\n }\n return axis;\n});","export function isBandScale(scale) {\n return scale.bandwidth !== undefined;\n}","import { isBandScale } from \"../../../isBandScale.js\";\nfunction getAsANumber(value) {\n return value instanceof Date ? value.getTime() : value;\n}\n\n/**\n * For a pointer coordinate, this function returns the dataIndex associated.\n * Returns `-1` if no dataIndex matches.\n */\nexport function getAxisIndex(axisConfig, pointerValue) {\n const {\n scale,\n data: axisData,\n reverse\n } = axisConfig;\n if (!isBandScale(scale)) {\n const value = scale.invert(pointerValue);\n if (axisData === undefined) {\n return -1;\n }\n const valueAsNumber = getAsANumber(value);\n const closestIndex = axisData?.findIndex((pointValue, index) => {\n const v = getAsANumber(pointValue);\n if (v > valueAsNumber) {\n if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsANumber(axisData[index - 1]))) {\n return true;\n }\n }\n if (v <= valueAsNumber) {\n if (index === axisData.length - 1 || Math.abs(getAsANumber(value) - v) < Math.abs(getAsANumber(value) - getAsANumber(axisData[index + 1]))) {\n return true;\n }\n }\n return false;\n });\n return closestIndex;\n }\n const dataIndex = scale.bandwidth() === 0 ? Math.floor((pointerValue - Math.min(...scale.range()) + scale.step() / 2) / scale.step()) : Math.floor((pointerValue - Math.min(...scale.range())) / scale.step());\n if (dataIndex < 0 || dataIndex >= axisData.length) {\n return -1;\n }\n return reverse ? axisData.length - 1 - dataIndex : dataIndex;\n}\n\n/**\n * For a pointer coordinate, this function returns the value associated.\n * Returns `null` if the coordinate has no value associated.\n */\nexport function getAxisValue(axisConfig, pointerValue, dataIndex) {\n const {\n scale,\n data: axisData\n } = axisConfig;\n if (!isBandScale(scale)) {\n const value = scale.invert(pointerValue);\n if (dataIndex < 0) {\n return value;\n }\n return axisData[dataIndex];\n }\n if (dataIndex < 0 || dataIndex >= axisData.length) {\n return null;\n }\n return axisData[dataIndex];\n}","/**\n * Transform mouse event position to coordinates inside the SVG.\n * @param svg The SVG element\n * @param event The mouseEvent to transform\n */\nexport function getSVGPoint(svg, event) {\n const pt = svg.createSVGPoint();\n pt.x = event.clientX;\n pt.y = event.clientY;\n return pt.matrixTransform(svg.getScreenCTM().inverse());\n}","const is = Object.is;\n\n/**\n * Fast shallow compare for objects.\n * @returns true if objects are equal.\n */\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n return aLength === bLength;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartInteraction = ({\n store\n}) => {\n const cleanInteraction = useEventCallback(function cleanInteraction() {\n store.update(prev => {\n return _extends({}, prev, {\n interaction: {\n pointer: null,\n item: null\n }\n });\n });\n });\n const removeItemInteraction = useEventCallback(function removeItemInteraction(itemToRemove) {\n store.update(prev => {\n const prevItem = prev.interaction.item;\n if (!itemToRemove) {\n // Remove without taking care of the current item\n return prevItem === null ? prev : _extends({}, prev, {\n interaction: _extends({}, prev.interaction, {\n item: null\n })\n });\n }\n if (prevItem === null || Object.keys(itemToRemove).some(key => itemToRemove[key] !== prevItem[key])) {\n // The current item is already different from the one to remove. No need to clean it.\n return prev;\n }\n return _extends({}, prev, {\n interaction: _extends({}, prev.interaction, {\n item: null\n })\n });\n });\n });\n const setItemInteraction = useEventCallback(function setItemInteraction(newItem) {\n store.update(prev => {\n if (fastObjectShallowCompare(prev.interaction.item, newItem)) {\n return prev;\n }\n return _extends({}, prev, {\n interaction: _extends({}, prev.interaction, {\n item: newItem\n })\n });\n });\n });\n const setPointerCoordinate = useEventCallback(function setPointerCoordinate(coordinate) {\n store.update(prev => _extends({}, prev, {\n interaction: _extends({}, prev.interaction, {\n pointer: coordinate\n })\n }));\n });\n return {\n instance: {\n cleanInteraction,\n setItemInteraction,\n removeItemInteraction,\n setPointerCoordinate\n }\n };\n};\nuseChartInteraction.getInitialState = () => ({\n interaction: {\n item: null,\n pointer: null\n }\n});\nuseChartInteraction.params = {};","import { createSelector } from \"../../utils/selectors.js\";\nconst selectInteraction = state => state.interaction;\nexport const selectorChartsInteractionIsInitialized = createSelector([selectInteraction], interaction => interaction !== undefined);\nexport const selectorChartsInteractionItem = createSelector([selectInteraction], interaction => interaction?.item ?? null);\nexport const selectorChartsInteractionPointer = createSelector([selectInteraction], interaction => interaction?.pointer ?? null);\nexport const selectorChartsInteractionPointerX = createSelector([selectorChartsInteractionPointer], pointer => pointer && pointer.x);\nexport const selectorChartsInteractionPointerY = createSelector([selectorChartsInteractionPointer], pointer => pointer && pointer.y);\nexport const selectorChartsInteractionItemIsDefined = createSelector([selectorChartsInteractionItem], item => item !== null);","/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * Check if two values are deeply equal.\n */\n\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (Array.isArray(a)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!isDeepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n const entriesA = Array.from(a.entries());\n for (let i = 0; i < entriesA.length; i += 1) {\n if (!b.has(entriesA[i][0])) {\n return false;\n }\n }\n for (let i = 0; i < entriesA.length; i += 1) {\n const entryA = entriesA[i];\n if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n const entries = Array.from(a.entries());\n for (let i = 0; i < entries.length; i += 1) {\n if (!b.has(entries[i][0])) {\n return false;\n }\n }\n return true;\n }\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n const keys = Object.keys(a);\n const length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (let i = 0; i < length; i += 1) {\n const key = keys[i];\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}","import { isDeepEqual } from '@mui/x-internals/isDeepEqual';\nimport { createSelector } from \"../../utils/selectors.js\";\nimport { selectorChartsInteractionPointerX, selectorChartsInteractionPointerY } from \"../useChartInteraction/useChartInteraction.selectors.js\";\nimport { getAxisIndex, getAxisValue } from \"./getAxisValue.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\nconst optionalGetAxisId = (_, id) => id;\n\n/**\n * Get interaction indexes\n */\n\nfunction indexGetter(value, axes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map(id => getAxisIndex(axes.axis[id], value)) : getAxisIndex(axes.axis[ids], value);\n}\nexport const selectChartsInteractionAxisIndex = (value, axes, id) => {\n if (value === null) {\n return null;\n }\n const index = indexGetter(value, axes, id);\n return index === -1 ? null : index;\n};\nexport const selectorChartsInteractionXAxisIndex = createSelector([selectorChartsInteractionPointerX, selectorChartXAxis, optionalGetAxisId], selectChartsInteractionAxisIndex);\nexport const selectorChartsInteractionYAxisIndex = createSelector([selectorChartsInteractionPointerY, selectorChartYAxis, optionalGetAxisId], selectChartsInteractionAxisIndex);\nexport const selectorChartAxisInteraction = createSelector([selectorChartsInteractionPointerX, selectorChartsInteractionPointerY, selectorChartXAxis, selectorChartYAxis], (x, y, xAxis, yAxis) => [...(x === null ? [] : xAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(x, xAxis, axisId)\n}))), ...(y === null ? [] : yAxis.axisIds.map(axisId => ({\n axisId,\n dataIndex: indexGetter(y, yAxis, axisId)\n})))].filter(item => item.dataIndex !== null && item.dataIndex >= 0));\n\n/**\n * Get interaction values\n */\n\nfunction valueGetter(value, axes, indexes, ids = axes.axisIds[0]) {\n return Array.isArray(ids) ? ids.map((id, axisIndex) => getAxisValue(axes.axis[id], value, indexes[axisIndex])) : getAxisValue(axes.axis[ids], value, indexes);\n}\nexport const selectorChartsInteractionXAxisValue = createSelector([selectorChartsInteractionPointerX, selectorChartXAxis, selectorChartsInteractionXAxisIndex, optionalGetAxisId], (x, xAxes, xIndex, id) => {\n if (x === null || xIndex === null || xAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(x, xAxes, xIndex, id);\n});\nexport const selectorChartsInteractionYAxisValue = createSelector([selectorChartsInteractionPointerY, selectorChartYAxis, selectorChartsInteractionYAxisIndex, optionalGetAxisId], (y, yAxes, yIndex, id) => {\n if (y === null || yIndex === null || yAxes.axisIds.length === 0) {\n return null;\n }\n return valueGetter(y, yAxes, yIndex, id);\n});\n\n/**\n * Get x-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipXAxes = createSelector([selectorChartsInteractionPointerX, selectorChartXAxis], (value, axes) => {\n if (value === null) {\n return [];\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n}, {\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n});\n\n/**\n * Get y-axis ids and corresponding data index that should be display in the tooltip.\n */\nexport const selectorChartsInteractionTooltipYAxes = createSelector([selectorChartsInteractionPointerY, selectorChartYAxis], (value, axes) => {\n if (value === null) {\n return [];\n }\n return axes.axisIds.filter(id => axes.axis[id].triggerTooltip).map(axisId => ({\n axisId,\n dataIndex: getAxisIndex(axes.axis[axisId], value)\n })).filter(({\n dataIndex\n }) => dataIndex >= 0);\n}, {\n memoizeOptions: {\n // Keep the same reference if array content is the same.\n // If possible, avoid this pattern by creating selectors that\n // uses string/number as arguments.\n resultEqualityCheck: isDeepEqual\n }\n});\n\n/**\n * Return `true` if the axis tooltip has something to display.\n */\nexport const selectorChartsInteractionAxisTooltip = createSelector([selectorChartsInteractionTooltipXAxes, selectorChartsInteractionTooltipYAxes], (xTooltip, yTooltip) => xTooltip.length > 0 || yTooltip.length > 0);","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\n/* eslint-disable react-compiler/react-compiler */\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\nconst noop = () => {};\nexport function useLazySelectorEffect(store, selector, effect,\n/**\n * If true, the selector will be ignored.\n */\nskip) {\n const instance = useLazyRef(initialize, {\n store,\n selector,\n skip\n }).current;\n instance.effect = effect;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(instance.onMount(skip), [skip]);\n}\n\n// `useLazyRef` typings are incorrect, `params` should not be optional\nfunction initialize(params) {\n const {\n store,\n selector,\n skip: initialSkip\n } = params;\n let isRunning = false;\n let previousState;\n\n // We want a single subscription done right away and cleared on unmount only,\n // but React triggers `useOnMount` multiple times in dev, so we need to manage\n // the subscription anyway.\n const subscribe = () => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n instance.dispose ??= store.subscribe(state => {\n const nextState = selector(state);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n instance.effect(previousState, nextState);\n previousState = nextState;\n });\n };\n const instance = {\n effect: noop,\n dispose: null,\n onMount: skip => () => {\n if (skip) {\n return undefined;\n }\n if (!isRunning) {\n // Initialize values\n isRunning = true;\n previousState = selector(store.value);\n }\n subscribe();\n return () => {\n instance.dispose?.();\n instance.dispose = null;\n };\n }\n };\n if (!initialSkip) {\n // Initialize values\n isRunning = true;\n previousState = selector(store.value);\n subscribe();\n }\n return instance;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { rainbowSurgePalette } from \"../../../../colorPalettes/index.js\";\nimport { useSelector } from \"../../../store/useSelector.js\";\nimport { selectorChartDrawingArea } from \"../../corePlugins/useChartDimensions/useChartDimensions.selectors.js\";\nimport { selectorChartSeriesProcessed } from \"../../corePlugins/useChartSeries/useChartSeries.selectors.js\";\nimport { defaultizeXAxis, defaultizeYAxis } from \"./defaultizeAxis.js\";\nimport { selectorChartXAxis, selectorChartYAxis } from \"./useChartCartesianAxisRendering.selectors.js\";\nimport { getAxisIndex } from \"./getAxisValue.js\";\nimport { getSVGPoint } from \"../../../getSVGPoint.js\";\nimport { selectorChartsInteractionIsInitialized } from \"../useChartInteraction/index.js\";\nimport { selectorChartAxisInteraction } from \"./useChartCartesianInteraction.selectors.js\";\nimport { useLazySelectorEffect } from \"../../utils/useLazySelectorEffect.js\";\nexport const useChartCartesianAxis = ({\n params,\n store,\n seriesConfig,\n svgRef,\n instance\n}) => {\n const {\n xAxis,\n yAxis,\n dataset,\n onHighlightedAxisChange\n } = params;\n if (process.env.NODE_ENV !== 'production') {\n const ids = [...(xAxis ?? []), ...(yAxis ?? [])].filter(axis => axis.id).map(axis => axis.id);\n const duplicates = new Set(ids.filter((id, index) => ids.indexOf(id) !== index));\n if (duplicates.size > 0) {\n warnOnce([`MUI X Charts: The following axis ids are duplicated: ${Array.from(duplicates).join(', ')}.`, `Please make sure that each axis has a unique id.`].join('\\n'), 'error');\n }\n }\n const drawingArea = useSelector(store, selectorChartDrawingArea);\n const processedSeries = useSelector(store, selectorChartSeriesProcessed);\n const isInteractionEnabled = useSelector(store, selectorChartsInteractionIsInitialized);\n const {\n axis: xAxisWithScale,\n axisIds: xAxisIds\n } = useSelector(store, selectorChartXAxis);\n const {\n axis: yAxisWithScale,\n axisIds: yAxisIds\n } = useSelector(store, selectorChartYAxis);\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedAxis',\n controlled: params.highlightedAxis,\n defaultValue: undefined\n });\n useEnhancedEffect(() => {\n if (params.highlightedAxis !== undefined) {\n store.update(prevState => {\n if (prevState.controlledCartesianAxisHighlight === params.highlightedAxis) {\n return prevState;\n }\n return _extends({}, prevState, {\n controlledCartesianAxisHighlight: params.highlightedAxis\n });\n });\n }\n }, [store, params.highlightedAxis]);\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartCartesianAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.update(prev => _extends({}, prev, {\n cartesianAxis: _extends({}, prev.cartesianAxis, {\n x: defaultizeXAxis(xAxis, dataset),\n y: defaultizeYAxis(yAxis, dataset)\n })\n }));\n }, [seriesConfig, drawingArea, xAxis, yAxis, dataset, store]);\n const usedXAxis = xAxisIds[0];\n const usedYAxis = yAxisIds[0];\n useLazySelectorEffect(store, selectorChartAxisInteraction, (prevAxisInteraction, nextAxisInteraction) => {\n if (Object.is(prevAxisInteraction, nextAxisInteraction)) {\n return;\n }\n if (prevAxisInteraction.length !== nextAxisInteraction.length) {\n onHighlightedAxisChange(nextAxisInteraction);\n return;\n }\n if (prevAxisInteraction?.some(({\n axisId,\n dataIndex\n }, itemIndex) => nextAxisInteraction[itemIndex].axisId !== axisId || nextAxisInteraction[itemIndex].dataIndex !== dataIndex)) {\n onHighlightedAxisChange(nextAxisInteraction);\n }\n }, !onHighlightedAxisChange);\n React.useEffect(() => {\n const element = svgRef.current;\n if (!isInteractionEnabled || !element || params.disableAxisListener) {\n return () => {};\n }\n\n // Clean the interaction when the mouse leaves the chart.\n const moveEndHandler = instance.addInteractionListener('moveEnd', event => {\n if (!event.detail.activeGestures.pan) {\n instance.cleanInteraction?.();\n }\n });\n const panEndHandler = instance.addInteractionListener('panEnd', event => {\n if (!event.detail.activeGestures.move) {\n instance.cleanInteraction?.();\n }\n });\n const pressEndHandler = instance.addInteractionListener('quickPressEnd', event => {\n if (!event.detail.activeGestures.move && !event.detail.activeGestures.pan) {\n instance.cleanInteraction?.();\n }\n });\n const gestureHandler = event => {\n const srvEvent = event.detail.srcEvent;\n const target = event.detail.target;\n const svgPoint = getSVGPoint(element, srvEvent);\n\n // Release the pointer capture if we are panning, as this would cause the tooltip to\n // be locked to the first \"section\" it touches.\n if (event.detail.srcEvent.buttons >= 1 && target?.hasPointerCapture(event.detail.srcEvent.pointerId) && !target?.closest('[data-charts-zoom-slider]')) {\n target?.releasePointerCapture(event.detail.srcEvent.pointerId);\n }\n if (!instance.isPointInside(svgPoint.x, svgPoint.y, target)) {\n instance.cleanInteraction?.();\n return;\n }\n instance.setPointerCoordinate?.(svgPoint);\n };\n const moveHandler = instance.addInteractionListener('move', gestureHandler);\n const panHandler = instance.addInteractionListener('pan', gestureHandler);\n const pressHandler = instance.addInteractionListener('quickPress', gestureHandler);\n return () => {\n moveHandler.cleanup();\n moveEndHandler.cleanup();\n panHandler.cleanup();\n panEndHandler.cleanup();\n pressHandler.cleanup();\n pressEndHandler.cleanup();\n };\n }, [svgRef, store, xAxisWithScale, usedXAxis, yAxisWithScale, usedYAxis, instance, params.disableAxisListener, isInteractionEnabled]);\n React.useEffect(() => {\n const element = svgRef.current;\n const onAxisClick = params.onAxisClick;\n if (element === null || !onAxisClick) {\n return () => {};\n }\n const axisClickHandler = instance.addInteractionListener('tap', event => {\n let dataIndex = null;\n let isXAxis = false;\n const svgPoint = getSVGPoint(element, event.detail.srcEvent);\n const xIndex = getAxisIndex(xAxisWithScale[usedXAxis], svgPoint.x);\n isXAxis = xIndex !== -1;\n dataIndex = isXAxis ? xIndex : getAxisIndex(yAxisWithScale[usedYAxis], svgPoint.y);\n const USED_AXIS_ID = isXAxis ? xAxisIds[0] : yAxisIds[0];\n if (dataIndex == null || dataIndex === -1) {\n return;\n }\n\n // The .data exist because otherwise the dataIndex would be null or -1.\n const axisValue = (isXAxis ? xAxisWithScale : yAxisWithScale)[USED_AXIS_ID].data[dataIndex];\n const seriesValues = {};\n Object.keys(processedSeries).filter(seriesType => ['bar', 'line'].includes(seriesType)).forEach(seriesType => {\n processedSeries[seriesType]?.seriesOrder.forEach(seriesId => {\n const seriesItem = processedSeries[seriesType].series[seriesId];\n const providedXAxisId = seriesItem.xAxisId;\n const providedYAxisId = seriesItem.yAxisId;\n const axisKey = isXAxis ? providedXAxisId : providedYAxisId;\n if (axisKey === undefined || axisKey === USED_AXIS_ID) {\n seriesValues[seriesId] = seriesItem.data[dataIndex];\n }\n });\n });\n onAxisClick(event.detail.srcEvent, {\n dataIndex,\n axisValue,\n seriesValues\n });\n });\n return () => {\n axisClickHandler.cleanup();\n };\n }, [params.onAxisClick, processedSeries, svgRef, xAxisWithScale, xAxisIds, yAxisWithScale, yAxisIds, usedXAxis, usedYAxis, instance]);\n return {};\n};\nuseChartCartesianAxis.params = {\n xAxis: true,\n yAxis: true,\n dataset: true,\n onAxisClick: true,\n disableAxisListener: true,\n onHighlightedAxisChange: true,\n highlightedAxis: true\n};\nuseChartCartesianAxis.getDefaultizedParams = ({\n params\n}) => {\n return _extends({}, params, {\n colors: params.colors ?? rainbowSurgePalette,\n theme: params.theme ?? 'light',\n defaultizedXAxis: defaultizeXAxis(params.xAxis, params.dataset),\n defaultizedYAxis: defaultizeYAxis(params.yAxis, params.dataset)\n });\n};\nuseChartCartesianAxis.getInitialState = params => _extends({\n cartesianAxis: {\n x: params.defaultizedXAxis,\n y: params.defaultizedYAxis\n }\n}, params.highlightedAxis === undefined ? {} : {\n controlledCartesianAxisHighlight: params.highlightedAxis\n});","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { getColorScale, getOrdinalColorScale } from \"../../../colorScale.js\";\nfunction addDefaultId(axisConfig, defaultId) {\n if (axisConfig.id !== undefined) {\n return axisConfig;\n }\n return _extends({\n id: defaultId\n }, axisConfig);\n}\nfunction processColorMap(axisConfig) {\n if (!axisConfig.colorMap) {\n return axisConfig;\n }\n return _extends({}, axisConfig, {\n colorScale: axisConfig.colorMap.type === 'ordinal' && axisConfig.data ? getOrdinalColorScale(_extends({\n values: axisConfig.data\n }, axisConfig.colorMap)) : getColorScale(axisConfig.colorMap.type === 'continuous' ? _extends({\n min: axisConfig.min,\n max: axisConfig.max\n }, axisConfig.colorMap) : axisConfig.colorMap)\n });\n}\nfunction getZAxisState(zAxis, dataset) {\n if (!zAxis || zAxis.length === 0) {\n return {\n axis: {},\n axisIds: []\n };\n }\n const zAxisLookup = {};\n const axisIds = [];\n zAxis.forEach((axisConfig, index) => {\n const dataKey = axisConfig.dataKey;\n const defaultizedId = axisConfig.id ?? `defaultized-z-axis-${index}`;\n if (dataKey === undefined || axisConfig.data !== undefined) {\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(axisConfig, defaultizedId));\n axisIds.push(defaultizedId);\n return;\n }\n if (dataset === undefined) {\n throw new Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.');\n }\n zAxisLookup[defaultizedId] = processColorMap(addDefaultId(_extends({}, axisConfig, {\n data: dataset.map(d => d[dataKey])\n }), defaultizedId));\n axisIds.push(defaultizedId);\n });\n return {\n axis: zAxisLookup,\n axisIds\n };\n}\nexport const useChartZAxis = ({\n params,\n store\n}) => {\n const {\n zAxis,\n dataset\n } = params;\n\n // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartZAxis`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n store.update(prev => _extends({}, prev, {\n zAxis: getZAxisState(zAxis, dataset)\n }));\n }, [zAxis, dataset, store]);\n return {};\n};\nuseChartZAxis.params = {\n zAxis: true,\n dataset: true\n};\nuseChartZAxis.getInitialState = params => ({\n zAxis: getZAxisState(params.zAxis, params.dataset)\n});","import { createSelector } from \"../../utils/selectors.js\";\nconst selectRootState = state => state;\nexport const selectorChartZAxis = createSelector([selectRootState], state => state.zAxis);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';\nexport const useChartHighlight = ({\n store,\n params\n}) => {\n useAssertModelConsistency({\n warningPrefix: 'MUI X Charts',\n componentName: 'Chart',\n propName: 'highlightedItem',\n controlled: params.highlightedItem,\n defaultValue: null\n });\n useEnhancedEffect(() => {\n store.update(prevState => prevState.highlight.item === params.highlightedItem ? prevState : _extends({}, prevState, {\n highlight: _extends({}, prevState.highlight, {\n item: params.highlightedItem\n })\n }));\n }, [store, params.highlightedItem]);\n const clearHighlight = useEventCallback(() => {\n params.onHighlightChange?.(null);\n store.update(prev => _extends({}, prev, {\n highlight: {\n item: null\n }\n }));\n });\n const setHighlight = useEventCallback(newItem => {\n const prevItem = store.getSnapshot().highlight.item;\n if (fastObjectShallowCompare(prevItem, newItem)) {\n return;\n }\n params.onHighlightChange?.(newItem);\n store.update(prev => _extends({}, prev, {\n highlight: {\n item: newItem\n }\n }));\n });\n return {\n instance: {\n clearHighlight,\n setHighlight\n }\n };\n};\nuseChartHighlight.getDefaultizedParams = ({\n params\n}) => _extends({}, params, {\n highlightedItem: params.highlightedItem ?? null\n});\nuseChartHighlight.getInitialState = params => ({\n highlight: {\n item: params.highlightedItem\n }\n});\nuseChartHighlight.params = {\n highlightedItem: true,\n onHighlightChange: true\n};","const createResult = (data, direction) => {\n if (direction === 'x') {\n return {\n x: data,\n y: null\n };\n }\n return {\n x: null,\n y: data\n };\n};\nconst getBaseExtremum = params => {\n const {\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis\n });\n const data = filter ? axis.data?.filter((_, i) => filter({\n x: null,\n y: null\n }, i)) : axis.data;\n const minX = Math.min(...(data ?? []));\n const maxX = Math.max(...(data ?? []));\n return [minX, maxX];\n};\nconst getValueExtremum = direction => params => {\n const {\n series,\n axis,\n getFilters,\n isDefaultAxis\n } = params;\n return Object.keys(series).filter(seriesId => {\n const axisId = direction === 'x' ? series[seriesId].xAxisId : series[seriesId].yAxisId;\n return axisId === axis.id || isDefaultAxis && axisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n stackedData\n } = series[seriesId];\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const [seriesMin, seriesMax] = stackedData?.reduce((seriesAcc, values, index) => {\n if (filter && (!filter(createResult(values[0], direction), index) || !filter(createResult(values[1], direction), index))) {\n return seriesAcc;\n }\n return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])];\n }, [Infinity, -Infinity]) ?? [Infinity, -Infinity];\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};\nexport const getExtremumX = params => {\n // Notice that bar should be all horizontal or all vertical.\n // Don't think it's a problem for now\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getValueExtremum('x')(params);\n }\n return getBaseExtremum(params);\n};\nexport const getExtremumY = params => {\n const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');\n if (isHorizontal) {\n return getBaseExtremum(params);\n }\n return getValueExtremum('y')(params);\n};","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import { stackOrderAppearance as d3StackOrderAppearance, stackOrderAscending as d3StackOrderAscending, stackOrderDescending as d3StackOrderDescending, stackOrderInsideOut as d3StackOrderInsideOut, stackOrderNone as d3StackOrderNone, stackOrderReverse as d3StackOrderReverse, stackOffsetExpand as d3StackOffsetExpand, stackOffsetDiverging as d3StackOffsetDiverging, stackOffsetNone as d3StackOffsetNone, stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle } from '@mui/x-charts-vendor/d3-shape';\nexport const StackOrder = {\n /**\n * Series order such that the earliest series (according to the maximum value) is at the bottom.\n * */\n appearance: d3StackOrderAppearance,\n /**\n * Series order such that the smallest series (according to the sum of values) is at the bottom.\n * */\n ascending: d3StackOrderAscending,\n /**\n * Series order such that the largest series (according to the sum of values) is at the bottom.\n */\n descending: d3StackOrderDescending,\n /**\n * Series order such that the earliest series (according to the maximum value) are on the inside and the later series are on the outside. This order is recommended for streamgraphs in conjunction with the wiggle offset. See Stacked Graphs—Geometry & Aesthetics by Byron & Wattenberg for more information.\n */\n insideOut: d3StackOrderInsideOut,\n /**\n * Given series order [0, 1, … n - 1] where n is the number of elements in series. Thus, the stack order is given by the key accessor.\n */\n none: d3StackOrderNone,\n /**\n * Reverse of the given series order [n - 1, n - 2, … 0] where n is the number of elements in series. Thus, the stack order is given by the reverse of the key accessor.\n */\n reverse: d3StackOrderReverse\n};\nexport const StackOffset = {\n /**\n * Applies a zero baseline and normalizes the values for each point such that the topline is always one.\n * */\n expand: d3StackOffsetExpand,\n /**\n * Positive values are stacked above zero, negative values are stacked below zero, and zero values are stacked at zero.\n * */\n diverging: d3StackOffsetDiverging,\n /**\n * Applies a zero baseline.\n * */\n none: d3StackOffsetNone,\n /**\n * Shifts the baseline down such that the center of the streamgraph is always at zero.\n * */\n silhouette: d3StackOffsetSilhouette,\n /**\n * Shifts the baseline so as to minimize the weighted wiggle of layers. This offset is recommended for streamgraphs in conjunction with the inside-out order. See Stacked Graphs—Geometry & Aesthetics by Bryon & Wattenberg for more information.\n * */\n wiggle: d3StackOffsetWiggle\n};\n\n/**\n * Takes a set of series and groups their ids\n * @param series the object of all bars series\n * @returns an array of groups, including the ids, the stacking order, and the stacking offset.\n */\nexport const getStackingGroups = params => {\n const {\n series,\n seriesOrder,\n defaultStrategy\n } = params;\n const stackingGroups = [];\n const stackIndex = {};\n seriesOrder.forEach(id => {\n const {\n stack,\n stackOrder,\n stackOffset\n } = series[id];\n if (stack === undefined) {\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder.none,\n stackingOffset: StackOffset.none\n });\n } else if (stackIndex[stack] === undefined) {\n stackIndex[stack] = stackingGroups.length;\n stackingGroups.push({\n ids: [id],\n stackingOrder: StackOrder[stackOrder ?? defaultStrategy?.stackOrder ?? 'none'],\n stackingOffset: StackOffset[stackOffset ?? defaultStrategy?.stackOffset ?? 'diverging']\n });\n } else {\n stackingGroups[stackIndex[stack]].ids.push(id);\n if (stackOrder !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOrder = StackOrder[stackOrder];\n }\n if (stackOffset !== undefined) {\n stackingGroups[stackIndex[stack]].stackingOffset = StackOffset[stackOffset];\n }\n }\n });\n return stackingGroups;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../internals/stackSeries.js\";\nconst barValueFormatter = v => v == null ? '' : v.toLocaleString();\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(params);\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined) {\n throw new Error([`MUI X Charts: bar series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n const {\n ids,\n stackingOffset,\n stackingOrder\n } = stackingGroup;\n // Get stacked values, and derive the domain\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n layout: 'vertical',\n labelMarkType: 'square',\n minBarSize: 0,\n valueFormatter: series[id].valueFormatter ?? barValueFormatter\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n if (typeof value !== 'number') {\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null) {\n warnOnce([`MUI X Charts: your dataset key \"${dataKey}\" is used for plotting bars, but contains nonnumerical elements.`, 'Bar plots only support numbers and null values.']);\n }\n }\n return null;\n }\n return value;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b])\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: completedSeries\n };\n};\nexport default seriesProcessor;","export function getLabel(value, location) {\n return typeof value === 'function' ? value(location) : value;\n}","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","const getColor = (series, xAxis, yAxis) => {\n const verticalLayout = series.layout === 'vertical';\n const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale;\n const valueColorScale = verticalLayout ? yAxis?.colorScale : xAxis?.colorScale;\n const bandValues = verticalLayout ? xAxis?.data : yAxis?.data;\n if (valueColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? series.color : valueColorScale(value);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n if (bandColorScale && bandValues) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = bandValues[dataIndex];\n const color = value === null ? series.color : bandColorScale(value);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n return () => series.color;\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n if (value == null) {\n return null;\n }\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => s.layout === 'horizontal' ? {\n direction: 'y',\n axisId: s.yAxisId\n } : {\n direction: 'x',\n axisId: s.xAxisId\n });\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: colors[seriesIndex % colors.length]\n }, seriesData);\n};\nexport default getSeriesWithDefaultValues;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport legendGetter from \"./legend.js\";\nimport getColor from \"./getColor.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nexport const seriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues\n};","const mergeMinMax = (acc, val) => {\n return [val[0] === null ? acc[0] : Math.min(acc[0], val[0]), val[1] === null ? acc[1] : Math.max(acc[1], val[1])];\n};\nexport const getExtremumX = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n return Object.keys(series).filter(seriesId => {\n const axisId = series[seriesId].xAxisId;\n return axisId === axis.id || axisId === undefined && isDefaultAxis;\n }).reduce((acc, seriesId) => {\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesMinMax = series[seriesId].data?.reduce((accSeries, d, dataIndex) => {\n if (filter && !filter(d, dataIndex)) {\n return accSeries;\n }\n return mergeMinMax(accSeries, [d.x, d.x]);\n }, [Infinity, -Infinity]);\n return mergeMinMax(acc, seriesMinMax ?? [Infinity, -Infinity]);\n }, [Infinity, -Infinity]);\n};\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n return Object.keys(series).filter(seriesId => {\n const axisId = series[seriesId].yAxisId;\n return axisId === axis.id || axisId === undefined && isDefaultAxis;\n }).reduce((acc, seriesId) => {\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n const seriesMinMax = series[seriesId].data?.reduce((accSeries, d, dataIndex) => {\n if (filter && !filter(d, dataIndex)) {\n return accSeries;\n }\n return mergeMinMax(accSeries, [d.y, d.y]);\n }, [Infinity, -Infinity]);\n return mergeMinMax(acc, seriesMinMax ?? [Infinity, -Infinity]);\n }, [Infinity, -Infinity]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst seriesProcessor = ({\n series,\n seriesOrder\n}, dataset) => {\n const completeSeries = Object.fromEntries(Object.entries(series).map(([seriesId, seriesData]) => {\n const datasetKeys = seriesData?.datasetKeys;\n const missingKeys = ['x', 'y', 'id'].filter(key => typeof datasetKeys?.[key] !== 'string');\n if (seriesData?.datasetKeys && missingKeys.length > 0) {\n throw new Error([`MUI X Charts: scatter series with id='${seriesId}' has incomplete datasetKeys.`, `Properties ${missingKeys.map(key => `\"${key}\"`).join(', ')} are missing.`].join('\\n'));\n }\n const data = !datasetKeys ? seriesData.data ?? [] : dataset?.map(d => {\n return {\n x: d[datasetKeys.x] ?? null,\n y: d[datasetKeys.y] ?? null,\n z: datasetKeys.z && d[datasetKeys.z],\n id: datasetKeys.id && d[datasetKeys.id]\n };\n }) ?? [];\n return [seriesId, _extends({\n labelMarkType: 'circle',\n markerSize: 4\n }, seriesData, {\n preview: _extends({\n markerSize: 1\n }, seriesData?.preview),\n data,\n valueFormatter: seriesData.valueFormatter ?? (v => v && `(${v.x}, ${v.y})`)\n })];\n }));\n return {\n series: completeSeries,\n seriesOrder\n };\n};\nexport default seriesProcessor;","const getColor = (series, xAxis, yAxis, zAxis) => {\n const zColorScale = zAxis?.colorScale;\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n if (zColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n if (zAxis?.data?.[dataIndex] !== undefined) {\n const color = zColorScale(zAxis?.data?.[dataIndex]);\n if (color !== null) {\n return color;\n }\n }\n const value = series.data[dataIndex];\n const color = value === null ? series.color : zColorScale(value.z);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? series.color : yColorScale(value.y);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? series.color : xColorScale(value.x);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n return () => series.color;\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: colors[seriesIndex % colors.length]\n }, seriesData);\n};\nexport default getSeriesWithDefaultValues;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nexport const seriesConfig = {\n seriesProcessor,\n colorProcessor: getColor,\n legendGetter,\n tooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues\n};","export const getExtremumX = params => {\n const {\n axis\n } = params;\n const minX = Math.min(...(axis.data ?? []));\n const maxX = Math.max(...(axis.data ?? []));\n return [minX, maxX];\n};\nfunction getSeriesExtremums(getValues, data, stackedData, filter) {\n return stackedData.reduce((seriesAcc, stackedValue, index) => {\n if (data[index] === null) {\n return seriesAcc;\n }\n const [base, value] = getValues(stackedValue);\n if (filter && (!filter({\n y: base,\n x: null\n }, index) || !filter({\n y: value,\n x: null\n }, index))) {\n return seriesAcc;\n }\n return [Math.min(base, value, seriesAcc[0]), Math.max(base, value, seriesAcc[1])];\n }, [Infinity, -Infinity]);\n}\nexport const getExtremumY = params => {\n const {\n series,\n axis,\n isDefaultAxis,\n getFilters\n } = params;\n return Object.keys(series).filter(seriesId => {\n const yAxisId = series[seriesId].yAxisId;\n return yAxisId === axis.id || isDefaultAxis && yAxisId === undefined;\n }).reduce((acc, seriesId) => {\n const {\n area,\n stackedData,\n data\n } = series[seriesId];\n const isArea = area !== undefined;\n const filter = getFilters?.({\n currentAxisId: axis.id,\n isDefaultAxis,\n seriesXAxisId: series[seriesId].xAxisId,\n seriesYAxisId: series[seriesId].yAxisId\n });\n\n // Since this series is not used to display an area, we do not consider the base (the d[0]).\n const getValues = isArea && axis.scaleType !== 'log' && typeof series[seriesId].baseline !== 'string' ? d => d : d => [d[1], d[1]];\n const seriesExtremums = getSeriesExtremums(getValues, data, stackedData, filter);\n const [seriesMin, seriesMax] = seriesExtremums;\n return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];\n }, [Infinity, -Infinity]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function defaultizeValueFormatter(series, defaultValueFormatter) {\n const defaultizedSeries = {};\n Object.keys(series).forEach(seriesId => {\n defaultizedSeries[seriesId] = _extends({}, series[seriesId], {\n valueFormatter: series[seriesId].valueFormatter ?? defaultValueFormatter\n });\n });\n return defaultizedSeries;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport { getStackingGroups } from \"../../internals/stackSeries.js\";\nimport { defaultizeValueFormatter } from \"../../internals/defaultizeValueFormatter.js\";\n// For now it's a copy past of bar charts formatter, but maybe will diverge later\nconst seriesProcessor = (params, dataset) => {\n const {\n seriesOrder,\n series\n } = params;\n const stackingGroups = getStackingGroups(_extends({}, params, {\n defaultStrategy: {\n stackOffset: 'none'\n }\n }));\n\n // Create a data set with format adapted to d3\n const d3Dataset = dataset ?? [];\n seriesOrder.forEach(id => {\n const data = series[id].data;\n if (data !== undefined) {\n data.forEach((value, index) => {\n if (d3Dataset.length <= index) {\n d3Dataset.push({\n [id]: value\n });\n } else {\n d3Dataset[index][id] = value;\n }\n });\n } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {\n throw new Error([`MUI X Charts: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\\n'));\n }\n });\n const completedSeries = {};\n stackingGroups.forEach(stackingGroup => {\n // Get stacked values, and derive the domain\n const {\n ids,\n stackingOrder,\n stackingOffset\n } = stackingGroup;\n const stackedSeries = d3Stack().keys(ids.map(id => {\n // Use dataKey if needed and available\n const dataKey = series[id].dataKey;\n return series[id].data === undefined && dataKey !== undefined ? dataKey : id;\n })).value((d, key) => d[key] ?? 0) // defaultize null value to 0\n .order(stackingOrder).offset(stackingOffset)(d3Dataset);\n ids.forEach((id, index) => {\n const dataKey = series[id].dataKey;\n completedSeries[id] = _extends({\n labelMarkType: 'line'\n }, series[id], {\n data: dataKey ? dataset.map(data => {\n const value = data[dataKey];\n if (typeof value !== 'number') {\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null) {\n warnOnce([`MUI X Charts: Your dataset key \"${dataKey}\" is used for plotting line, but contains nonnumerical elements.`, 'Line plots only support numbers and null values.']);\n }\n }\n return null;\n }\n return value;\n }) : series[id].data,\n stackedData: stackedSeries[index].map(([a, b]) => [a, b])\n });\n });\n });\n return {\n seriesOrder,\n stackingGroups,\n series: defaultizeValueFormatter(completedSeries, v => v == null ? '' : v.toLocaleString())\n };\n};\nexport default seriesProcessor;","const getColor = (series, xAxis, yAxis) => {\n const yColorScale = yAxis?.colorScale;\n const xColorScale = xAxis?.colorScale;\n if (yColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = series.data[dataIndex];\n const color = value === null ? series.color : yColorScale(value);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n if (xColorScale) {\n return dataIndex => {\n if (dataIndex === undefined) {\n return series.color;\n }\n const value = xAxis.data?.[dataIndex];\n const color = value === null ? series.color : xColorScale(value);\n if (color === null) {\n return series.color;\n }\n return color;\n };\n }\n return () => series.color;\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n const formattedLabel = getLabel(series[seriesId].label, 'legend');\n if (formattedLabel === undefined) {\n return acc;\n }\n acc.push({\n markType: series[seriesId].labelMarkType,\n id: seriesId,\n seriesId,\n color: series[seriesId].color,\n label: formattedLabel\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const label = getLabel(series.label, 'tooltip');\n const value = series.data[identifier.dataIndex];\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: series.labelMarkType\n };\n};\nexport const axisTooltipGetter = series => {\n return Object.values(series).map(s => ({\n direction: 'x',\n axisId: s.xAxisId\n }));\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,\n color: colors[seriesIndex % colors.length]\n }, seriesData);\n};\nexport default getSeriesWithDefaultValues;","import { getExtremumX, getExtremumY } from \"./extremums.js\";\nimport seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter, { axisTooltipGetter } from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nexport const seriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n legendGetter,\n tooltipGetter,\n axisTooltipGetter,\n xExtremumGetter: getExtremumX,\n yExtremumGetter: getExtremumY,\n getSeriesWithDefaultValues\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { pie as d3Pie } from '@mui/x-charts-vendor/d3-shape';\nimport { getLabel } from \"../../internals/getLabel.js\";\nconst getSortingComparator = (comparator = 'none') => {\n if (typeof comparator === 'function') {\n return comparator;\n }\n switch (comparator) {\n case 'none':\n return null;\n case 'desc':\n return (a, b) => b - a;\n case 'asc':\n return (a, b) => a - b;\n default:\n return null;\n }\n};\nconst seriesProcessor = params => {\n const {\n seriesOrder,\n series\n } = params;\n const defaultizedSeries = {};\n seriesOrder.forEach(seriesId => {\n const arcs = d3Pie().startAngle(2 * Math.PI * (series[seriesId].startAngle ?? 0) / 360).endAngle(2 * Math.PI * (series[seriesId].endAngle ?? 360) / 360).padAngle(2 * Math.PI * (series[seriesId].paddingAngle ?? 0) / 360).sortValues(getSortingComparator(series[seriesId].sortingValues ?? 'none'))(series[seriesId].data.map(piePoint => piePoint.value));\n defaultizedSeries[seriesId] = _extends({\n labelMarkType: 'circle',\n valueFormatter: item => item.value.toLocaleString()\n }, series[seriesId], {\n data: series[seriesId].data.map((item, index) => _extends({}, item, {\n id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`\n }, arcs[index])).map((item, index) => _extends({\n labelMarkType: 'circle'\n }, item, {\n formattedValue: series[seriesId].valueFormatter?.(_extends({}, item, {\n label: getLabel(item.label, 'arc')\n }), {\n dataIndex: index\n }) ?? item.value.toLocaleString()\n }))\n });\n });\n return {\n seriesOrder,\n series: defaultizedSeries\n };\n};\nexport default seriesProcessor;","const getColor = series => {\n return dataIndex => {\n return series.data[dataIndex].color;\n };\n};\nexport default getColor;","import { getLabel } from \"../../internals/getLabel.js\";\nconst legendGetter = params => {\n const {\n seriesOrder,\n series\n } = params;\n return seriesOrder.reduce((acc, seriesId) => {\n series[seriesId].data.forEach((item, dataIndex) => {\n const formattedLabel = getLabel(item.label, 'legend');\n if (formattedLabel === undefined) {\n return;\n }\n acc.push({\n markType: item.labelMarkType ?? series[seriesId].labelMarkType,\n id: item.id ?? dataIndex,\n seriesId,\n color: item.color,\n label: formattedLabel,\n itemId: item.id ?? dataIndex\n });\n });\n return acc;\n }, []);\n};\nexport default legendGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLabel } from \"../../internals/getLabel.js\";\nconst tooltipGetter = params => {\n const {\n series,\n getColor,\n identifier\n } = params;\n if (!identifier || identifier.dataIndex === undefined) {\n return null;\n }\n const point = series.data[identifier.dataIndex];\n if (point == null) {\n return null;\n }\n const label = getLabel(point.label, 'tooltip');\n const value = _extends({}, point, {\n label\n });\n const formattedValue = series.valueFormatter(value, {\n dataIndex: identifier.dataIndex\n });\n return {\n identifier,\n color: getColor(identifier.dataIndex),\n label,\n value,\n formattedValue,\n markType: point.labelMarkType ?? series.labelMarkType\n };\n};\nexport default tooltipGetter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => {\n return _extends({\n id: seriesData.id ?? `auto-generated-id-${seriesIndex}`\n }, seriesData, {\n data: seriesData.data.map((d, index) => _extends({\n color: colors[index % colors.length]\n }, d))\n });\n};\nexport default getSeriesWithDefaultValues;","import seriesProcessor from \"./seriesProcessor.js\";\nimport getColor from \"./getColor.js\";\nimport legendGetter from \"./legend.js\";\nimport tooltipGetter from \"./tooltip.js\";\nimport getSeriesWithDefaultValues from \"./getSeriesWithDefaultValues.js\";\nexport const seriesConfig = {\n colorProcessor: getColor,\n seriesProcessor,\n legendGetter,\n tooltipGetter,\n getSeriesWithDefaultValues\n};","'use client';\n\nimport * as React from 'react';\nimport { useCharts } from \"../../internals/store/useCharts.js\";\nimport { ChartContext } from \"./ChartContext.js\";\nimport { useChartCartesianAxis } from \"../../internals/plugins/featurePlugins/useChartCartesianAxis/index.js\";\nimport { useChartInteraction } from \"../../internals/plugins/featurePlugins/useChartInteraction/index.js\";\nimport { useChartZAxis } from \"../../internals/plugins/featurePlugins/useChartZAxis/index.js\";\nimport { useChartHighlight } from \"../../internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js\";\nimport { seriesConfig as barSeriesConfig } from \"../../BarChart/seriesConfig/index.js\";\nimport { seriesConfig as scatterSeriesConfig } from \"../../ScatterChart/seriesConfig/index.js\";\nimport { seriesConfig as lineSeriesConfig } from \"../../LineChart/seriesConfig/index.js\";\nimport { seriesConfig as pieSeriesConfig } from \"../../PieChart/seriesConfig/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const defaultSeriesConfig = {\n bar: barSeriesConfig,\n scatter: scatterSeriesConfig,\n line: lineSeriesConfig,\n pie: pieSeriesConfig\n};\n\n// For consistency with the v7, the cartesian axes are set by default.\n// To remove them, you can provide a `plugins` props.\nconst defaultPlugins = [useChartZAxis, useChartCartesianAxis, useChartInteraction, useChartHighlight];\nfunction ChartProvider(props) {\n const {\n children,\n plugins = defaultPlugins,\n pluginParams = {},\n seriesConfig = defaultSeriesConfig\n } = props;\n const {\n contextValue\n } = useCharts(plugins, pluginParams, seriesConfig);\n return /*#__PURE__*/_jsx(ChartContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nexport { ChartProvider };","'use client';\n\nimport * as React from 'react';\nimport { ChartContext } from \"./ChartContext.js\";\nexport const useChartContext = () => {\n const context = React.useContext(ChartContext);\n if (context == null) {\n throw new Error(['MUI X Charts: Could not find the Chart context.', 'It looks like you rendered your component outside of a ChartDataProvider.', 'This can also happen if you are bundling multiple versions of the library.'].join('\\n'));\n }\n return context;\n};","import { useChartContext } from \"../../context/ChartProvider/index.js\";\n// This hook should be removed because user and us should not interact with the store directly, but with public/private APIs\nexport function useStore() {\n const context = useChartContext();\n if (!context) {\n throw new Error(['MUI X Charts: Could not find the charts context.', 'It looks like you rendered your component outside of a ChartContainer parent component.'].join('\\n'));\n }\n return context.store;\n}","'use client';\n\nimport { useStore } from \"../internals/store/useStore.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\nimport { selectorChartDrawingArea } from \"../internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js\";\n/**\n * Get the drawing area dimensions and coordinates. The drawing area is the area where the chart is rendered.\n *\n * It includes the left, top, width, height, bottom, and right dimensions.\n *\n * @returns The drawing area dimensions.\n */\nexport function useDrawingArea() {\n const store = useStore();\n return useSelector(store, selectorChartDrawingArea);\n}","'use client';\n\nimport { useStore } from \"../internals/store/useStore.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\nimport { selectorChartId } from \"../internals/plugins/corePlugins/useChartId/useChartId.selectors.js\";\n\n/**\n * Get the unique identifier of the chart.\n * @returns chartId if it exists.\n */\nexport function useChartId() {\n const store = useStore();\n return useSelector(store, selectorChartId);\n}","export const deg2rad = (value, defaultRad) => {\n if (value === undefined) {\n return defaultRad;\n }\n return Math.PI * value / 180;\n};\nexport const rad2deg = (value, defaultDeg) => {\n if (value === undefined) {\n return defaultDeg;\n }\n return 180 * value / Math.PI;\n};","'use client';\n\nimport { selectorChartXAxis, selectorChartYAxis } from \"../internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js\";\nimport { selectorChartRadiusAxis, selectorChartRotationAxis } from \"../internals/plugins/featurePlugins/useChartPolarAxis/index.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\nimport { useStore } from \"../internals/store/useStore.js\";\n/**\n * Get all the x-axes.\n *\n * - `xAxis` is an object with the shape `{ [axisId]: axis }`.\n * - `xAxisIds` is an array of axis IDs.\n *\n * If access to a specific X axis is needed, use the `useXAxis` hook instead.\n *\n * @returns `{ xAxis, xAxisIds }` - The x-axes and their IDs.\n */\nexport function useXAxes() {\n const store = useStore();\n const {\n axis: xAxis,\n axisIds: xAxisIds\n } = useSelector(store, selectorChartXAxis);\n return {\n xAxis,\n xAxisIds\n };\n}\n\n/**\n * Get all the y-axes.\n *\n * - `yAxis` is an object with the shape `{ [axisId]: axis }`.\n * - `yAxisIds` is an array of axis IDs.\n *\n * If access to a specific Y axis is needed, use the `useYAxis` hook instead.\n *\n * @returns `{ yAxis, yAxisIds }` - The y-axes and their IDs.\n */\nexport function useYAxes() {\n const store = useStore();\n const {\n axis: yAxis,\n axisIds: yAxisIds\n } = useSelector(store, selectorChartYAxis);\n return {\n yAxis,\n yAxisIds\n };\n}\n\n/**\n * Get the X axis.\n * @param {AxisId | undefined} axisId - If provided returns the x axis with axisId, else returns the values for the default x axis.\n * @returns The X axis.\n */\nexport function useXAxis(axisId) {\n const store = useStore();\n const {\n axis: xAxis,\n axisIds: xAxisIds\n } = useSelector(store, selectorChartXAxis);\n const id = axisId ?? xAxisIds[0];\n return xAxis[id];\n}\n\n/**\n * Get the Y axis.\n * @param {AxisId | undefined} axisId - If provided returns the y axis with axisId, else returns the values for the default y axis.\n * @returns The Y axis.\n */\nexport function useYAxis(axisId) {\n const store = useStore();\n const {\n axis: yAxis,\n axisIds: yAxisIds\n } = useSelector(store, selectorChartYAxis);\n const id = axisId ?? yAxisIds[0];\n return yAxis[id];\n}\nexport function useRotationAxes() {\n const store = useStore();\n const {\n axis: rotationAxis,\n axisIds: rotationAxisIds\n } = useSelector(store, selectorChartRotationAxis);\n return {\n rotationAxis,\n rotationAxisIds\n };\n}\nexport function useRadiusAxes() {\n const store = useStore();\n const {\n axis: radiusAxis,\n axisIds: radiusAxisIds\n } = useSelector(store, selectorChartRadiusAxis);\n return {\n radiusAxis,\n radiusAxisIds\n };\n}\nexport function useRotationAxis(identifier) {\n const store = useStore();\n const {\n axis: rotationAxis,\n axisIds: rotationAxisIds\n } = useSelector(store, selectorChartRotationAxis);\n const id = typeof identifier === 'string' ? identifier : rotationAxisIds[identifier ?? 0];\n return rotationAxis[id];\n}\nexport function useRadiusAxis(identifier) {\n const store = useStore();\n const {\n axis: radiusAxis,\n axisIds: radiusAxisIds\n } = useSelector(store, selectorChartRadiusAxis);\n const id = typeof identifier === 'string' ? identifier : radiusAxisIds[identifier ?? 0];\n return radiusAxis[id];\n}","'use client';\n\nimport { useStore } from \"../internals/store/useStore.js\";\nimport { selectorChartZAxis } from \"../internals/plugins/featurePlugins/useChartZAxis/index.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\nexport function useZAxes() {\n const store = useStore();\n const {\n axis: zAxis,\n axisIds: zAxisIds\n } = useSelector(store, selectorChartZAxis) ?? {\n axis: {},\n axisIds: []\n };\n return {\n zAxis,\n zAxisIds\n };\n}\nexport function useZAxis(identifier) {\n const {\n zAxis,\n zAxisIds\n } = useZAxes();\n const id = typeof identifier === 'string' ? identifier : zAxisIds[identifier ?? 0];\n return zAxis[id];\n}","'use client';\n\nimport { useChartContext } from \"../context/ChartProvider/index.js\";\n\n/**\n * Get the ref for the SVG element.\n * @returns The SVG ref.\n */\nexport function useSvgRef() {\n const context = useChartContext();\n if (!context) {\n throw new Error(['MUI X Charts: Could not find the svg ref context.', 'It looks like you rendered your component outside of a ChartContainer parent component.'].join('\\n'));\n }\n return context.svgRef;\n}","'use client';\n\nimport * as React from 'react';\nimport { useChartId } from \"./useChartId.js\";\n/**\n * Returns a function that generates a gradient id for the given axis id.\n */\nexport function useChartGradientIdBuilder() {\n const chartId = useChartId();\n return React.useCallback(axisId => `${chartId}-gradient-${axisId}`, [chartId]);\n}\n\n/**\n * Returns a function that generates a gradient id for the given axis id.\n */\nexport function useChartGradientIdObjectBoundBuilder() {\n const chartId = useChartId();\n return React.useCallback(axisId => `${chartId}-gradient-${axisId}-object-bound`, [chartId]);\n}\n\n/**\n * Returns a gradient id for the given axis id.\n *\n * Can be useful when reusing the same gradient on custom components.\n *\n * For a gradient that respects the coordinates of the object on which it is applied, use `useChartGradientIdObjectBound` instead.\n *\n * @param axisId the axis id\n * @returns the gradient id\n */\nexport function useChartGradientId(axisId) {\n return useChartGradientIdBuilder()(axisId);\n}\n\n/**\n * Returns a gradient id for the given axis id.\n *\n * Can be useful when reusing the same gradient on custom components.\n *\n * This gradient differs from `useChartGradientId` in that it respects the coordinates of the object on which it is applied.\n *\n * @param axisId the axis id\n * @returns the gradient id\n */\nexport function useChartGradientIdObjectBound(axisId) {\n return useChartGradientIdObjectBoundBuilder()(axisId);\n}","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","import BezierEasing from 'bezier-easing';\nexport const ANIMATION_DURATION_MS = 300;\nexport const ANIMATION_TIMING_FUNCTION = 'cubic-bezier(0.66, 0, 0.34, 1)';\nexport const ANIMATION_TIMING_FUNCTION_JS = BezierEasing(0.66, 0, 0.34, 1);","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import { timer, now, timeout, timerFlush } from '@mui/x-charts-vendor/d3-timer';\n\n/**\n * A resumable transition class inspired by d3-transition.\n * Allows for starting, and stopping and resuming transitions.\n *\n * The transition is started automatically.\n * A transition cannot be restarted after it has finished.\n * Resuming a transition will continue from the point it was stopped, i.e., easing will continue from the point it was\n * stopped.\n */\nexport class Transition {\n /**\n * Create a new ResumableTransition.\n * @param duration Duration in milliseconds\n * @param easingFn The easing function\n * @param onTick Callback function called on each animation frame with the eased time in range [0, 1].\n */\n constructor(duration, easingFn, onTick) {\n this.duration = void 0;\n this.elapsed = 0;\n this.easingFn = void 0;\n this.timer = null;\n this.onTickCallback = void 0;\n this.duration = duration;\n this.easingFn = easingFn;\n this.onTickCallback = onTick;\n this.resume();\n }\n get running() {\n return this.timer !== null;\n }\n timerCallback(elapsed) {\n this.elapsed = Math.min(elapsed, this.duration);\n const t = this.duration === 0 ? 1 : this.elapsed / this.duration;\n const easedT = this.easingFn(t);\n\n // Call the tick callback with the current value\n this.onTickCallback(easedT);\n if (this.elapsed >= this.duration) {\n this.stop();\n }\n }\n\n /**\n * Resume the transition\n */\n resume() {\n if (this.running || this.elapsed >= this.duration) {\n return this;\n }\n\n /* If we're resuming the transition, then subtract elapsed to continue the easing. */\n const time = now() - this.elapsed;\n this.timer = timer(elapsed => this.timerCallback(elapsed), 0, time);\n timerFlush();\n return this;\n }\n\n /**\n * Stops the transition.\n */\n stop() {\n if (!this.running) {\n return this;\n }\n if (this.timer) {\n this.timer.stop();\n this.timer = null;\n }\n return this;\n }\n\n /**\n * Immediately finishes the transition and calls the tick callback with the final value.\n */\n finish() {\n this.stop();\n timeout(() => this.timerCallback(this.duration));\n timerFlush();\n return this;\n }\n}","/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n *\n * Source: https://github.com/facebook/react/blob/c2a196174763e0b4f16ed1c512ed4442b062395e/packages/shared/shallowEqual.js#L18\n */\nexport function shallowEqual(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (let i = 0; i < keysA.length; i += 1) {\n const currentKey = keysA[i];\n if (!Object.prototype.hasOwnProperty.call(objB, currentKey) ||\n // @ts-ignore\n !Object.is(objA[currentKey], objB[currentKey])) {\n return false;\n }\n }\n return true;\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { ANIMATION_DURATION_MS, ANIMATION_TIMING_FUNCTION_JS } from \"./animation.js\";\nimport { Transition } from \"./Transition.js\";\nimport { shallowEqual } from \"../shallowEqual.js\";\n\n/** Animates a ref. The animation can be skipped by setting {@link skip} to true.\n *\n * If possible, prefer {@link useAnimate}.\n *\n * - If {@link skip} is false, a transition will be started.\n * - If {@link skip} is true and no transition is in progress, no transition will be started and {@link applyProps} will\n * never be called.\n * - If {@link skip} becomes true and a transition is in progress, the transition will immediately end and\n * {@link applyProps} be called with the final value.\n * */\nexport function useAnimateInternal(props, {\n createInterpolator,\n applyProps,\n skip,\n initialProps = props\n}) {\n const lastInterpolatedPropsRef = React.useRef(initialProps);\n const transitionRef = React.useRef(null);\n const elementRef = React.useRef(null);\n const lastPropsRef = React.useRef(props);\n useEnhancedEffect(() => {\n lastPropsRef.current = props;\n }, [props]);\n useEnhancedEffect(() => {\n if (skip) {\n transitionRef.current?.finish();\n transitionRef.current = null;\n elementRef.current = null;\n lastInterpolatedPropsRef.current = props;\n }\n }, [props, skip]);\n const animate = React.useCallback(element => {\n const lastInterpolatedProps = lastInterpolatedPropsRef.current;\n const interpolate = createInterpolator(lastInterpolatedProps, props);\n transitionRef.current = new Transition(ANIMATION_DURATION_MS, ANIMATION_TIMING_FUNCTION_JS, t => {\n const interpolatedProps = interpolate(t);\n lastInterpolatedPropsRef.current = interpolatedProps;\n applyProps(element, interpolatedProps);\n });\n }, [applyProps, createInterpolator, props]);\n const setRef = React.useCallback(element => {\n if (element === null) {\n transitionRef.current?.stop();\n return;\n }\n const lastElement = elementRef.current;\n if (lastElement === element) {\n // If it's the same element and same props, resume the transition.\n if (shallowEqual(lastPropsRef.current, props)) {\n transitionRef.current?.resume();\n return;\n }\n\n // If props aren't the same, stop the transition and start a new animation.\n transitionRef.current?.stop();\n }\n\n // If it's a different element, stop the transition of the last element and start a new animation.\n if (lastElement) {\n transitionRef.current?.stop();\n }\n elementRef.current = element;\n if (transitionRef.current || !skip) {\n animate(element);\n }\n }, [animate, props, skip]);\n return setRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useForkRef from '@mui/utils/useForkRef';\nimport { useAnimateInternal } from \"../../internals/animation/useAnimateInternal.js\";\n/**\n * Hook to customize the animation of an element.\n * Animates a ref from `initialProps` to `props`.\n *\n * @param {object} props The props to animate to.\n *\n * @returns an object containing a ref that should be passed to the element to animate and the transformed props.\n * If `skip` is true, the transformed props are the `props` to animate to; if it is false, the transformed props are the\n * `initialProps`.\n *\n * The animated props are only accessible in `applyProps`. The props returned from this hook are not animated.\n *\n * When an animation starts, an interpolator is created using `createInterpolator`.\n * On every animation frame:\n * 1. The interpolator is called to get the interpolated props;\n * 2. `transformProps` is called to transform the interpolated props;\n * 3. `applyProps` is called to apply the transformed props to the element.\n *\n * If `props` change while an animation is progress, the animation will continue towards the new `props`.\n *\n * The animation can be skipped by setting `skip` to true. If a transition is in progress, it will immediately end\n * and `applyProps` be called with the final value. If there isn't a transition in progress, a new one won't be\n * started and `applyProps` will not be called.\n * */\nexport function useAnimate(props, {\n createInterpolator,\n transformProps,\n applyProps,\n skip,\n initialProps = props,\n ref\n}) {\n const transform = transformProps ?? (p => p);\n const animateRef = useAnimateInternal(props, {\n initialProps,\n createInterpolator,\n applyProps: (element, animatedProps) => applyProps(element, transform(animatedProps)),\n skip\n });\n const usedProps = skip ? props : initialProps;\n return _extends({}, transformProps(usedProps), {\n ref: useForkRef(animateRef, ref)\n });\n}","import * as React from 'react';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function ChartsPiecewiseGradient(props) {\n const {\n isReversed,\n gradientId,\n size,\n direction,\n scale,\n colorMap\n } = props;\n if (size <= 0) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"linearGradient\", {\n id: gradientId,\n x1: \"0\",\n x2: \"0\",\n y1: \"0\",\n y2: \"0\",\n [`${direction}${isReversed ? 1 : 2}`]: `${size}px`,\n gradientUnits: \"userSpaceOnUse\" // Use the SVG coordinate instead of the component ones.\n ,\n children: colorMap.thresholds.map((threshold, index) => {\n const x = scale(threshold);\n if (x === undefined) {\n return null;\n }\n const offset = isReversed ? 1 - x / size : x / size;\n if (Number.isNaN(offset)) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"stop\", {\n offset: offset,\n stopColor: colorMap.colors[index],\n stopOpacity: 1\n }), /*#__PURE__*/_jsx(\"stop\", {\n offset: offset,\n stopColor: colorMap.colors[index + 1],\n stopOpacity: 1\n })]\n }, threshold.toString() + index);\n })\n });\n}","import * as React from 'react';\nimport { interpolateDate, interpolateNumber } from '@mui/x-charts-vendor/d3-interpolate';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PX_PRECISION = 10;\nexport default function ChartsContinuousGradient(props) {\n const {\n gradientUnits,\n isReversed,\n gradientId,\n size,\n direction,\n scale,\n colorScale,\n colorMap\n } = props;\n const extremumValues = [colorMap.min ?? 0, colorMap.max ?? 100];\n const extremumPositions = extremumValues.map(scale).filter(p => p !== undefined);\n if (extremumPositions.length !== 2) {\n return null;\n }\n const interpolator = typeof extremumValues[0] === 'number' ? interpolateNumber(extremumValues[0], extremumValues[1]) : interpolateDate(extremumValues[0], extremumValues[1]);\n const numberOfPoints = Math.round((Math.max(...extremumPositions) - Math.min(...extremumPositions)) / PX_PRECISION);\n const keyPrefix = `${extremumValues[0]}-${extremumValues[1]}-`;\n return /*#__PURE__*/_jsx(\"linearGradient\", {\n id: gradientId,\n x1: \"0\",\n x2: \"0\",\n y1: \"0\",\n y2: \"0\",\n [`${direction}${isReversed ? 1 : 2}`]: gradientUnits === 'objectBoundingBox' ? 1 : `${size}px`,\n gradientUnits: gradientUnits ?? 'userSpaceOnUse' // Use the SVG coordinate instead of the component ones.\n ,\n children: Array.from({\n length: numberOfPoints + 1\n }, (_, index) => {\n const value = interpolator(index / numberOfPoints);\n if (value === undefined) {\n return null;\n }\n const x = scale(value);\n if (x === undefined) {\n return null;\n }\n const offset = isReversed ? 1 - x / size : x / size;\n const color = colorScale(value);\n if (color === null) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"stop\", {\n offset: offset,\n stopColor: color,\n stopOpacity: 1\n }, keyPrefix + index);\n })\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { interpolateDate, interpolateNumber } from '@mui/x-charts-vendor/d3-interpolate';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PX_PRECISION = 10;\nconst getDirection = isReversed => {\n if (isReversed) {\n return {\n x1: '1',\n x2: '0',\n y1: '0',\n y2: '0'\n };\n }\n return {\n x1: '0',\n x2: '1',\n y1: '0',\n y2: '0'\n };\n};\n\n/**\n * Generates gradients to be used in tooltips and legends.\n */\nexport default function ChartsContinuousGradientObjectBound(props) {\n const {\n isReversed,\n gradientId,\n colorScale,\n colorMap\n } = props;\n const extremumValues = [colorMap.min ?? 0, colorMap.max ?? 100];\n const interpolator = typeof extremumValues[0] === 'number' ? interpolateNumber(extremumValues[0], extremumValues[1]) : interpolateDate(extremumValues[0], extremumValues[1]);\n const numberOfPoints = PX_PRECISION;\n const keyPrefix = `${extremumValues[0]}-${extremumValues[1]}-`;\n return /*#__PURE__*/_jsx(\"linearGradient\", _extends({\n id: gradientId\n }, getDirection(isReversed), {\n gradientUnits: 'objectBoundingBox' // Use the SVG coordinate instead of the component ones.\n ,\n children: Array.from({\n length: numberOfPoints + 1\n }, (_, index) => {\n const offset = index / numberOfPoints;\n const value = interpolator(offset);\n if (value === undefined) {\n return null;\n }\n const color = colorScale(value);\n if (color === null) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"stop\", {\n offset: offset,\n stopColor: color,\n stopOpacity: 1\n }, keyPrefix + index);\n })\n }));\n}","import * as React from 'react';\nimport { useDrawingArea, useXAxes, useYAxes } from \"../../../hooks/index.js\";\nimport ChartsPiecewiseGradient from \"./ChartsPiecewiseGradient.js\";\nimport ChartsContinuousGradient from \"./ChartsContinuousGradient.js\";\nimport ChartsContinuousGradientObjectBound from \"./ChartsContinuousGradientObjectBound.js\";\nimport { useZAxes } from \"../../../hooks/useZAxis.js\";\nimport { useChartGradientIdBuilder, useChartGradientIdObjectBoundBuilder } from \"../../../hooks/useChartGradientId.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function ChartsAxesGradients() {\n const {\n top,\n height,\n bottom,\n left,\n width,\n right\n } = useDrawingArea();\n const svgHeight = top + height + bottom;\n const svgWidth = left + width + right;\n const getGradientId = useChartGradientIdBuilder();\n const getObjectBoundGradientId = useChartGradientIdObjectBoundBuilder();\n const {\n xAxis,\n xAxisIds\n } = useXAxes();\n const {\n yAxis,\n yAxisIds\n } = useYAxes();\n const {\n zAxis,\n zAxisIds\n } = useZAxes();\n const filteredYAxisIds = yAxisIds.filter(axisId => yAxis[axisId].colorMap !== undefined);\n const filteredXAxisIds = xAxisIds.filter(axisId => xAxis[axisId].colorMap !== undefined);\n const filteredZAxisIds = zAxisIds.filter(axisId => zAxis[axisId].colorMap !== undefined);\n if (filteredYAxisIds.length === 0 && filteredXAxisIds.length === 0 && filteredZAxisIds.length === 0) {\n return null;\n }\n return /*#__PURE__*/_jsxs(\"defs\", {\n children: [filteredYAxisIds.map(axisId => {\n const gradientId = getGradientId(axisId);\n const objectBoundGradientId = getObjectBoundGradientId(axisId);\n const {\n colorMap,\n scale,\n colorScale,\n reverse\n } = yAxis[axisId];\n if (colorMap?.type === 'piecewise') {\n return /*#__PURE__*/_jsx(ChartsPiecewiseGradient, {\n isReversed: !reverse,\n scale: scale,\n colorMap: colorMap,\n size: svgHeight,\n gradientId: gradientId,\n direction: \"y\"\n }, gradientId);\n }\n if (colorMap?.type === 'continuous') {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ChartsContinuousGradient, {\n isReversed: !reverse,\n scale: scale,\n colorScale: colorScale,\n colorMap: colorMap,\n size: svgHeight,\n gradientId: gradientId,\n direction: \"y\"\n }), /*#__PURE__*/_jsx(ChartsContinuousGradientObjectBound, {\n isReversed: reverse,\n colorScale: colorScale,\n colorMap: colorMap,\n gradientId: objectBoundGradientId\n })]\n }, gradientId);\n }\n return null;\n }), filteredXAxisIds.map(axisId => {\n const gradientId = getGradientId(axisId);\n const objectBoundGradientId = getObjectBoundGradientId(axisId);\n const {\n colorMap,\n scale,\n reverse,\n colorScale\n } = xAxis[axisId];\n if (colorMap?.type === 'piecewise') {\n return /*#__PURE__*/_jsx(ChartsPiecewiseGradient, {\n isReversed: reverse,\n scale: scale,\n colorMap: colorMap,\n size: svgWidth,\n gradientId: gradientId,\n direction: \"x\"\n }, gradientId);\n }\n if (colorMap?.type === 'continuous') {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ChartsContinuousGradient, {\n isReversed: reverse,\n scale: scale,\n colorScale: colorScale,\n colorMap: colorMap,\n size: svgWidth,\n gradientId: gradientId,\n direction: \"x\"\n }), /*#__PURE__*/_jsx(ChartsContinuousGradientObjectBound, {\n isReversed: reverse,\n colorScale: colorScale,\n colorMap: colorMap,\n gradientId: objectBoundGradientId\n })]\n }, gradientId);\n }\n return null;\n }), filteredZAxisIds.map(axisId => {\n const objectBoundGradientId = getObjectBoundGradientId(axisId);\n const {\n colorMap,\n colorScale\n } = zAxis[axisId];\n if (colorMap?.type === 'continuous') {\n return /*#__PURE__*/_jsx(ChartsContinuousGradientObjectBound, {\n colorScale: colorScale,\n colorMap: colorMap,\n gradientId: objectBoundGradientId\n }, objectBoundGradientId);\n }\n return null;\n })]\n });\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"title\", \"desc\"];\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { ChartsAxesGradients } from \"../internals/components/ChartsAxesGradients/index.js\";\nimport { useSvgRef } from \"../hooks/useSvgRef.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\nimport { useStore } from \"../internals/store/useStore.js\";\nimport { selectorChartContainerSize, selectorChartPropsSize } from \"../internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst ChartsSurfaceStyles = styled('svg', {\n name: 'MuiChartsSurface',\n slot: 'Root'\n})(({\n ownerState\n}) => ({\n width: ownerState.width ?? '100%',\n height: ownerState.height ?? '100%',\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n // This prevents default touch actions when using the svg on mobile devices.\n // For example, prevent page scroll & zoom.\n touchAction: 'pan-y',\n userSelect: 'none'\n}));\n\n/**\n * It provides the drawing area for the chart elements.\n * It is the root `<svg>` of all the chart elements.\n *\n * It also provides the `title` and `desc` elements for the chart.\n *\n * Demos:\n *\n * - [Composition](https://mui.com/x/api/charts/composition/)\n *\n * API:\n *\n * - [ChartsSurface API](https://mui.com/x/api/charts/charts-surface/)\n */\nconst ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurface(inProps, ref) {\n const store = useStore();\n const {\n width: svgWidth,\n height: svgHeight\n } = useSelector(store, selectorChartContainerSize);\n const {\n width: propsWidth,\n height: propsHeight\n } = useSelector(store, selectorChartPropsSize);\n const svgRef = useSvgRef();\n const handleRef = useForkRef(svgRef, ref);\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiChartsSurface'\n });\n const {\n children,\n className,\n title,\n desc\n } = themeProps,\n other = _objectWithoutPropertiesLoose(themeProps, _excluded);\n const hasIntrinsicSize = svgHeight > 0 && svgWidth > 0;\n return /*#__PURE__*/_jsxs(ChartsSurfaceStyles, _extends({\n ownerState: {\n width: propsWidth,\n height: propsHeight\n },\n viewBox: `${0} ${0} ${svgWidth} ${svgHeight}`,\n className: className\n }, other, {\n ref: handleRef,\n children: [title && /*#__PURE__*/_jsx(\"title\", {\n children: title\n }), desc && /*#__PURE__*/_jsx(\"desc\", {\n children: desc\n }), /*#__PURE__*/_jsx(ChartsAxesGradients, {}), hasIntrinsicSize && children]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") ChartsSurface.displayName = \"ChartsSurface\";\nprocess.env.NODE_ENV !== \"production\" ? ChartsSurface.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n className: PropTypes.string,\n desc: PropTypes.string,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n title: PropTypes.string\n} : void 0;\nexport { ChartsSurface };","/**\n * Helper that converts values and percentages into values.\n * @param value The value provided by the developer. Can either be a number or a string with '%' or 'px'.\n * @param refValue The numerical value associated to 100%.\n * @returns The numerical value associated to the provided value.\n */\nexport function getPercentageValue(value, refValue) {\n if (typeof value === 'number') {\n return value;\n }\n if (value === '100%') {\n // Avoid potential rounding issues\n return refValue;\n }\n if (value.endsWith('%')) {\n const percentage = Number.parseFloat(value.slice(0, value.length - 1));\n if (!Number.isNaN(percentage)) {\n return percentage * refValue / 100;\n }\n }\n if (value.endsWith('px')) {\n const val = Number.parseFloat(value.slice(0, value.length - 2));\n if (!Number.isNaN(val)) {\n return val;\n }\n }\n throw new Error(`MUI X Charts: Received an unknown value \"${value}\". It should be a number, or a string with a percentage value.`);\n}","import { deg2rad } from \"../internals/angleConversion.js\";\nfunction getPoint(angle) {\n const radAngle = deg2rad(angle);\n return [Math.sin(radAngle), -Math.cos(radAngle)];\n}\n\n/**\n * Returns the ratio of the arc bounding box and its center.\n * @param startAngle The start angle (in deg)\n * @param endAngle The end angle (in deg)\n */\nexport function getArcRatios(startAngle, endAngle) {\n // Set the start, end and center point.\n const points = [[0, 0], getPoint(startAngle), getPoint(endAngle)];\n\n // Add cardinal points included in the arc\n const minAngle = Math.min(startAngle, endAngle);\n const maxAngle = Math.max(startAngle, endAngle);\n const initialAngle = Math.floor(minAngle / 90) * 90;\n for (let step = 1; step <= 4; step += 1) {\n const cardinalAngle = initialAngle + step * 90;\n if (cardinalAngle < maxAngle) {\n points.push(getPoint(cardinalAngle));\n }\n }\n const minX = Math.min(...points.map(([x]) => x));\n const maxX = Math.max(...points.map(([x]) => x));\n const minY = Math.min(...points.map(([, y]) => y));\n const maxY = Math.max(...points.map(([, y]) => y));\n return {\n cx: -minX / (maxX - minX),\n cy: -minY / (maxY - minY),\n minX,\n maxX,\n minY,\n maxY\n };\n}\nexport function getAvailableRadius(cx, cy, width, height, {\n minX,\n maxX,\n minY,\n maxY\n}) {\n return Math.min(...[{\n ratio: Math.abs(minX),\n space: cx\n }, {\n ratio: Math.abs(maxX),\n space: width - cx\n }, {\n ratio: Math.abs(minY),\n space: cy\n }, {\n ratio: Math.abs(maxY),\n space: height - cy\n }].map(({\n ratio,\n space\n }) => {\n if (ratio < 0.00001) {\n return Infinity;\n }\n return space / ratio;\n }));\n}","// @ignore - do not document.\n'use client';\n\nimport * as React from 'react';\nimport { getPercentageValue } from \"../internals/getPercentageValue.js\";\nimport { getArcRatios, getAvailableRadius } from \"./utils.js\";\nimport { useDrawingArea } from \"../hooks/useDrawingArea.js\";\nimport { deg2rad } from \"../internals/angleConversion.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GaugeContext = /*#__PURE__*/React.createContext({\n value: null,\n valueMin: 0,\n valueMax: 0,\n startAngle: 0,\n endAngle: 0,\n innerRadius: 0,\n outerRadius: 0,\n cornerRadius: 0,\n cx: 0,\n cy: 0,\n maxRadius: 0,\n valueAngle: null\n});\nif (process.env.NODE_ENV !== \"production\") GaugeContext.displayName = \"GaugeContext\";\nexport function GaugeProvider(props) {\n const {\n value = null,\n valueMin = 0,\n valueMax = 100,\n startAngle = 0,\n endAngle = 360,\n outerRadius: outerRadiusParam,\n innerRadius: innerRadiusParam,\n cornerRadius: cornerRadiusParam,\n cx: cxParam,\n cy: cyParam,\n children\n } = props;\n const {\n left,\n top,\n width,\n height\n } = useDrawingArea();\n const ratios = getArcRatios(startAngle, endAngle);\n const innerCx = cxParam ? getPercentageValue(cxParam, width) : ratios.cx * width;\n const innerCy = cyParam ? getPercentageValue(cyParam, height) : ratios.cy * height;\n let cx = left + innerCx;\n let cy = top + innerCy;\n const maxRadius = getAvailableRadius(innerCx, innerCy, width, height, ratios);\n\n // If the center is not defined, after computation of the available radius, update the center to use the remaining space.\n if (cxParam === undefined) {\n const usedWidth = maxRadius * (ratios.maxX - ratios.minX);\n cx = left + (width - usedWidth) / 2 + ratios.cx * usedWidth;\n }\n if (cyParam === undefined) {\n const usedHeight = maxRadius * (ratios.maxY - ratios.minY);\n cy = top + (height - usedHeight) / 2 + ratios.cy * usedHeight;\n }\n const outerRadius = getPercentageValue(outerRadiusParam ?? maxRadius, maxRadius);\n const innerRadius = getPercentageValue(innerRadiusParam ?? '80%', maxRadius);\n const cornerRadius = getPercentageValue(cornerRadiusParam ?? 0, outerRadius - innerRadius);\n const contextValue = React.useMemo(() => {\n const startAngleRad = deg2rad(startAngle);\n const endAngleRad = deg2rad(endAngle);\n return {\n value,\n valueMin,\n valueMax,\n startAngle: startAngleRad,\n endAngle: endAngleRad,\n outerRadius,\n innerRadius,\n cornerRadius,\n cx,\n cy,\n maxRadius,\n valueAngle: value === null ? null : startAngleRad + (endAngleRad - startAngleRad) * (value - valueMin) / (valueMax - valueMin)\n };\n }, [value, valueMin, valueMax, startAngle, endAngle, outerRadius, innerRadius, cornerRadius, cx, cy, maxRadius]);\n return /*#__PURE__*/_jsx(GaugeContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nexport function useGaugeState() {\n return React.useContext(GaugeContext);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"width\", \"height\", \"margin\", \"title\", \"desc\", \"value\", \"valueMin\", \"valueMax\", \"startAngle\", \"endAngle\", \"outerRadius\", \"innerRadius\", \"cornerRadius\", \"cx\", \"cy\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { ChartsSurface } from \"../ChartsSurface/index.js\";\nimport { GaugeProvider } from \"./GaugeProvider.js\";\nimport { ChartProvider } from \"../context/ChartProvider/index.js\";\nimport { defaultizeMargin } from \"../internals/defaultizeMargin.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GStyled = styled('g')(({\n theme\n}) => ({\n '& text': {\n fill: (theme.vars || theme).palette.text.primary\n }\n}));\nconst GaugeContainer = /*#__PURE__*/React.forwardRef(function GaugeContainer(props, ref) {\n const {\n width: inWidth,\n height: inHeight,\n margin,\n title,\n desc,\n value,\n valueMin = 0,\n valueMax = 100,\n startAngle,\n endAngle,\n outerRadius,\n innerRadius,\n cornerRadius,\n cx,\n cy,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n return /*#__PURE__*/_jsx(ChartProvider, {\n pluginParams: {\n width: inWidth,\n height: inHeight,\n margin: defaultizeMargin(margin, {\n left: 10,\n right: 10,\n top: 10,\n bottom: 10\n })\n },\n plugins: [],\n children: /*#__PURE__*/_jsx(GaugeProvider, {\n value: value,\n valueMin: valueMin,\n valueMax: valueMax,\n startAngle: startAngle,\n endAngle: endAngle,\n outerRadius: outerRadius,\n innerRadius: innerRadius,\n cornerRadius: cornerRadius,\n cx: cx,\n cy: cy,\n children: /*#__PURE__*/_jsx(ChartsSurface, _extends({\n title: title,\n desc: desc,\n role: \"meter\",\n \"aria-valuenow\": value === null ? undefined : value,\n \"aria-valuemin\": valueMin,\n \"aria-valuemax\": valueMax\n }, other, {\n ref: ref,\n children: /*#__PURE__*/_jsx(GStyled, {\n \"aria-hidden\": \"true\",\n children: children\n })\n }))\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") GaugeContainer.displayName = \"GaugeContainer\";\nprocess.env.NODE_ENV !== \"production\" ? GaugeContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n className: PropTypes.string,\n /**\n * The radius applied to arc corners (similar to border radius).\n * Set it to '50%' to get rounded arc.\n * @default 0\n */\n cornerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The x coordinate of the arc center.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the width the drawing area.\n */\n cx: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The y coordinate of the arc center.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the height the drawing area.\n */\n cy: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n desc: PropTypes.string,\n /**\n * The end angle (deg).\n * @default 360\n */\n endAngle: PropTypes.number,\n /**\n * The height of the chart in px. If not defined, it takes the height of the parent element.\n */\n height: PropTypes.number,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The radius between circle center and the beginning of the arc.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the maximal radius that fit into the drawing area.\n * @default '80%'\n */\n innerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The margin between the SVG and the drawing area.\n * It's used for leaving some space for extra information such as the x- and y-axis or legend.\n *\n * Accepts a `number` to be used on all sides or an object with the optional properties: `top`, `bottom`, `left`, and `right`.\n */\n margin: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n bottom: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number\n })]),\n /**\n * The radius between circle center and the end of the arc.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the maximal radius that fit into the drawing area.\n * @default '100%'\n */\n outerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, animations are skipped.\n * If unset or `false`, the animations respects the user's `prefers-reduced-motion` setting.\n */\n skipAnimation: PropTypes.bool,\n /**\n * The start angle (deg).\n * @default 0\n */\n startAngle: PropTypes.number,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n title: PropTypes.string,\n /**\n * The value of the gauge.\n * Set to `null` to not display a value.\n */\n value: PropTypes.number,\n /**\n * The maximal value of the gauge.\n * @default 100\n */\n valueMax: PropTypes.number,\n /**\n * The minimal value of the gauge.\n * @default 0\n */\n valueMin: PropTypes.number,\n /**\n * The width of the chart in px. If not defined, it takes the width of the parent element.\n */\n width: PropTypes.number\n} : void 0;\nexport { GaugeContainer };","'use client';\n\nimport { selectorChartSkipAnimation } from \"../internals/plugins/corePlugins/useChartAnimation/index.js\";\nimport { useStore } from \"../internals/store/useStore.js\";\nimport { useSelector } from \"../internals/store/useSelector.js\";\n\n/**\n * A hook to get if chart animations should be skipped.\n *\n * @returns {boolean} whether to skip animations\n */\nexport function useSkipAnimation(skipAnimation) {\n const store = useStore();\n const storeSkipAnimation = useSelector(store, selectorChartSkipAnimation);\n return skipAnimation || storeSkipAnimation;\n}","import { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape';\nimport { interpolateNumber } from '@mui/x-charts-vendor/d3-interpolate';\nimport { useAnimate } from \"./useAnimate.js\";\nfunction gaugeValueArcPropsInterpolator(from, to) {\n const interpolateStartAngle = interpolateNumber(from.startAngle, to.startAngle);\n const interpolateEndAngle = interpolateNumber(from.endAngle, to.endAngle);\n const interpolateInnerRadius = interpolateNumber(from.innerRadius, to.innerRadius);\n const interpolateOuterRadius = interpolateNumber(from.outerRadius, to.outerRadius);\n const interpolateCornerRadius = interpolateNumber(from.cornerRadius, to.cornerRadius);\n return t => {\n return {\n startAngle: interpolateStartAngle(t),\n endAngle: interpolateEndAngle(t),\n innerRadius: interpolateInnerRadius(t),\n outerRadius: interpolateOuterRadius(t),\n cornerRadius: interpolateCornerRadius(t)\n };\n };\n}\n\n/** Animates a arc of a gauge chart by increasing the `endAngle` from the start angle to the end angle.\n * The props object also accepts a `ref` which will be merged with the ref returned from this hook. This means you can\n * pass the ref returned by this hook to the `path` element and the `ref` provided as argument will also be called. */\nexport function useAnimateGaugeValueArc(props) {\n return useAnimate({\n startAngle: props.startAngle,\n endAngle: props.endAngle,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n cornerRadius: props.cornerRadius\n }, {\n createInterpolator: gaugeValueArcPropsInterpolator,\n transformProps: p => ({\n d: d3Arc().cornerRadius(p.cornerRadius)({\n innerRadius: p.innerRadius,\n outerRadius: p.outerRadius,\n startAngle: p.startAngle,\n endAngle: p.endAngle\n })\n }),\n applyProps(element, p) {\n element.setAttribute('d', p.d);\n },\n initialProps: {\n startAngle: props.startAngle,\n endAngle: props.startAngle,\n innerRadius: props.innerRadius,\n outerRadius: props.outerRadius,\n cornerRadius: props.cornerRadius\n },\n skip: props.skipAnimation,\n ref: props.ref\n });\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"cx\", \"cy\", \"startAngle\", \"endAngle\", \"cornerRadius\", \"innerRadius\", \"outerRadius\", \"skipAnimation\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { useSkipAnimation } from \"../hooks/useSkipAnimation.js\";\nimport { useAnimateGaugeValueArc } from \"../hooks/animation/useAnimateGaugeValueArc.js\";\nimport { useGaugeState } from \"./GaugeProvider.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledPath = styled('path', {\n name: 'MuiGauge',\n slot: 'ReferenceArc'\n})(({\n theme\n}) => ({\n fill: (theme.vars || theme).palette.primary.main\n}));\nfunction GaugeValueArc(props) {\n const {\n value,\n valueMin,\n valueMax,\n startAngle,\n endAngle,\n outerRadius,\n innerRadius,\n cornerRadius,\n cx,\n cy\n } = useGaugeState();\n if (value === null) {\n return null;\n }\n const valueAngle = startAngle + (value - valueMin) / (valueMax - valueMin) * (endAngle - startAngle);\n return /*#__PURE__*/_jsx(AnimatedGaugeValueArc, _extends({}, props, {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: valueAngle,\n cornerRadius: cornerRadius,\n innerRadius: innerRadius,\n outerRadius: outerRadius\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GaugeValueArc.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n skipAnimation: PropTypes.bool\n} : void 0;\nexport { GaugeValueArc };\nfunction AnimatedGaugeValueArc(_ref) {\n let {\n cx,\n cy,\n startAngle,\n endAngle,\n cornerRadius,\n innerRadius,\n outerRadius,\n skipAnimation: inSkipAnimation\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n const skipAnimation = useSkipAnimation(inSkipAnimation);\n const animatedProps = useAnimateGaugeValueArc({\n startAngle,\n endAngle,\n cornerRadius,\n innerRadius,\n outerRadius,\n skipAnimation\n });\n return /*#__PURE__*/_jsx(StyledPath, _extends({}, animatedProps, {\n transform: `translate(${cx}, ${cy})`\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? AnimatedGaugeValueArc.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n cornerRadius: PropTypes.number.isRequired,\n cx: PropTypes.number.isRequired,\n cy: PropTypes.number.isRequired,\n endAngle: PropTypes.number.isRequired,\n innerRadius: PropTypes.number.isRequired,\n outerRadius: PropTypes.number.isRequired,\n skipAnimation: PropTypes.bool,\n startAngle: PropTypes.number.isRequired\n} : void 0;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape';\nimport { styled } from '@mui/material/styles';\nimport { useGaugeState } from \"./GaugeProvider.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledPath = styled('path', {\n name: 'MuiGauge',\n slot: 'ReferenceArc'\n})(({\n theme\n}) => ({\n fill: (theme.vars || theme).palette.divider\n}));\nexport function GaugeReferenceArc(props) {\n const {\n startAngle,\n endAngle,\n outerRadius,\n innerRadius,\n cornerRadius,\n cx,\n cy\n } = useGaugeState();\n return /*#__PURE__*/_jsx(StyledPath, _extends({\n transform: `translate(${cx}, ${cy})`,\n d: d3Arc().cornerRadius(cornerRadius)({\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n })\n }, props));\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getGaugeUtilityClass(slot) {\n return generateUtilityClass('MuiGauge', slot);\n}\nexport const gaugeClasses = generateUtilityClasses('MuiGauge', ['root', 'valueArc', 'referenceArc', 'valueText']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// DOM utils taken from\n// https://github.com/recharts/recharts/blob/master/src/util/DOMUtils.ts\n\nfunction isSsr() {\n return typeof window === 'undefined';\n}\nconst stringCache = new Map();\nconst MAX_CACHE_NUM = 2000;\nconst SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nconst STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nexport const MEASUREMENT_SPAN_ID = 'mui_measurement_span';\n\n/**\n *\n * @param name CSS property name\n * @param value\n * @returns add 'px' for distance properties\n */\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return `${value}px`;\n }\n return value;\n}\n\n/**\n *\n * @param text camelcase css property\n * @returns css property\n */\nfunction camelToMiddleLine(text) {\n const strs = text.split('');\n const formatStrs = strs.reduce((result, entry) => {\n if (entry === entry.toUpperCase()) {\n return [...result, '-', entry.toLowerCase()];\n }\n return [...result, entry];\n }, []);\n return formatStrs.join('');\n}\n\n/**\n *\n * @param style React style object\n * @returns CSS styling string\n */\nexport const getStyleString = style => Object.keys(style).sort().reduce((result, s) => `${result}${camelToMiddleLine(s)}:${autoCompleteStyle(s, style[s])};`, '');\nlet domCleanTimeout;\n\n/**\n *\n * @param text The string to estimate\n * @param style The style applied\n * @returns width and height of the text\n */\nexport const getStringSize = (text, style = {}) => {\n if (text === undefined || text === null || isSsr()) {\n return {\n width: 0,\n height: 0\n };\n }\n const str = `${text}`;\n const styleString = getStyleString(style);\n const cacheKey = `${str}-${styleString}`;\n const size = stringCache.get(cacheKey);\n if (size) {\n return size;\n }\n try {\n let measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (measurementSpan === null) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n const measurementSpanStyle = _extends({}, SPAN_STYLE, style);\n Object.keys(measurementSpanStyle).map(styleKey => {\n measurementSpan.style[camelToMiddleLine(styleKey)] = autoCompleteStyle(styleKey, measurementSpanStyle[styleKey]);\n return styleKey;\n });\n measurementSpan.textContent = str;\n const rect = measurementSpan.getBoundingClientRect();\n const result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.set(cacheKey, result);\n if (stringCache.size + 1 > MAX_CACHE_NUM) {\n stringCache.clear();\n }\n if (process.env.NODE_ENV === 'test') {\n // In test environment, we clean the measurement span immediately\n measurementSpan.textContent = '';\n } else {\n if (domCleanTimeout) {\n clearTimeout(domCleanTimeout);\n }\n domCleanTimeout = setTimeout(() => {\n // Limit node cleaning to once per render cycle\n measurementSpan.textContent = '';\n }, 0);\n }\n return result;\n } catch {\n return {\n width: 0,\n height: 0\n };\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getStringSize } from \"./domUtils.js\";\nexport function getWordsByLines({\n style,\n needsComputation,\n text\n}) {\n return text.split('\\n').map(subText => _extends({\n text: subText\n }, needsComputation ? getStringSize(subText, style) : {\n width: 0,\n height: 0\n }));\n}","'use client';\n\nimport * as React from 'react';\n\n/** Returns true after hydration is done on the client.\n *\n * Basically a implementation of Option 2 of this gist: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85#option-2-lazily-show-component-with-uselayouteffect. */\nexport function useIsHydrated() {\n const [isHydrated, setIsHydrated] = React.useState(typeof window !== 'undefined' || process.env.NODE_ENV === 'test');\n React.useEffect(() => {\n setIsHydrated(true);\n }, []);\n return isHydrated;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"x\", \"y\", \"style\", \"text\", \"ownerState\"],\n _excluded2 = [\"angle\", \"textAnchor\", \"dominantBaseline\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { getWordsByLines } from \"../internals/getWordsByLines.js\";\nimport { useIsHydrated } from \"../hooks/useIsHydrated.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Helper component to manage multiline text in SVG\n */\nfunction ChartsText(props) {\n const {\n x,\n y,\n style: styleProps,\n text\n } = props,\n textProps = _objectWithoutPropertiesLoose(props, _excluded);\n const _ref = styleProps ?? {},\n {\n angle,\n textAnchor,\n dominantBaseline\n } = _ref,\n style = _objectWithoutPropertiesLoose(_ref, _excluded2);\n const isHydrated = useIsHydrated();\n const wordsByLines = React.useMemo(() => getWordsByLines({\n style,\n needsComputation: isHydrated && text.includes('\\n'),\n text\n }), [style, text, isHydrated]);\n let startDy;\n switch (dominantBaseline) {\n case 'hanging':\n case 'text-before-edge':\n startDy = 0;\n break;\n case 'central':\n startDy = (wordsByLines.length - 1) / 2 * -wordsByLines[0].height;\n break;\n default:\n startDy = (wordsByLines.length - 1) * -wordsByLines[0].height;\n break;\n }\n return /*#__PURE__*/_jsx(\"text\", _extends({}, textProps, {\n transform: angle ? `rotate(${angle}, ${x}, ${y})` : undefined,\n x: x,\n y: y,\n textAnchor: textAnchor,\n dominantBaseline: dominantBaseline,\n style: style,\n children: wordsByLines.map((line, index) => /*#__PURE__*/_jsx(\"tspan\", {\n x: x,\n dy: `${index === 0 ? startDy : wordsByLines[0].height}px`,\n dominantBaseline: dominantBaseline // Propagated to fix Safari issue: https://github.com/mui/mui-x/issues/10808\n ,\n children: line.text\n }, index))\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? ChartsText.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Height of a text line (in `em`).\n */\n lineHeight: PropTypes.number,\n /**\n * If `true`, the line width is computed.\n * @default false\n */\n needsComputation: PropTypes.bool,\n ownerState: PropTypes.any,\n /**\n * Style applied to text elements.\n */\n style: PropTypes.object,\n /**\n * Text displayed.\n */\n text: PropTypes.string.isRequired\n} : void 0;\nexport { ChartsText };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"text\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGaugeState } from \"./GaugeProvider.js\";\nimport { ChartsText } from \"../ChartsText/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction defaultFormatter({\n value\n}) {\n return value === null ? null : value.toLocaleString();\n}\nfunction GaugeValueText(props) {\n const {\n text = defaultFormatter,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n value,\n valueMin,\n valueMax,\n cx,\n cy\n } = useGaugeState();\n const formattedText = typeof text === 'function' ? text({\n value,\n valueMin,\n valueMax\n }) : text;\n if (formattedText === null) {\n return null;\n }\n return /*#__PURE__*/_jsx(\"g\", {\n className: className,\n children: /*#__PURE__*/_jsx(ChartsText, _extends({\n x: cx,\n y: cy,\n text: formattedText,\n style: {\n textAnchor: 'middle',\n dominantBaseline: 'central'\n }\n }, other))\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GaugeValueText.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Height of a text line (in `em`).\n */\n lineHeight: PropTypes.number,\n /**\n * If `true`, the line width is computed.\n * @default false\n */\n needsComputation: PropTypes.bool,\n ownerState: PropTypes.any,\n /**\n * Style applied to text elements.\n */\n style: PropTypes.object,\n text: PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n} : void 0;\nexport { GaugeValueText };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"text\", \"children\", \"classes\", \"className\", \"skipAnimation\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport { GaugeContainer } from \"./GaugeContainer.js\";\nimport { GaugeValueArc } from \"./GaugeValueArc.js\";\nimport { GaugeReferenceArc } from \"./GaugeReferenceArc.js\";\nimport { getGaugeUtilityClass } from \"./gaugeClasses.js\";\nimport { GaugeValueText } from \"./GaugeValueText.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n const {\n classes\n } = props;\n const slots = {\n root: ['root'],\n valueArc: ['valueArc'],\n referenceArc: ['referenceArc'],\n valueText: ['valueText']\n };\n return composeClasses(slots, getGaugeUtilityClass, classes);\n};\nconst Gauge = /*#__PURE__*/React.forwardRef(function Gauge(props, ref) {\n const {\n text,\n children,\n className,\n skipAnimation\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n return /*#__PURE__*/_jsxs(GaugeContainer, _extends({}, other, {\n className: clsx(classes.root, className),\n ref: ref,\n children: [/*#__PURE__*/_jsx(GaugeReferenceArc, {\n className: classes.referenceArc\n }), /*#__PURE__*/_jsx(GaugeValueArc, {\n className: classes.valueArc,\n skipAnimation: skipAnimation\n }), /*#__PURE__*/_jsx(GaugeValueText, {\n className: classes.valueText,\n text: text\n }), children]\n }));\n});\nif (process.env.NODE_ENV !== \"production\") Gauge.displayName = \"Gauge\";\nprocess.env.NODE_ENV !== \"production\" ? Gauge.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"pnpm proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n classes: PropTypes.object,\n className: PropTypes.string,\n /**\n * The radius applied to arc corners (similar to border radius).\n * Set it to '50%' to get rounded arc.\n * @default 0\n */\n cornerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The x coordinate of the arc center.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the width the drawing area.\n */\n cx: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The y coordinate of the arc center.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the height the drawing area.\n */\n cy: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n desc: PropTypes.string,\n /**\n * The end angle (deg).\n * @default 360\n */\n endAngle: PropTypes.number,\n /**\n * The height of the chart in px. If not defined, it takes the height of the parent element.\n */\n height: PropTypes.number,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The radius between circle center and the beginning of the arc.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the maximal radius that fit into the drawing area.\n * @default '80%'\n */\n innerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The margin between the SVG and the drawing area.\n * It's used for leaving some space for extra information such as the x- and y-axis or legend.\n *\n * Accepts a `number` to be used on all sides or an object with the optional properties: `top`, `bottom`, `left`, and `right`.\n */\n margin: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n bottom: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number\n })]),\n /**\n * The radius between circle center and the end of the arc.\n * Can be a number (in px) or a string with a percentage such as '50%'.\n * The '100%' is the maximal radius that fit into the drawing area.\n * @default '100%'\n */\n outerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, animations are skipped.\n * If unset or `false`, the animations respects the user's `prefers-reduced-motion` setting.\n */\n skipAnimation: PropTypes.bool,\n /**\n * The start angle (deg).\n * @default 0\n */\n startAngle: PropTypes.number,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n text: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n title: PropTypes.string,\n /**\n * The value of the gauge.\n * Set to `null` to not display a value.\n */\n value: PropTypes.number,\n /**\n * The maximal value of the gauge.\n * @default 100\n */\n valueMax: PropTypes.number,\n /**\n * The minimal value of the gauge.\n * @default 0\n */\n valueMin: PropTypes.number,\n /**\n * The width of the chart in px. If not defined, it takes the width of the parent element.\n */\n width: PropTypes.number\n} : void 0;\nexport { Gauge };","/**\n * Formats time in seconds to D:HH:MM:SS, H:MM:SS or MM:SS format\n * Used for the default (large) timer variant\n * Automatically includes days and hours as needed for clarity\n */\nexport const formatTime = (seconds: number): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Build time parts array\n const parts: string[] = []\n\n if (days > 0) {\n parts.push(days.toString())\n parts.push(hours.toString().padStart(2, \"0\"))\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else if (hours > 0) {\n parts.push(hours.toString())\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else {\n parts.push(minutes.toString())\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n }\n\n return parts.join(\":\")\n}\n\n/**\n * Formats time in seconds to a localized human-readable format\n * Used for the small timer variant\n * Examples: \"2h 30m 15s\", \"45m 30s\", \"30s\"\n * Falls back to English units if Intl.DurationFormat is not available\n */\nexport const formatTimeLocalized = (\n seconds: number,\n locale?: string,\n): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Try using Intl.DurationFormat if available (newer browsers)\n if (typeof Intl !== \"undefined\" && \"DurationFormat\" in Intl) {\n try {\n const duration: Record<string, number> = {}\n if (days > 0) duration.days = days\n if (hours > 0) duration.hours = hours\n if (minutes > 0) duration.minutes = minutes\n if (remainingSeconds > 0 || Object.keys(duration).length === 0) {\n duration.seconds = remainingSeconds\n }\n\n // @ts-expect-error - DurationFormat is not yet in TypeScript types\n const formatter = new Intl.DurationFormat(locale, { style: \"narrow\" })\n return formatter.format(duration)\n } catch {\n // Fall through to manual formatting\n }\n }\n\n // Manual formatting with compact units\n const parts: string[] = []\n\n if (days > 0) parts.push(`${days}d`)\n if (hours > 0) parts.push(`${hours}h`)\n if (minutes > 0) parts.push(`${minutes}m`)\n if (remainingSeconds > 0 || parts.length === 0) {\n parts.push(`${remainingSeconds}s`)\n }\n\n return parts.join(\" \")\n}\n\n/**\n * Calculates progress percentage for different timer states\n */\nexport const calculateProgress = (\n currentState: string,\n remainingTime: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"idle\") {\n return 0\n }\n\n if (currentState === \"countdown\" && maxTime !== null) {\n // Count-down mode: progress based on elapsed time\n const elapsed = maxTime - remainingTime\n return Math.min(100, (elapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n // Measuring mode: progress based on minute steps (0-100% per minute)\n return ((remainingTime / 60) % 1) * 100\n }\n\n return 0\n}\n\n/**\n * Calculates exact progress position based on elapsed time\n */\nexport const calculateExactProgress = (\n currentState: string,\n totalElapsed: number,\n maxTime: number | null,\n): number => {\n if (currentState === \"countdown\" && maxTime !== null) {\n return Math.min(100, (totalElapsed / maxTime) * 100)\n }\n\n if (currentState === \"measuring\") {\n return ((totalElapsed / 60) % 1) * 100\n }\n\n return 0\n}\n","import { Box, Fade, Typography, useTheme } from \"@mui/material\"\nimport { Gauge } from \"@mui/x-charts/Gauge\"\nimport { useTranslation } from \"react-i18next\"\nimport type { AnimationState, TimerState } from \"./types\"\nimport { formatTime, formatTimeLocalized } from \"./utils\"\n\ninterface DefaultVariantProps {\n timerState: TimerState\n animationState: AnimationState\n hasError: boolean\n className?: string\n}\n\nexport const DefaultVariant = ({\n timerState,\n animationState,\n hasError,\n className,\n}: DefaultVariantProps) => {\n const { t, i18n } = useTranslation()\n const theme = useTheme()\n const { currentState, remainingTime, maxTime, currentProgress } = timerState\n const {\n showErrorAnimation,\n showPauseAnimation,\n showPulsatingText,\n pulsatingFinished,\n showLabels,\n showMainText,\n showIdlePulsating,\n idleDotsCount,\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={currentState === \"idle\" ? 0 : 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: currentState === \"idle\" ? \"#171927\" : \"#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 {/* Top label */}\n <Box\n sx={{\n height: \"16px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: 1,\n }}\n >\n <Fade\n in={\n showLabels &&\n !hasError &&\n currentState !== \"idle\" &&\n currentState !== \"success\"\n }\n timeout={300}\n >\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"12px\",\n color:\n currentState === \"measured\"\n ? showPulsatingText || pulsatingFinished\n ? theme.palette.success.main\n : theme.palette.text.secondary\n : theme.palette.text.secondary,\n transition: \"color 0.8s ease-in-out\",\n }}\n >\n <span\n style={{\n opacity:\n currentState === \"measured\" && pulsatingFinished\n ? showPulsatingText\n ? 1\n : 0.6\n : 1,\n transition: \"opacity 2s ease-in-out\",\n }}\n >\n {currentState === \"measuring\"\n ? t(\"CycleTimer.CycleTime.lb\", \"Cycle Time\")\n : currentState === \"measured\"\n ? t(\"CycleTimer.CycleTime.lb\", \"Cycle Time\")\n : currentState === \"countdown\"\n ? t(\"CycleTimer.RemainingTime.lb\", \"Remaining Time\")\n : \"\"}\n </span>\n </Typography>\n </Fade>\n </Box>\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 {/* Idle state text */}\n <Fade\n in={showMainText && currentState === \"idle\" && !hasError}\n timeout={200}\n >\n <Typography\n variant=\"body2\"\n sx={{\n position: \"absolute\",\n fontSize: \"12px\",\n fontWeight: 400,\n color: \"rgba(255, 255, 255, 0.7)\",\n lineHeight: \"166%\",\n letterSpacing: \"0.17px\",\n textAlign: \"center\",\n width: \"200px\",\n height: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <span\n style={{\n opacity: showIdlePulsating ? 1 : 0.6,\n transition: \"opacity 2s ease-in-out\",\n }}\n >\n {t(\n \"CycleTimer.WaitingForCycle.lb\",\n \"Waiting for program cycle\",\n )}\n </span>\n <span\n style={{\n display: \"inline-block\",\n width: \"18px\",\n textAlign: \"left\",\n opacity: showIdlePulsating ? 1 : 0.6,\n transition: \"opacity 2s ease-in-out\",\n }}\n >\n {\".\".repeat(idleDotsCount)}\n </span>\n </Typography>\n </Fade>\n\n {/* Error text */}\n <Fade in={showMainText && hasError} timeout={200}>\n <Typography\n variant=\"h3\"\n sx={{\n position: \"absolute\",\n fontSize: \"40px\",\n fontWeight: 400,\n color: \"#FFFFFF\",\n lineHeight: \"116.7%\",\n }}\n >\n {t(\"CycleTimer.Error.lb\", \"Error\")}\n </Typography>\n </Fade>\n\n {/* Normal timer text */}\n <Fade\n in={\n showMainText &&\n !hasError &&\n currentState !== \"idle\" &&\n currentState !== \"success\"\n }\n timeout={300}\n >\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 transition: \"color 0.8s ease-in-out\",\n }}\n >\n <span\n style={{\n opacity: 1,\n transition: \"opacity 2s ease-in-out\",\n }}\n >\n {formatTime(remainingTime)}\n </span>\n </Typography>\n </Fade>\n </Box>\n\n {/* Bottom label */}\n <Box\n sx={{\n height: \"16px\",\n display: \"flex\",\n marginTop: 0.5,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Fade\n in={\n showLabels &&\n !hasError &&\n currentState !== \"idle\" &&\n currentState !== \"success\"\n }\n timeout={300}\n >\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: \"12px\",\n color:\n currentState === \"measured\"\n ? showPulsatingText || pulsatingFinished\n ? theme.palette.success.main\n : theme.palette.text.secondary\n : theme.palette.text.secondary,\n transition: \"color 0.8s ease-in-out\",\n }}\n >\n <span\n style={{\n opacity:\n currentState === \"measured\" && pulsatingFinished\n ? showPulsatingText\n ? 1\n : 0.6\n : 1,\n transition: \"opacity 2s ease-in-out\",\n }}\n >\n {currentState === \"measuring\"\n ? t(\"CycleTimer.Measuring.lb\", \"measuring...\")\n : currentState === \"measured\"\n ? t(\"CycleTimer.Determined.lb\", \"determined\")\n : currentState === \"countdown\" && maxTime !== null\n ? t(\"CycleTimer.OfTime.lb\", {\n time: formatTimeLocalized(maxTime, i18n.language),\n })\n : \"\"}\n </span>\n </Typography>\n </Fade>\n </Box>\n </Box>\n </Box>\n )\n}\n","import { Box, Typography, useTheme } from \"@mui/material\"\nimport { useTranslation } from \"react-i18next\"\nimport type { AnimationState, TimerState } from \"./types\"\nimport { formatTimeLocalized } from \"./utils\"\n\ninterface SmallVariantProps {\n timerState: TimerState\n animationState: AnimationState\n hasError: boolean\n compact: boolean\n className?: string\n}\n\nexport const SmallVariant = ({\n timerState,\n animationState,\n hasError,\n compact,\n className,\n}: SmallVariantProps) => {\n const { t, i18n } = useTranslation()\n const theme = useTheme()\n const { currentState, remainingTime, maxTime } = timerState\n const {\n showErrorAnimation,\n showPauseAnimation,\n showPulsatingText,\n pulsatingFinished,\n showIdlePulsating,\n idleDotsCount,\n } = animationState\n\n // Simple text-only mode for compact variant in certain states\n if (compact && currentState === \"idle\") {\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n }}\n >\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n transition: \"color 0.5s ease-out\",\n }}\n >\n {hasError\n ? t(\"CycleTimer.Error.lb\", \"Error\")\n : currentState === \"idle\"\n ? \"0s\"\n : formatTimeLocalized(remainingTime, i18n.language)}\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n gap: 1,\n }}\n >\n {/* Animated progress ring icon */}\n {!(currentState === \"idle\" && compact) && (\n <Box\n sx={{\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n style={{ transform: \"rotate(-90deg)\" }}\n role=\"img\"\n aria-label=\"Timer progress\"\n >\n {/* Background ring */}\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError\n ? theme.palette.error.light\n : currentState === \"measured\"\n ? showPulsatingText || pulsatingFinished\n ? theme.palette.success.main\n : theme.palette.text.secondary\n : theme.palette.success.main\n }\n strokeWidth=\"2\"\n opacity={\n currentState === \"measured\" && pulsatingFinished\n ? showPulsatingText\n ? 1\n : 0.6\n : 0.3\n }\n style={{\n transition: \"stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n {/* Progress ring */}\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError\n ? theme.palette.error.light\n : currentState === \"measured\"\n ? showPulsatingText || pulsatingFinished\n ? theme.palette.success.main\n : theme.palette.text.secondary\n : theme.palette.success.main\n }\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 8}`}\n strokeDashoffset={`${2 * Math.PI * 8 * (1 - (currentState === \"idle\" ? 0 : timerState.currentProgress) / 100)}`}\n style={{\n opacity:\n currentState === \"measured\" && pulsatingFinished\n ? showPulsatingText\n ? 1\n : 0.6\n : 1,\n transition:\n \"stroke-dashoffset 0.1s ease-out, stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n </svg>\n </Box>\n )}\n\n {/* Timer text display */}\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : currentState === \"idle\"\n ? \"rgba(255, 255, 255, 0.7)\"\n : currentState === \"measured\"\n ? showPulsatingText || pulsatingFinished\n ? theme.palette.success.main\n : theme.palette.text.secondary\n : theme.palette.text.primary,\n fontSize: \"14px\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n opacity:\n currentState === \"idle\"\n ? showIdlePulsating\n ? 1\n : 0.6\n : currentState === \"measured\" && pulsatingFinished\n ? showPulsatingText\n ? 1\n : 0.6\n : 1,\n transition:\n \"color 0.8s ease-in-out, font-size 0.3s ease-out, opacity 2s ease-in-out\",\n }}\n >\n {hasError ? (\n t(\"CycleTimer.Error.lb\", \"Error\")\n ) : currentState === \"idle\" ? (\n <>\n <span>\n {t(\"CycleTimer.WaitingForCycle.lb\", \"Waiting for program cycle\")}\n </span>\n <span\n style={{\n display: \"inline-block\",\n width: \"18px\",\n textAlign: \"left\",\n }}\n >\n {\".\".repeat(idleDotsCount)}\n </span>\n </>\n ) : currentState === \"measuring\" ? (\n compact ? (\n formatTimeLocalized(remainingTime, i18n.language)\n ) : (\n `${formatTimeLocalized(remainingTime, i18n.language)} / ${t(\"CycleTimer.Measuring.lb\", \"measuring...\")}`\n )\n ) : currentState === \"measured\" ? (\n compact ? (\n formatTimeLocalized(remainingTime, i18n.language)\n ) : (\n `${formatTimeLocalized(remainingTime, i18n.language)} / ${t(\"CycleTimer.Determined.lb\", \"determined\")}`\n )\n ) : currentState === \"countdown\" && maxTime !== null ? (\n compact ? (\n formatTimeLocalized(remainingTime, i18n.language)\n ) : (\n `${formatTimeLocalized(remainingTime, i18n.language)} / ${t(\"CycleTimer.Time.lb\", { time: formatTimeLocalized(maxTime, i18n.language) })}`\n )\n ) : (\n formatTimeLocalized(remainingTime, i18n.language)\n )}\n </Typography>\n </Box>\n )\n}\n","import { useCallback, useRef, useState } from \"react\"\nimport type { AnimationState } from \"./types\"\n\nexport const useAnimations = () => {\n const [animationState, setAnimationState] = useState<AnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showPulsatingText: false,\n pulsatingFinished: false,\n showLabels: true,\n showMainText: true,\n showIdlePulsating: false,\n idleDotsCount: 0,\n })\n\n // Refs for managing timeouts and intervals\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const pulseCountRef = useRef<number>(0)\n const idlePulsatingIntervalRef = useRef<NodeJS.Timeout | null>(null)\n const idleDotsIntervalRef = useRef<NodeJS.Timeout | null>(null)\n\n const triggerPauseAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: true }))\n\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n\n pauseAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: false }))\n }, 800)\n }, [])\n\n const triggerErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: true }))\n\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n\n errorAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n }, 600)\n }, [])\n\n const clearErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n }, [])\n\n const startPulsatingAnimation = useCallback((onComplete?: () => void) => {\n pulseCountRef.current = 0\n // Start with fade to success color\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: true,\n pulsatingFinished: false,\n }))\n\n // After initial success color fade, start slow pulsating like idle\n setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n pulsatingFinished: true, // This will keep the success color and start slow pulsating\n }))\n\n // Start slow pulsating animation similar to idle\n pulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: !prev.showPulsatingText,\n }))\n }, 2000) // Same slow timing as idle pulsating\n\n if (onComplete) {\n onComplete()\n }\n }, 800) // Initial success color display duration\n }, [])\n\n const stopPulsatingAnimation = useCallback(() => {\n if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n pulsatingIntervalRef.current = null\n }\n // Reset all pulsating states to ensure colors are reset\n setAnimationState((prev) => ({\n ...prev,\n showPulsatingText: false,\n pulsatingFinished: false,\n }))\n pulseCountRef.current = 0\n }, [])\n\n const startIdleAnimations = useCallback(() => {\n // Start pulsating animation for the text\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: true,\n }))\n\n idlePulsatingIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: !prev.showIdlePulsating,\n }))\n }, 2000) // Slower pulsate every 2 seconds\n\n // Start animated dots\n idleDotsIntervalRef.current = setInterval(() => {\n setAnimationState((prev) => ({\n ...prev,\n idleDotsCount: (prev.idleDotsCount + 1) % 4, // Cycle through 0, 1, 2, 3\n }))\n }, 800) // Change dots every 800ms\n }, [])\n\n const stopIdleAnimations = useCallback(() => {\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n idlePulsatingIntervalRef.current = null\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n idleDotsIntervalRef.current = null\n }\n setAnimationState((prev) => ({\n ...prev,\n showIdlePulsating: false,\n idleDotsCount: 0,\n }))\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: false,\n showMainText: false,\n }))\n\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n\n fadeTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: true,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showLabels: true,\n showMainText: true,\n }))\n }, [])\n\n // Cleanup function\n const cleanup = useCallback(() => {\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n if (pulsatingIntervalRef.current) {\n clearInterval(pulsatingIntervalRef.current)\n }\n if (idlePulsatingIntervalRef.current) {\n clearInterval(idlePulsatingIntervalRef.current)\n }\n if (idleDotsIntervalRef.current) {\n clearInterval(idleDotsIntervalRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\nimport { calculateExactProgress } from \"./utils\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n onCycleEnd?: () => void\n onMeasuringComplete?: () => void\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n onStartPulsating: (onComplete?: () => void) => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n onStartPulsating,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n currentState: \"idle\",\n remainingTime: 0,\n maxTime: null,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n wasRunningBeforeError: false,\n })\n\n // Timer-related refs\n const animationRef = useRef<number | null>(null)\n const startTimeRef = useRef<number | null>(null)\n const pausedTimeRef = useRef<number>(0)\n\n // Spring-based interpolator for smooth gauge progress animations\n const [progressInterpolator] = useInterpolation([0], {\n tension: 80,\n friction: 18,\n onChange: ([progress]) => {\n setTimerState((prev) => ({ ...prev, currentProgress: progress }))\n },\n })\n\n const setIdle = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n currentState: \"idle\",\n maxTime: null,\n // Don't reset remainingTime - keep the last value\n isRunning: false,\n isPausedState: false,\n currentProgress: 0, // Reset progress to 0 for gauge\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n progressInterpolator.setImmediate([0]) // Use setImmediate for instant reset\n }, [progressInterpolator])\n\n const startMeasuring = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n currentState: \"measuring\",\n maxTime: null,\n remainingTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress, // Immediately set progress\n }))\n pausedTimeRef.current = 0\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\n\n if (autoStart) {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, progressInterpolator],\n )\n\n const startNewCycle = useCallback(\n (maxTimeSeconds: number, elapsedSeconds: number = 0) => {\n // Stop any running timer first to prevent conflicts\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n\n setTimerState((prev) => ({\n ...prev,\n currentState: \"countdown\",\n maxTime: maxTimeSeconds,\n isPausedState: false,\n }))\n pausedTimeRef.current = 0\n\n // Count-down mode\n const remainingSeconds = Math.max(0, maxTimeSeconds - elapsedSeconds)\n const initialProgress =\n elapsedSeconds > 0 ? (elapsedSeconds / maxTimeSeconds) * 100 : 0\n\n setTimerState((prev) => ({\n ...prev,\n remainingTime: remainingSeconds,\n currentProgress: initialProgress, // Immediately set progress\n }))\n\n progressInterpolator.setImmediate([initialProgress]) // Use setImmediate for instant reset\n\n if (remainingSeconds === 0) {\n setTimerState((prev) => ({ ...prev, isRunning: false }))\n startTimeRef.current = null\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n } else if (autoStart) {\n setTimeout(() => {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n }, 0)\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, onCycleEnd, progressInterpolator],\n )\n\n const completeMeasuring = useCallback(() => {\n // Always trigger completion regardless of current state\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n currentState: \"measured\",\n }))\n startTimeRef.current = null\n\n onStartPulsating(() => {\n if (onMeasuringComplete) {\n onMeasuringComplete()\n }\n })\n }, [onStartPulsating, onMeasuringComplete])\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const additionalElapsed = now - startTimeRef.current\n pausedTimeRef.current += additionalElapsed\n\n const totalElapsed = pausedTimeRef.current / 1000\n const exactProgress = calculateExactProgress(\n timerState.currentState,\n totalElapsed,\n timerState.maxTime,\n )\n progressInterpolator.setTarget([exactProgress])\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [\n timerState.isRunning,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n onPauseAnimation,\n ])\n\n const resume = useCallback(() => {\n if (\n timerState.isPausedState &&\n (timerState.remainingTime > 0 || timerState.currentState !== \"countdown\")\n ) {\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [\n timerState.isPausedState,\n timerState.remainingTime,\n timerState.currentState,\n ])\n\n const isPaused = useCallback(() => {\n return timerState.isPausedState\n }, [timerState.isPausedState])\n\n // Handle error state changes\n useEffect(() => {\n if (hasError) {\n if (timerState.isRunning && !timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && timerState.isPausedState) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.isPausedState,\n timerState.wasRunningBeforeError,\n pause,\n resume,\n onErrorAnimation,\n onClearErrorAnimation,\n ])\n\n // Main timer loop\n useEffect(() => {\n if (timerState.isRunning) {\n const updateTimer = () => {\n if (startTimeRef.current) {\n const now = Date.now()\n const elapsed =\n (now - startTimeRef.current + pausedTimeRef.current) / 1000\n\n if (\n timerState.currentState === \"countdown\" &&\n timerState.maxTime !== null\n ) {\n const remaining = Math.max(0, timerState.maxTime - elapsed)\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.ceil(remaining),\n }))\n\n const progress = Math.min(100, (elapsed / timerState.maxTime) * 100)\n progressInterpolator.setTarget([progress])\n\n if (remaining <= 0) {\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n remainingTime: 0,\n }))\n startTimeRef.current = null\n progressInterpolator.setTarget([100])\n if (onCycleEnd) {\n queueMicrotask(() => onCycleEnd())\n }\n return\n }\n } else if (timerState.currentState === \"measuring\") {\n setTimerState((prev) => ({\n ...prev,\n remainingTime: Math.floor(elapsed),\n }))\n const progress = ((elapsed / 60) % 1) * 100\n progressInterpolator.setTarget([progress])\n }\n\n if (timerState.isRunning) {\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n }\n }\n\n animationRef.current = requestAnimationFrame(updateTimer)\n } else {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n }\n }\n }, [\n timerState.isRunning,\n onCycleEnd,\n timerState.currentState,\n timerState.maxTime,\n progressInterpolator,\n ])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update(1 / 60)\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n }\n\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n\n return () => {\n if (interpolationAnimationId) {\n cancelAnimationFrame(interpolationAnimationId)\n }\n }\n }, [progressInterpolator])\n\n return {\n timerState,\n controls: {\n startNewCycle,\n startMeasuring,\n setIdle,\n completeMeasuring,\n pause,\n resume,\n isPaused,\n },\n }\n}\n","import { observer } from \"mobx-react-lite\"\nimport { useEffect, useRef } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { DefaultVariant } from \"./DefaultVariant\"\nimport { SmallVariant } from \"./SmallVariant\"\nimport type { CycleTimerProps } from \"./types\"\nimport { useAnimations } from \"./useAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A circular gauge timer component for cycle-specific timing operations\n *\n * Features:\n * - Custom SVG circular gauge with 264px diameter and 40px thickness\n * - Multiple states: idle, measuring, measured, countdown, success\n * - Idle state: shows \"Waiting for program cycle\" with transparent inner circle\n * - Measuring state: counts up with \"Cycle Time\" / \"measuring...\" labels\n * - Measured state: shows final time with \"Cycle Time\" / \"determined\" labels in pulsating green\n * - Countdown mode: shows remaining time prominently, counts down to zero\n * - Success state: brief green flash after cycle completion\n * - Displays appropriate labels based on state\n * - Automatically counts down and triggers callback when reaching zero\n * - Full timer control: start, pause, resume functionality\n * - Support for starting with elapsed time (resume mid-cycle)\n * - Error state support: pauses timer and shows error styling (red color)\n * - Smooth fade transitions between different text states\n * - Pulsating text animation for completed measuring state\n * - Fully localized with i18next\n * - Material-UI theming integration\n * - Small variant with animated progress icon (gauge border only) next to text\n */\nexport const CycleTimer = externalizeComponent(\n observer(\n ({\n onCycleComplete,\n onCycleEnd,\n onMeasuringComplete,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: CycleTimerProps) => {\n const prevStateRef = useRef<string | undefined>(undefined)\n\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n startPulsatingAnimation,\n stopPulsatingAnimation,\n startIdleAnimations,\n stopIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n } = useAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n onCycleEnd,\n onMeasuringComplete,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n onStartPulsating: startPulsatingAnimation,\n })\n\n // Handle state changes with fade transitions\n useEffect(() => {\n const prevState = prevStateRef.current\n\n if (\n prevStateRef.current !== undefined &&\n prevState !== timerState.currentState\n ) {\n // Stop pulsating animation if leaving measured state\n if (prevState === \"measured\") {\n stopPulsatingAnimation()\n }\n\n // Stop idle animations if leaving idle state\n if (prevState === \"idle\") {\n stopIdleAnimations()\n }\n\n // Trigger fade transition\n triggerFadeTransition()\n } else {\n // No state change or first time - set initial state\n setInitialAnimationState()\n }\n\n // Start idle animations if entering idle state\n if (timerState.currentState === \"idle\") {\n startIdleAnimations()\n }\n\n prevStateRef.current = timerState.currentState\n }, [\n timerState.currentState,\n stopPulsatingAnimation,\n stopIdleAnimations,\n startIdleAnimations,\n triggerFadeTransition,\n setInitialAnimationState,\n ])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onCycleComplete(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onCycleComplete, controls])\n\n // Cleanup on unmount\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n // Render appropriate variant\n if (variant === \"small\") {\n return (\n <SmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <DefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z\"\n}), 'FilterList');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"\n}), 'Search');","import ClearIcon from \"@mui/icons-material/Clear\"\nimport FilterListIcon from \"@mui/icons-material/FilterList\"\nimport SearchIcon from \"@mui/icons-material/Search\"\nimport { Box, Divider, Typography, useTheme } from \"@mui/material\"\nimport {\n DataGrid,\n type DataGridProps,\n FilterPanelTrigger,\n type GridColDef,\n type GridRowParams,\n QuickFilter,\n QuickFilterClear,\n QuickFilterControl,\n QuickFilterTrigger,\n Toolbar,\n ToolbarButton,\n useGridApiRef,\n} from \"@mui/x-data-grid\"\nimport { observer } from \"mobx-react-lite\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { externalizeComponent } from \"../externalizeComponent\"\n\nexport interface WandelbotsDataGridProps<T = Record<string, unknown>> {\n /**\n * Array of data items to display in the grid\n */\n data: T[]\n\n /**\n * Column definitions for the DataGrid\n */\n columns: GridColDef[]\n\n /**\n * Function to transform data items into DataGrid rows\n * Should return an object with an 'id' field and other fields matching column definitions\n */\n getRowData: (item: T) => Record<string, unknown> & { id: string | number }\n\n /**\n * Callback when a row is clicked\n */\n onRowClick?: (item: T, params: GridRowParams) => void\n\n /**\n * Currently selected item (for highlighting)\n */\n selectedItem?: T | null\n\n /**\n * Function to get the ID of an item (used for selection highlighting)\n */\n getItemId?: (item: T) => string | number\n\n /**\n * Title displayed in the toolbar\n */\n title?: string\n\n /**\n * Show item count in title\n * @default true\n */\n showCount?: boolean\n\n /**\n * Placeholder text for the search input\n * @default \"Search programs\"\n */\n searchPlaceholder?: string\n\n /**\n * Additional DataGrid props to pass through\n */\n dataGridProps?: Partial<DataGridProps>\n\n /**\n * Custom toolbar component to replace the default one\n */\n CustomToolbar?: React.ComponentType\n\n /**\n * Select the first item by default\n * @default false\n */\n selectFirstByDefault?: boolean\n\n /**\n * Custom sx styles for the root container\n */\n sx?: React.ComponentProps<typeof Box>[\"sx\"]\n}\n\nexport const WandelbotsDataGrid = externalizeComponent(\n observer(\n <T,>({\n data,\n columns,\n getRowData,\n onRowClick,\n selectedItem,\n getItemId,\n title,\n showCount = true,\n searchPlaceholder = \"Search programs\",\n dataGridProps,\n CustomToolbar,\n selectFirstByDefault = false,\n sx,\n }: WandelbotsDataGridProps<T>) => {\n const theme = useTheme()\n const apiRef = useGridApiRef()\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Internal state for selection when not controlled\n const [internalSelectedItem, setInternalSelectedItem] =\n useState<T | null>(null)\n\n // Prepare rows for the DataGrid\n const rows = useMemo(() => data.map(getRowData), [data, getRowData])\n\n // Auto-resize columns when data changes\n useEffect(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, [rows, columns, apiRef])\n\n // Auto-resize columns when the DataGrid container is resized\n useEffect(() => {\n if (!containerRef.current || !apiRef.current) return\n\n const resizeObserver = new ResizeObserver(() => {\n // Use a small timeout to ensure the DataGrid has processed the size change\n setTimeout(() => {\n if (apiRef.current && rows.length > 0) {\n apiRef.current.autosizeColumns({\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n columns: columns.map((col) => col.field),\n })\n }\n }, 100)\n })\n\n resizeObserver.observe(containerRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [apiRef, rows.length, columns])\n\n // Handle default selection - only use if no selectedItem is explicitly provided\n const effectiveSelectedItem = useMemo(() => {\n // If selectedItem is explicitly provided, use it (including null)\n if (selectedItem !== undefined) {\n return selectedItem\n }\n // If we have an internal selection, use it\n if (internalSelectedItem !== null) {\n return internalSelectedItem\n }\n // Otherwise, use first item if selectFirstByDefault is true\n if (selectFirstByDefault && data.length > 0) {\n const firstItem = data[0]\n // Set internal state to first item on initial load\n setInternalSelectedItem(firstItem)\n return firstItem\n }\n return null\n }, [selectFirstByDefault, data, selectedItem, internalSelectedItem])\n\n // Handle row click\n const handleRowClick = (params: GridRowParams) => {\n const item = data.find((item) => {\n const rowData = getRowData(item)\n return rowData.id === params.id\n })\n\n if (item) {\n // Update internal selection state if not controlled by props\n if (selectedItem === undefined) {\n setInternalSelectedItem(item)\n }\n\n // Call the user's onRowClick callback\n if (onRowClick) {\n onRowClick(item, params)\n }\n }\n }\n\n // Get selected row ID for highlighting\n const selectedRowId = useMemo(() => {\n if (!effectiveSelectedItem || !getItemId) return null\n return getItemId(effectiveSelectedItem)\n }, [effectiveSelectedItem, getItemId])\n\n // Default toolbar with filter and quick filter\n function DefaultToolbar() {\n return (\n <Toolbar>\n <Box\n sx={{\n display: \"flex\",\n width: \"100%\",\n gap: 1,\n p: 0.5,\n alignItems: \"center\",\n }}\n >\n {title && (\n <Typography\n variant=\"h6\"\n sx={{\n fontWeight: 500,\n color: \"white\",\n }}\n >\n {title}\n {showCount && ` (${data.length})`}\n </Typography>\n )}\n <Box\n sx={{\n ml: \"auto\",\n display: \"flex\",\n gap: 0.5,\n alignItems: \"center\",\n pr: 1,\n }}\n >\n <FilterPanelTrigger\n render={\n <ToolbarButton aria-label=\"Show filters\">\n <FilterListIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{\n height: \"24px\",\n alignSelf: \"center\",\n }}\n />\n <QuickFilter\n render={(props, state) => (\n <Box\n {...props}\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n }}\n >\n {!state.expanded && (\n <QuickFilterTrigger\n render={\n <ToolbarButton aria-label=\"Search\">\n <SearchIcon fontSize=\"small\" />\n </ToolbarButton>\n }\n />\n )}\n <Box\n sx={{\n display: \"flex\",\n overflow: \"hidden\",\n transition: \"all 0.3s ease-in-out\",\n width: state.expanded ? \"200px\" : \"0px\",\n position: \"relative\",\n }}\n >\n <Box\n sx={{\n flex: 1,\n position: \"relative\",\n \"& .MuiInputBase-root\": {\n height: \"32px\",\n borderRadius: \"16px\",\n backgroundColor: \"#171927\",\n paddingLeft: \"40px\",\n paddingRight:\n state.expanded && state.value !== \"\"\n ? \"40px\"\n : \"12px\",\n color: \"white\",\n fontSize: \"14px\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&:hover\": {\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&:focus-within\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"&.Mui-focused\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&::before\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n \"&::after\": {\n display: \"none !important\",\n border: \"none !important\",\n },\n },\n \"& .MuiInputBase-input\": {\n padding: \"8px 0\",\n border: \"none !important\",\n outline: \"none !important\",\n boxShadow: \"none !important\",\n \"&:focus\": {\n outline: \"none !important\",\n boxShadow: \"none !important\",\n border: \"none !important\",\n },\n \"&::placeholder\": {\n color: \"rgba(255, 255, 255, 0.3)\",\n opacity: 1,\n },\n },\n \"& fieldset\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n border: \"none !important\",\n display: \"none !important\",\n },\n },\n }}\n >\n {state.expanded && (\n <SearchIcon\n fontSize=\"small\"\n sx={{\n position: \"absolute\",\n left: \"12px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: \"rgba(255, 255, 255, 0.6)\",\n zIndex: 1,\n pointerEvents: \"none\",\n }}\n />\n )}\n <QuickFilterControl placeholder={searchPlaceholder} />\n </Box>\n {state.expanded && state.value !== \"\" && (\n <QuickFilterClear\n render={\n <Box\n sx={{\n position: \"absolute\",\n right: \"8px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n zIndex: 1,\n }}\n >\n <Box\n sx={{\n minWidth: \"24px\",\n width: \"24px\",\n height: \"24px\",\n padding: 0,\n color: \"rgba(255, 255, 255, 0.6)\",\n \"&:hover\": {\n backgroundColor:\n \"rgba(255, 255, 255, 0.1)\",\n },\n }}\n >\n <ToolbarButton aria-label=\"Clear\">\n <ClearIcon fontSize=\"small\" />\n </ToolbarButton>\n </Box>\n </Box>\n }\n />\n )}\n </Box>\n </Box>\n )}\n />\n </Box>\n </Box>\n </Toolbar>\n )\n }\n\n const ToolbarComponent = CustomToolbar || DefaultToolbar\n\n return (\n <Box\n ref={containerRef}\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n // Apply scrollbar styling like in the theme\n \"& *\": {\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n },\n \"&:hover *\": {\n scrollbarWidth: \"thin\",\n scrollbarColor: `${theme.palette.divider} transparent`,\n \"&::-webkit-scrollbar\": {\n display: \"block\",\n width: \"8px\",\n height: \"8px\",\n },\n \"&::-webkit-scrollbar-track\": {\n background: \"transparent\",\n },\n \"&::-webkit-scrollbar-thumb\": {\n background: theme.palette.divider,\n borderRadius: \"4px\",\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n background: theme.palette.action.hover,\n },\n },\n ...sx,\n }}\n >\n <DataGrid\n apiRef={apiRef}\n rows={rows}\n columns={columns}\n onRowClick={handleRowClick}\n disableColumnMenu={false}\n disableRowSelectionOnClick={true}\n disableMultipleRowSelection={true}\n hideFooterSelectedRowCount={true}\n filterMode=\"client\"\n sortingOrder={[\"desc\", \"asc\"]}\n hideFooter={false}\n showToolbar={true}\n slots={{\n toolbar: ToolbarComponent,\n }}\n initialState={{\n sorting: {\n sortModel: [],\n },\n filter: {\n filterModel: {\n items: [],\n },\n },\n ...dataGridProps?.initialState,\n }}\n {...dataGridProps}\n // Ensure autosize properties are always enabled and not overridden by dataGridProps\n autosizeOnMount={true}\n autosizeOptions={{\n // Merge any custom autosize options first\n ...(dataGridProps?.autosizeOptions || {}),\n // Force these key properties to always be true to maintain autosize behavior\n includeOutliers: true,\n includeHeaders: true,\n expand: true,\n // Auto-size all columns by default (can be overridden by dataGridProps)\n columns:\n dataGridProps?.autosizeOptions?.columns ||\n columns.map((col) => col.field),\n }}\n sx={{\n border: \"none\",\n\n width: \"100%\",\n // Remove any MUI overlays and elevation effects\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& .MuiDataGrid-overlay\": {},\n \"& .MuiDataGrid-main\": {\n border: \"none\",\n\n // Remove any surface or paper overlays\n \"& .MuiPaper-root\": {},\n },\n \"& .MuiDataGrid-container--top [role=row]\": {},\n \"& .MuiDataGrid-topContainer\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-columnHeaders\": {\n border: \"none\",\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-row\": {\n cursor: onRowClick ? \"pointer\" : \"default\",\n border: \"none\",\n margin: \"1px 0\",\n position: \"relative\",\n // Disable all default MUI hover effects\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"action.hover\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n },\n // Disable MUI's built-in selection styling completely\n \"&.Mui-selected\": {\n backgroundColor: \"transparent !important\",\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n // Highlight selected row with a distinct color using data attribute\n ...(selectedRowId !== null && {\n [`&[data-id=\"${selectedRowId}\"]`]: {\n backgroundColor: \"transparent !important\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n top: 0,\n left: \"16px\",\n right: \"16px\",\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.08) !important\",\n borderRadius: \"16px\",\n zIndex: 0,\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n \"&:hover::before\": {\n backgroundColor: \"rgba(255, 255, 255, 0.12) !important\",\n },\n },\n }),\n },\n \"& .MuiDataGrid-cell--textLeft\": {\n paddingLeft: \"40px\",\n },\n \"& .MuiDataGrid-cell\": {\n border: \"none\",\n position: \"relative\",\n zIndex: 1,\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:focus-within\": {\n outline: \"none\",\n },\n \"&:hover\": {\n backgroundColor: \"transparent !important\",\n },\n },\n \"& .MuiDataGrid-columnHeader\": {\n border: \"none\",\n paddingLeft: \"40px\",\n paddingRight: \"40px\",\n\n \"& .MuiDataGrid-columnHeaderTitle\": {\n color: \"rgba(255, 255, 255, 0.6)\",\n },\n },\n \"& .MuiDataGrid-toolbarContainer\": {\n padding: \"8px\",\n border: \"none !important\",\n borderBottom: \"none !important\",\n\n \"& .MuiBox-root\": {},\n \"& .MuiFormControl-root\": {},\n \"& .MuiInputBase-root\": {},\n \"& .MuiPaper-root\": {\n boxShadow: \"none !important\",\n },\n \"& *\": {\n borderBottom: \"none !important\",\n },\n },\n \"& .MuiDataGrid-toolbar\": {\n borderBottom: \"none !important\",\n },\n \"& .MuiDataGrid-toolbarFilterList\": {\n border: \"none\",\n },\n \"& .MuiDataGrid-withBorderColor\": {\n borderColor: \"transparent !important\",\n },\n \"& .MuiDataGrid-columnSeparator\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-footerContainer\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-filler\": {\n border: \"none !important\",\n borderTop: \"none !important\",\n borderBottom: \"none !important\",\n borderLeft: \"none !important\",\n borderRight: \"none !important\",\n\n \"--rowBorderColor\": \"none !important\",\n },\n // Remove any remaining MUI background overlays\n \"& .MuiBackdrop-root\": {},\n \"& .MuiModal-backdrop\": {},\n ...dataGridProps?.sx,\n }}\n />\n </Box>\n )\n },\n ),\n)\n\nWandelbotsDataGrid.displayName = \"WandelbotsDataGrid\"\n","/**\n * Formats time in seconds to D:HH:MM:SS, H:MM:SS or MM:SS format\n * Used for the default (large) timer variant\n * Automatically includes days and hours as needed for clarity\n */\nexport const formatTime = (seconds: number): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Build time parts array\n const parts: string[] = []\n\n if (days > 0) {\n parts.push(days.toString())\n parts.push(hours.toString().padStart(2, \"0\"))\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else if (hours > 0) {\n parts.push(hours.toString())\n parts.push(minutes.toString().padStart(2, \"0\"))\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n } else {\n parts.push(minutes.toString())\n parts.push(remainingSeconds.toString().padStart(2, \"0\"))\n }\n\n return parts.join(\":\")\n}\n\n/**\n * Formats time in seconds to a localized human-readable format\n * Used for the small timer variant\n * Examples: \"2h 30m 15s\", \"45m 30s\", \"30s\"\n * Falls back to English units if Intl.DurationFormat is not available\n */\nexport const formatTimeLocalized = (\n seconds: number,\n locale?: string,\n): string => {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n const remainingSeconds = seconds % 60\n\n // Try using Intl.DurationFormat if available (newer browsers)\n if (typeof Intl !== \"undefined\" && \"DurationFormat\" in Intl) {\n try {\n const duration: Record<string, number> = {}\n if (days > 0) duration.days = days\n if (hours > 0) duration.hours = hours\n if (minutes > 0) duration.minutes = minutes\n if (remainingSeconds > 0 || Object.keys(duration).length === 0) {\n duration.seconds = remainingSeconds\n }\n\n // @ts-expect-error\n // TODO: Remove suppression once Intl.DurationFormat is supported in TypeScript types.\n // See: https://github.com/microsoft/TypeScript/issues/53971\n // DurationFormat is a proposed API and not yet available in TypeScript's standard library types.\n const formatter = new Intl.DurationFormat(locale, { style: \"narrow\" })\n return formatter.format(duration)\n } catch {\n // Fall through to manual formatting\n }\n }\n\n // Manual formatting with compact units\n const parts: string[] = []\n\n if (days > 0) parts.push(`${days}d`)\n if (hours > 0) parts.push(`${hours}h`)\n if (minutes > 0) parts.push(`${minutes}m`)\n if (remainingSeconds > 0 || parts.length === 0) {\n parts.push(`${remainingSeconds}s`)\n }\n\n return parts.join(\" \")\n}\n\n/**\n * Calculates progress percentage for timer (minute-based cycles)\n */\nexport const calculateTimerProgress = (elapsedTime: number): number => {\n return ((elapsedTime / 60) % 1) * 100\n}\n","import { Box, Fade, Typography } from \"@mui/material\"\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 } = 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","import { Box, Typography } from \"@mui/material\"\nimport { useTheme } from \"@mui/material/styles\"\nimport { useTranslation } from \"react-i18next\"\nimport type { TimerAnimationState, TimerState } from \"./types\"\nimport { formatTimeLocalized } from \"./utils\"\n\ninterface TimerSmallVariantProps {\n timerState: TimerState\n animationState: TimerAnimationState\n hasError: boolean\n compact: boolean\n className?: string\n}\n\nexport const TimerSmallVariant = ({\n timerState,\n animationState,\n hasError,\n compact,\n className,\n}: TimerSmallVariantProps) => {\n const { t, i18n } = useTranslation()\n const theme = useTheme()\n const { elapsedTime, currentProgress } = timerState\n const { showErrorAnimation, showPauseAnimation } = animationState\n\n // Simple text-only mode for compact variant\n if (compact) {\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n }}\n >\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n transition: \"color 0.5s ease-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n className={className}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n m: 0,\n gap: 1,\n }}\n >\n {/* Animated progress ring icon */}\n <Box\n sx={{\n width: 20,\n height: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showPauseAnimation || showErrorAnimation ? 0.6 : 1,\n transition: \"opacity 0.5s ease-out\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n style={{ transform: \"rotate(-90deg)\" }}\n role=\"img\"\n aria-label=\"Timer progress\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n opacity={0.3}\n style={{\n transition: \"stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"8\"\n fill=\"none\"\n stroke={\n hasError ? theme.palette.error.light : theme.palette.success.main\n }\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray={`${2 * Math.PI * 8}`}\n strokeDashoffset={`${2 * Math.PI * 8 * (1 - currentProgress / 100)}`}\n style={{\n transition:\n \"stroke-dashoffset 0.1s ease-out, stroke 0.8s ease-in-out, opacity 2s ease-in-out\",\n }}\n />\n </svg>\n </Box>\n\n {/* Timer text display */}\n <Typography\n variant=\"body2\"\n sx={{\n color: hasError\n ? theme.palette.error.light\n : theme.palette.text.primary,\n fontSize: \"14px\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n transition:\n \"color 0.8s ease-in-out, font-size 0.3s ease-out, opacity 2s ease-in-out\",\n }}\n >\n {hasError\n ? t(\"timer.error\")\n : formatTimeLocalized(elapsedTime, i18n.language)}\n </Typography>\n </Box>\n )\n}\n","import { useCallback, useRef, useState } from \"react\"\nimport type { TimerAnimationState } from \"./types\"\n\nexport const useTimerAnimations = () => {\n const [animationState, setAnimationState] = useState<TimerAnimationState>({\n showPauseAnimation: false,\n showErrorAnimation: false,\n showMainText: true,\n })\n\n // Refs for managing timeouts\n const pauseAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const errorAnimationTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const fadeTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const triggerPauseAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: true }))\n\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n\n pauseAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showPauseAnimation: false }))\n }, 800)\n }, [])\n\n const triggerErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: true }))\n\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n\n errorAnimationTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n }, 600)\n }, [])\n\n const clearErrorAnimation = useCallback(() => {\n setAnimationState((prev) => ({ ...prev, showErrorAnimation: false }))\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n }, [])\n\n const triggerFadeTransition = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: false,\n }))\n\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n\n fadeTimeoutRef.current = setTimeout(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, 200)\n }, [])\n\n const setInitialAnimationState = useCallback(() => {\n setAnimationState((prev) => ({\n ...prev,\n showMainText: true,\n }))\n }, [])\n\n // Cleanup function\n const cleanup = useCallback(() => {\n if (pauseAnimationTimeoutRef.current) {\n clearTimeout(pauseAnimationTimeoutRef.current)\n }\n if (errorAnimationTimeoutRef.current) {\n clearTimeout(errorAnimationTimeoutRef.current)\n }\n if (fadeTimeoutRef.current) {\n clearTimeout(fadeTimeoutRef.current)\n }\n }, [])\n\n return {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n triggerFadeTransition,\n setInitialAnimationState,\n cleanup,\n }\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useInterpolation } from \"../utils/interpolation\"\nimport type { TimerState } from \"./types\"\n\ninterface UseTimerLogicProps {\n autoStart: boolean\n hasError: boolean\n onPauseAnimation: () => void\n onErrorAnimation: () => void\n onClearErrorAnimation: () => void\n}\n\nexport const useTimerLogic = ({\n autoStart,\n hasError,\n onPauseAnimation,\n onErrorAnimation,\n onClearErrorAnimation,\n}: UseTimerLogicProps) => {\n const [timerState, setTimerState] = useState<TimerState>({\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n wasRunningBeforeError: false,\n })\n\n // Timer-related refs\n const animationRef = useRef<number | null>(null)\n const startTimeRef = useRef<number | null>(null)\n const pausedTimeRef = useRef<number>(0)\n const lastProgressRef = useRef<number>(0)\n\n // Spring-based interpolator for smooth gauge progress animations\n const [progressInterpolator] = useInterpolation([0], {\n tension: 80,\n friction: 18,\n onChange: ([progress]) => {\n setTimerState((prev) => ({ ...prev, currentProgress: progress }))\n },\n })\n\n const start = useCallback(\n (elapsedSeconds: number = 0) => {\n const initialProgress = ((elapsedSeconds / 60) % 1) * 100\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: elapsedSeconds,\n isPausedState: false,\n currentProgress: initialProgress,\n }))\n pausedTimeRef.current = 0\n lastProgressRef.current = initialProgress\n\n progressInterpolator.setImmediate([initialProgress])\n\n if (autoStart) {\n startTimeRef.current = Date.now() - elapsedSeconds * 1000\n setTimerState((prev) => ({ ...prev, isRunning: true }))\n } else {\n startTimeRef.current = null\n }\n },\n [autoStart, progressInterpolator],\n )\n\n const pause = useCallback(() => {\n if (startTimeRef.current && timerState.isRunning) {\n const now = Date.now()\n const totalElapsed = (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n progressInterpolator.setTarget([currentProgress])\n \n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n }\n\n setTimerState((prev) => ({\n ...prev,\n isRunning: false,\n isPausedState: true,\n }))\n onPauseAnimation()\n }, [\n timerState.isRunning,\n progressInterpolator,\n onPauseAnimation,\n ])\n\n const resume = useCallback(() => {\n if (timerState.isPausedState) {\n pausedTimeRef.current = timerState.elapsedTime\n startTimeRef.current = Date.now()\n setTimerState((prev) => ({\n ...prev,\n isRunning: true,\n isPausedState: false,\n }))\n }\n }, [timerState.isPausedState, timerState.elapsedTime])\n\n const reset = useCallback(() => {\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: 0,\n isRunning: false,\n isPausedState: false,\n currentProgress: 0,\n }))\n pausedTimeRef.current = 0\n startTimeRef.current = null\n lastProgressRef.current = 0\n progressInterpolator.setImmediate([0])\n }, [progressInterpolator])\n\n const isPaused = useCallback(() => {\n return timerState.isPausedState\n }, [timerState.isPausedState])\n\n // Handle error state changes\n useEffect(() => {\n if (hasError) {\n if (timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: true }))\n pause()\n }\n onErrorAnimation()\n } else {\n if (timerState.wasRunningBeforeError && !timerState.isRunning) {\n setTimerState((prev) => ({ ...prev, wasRunningBeforeError: false }))\n resume()\n }\n onClearErrorAnimation()\n }\n }, [\n hasError,\n timerState.isRunning,\n timerState.wasRunningBeforeError,\n pause,\n resume,\n onErrorAnimation,\n onClearErrorAnimation,\n ])\n\n // Main timer loop\n useEffect(() => {\n if (timerState.isRunning) {\n const updateTimer = () => {\n if (startTimeRef.current) {\n const now = Date.now()\n const totalElapsed = (now - startTimeRef.current) / 1000 + pausedTimeRef.current\n const currentProgress = ((totalElapsed / 60) % 1) * 100\n\n setTimerState((prev) => ({\n ...prev,\n elapsedTime: Math.floor(totalElapsed),\n }))\n\n // Only update progress interpolator if progress changed significantly\n const progressDiff = Math.abs(currentProgress - lastProgressRef.current)\n if (progressDiff > 0.1) {\n progressInterpolator.setTarget([currentProgress])\n lastProgressRef.current = currentProgress\n }\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n }\n animationRef.current = requestAnimationFrame(updateTimer)\n } else {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = null\n }\n }\n }, [timerState.isRunning, progressInterpolator])\n\n // Interpolation animation loop\n useEffect(() => {\n let interpolationAnimationId: number | null = null\n\n const animateInterpolation = () => {\n progressInterpolator.update()\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n }\n\n interpolationAnimationId = requestAnimationFrame(animateInterpolation)\n\n return () => {\n if (interpolationAnimationId) {\n cancelAnimationFrame(interpolationAnimationId)\n }\n }\n }, [progressInterpolator])\n\n return {\n timerState,\n controls: {\n start,\n pause,\n resume,\n reset,\n isPaused,\n },\n }\n}\n","import { observer } from \"mobx-react-lite\"\nimport { useEffect } from \"react\"\nimport { externalizeComponent } from \"../../externalizeComponent\"\nimport { TimerDefaultVariant } from \"./TimerDefaultVariant\"\nimport { TimerSmallVariant } from \"./TimerSmallVariant\"\nimport type { TimerProps } from \"./types\"\nimport { useTimerAnimations } from \"./useTimerAnimations\"\nimport { useTimerLogic } from \"./useTimerLogic\"\n\n/**\n * A simple count-up timer component with visual progress indication\n *\n * Features:\n * - Count-up timer that tracks elapsed time\n * - Visual progress gauge that cycles every minute\n * - Two display variants: large circular gauge (default) or small icon with text\n * - Full timer control: start, pause, resume, reset functionality\n * - Support for starting with elapsed time (resume mid-session)\n * - Error state support: pauses timer and shows error styling\n * - Smooth progress animations with spring physics\n * - Fully localized with i18next\n * - Material-UI theming integration\n */\nexport const Timer = externalizeComponent(\n observer(\n ({\n onTimerReady,\n autoStart = true,\n variant = \"default\",\n compact = false,\n className,\n hasError = false,\n }: TimerProps) => {\n // Initialize animation hooks\n const {\n animationState,\n triggerPauseAnimation,\n triggerErrorAnimation,\n clearErrorAnimation,\n setInitialAnimationState,\n cleanup,\n } = useTimerAnimations()\n\n // Initialize timer logic\n const { timerState, controls } = useTimerLogic({\n autoStart,\n hasError,\n onPauseAnimation: triggerPauseAnimation,\n onErrorAnimation: triggerErrorAnimation,\n onClearErrorAnimation: clearErrorAnimation,\n })\n\n // Set initial animation state\n useEffect(() => {\n setInitialAnimationState()\n }, [setInitialAnimationState])\n\n // Provide controls to parent component\n useEffect(() => {\n let isMounted = true\n const timeoutId = setTimeout(() => {\n if (isMounted) {\n onTimerReady(controls)\n }\n }, 0)\n\n return () => {\n isMounted = false\n clearTimeout(timeoutId)\n }\n }, [onTimerReady, controls])\n\n // Cleanup on unmount\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n // Render appropriate variant\n if (variant === \"small\") {\n return (\n <TimerSmallVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n compact={compact}\n className={className}\n />\n )\n }\n\n return (\n <TimerDefaultVariant\n timerState={timerState}\n animationState={animationState}\n hasError={hasError}\n className={className}\n />\n )\n },\n ),\n)\n"],"names":["_extends","n","t","_objectWithoutPropertiesLoose","r","useTheme","theme","useThemeSystem","defaultTheme","React","THEME_ID","useThemeProps","props","name","systemUseThemeProps","globalId","useGlobalId","idOverride","defaultId","setDefaultId","id","safeReact","maybeReactUseId","useId","ChartStore","value","fn","updater","newState","l","useChartAnimation","params","store","prevState","disableAnimation","disableCalled","useEnhancedEffect","disableAnimationCleanup","handleMediaChange","event","mql","skipAnimation","isAnimationDisabledEnvironment","disableAnimations","runIdentityFunctionCheck","resultFunc","inputSelectorsResults","outputSelectorResult","isInputSameAsOutput","emptyObject","stack","e","runInputStabilityCheck","inputSelectorResultsObject","options","inputSelectorArgs","memoize","memoizeOptions","inputSelectorResults","inputSelectorResultsCopy","createAnEmptyObject","globalDevModeChecks","NOT_FOUND","assertIsFunction","func","errorMessage","assertIsObject","object","assertIsArrayOfFunctions","array","item","itemTypes","ensureIsArray","getDependencies","createSelectorArgs","dependencies","collectInputSelectorResults","length","getDevModeChecksExecutionInfo","firstRun","devModeChecks","identityFunctionCheck","inputStabilityCheck","createSingletonCache","equals","entry","key","createLruCache","maxSize","entries","get","cacheIndex","put","getEntries","clear","referenceEqualityCheck","a","b","createCacheKeyComparator","equalityCheck","prev","next","i","lruMemoize","equalityCheckOrOptions","providedOptions","resultEqualityCheck","comparator","resultsCount","cache","memoized","matchingEntry","StrongRef","Ref","UNTERMINATED","TERMINATED","createCacheNode","weakMapMemoize","fnNode","lastResult","cacheNode","arg","objectCache","objectNode","primitiveCache","primitiveNode","terminatedNode","result","lastResultValue","_a","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","createSelector2","recomputations","dependencyRecomputations","directlyPassedOptions","combinedOptions","argsMemoize","argsMemoizeOptions","finalMemoizeOptions","finalArgsMemoizeOptions","memoizedResultFunc","selector","createSelector","createStructuredSelector","inputSelectorsObject","selectorCreator","inputSelectorKeys","composition","index","reselectCreateSelector","state","selectorArgs","cacheKey","cacheForCurrentChartInstance","cachedSelector","selectorChartAnimationState","selectorChartSkipAnimation","ownerWindow","node","ownerDocument","require$$0","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","didWarnOld18Alpha","didWarnUncachedGetSnapshot","cachedValue","useSyncExternalStoreShim_development","shimModule","require$$1","useSyncExternalStore","useRef","useMemo","withSelector_production","getServerSnapshot","isEqual","instRef","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","withSelectorModule","defaultCompare","useSelector","args","selectorWithArgs","useSyncExternalStoreWithSelector","DEFAULT_X_AXIS_KEY","DEFAULT_Y_AXIS_KEY","DEFAULT_MARGINS","DEFAULT_AXIS_SIZE_WIDTH","DEFAULT_AXIS_SIZE_HEIGHT","AXIS_LABEL_DEFAULT_HEIGHT","selectorChartRawXAxis","selectorChartRawYAxis","selectorChartLeftAxisSize","yAxis","acc","axis","selectorChartRightAxisSize","selectorChartTopAxisSize","xAxis","selectorChartBottomAxisSize","selectorChartDimensionsState","selectorChartWidth","selectorChartHeight","selectorChartTopMargin","selectorChartRightMargin","selectorChartBottomMargin","selectorChartLeftMargin","selectorChartDrawingArea","width","height","marginTop","marginRight","marginBottom","marginLeft","axisSizeTop","axisSizeRight","axisSizeBottom","axisSizeLeft","selectorChartPropsSize","dimensionsState","selectorChartContainerSize","defaultizeMargin","input","defaultMargin","MAX_COMPUTE_RUN","useChartDimensions","svgRef","hasInSize","stateRef","innerWidth","setInnerWidth","innerHeight","setInnerHeight","computeSize","mainEl","computedStyle","newHeight","newWidth","computedSize","elementToObserve","animationFrame","observer","drawingArea","isXInside","isYInside","targetElement","margin","useChartExperimentalFeatures","experimentalFeatures","selectorChartExperimentalFeaturesState","selectorPreferStrictDomainInLineCharts","features","globalChartDefaultId","createChartDefaultId","useChartId","selectorChartIdState","selectorChartId","idState","rainbowSurgePaletteLight","rainbowSurgePaletteDark","rainbowSurgePalette","mode","preprocessSeries","series","colors","seriesConfig","dataset","seriesGroups","seriesData","seriesIndex","seriesWithDefaultValues","processedSeries","type","group","_b","useChartSeries","isFirstRender","EMPTY_ARRAY","_","selectorChartSeriesState","selectorChartSeriesProcessed","seriesState","selectorChartSeriesConfig","eventList","Gesture","element","pointerManager","gestureRegistry","keyboardManager","changeOptionsEventName","changeStateEventName","stateChanges","isActive","activeGestures","gestureName","pointerType","ActiveGesturesRegistry","gesture","elementGestures","KeyboardManager","keys","PointerManager","cancelEvent","firstPointer","pointerId","pointer","updatedPointer","handler","GestureManager","gestureNames","gestureOptions","gestureTemplate","gestureInstance","PointerGesture","pointers","calculatedTarget","getDistance","pointA","pointB","deltaX","deltaY","calculateAverageDistance","totalDistance","pairCount","j","calculateCentroid","sum","createEventName","phase","MAIN_THRESHOLD","ANGLE_THRESHOLD","SECONDARY_THRESHOLD","getDirection","previous","current","direction","isDiagonal","isDiagonalMovement","mainMovement","horizontalThreshold","verticalThreshold","angle","isDirectionAllowed","allowedDirections","verticalAllowed","horizontalAllowed","DIRECTION_THRESHOLD","getPinchDirection","velocity","MoveGesture","overrides","pointersArray","currentPosition","customEventData","eventName","domEvent","PanGesture","relevantPointers","currentCentroid","distanceDeltaX","distanceDeltaY","distance","moveDirection","lastDeltaX","lastDeltaY","p","timeElapsed","velocityX","velocityY","el","PinchGesture","initialDistance","currentDistance","distanceChange","scale","scaleChange","deltaTime","remainingPointers","newDistance","centroid","PressGesture","lastPosition","position","currentDuration","TapGesture","TurnWheelGesture","preventDefault","useChartInteractionListener","svg","gestureManager","addInteractionListener","interaction","callback","CHART_CORE_PLUGINS","_excluded","extractPluginParamsFromProps","_ref","plugins","paramsLookup","plugin","pluginParams","propName","prop","useCharts","inPlugins","chartId","instance","publicAPI","useChartApiInitialization","innerChartRootRef","innerSvgRef","storeRef","initialState","runPlugin","pluginResponse","initializeInputApiRef","inputApiRef","fallbackPublicApiRef","ChartContext","warnedOnceCache","warnOnce","message","gravity","cleanMessage","useAssertModelConsistencyOutsideOfProduction","parameters","componentName","controlled","defaultValue","warningPrefix","initialDefaultValue","isControlled","useAssertModelConsistency","ZOOM_SLIDER_MARGIN","DEFAULT_ZOOM_SLIDER_SIZE","DEFAULT_ZOOM_SLIDER_PREVIEW_SIZE","DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP","defaultZoomOptions","defaultizeZoom","zoom","axisId","axisDirection","defaultizeXAxis","inAxes","offsets","axisConfig","dataKey","defaultPosition","defaultHeight","sharedConfig","d","defaultizeYAxis","defaultWidth","ascending","descending","bisector","f","compare1","compare2","delta","zero","left","lo","hi","mid","right","center","number","ascendingBisect","bisectRight","InternMap","keyof","intern_get","intern_set","intern_delete","_intern","_key","e10","e5","e2","tickSpec","start","stop","count","step","power","error","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","range","initRange","domain","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","r0","r1","bandwidth","round","paddingInner","paddingOuter","align","rescale","values","sequence","pointish","copy","point","define","constructor","factory","prototype","extend","parent","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","m","rgbn","Rgb","rgba","hsla","g","rgbConvert","o","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","s","Hsl","min","max","hsl","m2","m1","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","constant","rgbGamma","end","colorRgb","numberArray","c","isNumberArray","genericArray","nb","na","interpolateDate","interpolateNumber","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate","string","date","interpolateRound","constants","unit","identity","normalize","clamper","bimap","d0","d1","polymap","bisect","source","target","transformer","interpolateValue","transform","untransform","clamp","piecewise","output","u","continuous","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","out","i0","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","map","prefixes","formatLocale$1","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","sign","symbol","comma","precision","trim","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","prestep","maxIter","nice","interval","x0","x1","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","reflect","loggish","logs","pows","v","z","log","transformPow","transformSqrt","transformSquare","powish","pow","sqrt","threshold","t0","t1","timeInterval","floori","offseti","field","test","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","timeMinute","utcMinute","timeHour","utcHour","timeDay","utcDay","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","utcMonth","timeYear","utcYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","newDate","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","parse","numberRe","percentRe","requoteRe","requote","names","dISO","dow","UTCdISO","timeFormat","utcFormat","calendar","invert","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","time","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","createScalarFormatter","tickNumber","zoomScale","context","isBandScaleConfig","scaleConfig","isPointScaleConfig","getSequentialColorScale","config","scaleThreshold","scaleSequential","getOrdinalColorScale","scaleOrdinal","getColorScale","getTickNumber","tickMaxStep","tickMinStep","maxTicks","minTicks","defaultizedTickNumber","scaleTickNumberByRange","getScale","scaleType","scaleLog","scalePow","scaleSqrt","scaleTime","scaleUtc","scaleLinear","isDateData","data","createDateFormatter","timeScale","location","zoomScaleRange","scaleRange","zoomRange","rangeGap","zoomGap","cartesianInstance","polarInstance","CartesianSeriesTypes","PolarSeriesTypes","cartesianSeriesTypes","polarSeriesTypes","isCartesianSeriesType","seriesType","axisExtremumCallback","chartType","axisIndex","formattedSeries","getFilters","getter","minChartTypeData","maxChartTypeData","minData","maxData","getAxisExtremum","extremums","charType","getAxisTriggerTooltip","defaultAxisId","tooltipAxesIds","tooltipAxes","_c","getAxisDomainLimit","seriesId","getRange","DEFAULT_CATEGORY_GAP_RATIO","DEFAULT_BAR_GAP_RATIO","computeAxisValue","allAxis","zoomMap","zoomOptions","preferStrictDomainInLineCharts","axisIdsTriggeringTooltip","completeAxis","eachAxis","zoomOption","triggerTooltip","categoryGapRatio","barGapRatio","zoomedRange","scaleBand","dateFormatter","scalePoint","domainLimit","axisExtremums","rawTickNumber","finalScale","minDomain","maxDomain","isDefined","createAxisFilterMapper","minVal","maxVal","dataIndex","val","createGetAxisFilters","filters","currentAxisId","seriesXAxisId","seriesYAxisId","isDefaultAxis","createZoomLookup","axes","defaultizedZoom","createZoomMap","zoomItemMap","zoomItem","selectorChartZoomState","selectorChartZoomMap","selectorChartZoomOptionsLookup","axisLookup","selectorChartXFilter","selectorChartYFilter","selectorChartZoomAxisFilters","xMapper","yMapper","xFilters","filter","yFilters","selectorChartXAxis","selectorChartYAxis","xAxes","yAxes","isBandScale","getAsANumber","getAxisIndex","pointerValue","axisData","valueAsNumber","pointValue","getAxisValue","getSVGPoint","pt","fastObjectShallowCompare","aLength","bLength","useChartInteraction","cleanInteraction","useEventCallback","removeItemInteraction","itemToRemove","prevItem","setItemInteraction","newItem","setPointerCoordinate","coordinate","selectInteraction","selectorChartsInteractionIsInitialized","selectorChartsInteractionItem","selectorChartsInteractionPointer","selectorChartsInteractionPointerX","selectorChartsInteractionPointerY","isDeepEqual","entriesA","entryA","optionalGetAxisId","indexGetter","ids","selectChartsInteractionAxisIndex","selectorChartsInteractionXAxisIndex","selectorChartsInteractionYAxisIndex","selectorChartAxisInteraction","valueGetter","indexes","xIndex","yIndex","selectorChartsInteractionTooltipXAxes","selectorChartsInteractionTooltipYAxes","xTooltip","yTooltip","UNINITIALIZED","useLazyRef","init","initArg","ref","noop","useLazySelectorEffect","effect","skip","initialize","initialSkip","isRunning","previousState","nextState","useChartCartesianAxis","onHighlightedAxisChange","duplicates","isInteractionEnabled","xAxisWithScale","xAxisIds","yAxisWithScale","yAxisIds","usedXAxis","usedYAxis","prevAxisInteraction","nextAxisInteraction","itemIndex","moveEndHandler","panEndHandler","pressEndHandler","gestureHandler","srvEvent","svgPoint","moveHandler","panHandler","pressHandler","onAxisClick","axisClickHandler","isXAxis","USED_AXIS_ID","axisValue","seriesValues","seriesItem","providedXAxisId","providedYAxisId","axisKey","addDefaultId","processColorMap","getZAxisState","zAxis","zAxisLookup","axisIds","defaultizedId","useChartZAxis","selectRootState","selectorChartZAxis","useChartHighlight","clearHighlight","setHighlight","createResult","getBaseExtremum","minX","maxX","getValueExtremum","stackedData","seriesMin","seriesMax","seriesAcc","getExtremumX","getExtremumY","abs","atan2","cos","sin","epsilon","pi","halfPi","tau","acos","asin","tauEpsilon","append","strings","appendRound","digits","Path","y1","x2","y2","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","dx","dy","cw","da","w","withPath","shape","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","d3Arc","innerRadius","outerRadius","cornerRadius","padRadius","startAngle","endAngle","padAngle","path","arc","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","d3Pie","sortValues","sort","pie","arcs","pa","d3StackOffsetNone","order","s0","s1","d3StackOrderNone","stackValue","stackSeries","d3Stack","orderNone","offset","offsetNone","sz","oz","d3StackOffsetExpand","none","d3StackOffsetDiverging","yp","yn","d3StackOffsetSilhouette","d3StackOffsetWiggle","s2","si","sij0","sij1","s3","sk","skj0","skj1","d3StackOrderAppearance","peaks","peak","vi","vj","d3StackOrderAscending","sums","d3StackOrderDescending","d3StackOrderInsideOut","appearance","top","bottom","tops","bottoms","d3StackOrderReverse","StackOrder","StackOffset","getStackingGroups","seriesOrder","defaultStrategy","stackingGroups","stackIndex","stackOrder","stackOffset","barValueFormatter","seriesProcessor","d3Dataset","completedSeries","stackingGroup","stackingOffset","stackingOrder","stackedSeries","getLabel","legendGetter","formattedLabel","getColor","verticalLayout","bandColorScale","valueColorScale","bandValues","tooltipGetter","identifier","label","formattedValue","axisTooltipGetter","getSeriesWithDefaultValues","mergeMinMax","seriesMinMax","accSeries","datasetKeys","missingKeys","zColorScale","yColorScale","xColorScale","getSeriesExtremums","getValues","stackedValue","yAxisId","area","isArea","seriesExtremums","defaultizeValueFormatter","defaultValueFormatter","defaultizedSeries","getSortingComparator","piePoint","defaultSeriesConfig","barSeriesConfig","scatterSeriesConfig","lineSeriesConfig","pieSeriesConfig","defaultPlugins","ChartProvider","children","contextValue","_jsx","useChartContext","useStore","useDrawingArea","deg2rad","defaultRad","useXAxes","useYAxes","useZAxes","zAxisIds","useSvgRef","useChartGradientIdBuilder","useChartGradientIdObjectBoundBuilder","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","src","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","ANIMATION_DURATION_MS","ANIMATION_TIMING_FUNCTION_JS","BezierEasing","frame","timeout","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","sleep","timerFlush","wake","nap","poke","t2","elapsed","Transition","duration","easingFn","onTick","easedT","shallowEqual","objA","objB","keysA","keysB","currentKey","useAnimateInternal","createInterpolator","applyProps","initialProps","lastInterpolatedPropsRef","transitionRef","elementRef","lastPropsRef","animate","lastInterpolatedProps","interpolatedProps","lastElement","_d","useAnimate","transformProps","animateRef","animatedProps","useForkRef","ChartsPiecewiseGradient","isReversed","gradientId","size","colorMap","_jsxs","PX_PRECISION","ChartsContinuousGradient","gradientUnits","colorScale","extremumValues","extremumPositions","numberOfPoints","keyPrefix","ChartsContinuousGradientObjectBound","ChartsAxesGradients","svgHeight","svgWidth","getGradientId","getObjectBoundGradientId","filteredYAxisIds","filteredXAxisIds","filteredZAxisIds","objectBoundGradientId","ChartsSurfaceStyles","styled","ownerState","ChartsSurface","inProps","propsWidth","propsHeight","handleRef","themeProps","className","title","desc","other","hasIntrinsicSize","PropTypes","getPercentageValue","refValue","percentage","getPoint","radAngle","getArcRatios","points","minAngle","maxAngle","initialAngle","cardinalAngle","minY","maxY","getAvailableRadius","cx","cy","ratio","space","GaugeContext","GaugeProvider","valueMin","valueMax","outerRadiusParam","innerRadiusParam","cornerRadiusParam","cxParam","cyParam","ratios","innerCx","innerCy","maxRadius","usedWidth","usedHeight","startAngleRad","endAngleRad","useGaugeState","GStyled","GaugeContainer","inWidth","inHeight","useSkipAnimation","storeSkipAnimation","gaugeValueArcPropsInterpolator","from","to","interpolateStartAngle","interpolateEndAngle","interpolateInnerRadius","interpolateOuterRadius","interpolateCornerRadius","useAnimateGaugeValueArc","StyledPath","GaugeValueArc","valueAngle","AnimatedGaugeValueArc","inSkipAnimation","GaugeReferenceArc","getGaugeUtilityClass","slot","generateUtilityClass","generateUtilityClasses","isSsr","stringCache","MAX_CACHE_NUM","SPAN_STYLE","STYLE_LIST","MEASUREMENT_SPAN_ID","autoCompleteStyle","camelToMiddleLine","text","getStyleString","style","domCleanTimeout","getStringSize","str","styleString","measurementSpan","measurementSpanStyle","styleKey","rect","getWordsByLines","needsComputation","subText","useIsHydrated","isHydrated","setIsHydrated","_excluded2","ChartsText","styleProps","textProps","textAnchor","dominantBaseline","wordsByLines","startDy","line","defaultFormatter","GaugeValueText","formattedText","useUtilityClasses","classes","composeClasses","Gauge","clsx","formatTime","seconds","days","hours","minutes","remainingSeconds","parts","formatTimeLocalized","calculateExactProgress","currentState","totalElapsed","maxTime","DefaultVariant","timerState","animationState","hasError","i18n","useTranslation","remainingTime","currentProgress","showErrorAnimation","showPauseAnimation","showPulsatingText","pulsatingFinished","showLabels","showMainText","showIdlePulsating","idleDotsCount","jsxs","Box","jsx","Fade","Typography","SmallVariant","compact","Fragment","useAnimations","setAnimationState","pauseAnimationTimeoutRef","errorAnimationTimeoutRef","pulsatingIntervalRef","fadeTimeoutRef","pulseCountRef","idlePulsatingIntervalRef","idleDotsIntervalRef","triggerPauseAnimation","useCallback","triggerErrorAnimation","clearErrorAnimation","startPulsatingAnimation","onComplete","stopPulsatingAnimation","startIdleAnimations","stopIdleAnimations","triggerFadeTransition","setInitialAnimationState","cleanup","useTimerLogic","autoStart","onCycleEnd","onMeasuringComplete","onPauseAnimation","onErrorAnimation","onClearErrorAnimation","onStartPulsating","setTimerState","animationRef","startTimeRef","pausedTimeRef","progressInterpolator","useInterpolation","progress","setIdle","startMeasuring","elapsedSeconds","initialProgress","startNewCycle","maxTimeSeconds","completeMeasuring","pause","additionalElapsed","exactProgress","resume","isPaused","updateTimer","remaining","interpolationAnimationId","animateInterpolation","CycleTimer","externalizeComponent","onCycleComplete","variant","prevStateRef","controls","isMounted","timeoutId","ClearIcon","createSvgIcon","FilterListIcon","SearchIcon","WandelbotsDataGrid","columns","getRowData","onRowClick","selectedItem","getItemId","showCount","searchPlaceholder","dataGridProps","CustomToolbar","selectFirstByDefault","sx","apiRef","useGridApiRef","containerRef","internalSelectedItem","setInternalSelectedItem","rows","col","resizeObserver","effectiveSelectedItem","firstItem","handleRowClick","selectedRowId","DefaultToolbar","Toolbar","FilterPanelTrigger","ToolbarButton","Divider","QuickFilter","QuickFilterTrigger","QuickFilterControl","QuickFilterClear","ToolbarComponent","DataGrid","TimerDefaultVariant","elapsedTime","TimerSmallVariant","useTimerAnimations","lastProgressRef","reset","onTimerReady"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,253,254,255]}
|