@mui/x-charts 8.22.1 → 8.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BarChart/BarChart.js +39 -0
- package/BarChart/BarChart.plugins.d.ts +2 -1
- package/BarChart/BarChart.plugins.js +2 -1
- package/BarChart/BarElement.js +1 -1
- package/BarChart/BarLabel/BarLabel.d.ts +2 -0
- package/BarChart/BarLabel/BarLabel.js +8 -3
- package/BarChart/BarLabel/BarLabelItem.d.ts +2 -0
- package/BarChart/BarLabel/BarLabelItem.js +4 -2
- package/BarChart/BarPlot.d.ts +12 -2
- package/BarChart/BarPlot.js +29 -86
- package/BarChart/BatchBarPlot/BarGroup.d.ts +15 -0
- package/BarChart/BatchBarPlot/BarGroup.js +142 -0
- package/BarChart/BatchBarPlot/BatchBarPlot.d.ts +12 -0
- package/BarChart/BatchBarPlot/BatchBarPlot.js +140 -0
- package/BarChart/BatchBarPlot/index.d.ts +1 -0
- package/BarChart/BatchBarPlot/index.js +12 -0
- package/BarChart/BatchBarPlot/useCreateBarPaths.d.ts +8 -0
- package/BarChart/BatchBarPlot/useCreateBarPaths.js +53 -0
- package/BarChart/FocusedBar.js +6 -2
- package/BarChart/IndividualBarPlot.d.ts +21 -0
- package/BarChart/IndividualBarPlot.js +106 -0
- package/BarChart/seriesConfig/bar/getSeriesWithDefaultValues.d.ts +1 -1
- package/BarChart/seriesConfig/bar/keyboardFocusHandler.d.ts +3 -0
- package/BarChart/seriesConfig/bar/keyboardFocusHandler.js +23 -0
- package/BarChart/seriesConfig/bar/legend.js +1 -0
- package/BarChart/seriesConfig/bar/seriesProcessor.js +2 -2
- package/BarChart/seriesConfig/index.js +5 -1
- package/BarChart/types.d.ts +2 -0
- package/BarChart/useBarChartProps.d.ts +6 -2
- package/BarChart/useBarChartProps.js +4 -2
- package/BarChart/useBarPlotData.d.ts +1 -1
- package/BarChart/useBarPlotData.js +23 -4
- package/BarChart/useRegisterItemClickHandlers.d.ts +6 -0
- package/BarChart/useRegisterItemClickHandlers.js +72 -0
- package/CHANGELOG.md +211 -0
- package/ChartContainer/ChartContainer.js +34 -0
- package/ChartContainer/useChartContainerProps.js +6 -2
- package/ChartsLegend/ChartsLegend.js +2 -2
- package/ChartsLegend/legendContext.types.d.ts +12 -0
- package/ChartsLegend/onClickContextBuilder.js +2 -1
- package/ChartsOverlay/ChartsLoadingOverlay.js +4 -1
- package/ChartsOverlay/ChartsNoDataOverlay.js +4 -1
- package/ChartsReferenceLine/common.d.ts +1 -1
- package/ChartsReferenceLine/common.js +4 -1
- package/ChartsTooltip/ChartsTooltipContainer.js +25 -21
- package/Gauge/GaugeContainer.js +4 -1
- package/LineChart/AnimatedLine.js +7 -3
- package/LineChart/AppearingMask.js +4 -1
- package/LineChart/CircleMarkElement.d.ts +5 -0
- package/LineChart/CircleMarkElement.js +13 -5
- package/LineChart/FocusedLineMark.js +6 -2
- package/LineChart/LineChart.js +30 -0
- package/LineChart/LineChart.plugins.d.ts +2 -1
- package/LineChart/LineChart.plugins.js +2 -1
- package/LineChart/LineElement.d.ts +4 -0
- package/LineChart/LineElement.js +7 -3
- package/LineChart/MarkElement.d.ts +5 -0
- package/LineChart/MarkElement.js +17 -10
- package/LineChart/markElementClasses.d.ts +0 -1
- package/LineChart/seriesConfig/index.js +5 -1
- package/LineChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/LineChart/seriesConfig/keyboardFocusHandler.js +23 -0
- package/LineChart/seriesConfig/legend.js +1 -0
- package/LineChart/seriesConfig/seriesProcessor.js +2 -2
- package/PieChart/FocusedPieArc.js +6 -3
- package/PieChart/PieArcLabel.d.ts +2 -0
- package/PieChart/PieArcLabel.js +5 -2
- package/PieChart/PieChart.js +35 -5
- package/PieChart/PieChart.plugins.d.ts +2 -1
- package/PieChart/PieChart.plugins.js +2 -1
- package/PieChart/dataTransform/useTransformData.js +1 -1
- package/PieChart/seriesConfig/index.js +5 -1
- package/PieChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/PieChart/seriesConfig/keyboardFocusHandler.js +23 -0
- package/PieChart/seriesConfig/legend.js +6 -3
- package/RadarChart/RadarChart.js +30 -0
- package/RadarChart/RadarChart.plugins.d.ts +3 -2
- package/RadarChart/RadarChart.plugins.js +2 -1
- package/RadarChart/seriesConfig/index.js +3 -1
- package/RadarChart/seriesConfig/legend.js +1 -0
- package/ScatterChart/BatchScatter.js +8 -14
- package/ScatterChart/FocusedScatterMark.js +1 -1
- package/ScatterChart/ScatterChart.js +30 -0
- package/ScatterChart/ScatterChart.plugins.d.ts +2 -1
- package/ScatterChart/ScatterChart.plugins.js +2 -1
- package/ScatterChart/seriesConfig/index.js +5 -1
- package/ScatterChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/ScatterChart/seriesConfig/keyboardFocusHandler.js +23 -0
- package/ScatterChart/seriesConfig/legend.js +1 -0
- package/SparkLineChart/SparkLineChart.js +46 -0
- package/esm/BarChart/BarChart.js +39 -0
- package/esm/BarChart/BarChart.plugins.d.ts +2 -1
- package/esm/BarChart/BarChart.plugins.js +2 -1
- package/esm/BarChart/BarElement.js +1 -1
- package/esm/BarChart/BarLabel/BarLabel.d.ts +2 -0
- package/esm/BarChart/BarLabel/BarLabel.js +8 -3
- package/esm/BarChart/BarLabel/BarLabelItem.d.ts +2 -0
- package/esm/BarChart/BarLabel/BarLabelItem.js +4 -2
- package/esm/BarChart/BarPlot.d.ts +12 -2
- package/esm/BarChart/BarPlot.js +29 -86
- package/esm/BarChart/BatchBarPlot/BarGroup.d.ts +15 -0
- package/esm/BarChart/BatchBarPlot/BarGroup.js +134 -0
- package/esm/BarChart/BatchBarPlot/BatchBarPlot.d.ts +12 -0
- package/esm/BarChart/BatchBarPlot/BatchBarPlot.js +133 -0
- package/esm/BarChart/BatchBarPlot/index.d.ts +1 -0
- package/esm/BarChart/BatchBarPlot/index.js +1 -0
- package/esm/BarChart/BatchBarPlot/useCreateBarPaths.d.ts +8 -0
- package/esm/BarChart/BatchBarPlot/useCreateBarPaths.js +46 -0
- package/esm/BarChart/FocusedBar.js +6 -2
- package/esm/BarChart/IndividualBarPlot.d.ts +21 -0
- package/esm/BarChart/IndividualBarPlot.js +98 -0
- package/esm/BarChart/seriesConfig/bar/getSeriesWithDefaultValues.d.ts +1 -1
- package/esm/BarChart/seriesConfig/bar/keyboardFocusHandler.d.ts +3 -0
- package/esm/BarChart/seriesConfig/bar/keyboardFocusHandler.js +17 -0
- package/esm/BarChart/seriesConfig/bar/legend.js +1 -0
- package/esm/BarChart/seriesConfig/bar/seriesProcessor.js +1 -1
- package/esm/BarChart/seriesConfig/index.js +5 -1
- package/esm/BarChart/types.d.ts +2 -0
- package/esm/BarChart/useBarChartProps.d.ts +6 -2
- package/esm/BarChart/useBarChartProps.js +4 -3
- package/esm/BarChart/useBarPlotData.d.ts +1 -1
- package/esm/BarChart/useBarPlotData.js +20 -1
- package/esm/BarChart/useRegisterItemClickHandlers.d.ts +6 -0
- package/esm/BarChart/useRegisterItemClickHandlers.js +67 -0
- package/esm/ChartContainer/ChartContainer.js +34 -0
- package/esm/ChartContainer/useChartContainerProps.js +6 -2
- package/esm/ChartsLegend/ChartsLegend.js +2 -2
- package/esm/ChartsLegend/legendContext.types.d.ts +12 -0
- package/esm/ChartsLegend/onClickContextBuilder.js +2 -1
- package/esm/ChartsOverlay/ChartsLoadingOverlay.js +4 -1
- package/esm/ChartsOverlay/ChartsNoDataOverlay.js +4 -1
- package/esm/ChartsReferenceLine/common.d.ts +1 -1
- package/esm/ChartsReferenceLine/common.js +4 -1
- package/esm/ChartsTooltip/ChartsTooltipContainer.js +26 -22
- package/esm/Gauge/GaugeContainer.js +4 -1
- package/esm/LineChart/AnimatedLine.js +7 -3
- package/esm/LineChart/AppearingMask.js +4 -1
- package/esm/LineChart/CircleMarkElement.d.ts +5 -0
- package/esm/LineChart/CircleMarkElement.js +13 -5
- package/esm/LineChart/FocusedLineMark.js +6 -2
- package/esm/LineChart/LineChart.js +30 -0
- package/esm/LineChart/LineChart.plugins.d.ts +2 -1
- package/esm/LineChart/LineChart.plugins.js +2 -1
- package/esm/LineChart/LineElement.d.ts +4 -0
- package/esm/LineChart/LineElement.js +7 -3
- package/esm/LineChart/MarkElement.d.ts +5 -0
- package/esm/LineChart/MarkElement.js +17 -10
- package/esm/LineChart/markElementClasses.d.ts +0 -1
- package/esm/LineChart/seriesConfig/index.js +5 -1
- package/esm/LineChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/esm/LineChart/seriesConfig/keyboardFocusHandler.js +17 -0
- package/esm/LineChart/seriesConfig/legend.js +1 -0
- package/esm/LineChart/seriesConfig/seriesProcessor.js +1 -1
- package/esm/PieChart/FocusedPieArc.js +5 -2
- package/esm/PieChart/PieArcLabel.d.ts +2 -0
- package/esm/PieChart/PieArcLabel.js +5 -2
- package/esm/PieChart/PieChart.js +35 -5
- package/esm/PieChart/PieChart.plugins.d.ts +2 -1
- package/esm/PieChart/PieChart.plugins.js +2 -1
- package/esm/PieChart/dataTransform/useTransformData.js +1 -1
- package/esm/PieChart/seriesConfig/index.js +5 -1
- package/esm/PieChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/esm/PieChart/seriesConfig/keyboardFocusHandler.js +17 -0
- package/esm/PieChart/seriesConfig/legend.js +6 -3
- package/esm/RadarChart/RadarChart.js +30 -0
- package/esm/RadarChart/RadarChart.plugins.d.ts +3 -2
- package/esm/RadarChart/RadarChart.plugins.js +2 -1
- package/esm/RadarChart/seriesConfig/index.js +3 -1
- package/esm/RadarChart/seriesConfig/legend.js +1 -0
- package/esm/ScatterChart/BatchScatter.js +5 -11
- package/esm/ScatterChart/FocusedScatterMark.js +1 -1
- package/esm/ScatterChart/ScatterChart.js +30 -0
- package/esm/ScatterChart/ScatterChart.plugins.d.ts +2 -1
- package/esm/ScatterChart/ScatterChart.plugins.js +2 -1
- package/esm/ScatterChart/seriesConfig/index.js +5 -1
- package/esm/ScatterChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/esm/ScatterChart/seriesConfig/keyboardFocusHandler.js +17 -0
- package/esm/ScatterChart/seriesConfig/legend.js +1 -0
- package/esm/SparkLineChart/SparkLineChart.js +46 -0
- package/esm/hooks/useFocusedItem.d.ts +1 -12
- package/esm/hooks/useFocusedItem.js +3 -10
- package/esm/hooks/useIsItemFocused.d.ts +4 -3
- package/esm/hooks/useIsItemFocused.js +1 -1
- package/esm/hooks/useIsItemFocusedGetter.d.ts +3 -2
- package/esm/hooks/useIsItemFocusedGetter.js +2 -1
- package/esm/index.js +1 -1
- package/esm/internals/appendAtKey.d.ts +8 -0
- package/esm/internals/appendAtKey.js +17 -0
- package/esm/internals/commonNextFocusItem.d.ts +14 -0
- package/esm/internals/commonNextFocusItem.js +88 -0
- package/esm/internals/getBarDimensions.d.ts +1 -2
- package/esm/internals/identifierSerializer.d.ts +9 -0
- package/esm/internals/identifierSerializer.js +6 -0
- package/esm/internals/index.d.ts +7 -3
- package/esm/internals/index.js +7 -3
- package/esm/internals/invertScale.d.ts +6 -2
- package/esm/internals/invertScale.js +9 -1
- package/esm/internals/plugins/allPlugins.d.ts +4 -3
- package/esm/internals/plugins/allPlugins.js +2 -1
- package/esm/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.d.ts +14 -0
- package/esm/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.js +18 -0
- package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.js +8 -1
- package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.types.d.ts +12 -1
- package/esm/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.d.ts +11 -0
- package/esm/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.js +74 -0
- package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +20 -3
- package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +10 -3
- package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +4 -0
- package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +83 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.d.ts +13 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.js +1 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.d.ts +2 -2
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.js +12 -105
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.d.ts +5 -31
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.js +9 -15
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.d.ts +6 -21
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.d.ts +3 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js +6 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.d.ts +15 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js +18 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.d.ts +7 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.js +9 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.d.ts +11 -0
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js +18 -0
- package/esm/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.d.ts +2 -10
- package/esm/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.js +2 -2
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/index.d.ts +3 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/index.js +3 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.d.ts +4 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.js +5 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.d.ts +3 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js +78 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.d.ts +16 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.js +19 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.d.ts +90 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.js +1 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.d.ts +4 -0
- package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js +11 -0
- package/esm/internals/plugins/models/seriesConfig/identifierSerializer.types.d.ts +2 -0
- package/esm/internals/plugins/models/seriesConfig/identifierSerializer.types.js +1 -0
- package/esm/internals/plugins/models/seriesConfig/index.d.ts +2 -1
- package/esm/internals/plugins/models/seriesConfig/index.js +2 -1
- package/esm/internals/plugins/models/seriesConfig/seriesConfig.types.d.ts +9 -0
- package/esm/internals/plugins/models/seriesConfig/seriesProcessor.types.d.ts +1 -1
- package/esm/internals/seriesHasData.d.ts +4 -0
- package/esm/internals/seriesHasData.js +8 -0
- package/esm/internals/stacking/index.d.ts +1 -0
- package/esm/internals/stacking/index.js +1 -0
- package/esm/internals/stacking/offset/index.d.ts +1 -0
- package/esm/internals/stacking/offset/index.js +1 -0
- package/esm/internals/stacking/offset/offsetDiverging.d.ts +8 -0
- package/esm/internals/stacking/offset/offsetDiverging.js +47 -0
- package/esm/internals/{stackSeries.d.ts → stacking/stackSeries.d.ts} +8 -8
- package/esm/internals/{stackSeries.js → stacking/stackSeries.js} +8 -6
- package/esm/models/axis.d.ts +5 -4
- package/esm/models/featureFlags.d.ts +1 -0
- package/esm/models/featureFlags.js +1 -0
- package/esm/models/index.d.ts +1 -0
- package/esm/models/index.js +1 -0
- package/esm/models/seriesType/index.d.ts +3 -1
- package/esm/moduleAugmentation/barChartBatchRendererOnItemClick.d.ts +13 -0
- package/esm/moduleAugmentation/barChartBatchRendererOnItemClick.js +1 -0
- package/hooks/useFocusedItem.d.ts +1 -12
- package/hooks/useFocusedItem.js +1 -10
- package/hooks/useIsItemFocused.d.ts +4 -3
- package/hooks/useIsItemFocused.js +1 -1
- package/hooks/useIsItemFocusedGetter.d.ts +3 -2
- package/hooks/useIsItemFocusedGetter.js +2 -1
- package/index.js +1 -1
- package/internals/appendAtKey.d.ts +8 -0
- package/internals/appendAtKey.js +23 -0
- package/internals/commonNextFocusItem.d.ts +14 -0
- package/internals/commonNextFocusItem.js +97 -0
- package/internals/getBarDimensions.d.ts +1 -2
- package/internals/identifierSerializer.d.ts +9 -0
- package/internals/identifierSerializer.js +16 -0
- package/internals/index.d.ts +7 -3
- package/internals/index.js +55 -11
- package/internals/invertScale.d.ts +6 -2
- package/internals/invertScale.js +10 -1
- package/internals/plugins/allPlugins.d.ts +4 -3
- package/internals/plugins/allPlugins.js +2 -1
- package/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.d.ts +14 -0
- package/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.js +25 -0
- package/internals/plugins/corePlugins/useChartSeries/useChartSeries.js +8 -1
- package/internals/plugins/corePlugins/useChartSeries/useChartSeries.types.d.ts +12 -1
- package/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.d.ts +11 -0
- package/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.js +81 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +20 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +10 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +4 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +89 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.d.ts +13 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.js +5 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.d.ts +2 -2
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.js +11 -104
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.d.ts +5 -31
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.js +10 -16
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.d.ts +6 -21
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.d.ts +3 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js +12 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.d.ts +15 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js +23 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.d.ts +7 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.js +15 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.d.ts +11 -0
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js +23 -0
- package/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.d.ts +2 -10
- package/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.js +1 -1
- package/internals/plugins/featurePlugins/useChartVisibilityManager/index.d.ts +3 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/index.js +39 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.d.ts +4 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.js +12 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.d.ts +3 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js +85 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.d.ts +16 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.js +25 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.d.ts +90 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.js +5 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.d.ts +4 -0
- package/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js +18 -0
- package/internals/plugins/models/seriesConfig/identifierSerializer.types.d.ts +2 -0
- package/internals/plugins/models/seriesConfig/identifierSerializer.types.js +5 -0
- package/internals/plugins/models/seriesConfig/index.d.ts +2 -1
- package/internals/plugins/models/seriesConfig/index.js +11 -0
- package/internals/plugins/models/seriesConfig/seriesConfig.types.d.ts +9 -0
- package/internals/plugins/models/seriesConfig/seriesProcessor.types.d.ts +1 -1
- package/internals/seriesHasData.d.ts +4 -0
- package/internals/seriesHasData.js +14 -0
- package/internals/stacking/index.d.ts +1 -0
- package/internals/stacking/index.js +16 -0
- package/internals/stacking/offset/index.d.ts +1 -0
- package/internals/stacking/offset/index.js +16 -0
- package/internals/stacking/offset/offsetDiverging.d.ts +8 -0
- package/internals/stacking/offset/offsetDiverging.js +53 -0
- package/internals/{stackSeries.d.ts → stacking/stackSeries.d.ts} +8 -8
- package/internals/{stackSeries.js → stacking/stackSeries.js} +3 -1
- package/models/axis.d.ts +5 -4
- package/models/featureFlags.d.ts +1 -0
- package/models/featureFlags.js +5 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +11 -0
- package/models/seriesType/index.d.ts +3 -1
- package/moduleAugmentation/barChartBatchRendererOnItemClick.d.ts +13 -0
- package/moduleAugmentation/barChartBatchRendererOnItemClick.js +5 -0
- package/package.json +14 -4
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/isFocusableSeriesType.d.ts +0 -3
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/isFocusableSeriesType.js +0 -4
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.d.ts +0 -21
- package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.js +0 -92
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/isFocusableSeriesType.d.ts +0 -3
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/isFocusableSeriesType.js +0 -10
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.d.ts +0 -21
- package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.js +0 -99
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { createSelector } from '@mui/x-internals/store';
|
|
2
|
+
import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
|
|
2
3
|
import { selectorChartSeriesProcessed } from "../../corePlugins/useChartSeries/index.js";
|
|
3
4
|
import { selectorChartXAxis, selectorChartYAxis } from "../useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js";
|
|
4
5
|
const selectKeyboardNavigation = state => state.keyboardNavigation;
|
|
5
|
-
export const selectorChartsItemIsFocused = createSelector(selectKeyboardNavigation, (keyboardNavigationState, item) =>
|
|
6
|
-
return keyboardNavigationState?.item != null && keyboardNavigationState.item.type === item.seriesType && keyboardNavigationState.item.seriesId === item.seriesId && keyboardNavigationState.item.dataIndex === item.dataIndex;
|
|
7
|
-
});
|
|
6
|
+
export const selectorChartsItemIsFocused = createSelector(selectKeyboardNavigation, (keyboardNavigationState, item) => keyboardNavigationState?.item != null && fastObjectShallowCompare(keyboardNavigationState.item, item));
|
|
8
7
|
export const selectorChartsHasFocusedItem = createSelector(selectKeyboardNavigation, keyboardNavigationState => keyboardNavigationState?.item != null);
|
|
9
|
-
export const
|
|
10
|
-
export const selectorChartsFocusedSeriesId = createSelector(selectKeyboardNavigation, keyboardNavigationState => keyboardNavigationState?.item?.seriesId);
|
|
11
|
-
export const selectorChartsFocusedDataIndex = createSelector(selectKeyboardNavigation, keyboardNavigationState => keyboardNavigationState?.item?.dataIndex);
|
|
8
|
+
export const selectorChartsFocusedItem = createSelector(selectKeyboardNavigation, keyboardNavigationState => keyboardNavigationState?.item ?? null);
|
|
12
9
|
export const selectorChartsIsKeyboardNavigationEnabled = createSelector(selectKeyboardNavigation, keyboardNavigationState => !!keyboardNavigationState?.enableKeyboardNavigation);
|
|
13
10
|
|
|
14
11
|
/**
|
|
15
12
|
* Selectors to override highlight behavior.
|
|
16
13
|
*/
|
|
17
14
|
|
|
18
|
-
const createSelectAxisHighlight = direction => (
|
|
19
|
-
if (
|
|
15
|
+
const createSelectAxisHighlight = direction => (item, axis, series) => {
|
|
16
|
+
if (item == null || !('dataIndex' in item) || item.dataIndex === undefined) {
|
|
20
17
|
return undefined;
|
|
21
18
|
}
|
|
22
|
-
const seriesConfig = series[type]?.series[seriesId];
|
|
19
|
+
const seriesConfig = series[item.type]?.series[item.seriesId];
|
|
23
20
|
if (!seriesConfig) {
|
|
24
21
|
return undefined;
|
|
25
22
|
}
|
|
@@ -29,11 +26,11 @@ const createSelectAxisHighlight = direction => (type, seriesId, dataIndex, axis,
|
|
|
29
26
|
}
|
|
30
27
|
return {
|
|
31
28
|
axisId,
|
|
32
|
-
dataIndex
|
|
29
|
+
dataIndex: item.dataIndex
|
|
33
30
|
};
|
|
34
31
|
};
|
|
35
|
-
export const selectorChartsKeyboardXAxisIndex = createSelector(
|
|
36
|
-
export const selectorChartsKeyboardYAxisIndex = createSelector(
|
|
32
|
+
export const selectorChartsKeyboardXAxisIndex = createSelector(selectorChartsFocusedItem, selectorChartXAxis, selectorChartSeriesProcessed, createSelectAxisHighlight('x'));
|
|
33
|
+
export const selectorChartsKeyboardYAxisIndex = createSelector(selectorChartsFocusedItem, selectorChartYAxis, selectorChartSeriesProcessed, createSelectAxisHighlight('y'));
|
|
37
34
|
export const selectorChartsKeyboardItem = createSelector(selectKeyboardNavigation, function selectorChartsKeyboardItem(keyboardState) {
|
|
38
35
|
if (keyboardState?.item == null) {
|
|
39
36
|
return null;
|
|
@@ -46,7 +43,4 @@ export const selectorChartsKeyboardItem = createSelector(selectKeyboardNavigatio
|
|
|
46
43
|
return null;
|
|
47
44
|
}
|
|
48
45
|
return keyboardState.item;
|
|
49
|
-
});
|
|
50
|
-
export const selectorChartsKeyboardItemIsDefined = createSelector(selectorChartsFocusedSeriesType, selectorChartsFocusedSeriesId, selectorChartsFocusedDataIndex, function selectorChartsKeyboardItemIsDefined(seriesType, seriesId, dataIndex) {
|
|
51
|
-
return seriesId !== undefined && dataIndex !== undefined;
|
|
52
46
|
});
|
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import type { ChartPluginSignature } from "../../models/index.js";
|
|
2
|
+
import type { UseChartInteractionSignature } from "../useChartInteraction/index.js";
|
|
3
|
+
import type { UseChartHighlightSignature } from "../useChartHighlight/index.js";
|
|
4
|
+
import type { FocusedItemIdentifier } from "../../../../models/seriesType/index.js";
|
|
5
|
+
import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
|
|
6
6
|
export interface UseChartKeyboardNavigationInstance {}
|
|
7
|
-
type SeriesItemIdentifier<SeriesType extends ChartSeriesType = FocusableSeriesTypes> = SeriesType extends FocusableSeriesTypes ? {
|
|
8
|
-
/**
|
|
9
|
-
* The type of the series
|
|
10
|
-
*/
|
|
11
|
-
type: SeriesType;
|
|
12
|
-
/**
|
|
13
|
-
* The id of the series with focus.
|
|
14
|
-
*/
|
|
15
|
-
seriesId: SeriesId;
|
|
16
|
-
/**
|
|
17
|
-
* The index of the data point with focus.
|
|
18
|
-
*/
|
|
19
|
-
dataIndex: number;
|
|
20
|
-
} : never;
|
|
21
|
-
export type FocusableSeriesTypes = 'bar' | 'line' | 'scatter' | 'pie';
|
|
22
7
|
export interface UseChartKeyboardNavigationState {
|
|
23
8
|
keyboardNavigation: {
|
|
24
|
-
item: null |
|
|
9
|
+
item: null | FocusedItemIdentifier<ChartSeriesType>;
|
|
25
10
|
enableKeyboardNavigation: boolean;
|
|
26
11
|
};
|
|
27
12
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ChartSeriesType } from "../../../../../models/seriesType/config.js";
|
|
2
|
+
import type { ProcessedSeries } from "../../../corePlugins/useChartSeries/useChartSeries.types.js";
|
|
3
|
+
export declare function getMaxSeriesLength<OutSeriesType extends Exclude<ChartSeriesType, 'sankey'>>(series: ProcessedSeries<ChartSeriesType>, availableSeriesTypes: Set<OutSeriesType>): number;
|
package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function getMaxSeriesLength(series, availableSeriesTypes) {
|
|
2
|
+
return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {
|
|
3
|
+
const seriesOfType = series[type];
|
|
4
|
+
return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => seriesOfType.series[seriesId].data.length);
|
|
5
|
+
}).reduce((maxLengths, length) => Math.max(maxLengths, length), 0);
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ChartSeriesType } from "../../../../../models/seriesType/config.js";
|
|
2
|
+
import type { SeriesId } from "../../../../../models/seriesType/common.js";
|
|
3
|
+
import type { ProcessedSeries } from "../../../corePlugins/useChartSeries/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Returns the next series type and id that contains some data.
|
|
6
|
+
* Returns `null` if no other series have data.
|
|
7
|
+
* @param series - The processed series from the store.
|
|
8
|
+
* @param availableSeriesTypes - The set of series types that can be focused.
|
|
9
|
+
* @param type - The current series type.
|
|
10
|
+
* @param seriesId - The current series id.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getNextNonEmptySeries<OutSeriesType extends Exclude<ChartSeriesType, 'sankey'> = Exclude<ChartSeriesType, 'sankey'>>(series: ProcessedSeries<ChartSeriesType>, availableSeriesTypes: Set<OutSeriesType>, type?: ChartSeriesType, seriesId?: SeriesId): {
|
|
13
|
+
type: OutSeriesType;
|
|
14
|
+
seriesId: SeriesId;
|
|
15
|
+
} | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getNonEmptySeriesArray } from "./getNonEmptySeriesArray.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the next series type and id that contains some data.
|
|
5
|
+
* Returns `null` if no other series have data.
|
|
6
|
+
* @param series - The processed series from the store.
|
|
7
|
+
* @param availableSeriesTypes - The set of series types that can be focused.
|
|
8
|
+
* @param type - The current series type.
|
|
9
|
+
* @param seriesId - The current series id.
|
|
10
|
+
*/
|
|
11
|
+
export function getNextNonEmptySeries(series, availableSeriesTypes, type, seriesId) {
|
|
12
|
+
const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);
|
|
13
|
+
if (nonEmptySeries.length === 0) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;
|
|
17
|
+
return nonEmptySeries[(currentSeriesIndex + 1) % nonEmptySeries.length];
|
|
18
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SeriesId } from "../../../../../models/seriesType/common.js";
|
|
2
|
+
import type { ChartSeriesType } from "../../../../../models/seriesType/config.js";
|
|
3
|
+
import type { ProcessedSeries } from "../../../corePlugins/useChartSeries/useChartSeries.types.js";
|
|
4
|
+
export declare function getNonEmptySeriesArray<OutSeriesType extends Exclude<ChartSeriesType, 'sankey'>>(series: ProcessedSeries<ChartSeriesType>, availableSeriesTypes: Set<OutSeriesType>): {
|
|
5
|
+
seriesId: SeriesId;
|
|
6
|
+
type: OutSeriesType;
|
|
7
|
+
}[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function getNonEmptySeriesArray(series, availableSeriesTypes) {
|
|
2
|
+
return Object.keys(series).filter(type => availableSeriesTypes.has(type)).flatMap(type => {
|
|
3
|
+
const seriesOfType = series[type];
|
|
4
|
+
return seriesOfType.seriesOrder.filter(seriesId => seriesOfType.series[seriesId].data.length > 0 && seriesOfType.series[seriesId].data.some(value => value != null)).map(seriesId => ({
|
|
5
|
+
type,
|
|
6
|
+
seriesId
|
|
7
|
+
}));
|
|
8
|
+
});
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ChartSeriesType } from "../../../../../models/seriesType/config.js";
|
|
2
|
+
import type { SeriesId } from "../../../../../models/seriesType/common.js";
|
|
3
|
+
import type { ProcessedSeries } from "../../../corePlugins/useChartSeries/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Returns the previous series type and id that contains some data.
|
|
6
|
+
* Returns `null` if no other series have data.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getPreviousNonEmptySeries<OutSeriesType extends Exclude<ChartSeriesType, 'sankey'> = Exclude<ChartSeriesType, 'sankey'>>(series: ProcessedSeries<ChartSeriesType>, availableSeriesTypes: Set<OutSeriesType>, type?: ChartSeriesType, seriesId?: SeriesId): {
|
|
9
|
+
type: OutSeriesType;
|
|
10
|
+
seriesId: SeriesId;
|
|
11
|
+
} | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getNonEmptySeriesArray } from "./getNonEmptySeriesArray.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the previous series type and id that contains some data.
|
|
5
|
+
* Returns `null` if no other series have data.
|
|
6
|
+
*/
|
|
7
|
+
export function getPreviousNonEmptySeries(series, availableSeriesTypes, type, seriesId) {
|
|
8
|
+
const nonEmptySeries = getNonEmptySeriesArray(series, availableSeriesTypes);
|
|
9
|
+
if (nonEmptySeries.length === 0) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const currentSeriesIndex = type !== undefined && seriesId !== undefined ? nonEmptySeries.findIndex(seriesItem => seriesItem.type === type && seriesItem.seriesId === seriesId) : -1;
|
|
13
|
+
if (currentSeriesIndex <= 0) {
|
|
14
|
+
// If no current series, or if it's the first series
|
|
15
|
+
return nonEmptySeries[nonEmptySeries.length - 1];
|
|
16
|
+
}
|
|
17
|
+
return nonEmptySeries[(currentSeriesIndex - 1 + nonEmptySeries.length) % nonEmptySeries.length];
|
|
18
|
+
}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
export declare const selectorChartsTooltipPointerItem: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartTooltip.types.js").UseChartTooltipState> & {
|
|
2
2
|
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
3
|
-
}) => import("../../../../index.js").
|
|
3
|
+
}) => import("../../../../index.js").LineItemIdentifier | import("../../../../index.js").BarItemIdentifier | import("../../../../index.js").ScatterItemIdentifier | import("../../../../index.js").PieItemIdentifier | import("../../../../index.js").RadarItemIdentifier | null;
|
|
4
4
|
export declare const selectorChartsTooltipPointerItemIsDefined: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartTooltip.types.js").UseChartTooltipState> & {
|
|
5
5
|
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
6
6
|
}) => boolean;
|
|
7
7
|
export declare const selectorChartsTooltipItem: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("../useChartInteraction/useChartInteraction.types.js").UseChartInteractionState> & {
|
|
8
8
|
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
9
|
-
}) => import("../../../../index.js").PieItemIdentifier |
|
|
10
|
-
type: "bar";
|
|
11
|
-
seriesId: import("../../../index.js").SeriesId;
|
|
12
|
-
dataIndex: number;
|
|
13
|
-
} | {
|
|
14
|
-
type: "scatter";
|
|
15
|
-
seriesId: import("../../../index.js").SeriesId;
|
|
16
|
-
dataIndex: number;
|
|
17
|
-
} | import("../../../../index.js").LineItemIdentifier | import("../../../../index.js").RadarItemIdentifier | null;
|
|
9
|
+
}) => import("../../../../index.js").LineItemIdentifier | import("../../../../index.js").BarItemIdentifier | import("../../../../index.js").ScatterItemIdentifier | import("../../../../index.js").PieItemIdentifier | import("../../../../index.js").RadarItemIdentifier | null;
|
|
18
10
|
export declare const selectorChartsTooltipItemIsDefined: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("../useChartInteraction/useChartInteraction.types.js").UseChartInteractionState> & {
|
|
19
11
|
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
20
12
|
}) => boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';
|
|
2
2
|
import { selectorChartSeriesConfig, selectorChartSeriesProcessed, selectorChartSeriesLayout } from "../../corePlugins/useChartSeries/index.js";
|
|
3
3
|
import { selectorChartXAxis, selectorChartYAxis } from "../useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js";
|
|
4
|
-
import { selectorChartsKeyboardItem,
|
|
4
|
+
import { selectorChartsKeyboardItem, selectorChartsHasFocusedItem } from "../useChartKeyboardNavigation/index.js";
|
|
5
5
|
import { selectorChartsLastInteraction } from "../useChartInteraction/useChartInteraction.selectors.js";
|
|
6
6
|
import { selectorChartDrawingArea } from "../../corePlugins/useChartDimensions/useChartDimensions.selectors.js";
|
|
7
7
|
import { isCartesianSeries } from "../../../isCartesian.js";
|
|
@@ -10,7 +10,7 @@ const selectTooltip = state => state.tooltip;
|
|
|
10
10
|
export const selectorChartsTooltipPointerItem = createSelector(selectTooltip, tooltip => tooltip?.item ?? null);
|
|
11
11
|
export const selectorChartsTooltipPointerItemIsDefined = createSelector(selectorChartsTooltipPointerItem, item => item !== null);
|
|
12
12
|
export const selectorChartsTooltipItem = createSelector(selectorChartsLastInteraction, selectorChartsTooltipPointerItem, selectorChartsKeyboardItem, (lastInteraction, pointerItem, keyboardItem) => lastInteraction === 'keyboard' ? keyboardItem : pointerItem ?? null);
|
|
13
|
-
export const selectorChartsTooltipItemIsDefined = createSelector(selectorChartsLastInteraction, selectorChartsTooltipPointerItemIsDefined,
|
|
13
|
+
export const selectorChartsTooltipItemIsDefined = createSelector(selectorChartsLastInteraction, selectorChartsTooltipPointerItemIsDefined, selectorChartsHasFocusedItem, (lastInteraction, pointerItemIsDefined, keyboardItemIsDefined) => lastInteraction === 'keyboard' ? keyboardItemIsDefined : pointerItemIsDefined);
|
|
14
14
|
const selectorChartsTooltipAxisConfig = createSelectorMemoized(selectorChartsTooltipItem, selectorChartXAxis, selectorChartYAxis, selectorChartRotationAxis, selectorChartRadiusAxis, selectorChartSeriesProcessed, function selectorChartsTooltipAxisConfig(identifier, {
|
|
15
15
|
axis: xAxis,
|
|
16
16
|
axisIds: xAxisIds
|
package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
|
|
2
|
+
import type { ChartSeriesConfig } from "../../models/index.js";
|
|
3
|
+
import type { VisibilityIdentifier, VisibilityMap } from "./useChartVisibilityManager.types.js";
|
|
4
|
+
export declare const isIdentifierVisible: (visibilityMap: VisibilityMap, identifier: VisibilityIdentifier, seriesConfig: ChartSeriesConfig<ChartSeriesType>) => boolean;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { serializeIdentifier } from "../../corePlugins/useChartSeries/serializeIdentifier.js";
|
|
2
|
+
export const isIdentifierVisible = (visibilityMap, identifier, seriesConfig) => {
|
|
3
|
+
const uniqueId = serializeIdentifier(seriesConfig, identifier);
|
|
4
|
+
return !visibilityMap.has(uniqueId);
|
|
5
|
+
};
|
package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
|
+
import { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';
|
|
6
|
+
import { EMPTY_VISIBILITY_MAP } from "./useChartVisibilityManager.selectors.js";
|
|
7
|
+
import { visibilityParamToMap } from "./visibilityParamToMap.js";
|
|
8
|
+
export const useChartVisibilityManager = ({
|
|
9
|
+
store,
|
|
10
|
+
params,
|
|
11
|
+
seriesConfig,
|
|
12
|
+
instance
|
|
13
|
+
}) => {
|
|
14
|
+
// Manage controlled state
|
|
15
|
+
useEffectAfterFirstRender(() => {
|
|
16
|
+
if (params.hiddenItems === undefined) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (process.env.NODE_ENV !== 'production' && !store.state.visibilityManager.isControlled) {
|
|
20
|
+
console.error([`MUI X Charts: A chart component is changing the \`hiddenItems\` from uncontrolled to controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', 'Decide between using a controlled or uncontrolled 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'].join('\n'));
|
|
21
|
+
}
|
|
22
|
+
store.set('visibilityManager', _extends({}, store.state.visibilityManager, {
|
|
23
|
+
visibilityMap: visibilityParamToMap(params.hiddenItems, seriesConfig)
|
|
24
|
+
}));
|
|
25
|
+
}, [store, params.hiddenItems, seriesConfig]);
|
|
26
|
+
const hideItem = useEventCallback(identifier => {
|
|
27
|
+
const visibilityMap = store.state.visibilityManager.visibilityMap;
|
|
28
|
+
const id = instance.serializeIdentifier(identifier);
|
|
29
|
+
if (visibilityMap.has(id)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const newVisibilityMap = new Map(visibilityMap);
|
|
33
|
+
newVisibilityMap.set(id, identifier);
|
|
34
|
+
store.set('visibilityManager', _extends({}, store.state.visibilityManager, {
|
|
35
|
+
visibilityMap: newVisibilityMap
|
|
36
|
+
}));
|
|
37
|
+
params.onHiddenItemsChange?.(Array.from(newVisibilityMap.values()));
|
|
38
|
+
});
|
|
39
|
+
const showItem = useEventCallback(identifier => {
|
|
40
|
+
const visibilityMap = store.state.visibilityManager.visibilityMap;
|
|
41
|
+
const id = instance.serializeIdentifier(identifier);
|
|
42
|
+
if (!visibilityMap.has(id)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const newVisibilityMap = new Map(visibilityMap);
|
|
46
|
+
newVisibilityMap.delete(id);
|
|
47
|
+
store.set('visibilityManager', _extends({}, store.state.visibilityManager, {
|
|
48
|
+
visibilityMap: newVisibilityMap
|
|
49
|
+
}));
|
|
50
|
+
params.onHiddenItemsChange?.(Array.from(newVisibilityMap.values()));
|
|
51
|
+
});
|
|
52
|
+
const toggleItem = useEventCallback(identifier => {
|
|
53
|
+
const visibilityMap = store.state.visibilityManager.visibilityMap;
|
|
54
|
+
const id = instance.serializeIdentifier(identifier);
|
|
55
|
+
if (visibilityMap.has(id)) {
|
|
56
|
+
showItem(identifier);
|
|
57
|
+
} else {
|
|
58
|
+
hideItem(identifier);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
instance: {
|
|
63
|
+
hideItem,
|
|
64
|
+
showItem,
|
|
65
|
+
toggleItemVisibility: toggleItem
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
useChartVisibilityManager.getInitialState = (params, _, seriesConfig) => ({
|
|
70
|
+
visibilityManager: {
|
|
71
|
+
visibilityMap: params.hiddenItems ? visibilityParamToMap(params.hiddenItems, seriesConfig) : EMPTY_VISIBILITY_MAP,
|
|
72
|
+
isControlled: params.hiddenItems !== undefined
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
useChartVisibilityManager.params = {
|
|
76
|
+
onHiddenItemsChange: true,
|
|
77
|
+
hiddenItems: true
|
|
78
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { VisibilityIdentifier } from "./useChartVisibilityManager.types.js";
|
|
2
|
+
import type { ChartSeriesConfig } from "../../models/index.js";
|
|
3
|
+
import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
|
|
4
|
+
export declare const EMPTY_VISIBILITY_MAP: Map<any, any>;
|
|
5
|
+
/**
|
|
6
|
+
* Selector to get the hidden identifiers from the visibility manager.
|
|
7
|
+
*/
|
|
8
|
+
export declare const selectorVisibilityMap: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartVisibilityManager.types.js").UseChartVisibilityManagerState> & {
|
|
9
|
+
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
10
|
+
}) => Map<any, any>;
|
|
11
|
+
/**
|
|
12
|
+
* Selector that returns a function which returns whether an item is visible.
|
|
13
|
+
*/
|
|
14
|
+
export declare const selectorIsItemVisibleGetter: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartVisibilityManager.types.js").UseChartVisibilityManagerState> & {
|
|
15
|
+
cacheKey: import("../../models/index.js").ChartStateCacheKey;
|
|
16
|
+
}) => (seriesConfig: ChartSeriesConfig<ChartSeriesType>, identifier: VisibilityIdentifier) => boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';
|
|
2
|
+
import { isIdentifierVisible } from "./isIdentifierVisible.js";
|
|
3
|
+
/**
|
|
4
|
+
* Selector to get the visibility manager state.
|
|
5
|
+
*/
|
|
6
|
+
const selectVisibilityManager = state => state.visibilityManager;
|
|
7
|
+
export const EMPTY_VISIBILITY_MAP = new Map();
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Selector to get the hidden identifiers from the visibility manager.
|
|
11
|
+
*/
|
|
12
|
+
export const selectorVisibilityMap = createSelector(selectVisibilityManager, visibilityManager => visibilityManager?.visibilityMap ?? EMPTY_VISIBILITY_MAP);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Selector that returns a function which returns whether an item is visible.
|
|
16
|
+
*/
|
|
17
|
+
export const selectorIsItemVisibleGetter = createSelectorMemoized(selectorVisibilityMap, visibilityMap => {
|
|
18
|
+
return (seriesConfig, identifier) => isIdentifierVisible(visibilityMap, identifier, seriesConfig);
|
|
19
|
+
});
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type ChartPluginSignature } from "../../models/index.js";
|
|
2
|
+
import { type UseChartSeriesSignature } from "../../corePlugins/useChartSeries/index.js";
|
|
3
|
+
import { type SeriesItemIdentifier } from "../../../../models/index.js";
|
|
4
|
+
import { type ChartSeriesType } from "../../../../models/seriesType/config.js";
|
|
5
|
+
export type VisibilityIdentifier<T extends ChartSeriesType = ChartSeriesType> = Partial<SeriesItemIdentifier<T>> & (SeriesItemIdentifier<T> extends {
|
|
6
|
+
subType?: infer U;
|
|
7
|
+
} ? {
|
|
8
|
+
type: T;
|
|
9
|
+
subType: U;
|
|
10
|
+
} : {
|
|
11
|
+
type: T;
|
|
12
|
+
});
|
|
13
|
+
export type VisibilityMap = Map<string, VisibilityIdentifier>;
|
|
14
|
+
export type IsItemVisibleFunction = {
|
|
15
|
+
/**
|
|
16
|
+
* Function to check if an item is visible based on its identifier.
|
|
17
|
+
*
|
|
18
|
+
* @param {VisibilityIdentifier} identifier The identifier of the item to check.
|
|
19
|
+
* @returns {boolean} Whether the item is visible.
|
|
20
|
+
*/
|
|
21
|
+
(identifier: VisibilityIdentifier): boolean;
|
|
22
|
+
};
|
|
23
|
+
export interface UseChartVisibilityManagerInstance<T extends ChartSeriesType> {
|
|
24
|
+
/**
|
|
25
|
+
* Hide an item by its identifier.
|
|
26
|
+
*
|
|
27
|
+
* @param {VisibilityIdentifier} identifier The identifier of the item to hide.
|
|
28
|
+
*/
|
|
29
|
+
hideItem(identifier: VisibilityIdentifier<T>): void;
|
|
30
|
+
/**
|
|
31
|
+
* Show an item by its identifier.
|
|
32
|
+
*
|
|
33
|
+
* @param {VisibilityIdentifier} identifier The identifier of the item to show.
|
|
34
|
+
*/
|
|
35
|
+
showItem(identifier: VisibilityIdentifier<T>): void;
|
|
36
|
+
/**
|
|
37
|
+
* Toggle the visibility of an item by its identifier.
|
|
38
|
+
*
|
|
39
|
+
* @param {VisibilityIdentifier} identifier The identifier of the item to toggle.
|
|
40
|
+
*/
|
|
41
|
+
toggleItemVisibility(identifier: VisibilityIdentifier<T>): void;
|
|
42
|
+
}
|
|
43
|
+
export interface UseChartVisibilityManagerParameters<T extends ChartSeriesType> {
|
|
44
|
+
/**
|
|
45
|
+
* Callback fired when any hidden identifiers change.
|
|
46
|
+
* @param {VisibilityIdentifier[]} hiddenItems The new list of hidden identifiers.
|
|
47
|
+
*/
|
|
48
|
+
onHiddenItemsChange?: (hiddenItems: VisibilityIdentifier<T>[]) => void;
|
|
49
|
+
/**
|
|
50
|
+
* List of hidden series and/or items.
|
|
51
|
+
*
|
|
52
|
+
* Different chart types use different keys.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* [
|
|
57
|
+
* {
|
|
58
|
+
* type: 'pie',
|
|
59
|
+
* seriesId: 'series-1',
|
|
60
|
+
* dataIndex: 3,
|
|
61
|
+
* },
|
|
62
|
+
* {
|
|
63
|
+
* type: 'line',
|
|
64
|
+
* seriesId: 'series-2',
|
|
65
|
+
* }
|
|
66
|
+
* ]
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
hiddenItems?: VisibilityIdentifier<T>[];
|
|
70
|
+
}
|
|
71
|
+
export type UseChartVisibilityManagerDefaultizedParameters<T extends ChartSeriesType> = UseChartVisibilityManagerParameters<T>;
|
|
72
|
+
export interface UseChartVisibilityManagerState {
|
|
73
|
+
visibilityManager: {
|
|
74
|
+
/**
|
|
75
|
+
* Map of hidden identifiers by their serialized form.
|
|
76
|
+
*/
|
|
77
|
+
visibilityMap: VisibilityMap;
|
|
78
|
+
/**
|
|
79
|
+
* Internal information to know if the user controls the state or not.
|
|
80
|
+
*/
|
|
81
|
+
isControlled: boolean;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export type UseChartVisibilityManagerSignature<T extends ChartSeriesType = ChartSeriesType> = ChartPluginSignature<{
|
|
85
|
+
instance: UseChartVisibilityManagerInstance<T>;
|
|
86
|
+
state: UseChartVisibilityManagerState;
|
|
87
|
+
params: UseChartVisibilityManagerParameters<T>;
|
|
88
|
+
defaultizedParams: UseChartVisibilityManagerDefaultizedParameters<T>;
|
|
89
|
+
dependencies: [UseChartSeriesSignature];
|
|
90
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
|
|
2
|
+
import type { ChartSeriesConfig } from "../../models/index.js";
|
|
3
|
+
import type { VisibilityIdentifier, VisibilityMap } from "./useChartVisibilityManager.types.js";
|
|
4
|
+
export declare const visibilityParamToMap: (hiddenItems: VisibilityIdentifier[] | undefined, seriesConfig: ChartSeriesConfig<ChartSeriesType>) => VisibilityMap;
|
package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { serializeIdentifier } from "../../corePlugins/useChartSeries/serializeIdentifier.js";
|
|
2
|
+
export const visibilityParamToMap = (hiddenItems, seriesConfig) => {
|
|
3
|
+
const visibilityMap = new Map();
|
|
4
|
+
if (hiddenItems) {
|
|
5
|
+
hiddenItems.forEach(identifier => {
|
|
6
|
+
const uniqueId = serializeIdentifier(seriesConfig, identifier);
|
|
7
|
+
visibilityMap.set(uniqueId, identifier);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
return visibilityMap;
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -7,4 +7,5 @@ export * from "./seriesLayout.types.js";
|
|
|
7
7
|
export * from "./tooltipGetter.types.js";
|
|
8
8
|
export * from "./tooltipItemPositionGetter.types.js";
|
|
9
9
|
export * from "./legendGetter.types.js";
|
|
10
|
-
export * from "./getSeriesWithDefaultValues.types.js";
|
|
10
|
+
export * from "./getSeriesWithDefaultValues.types.js";
|
|
11
|
+
export * from "./identifierSerializer.types.js";
|
|
@@ -7,4 +7,5 @@ export * from "./seriesLayout.types.js";
|
|
|
7
7
|
export * from "./tooltipGetter.types.js";
|
|
8
8
|
export * from "./tooltipItemPositionGetter.types.js";
|
|
9
9
|
export * from "./legendGetter.types.js";
|
|
10
|
-
export * from "./getSeriesWithDefaultValues.types.js";
|
|
10
|
+
export * from "./getSeriesWithDefaultValues.types.js";
|
|
11
|
+
export * from "./identifierSerializer.types.js";
|
|
@@ -8,6 +8,8 @@ import { type PolarExtremumGetter } from "./polarExtremumGetter.types.js";
|
|
|
8
8
|
import { type GetSeriesWithDefaultValues } from "./getSeriesWithDefaultValues.types.js";
|
|
9
9
|
import { type TooltipItemPositionGetter } from "./tooltipItemPositionGetter.types.js";
|
|
10
10
|
import { type SeriesLayoutGetter } from "./seriesLayout.types.js";
|
|
11
|
+
import { type KeyboardFocusHandler } from "../../featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.js";
|
|
12
|
+
import { type IdentifierSerializer } from "./identifierSerializer.types.js";
|
|
11
13
|
export type ChartSeriesTypeConfig<TSeriesType extends ChartSeriesType> = {
|
|
12
14
|
seriesProcessor: SeriesProcessor<TSeriesType>;
|
|
13
15
|
/**
|
|
@@ -19,6 +21,13 @@ export type ChartSeriesTypeConfig<TSeriesType extends ChartSeriesType> = {
|
|
|
19
21
|
tooltipGetter: TooltipGetter<TSeriesType>;
|
|
20
22
|
tooltipItemPositionGetter?: TooltipItemPositionGetter<TSeriesType>;
|
|
21
23
|
getSeriesWithDefaultValues: GetSeriesWithDefaultValues<TSeriesType>;
|
|
24
|
+
keyboardFocusHandler?: KeyboardFocusHandler<TSeriesType>;
|
|
25
|
+
/**
|
|
26
|
+
* A function to serialize the series item identifier into a unique string.
|
|
27
|
+
* @param {ChartsSeriesConfig[TSeriesType]['itemIdentifier']} identifier The series item identifier.
|
|
28
|
+
* @returns {string} A unique string representation of the identifier.
|
|
29
|
+
*/
|
|
30
|
+
identifierSerializer: IdentifierSerializer<TSeriesType>;
|
|
22
31
|
} & (TSeriesType extends CartesianChartSeriesType ? {
|
|
23
32
|
xExtremumGetter: CartesianExtremumGetter<TSeriesType>;
|
|
24
33
|
yExtremumGetter: CartesianExtremumGetter<TSeriesType>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ChartSeriesDefaultized, ChartSeriesType, ChartsSeriesConfig, DatasetType } from "../../../../models/seriesType/config.js";
|
|
2
2
|
import type { SeriesId } from "../../../../models/seriesType/common.js";
|
|
3
|
-
import type { StackingGroupsType } from "../../../
|
|
3
|
+
import type { StackingGroupsType } from "../../../stacking/index.js";
|
|
4
4
|
export type SeriesProcessorParams<TSeriesType extends ChartSeriesType> = {
|
|
5
5
|
series: Record<SeriesId, ChartsSeriesConfig[TSeriesType]['seriesInput']>;
|
|
6
6
|
seriesOrder: SeriesId[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SeriesId } from "../models/seriesType/common.js";
|
|
2
|
+
import type { ChartSeriesType, ChartsSeriesConfig } from "../models/seriesType/config.js";
|
|
3
|
+
import type { ProcessedSeries } from "./plugins/corePlugins/useChartSeries/index.js";
|
|
4
|
+
export declare function seriesHasData(series: ProcessedSeries<keyof ChartsSeriesConfig>, type: ChartSeriesType, seriesId: SeriesId): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./stackSeries.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./stackSeries.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./offsetDiverging.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./offsetDiverging.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Series } from '@mui/x-charts-vendor/d3-shape';
|
|
2
|
+
/**
|
|
3
|
+
* Positive values are stacked above zero, while negative values are stacked below zero.
|
|
4
|
+
*
|
|
5
|
+
* @param series A series generated by a stack generator.
|
|
6
|
+
* @param order An array of numeric indexes representing the stack order.
|
|
7
|
+
*/
|
|
8
|
+
export declare function offsetDiverging(series: Series<any, any>[], order: Iterable<number>): void;
|