@mui/x-charts 7.5.0 → 7.6.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 +30 -3
- package/BarChart/BarElement.d.ts +0 -3
- package/BarChart/BarElement.js +8 -19
- package/BarChart/BarLabel/BarLabel.d.ts +1342 -0
- package/BarChart/BarLabel/BarLabel.js +60 -0
- package/BarChart/BarLabel/BarLabel.types.d.ts +39 -0
- package/BarChart/BarLabel/BarLabel.types.js +5 -0
- package/BarChart/BarLabel/BarLabelItem.d.ts +53 -0
- package/BarChart/BarLabel/BarLabelItem.js +127 -0
- package/BarChart/BarLabel/BarLabelPlot.d.ts +16 -0
- package/BarChart/BarLabel/BarLabelPlot.js +106 -0
- package/BarChart/BarLabel/barLabelClasses.d.ts +13 -0
- package/BarChart/BarLabel/barLabelClasses.js +29 -0
- package/BarChart/BarLabel/getBarLabel.d.ts +10 -0
- package/BarChart/BarLabel/getBarLabel.js +31 -0
- package/BarChart/BarLabel/index.d.ts +6 -0
- package/BarChart/BarLabel/index.js +25 -0
- package/BarChart/BarPlot.d.ts +15 -4
- package/BarChart/BarPlot.js +22 -34
- package/BarChart/checkScaleErrors.d.ts +11 -0
- package/BarChart/checkScaleErrors.js +33 -0
- package/BarChart/index.d.ts +1 -0
- package/BarChart/index.js +11 -0
- package/BarChart/types.d.ts +0 -2
- package/CHANGELOG.md +148 -5418
- package/ChartContainer/ChartContainer.d.ts +3 -2
- package/ChartContainer/ChartContainer.js +20 -3
- package/ChartsAxis/ChartsAxis.js +1 -1
- package/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
- package/ChartsClipPath/ChartsClipPath.js +1 -1
- package/ChartsGrid/ChartsGrid.js +1 -1
- package/ChartsLegend/ChartsLegend.js +1 -1
- package/ChartsLegend/DefaultChartsLegend.js +1 -1
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
- package/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
- package/ChartsSurface.js +1 -1
- package/ChartsText/ChartsText.js +1 -1
- package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
- package/ChartsTooltip/ChartsTooltip.js +1 -1
- package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +1 -1
- package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
- package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +14 -2
- package/ChartsXAxis/ChartsXAxis.js +1 -1
- package/ChartsYAxis/ChartsYAxis.js +1 -1
- package/Gauge/Gauge.js +1 -1
- package/Gauge/GaugeContainer.js +1 -1
- package/Gauge/GaugeValueText.js +1 -1
- package/LineChart/AnimatedArea.js +1 -1
- package/LineChart/AnimatedLine.js +1 -1
- package/LineChart/AreaElement.d.ts +0 -2
- package/LineChart/AreaElement.js +8 -18
- package/LineChart/AreaPlot.js +1 -3
- package/LineChart/LineChart.js +19 -2
- package/LineChart/LineElement.d.ts +0 -2
- package/LineChart/LineElement.js +8 -18
- package/LineChart/LineHighlightElement.js +1 -1
- package/LineChart/LineHighlightPlot.js +1 -1
- package/LineChart/LinePlot.js +1 -3
- package/LineChart/MarkElement.d.ts +0 -2
- package/LineChart/MarkElement.js +11 -33
- package/LineChart/MarkPlot.js +1 -2
- package/PieChart/PieArc.d.ts +4 -1
- package/PieChart/PieArc.js +8 -4
- package/PieChart/PieArcLabel.js +1 -1
- package/PieChart/PieArcLabelPlot.d.ts +1 -1
- package/PieChart/PieArcLabelPlot.js +2 -8
- package/PieChart/PieArcPlot.d.ts +1 -1
- package/PieChart/PieArcPlot.js +6 -8
- package/PieChart/PieChart.js +19 -2
- package/PieChart/PiePlot.js +3 -7
- package/PieChart/dataTransform/useTransformData.d.ts +1 -1
- package/PieChart/dataTransform/useTransformData.js +10 -25
- package/ResponsiveChartContainer/ResponsiveChartContainer.js +14 -1
- package/ScatterChart/Scatter.js +15 -11
- package/ScatterChart/ScatterChart.js +19 -2
- package/ScatterChart/ScatterPlot.js +1 -1
- package/SparkLineChart/SparkLineChart.d.ts +1 -1
- package/SparkLineChart/SparkLineChart.js +14 -1
- package/context/HighlightedProvider/HighlightedContext.d.ts +65 -0
- package/context/HighlightedProvider/HighlightedContext.js +36 -0
- package/context/HighlightedProvider/HighlightedProvider.d.ts +20 -0
- package/context/HighlightedProvider/HighlightedProvider.js +97 -0
- package/context/HighlightedProvider/createIsFaded.d.ts +2 -0
- package/context/HighlightedProvider/createIsFaded.js +19 -0
- package/context/HighlightedProvider/createIsHighlighted.d.ts +2 -0
- package/context/HighlightedProvider/createIsHighlighted.js +19 -0
- package/context/HighlightedProvider/index.d.ts +4 -0
- package/context/HighlightedProvider/index.js +49 -0
- package/context/HighlightedProvider/useHighlighted.d.ts +9 -0
- package/context/HighlightedProvider/useHighlighted.js +24 -0
- package/context/HighlightedProvider/useItemHighlighted.d.ts +21 -0
- package/context/HighlightedProvider/useItemHighlighted.js +37 -0
- package/context/ZAxisContextProvider.js +1 -1
- package/context/index.d.ts +1 -1
- package/context/index.js +15 -0
- package/esm/BarChart/BarChart.js +30 -3
- package/esm/BarChart/BarElement.js +9 -20
- package/esm/BarChart/BarLabel/BarLabel.js +51 -0
- package/esm/BarChart/BarLabel/BarLabel.types.js +1 -0
- package/esm/BarChart/BarLabel/BarLabelItem.js +119 -0
- package/esm/BarChart/BarLabel/BarLabelPlot.js +98 -0
- package/esm/BarChart/BarLabel/barLabelClasses.js +19 -0
- package/esm/BarChart/BarLabel/getBarLabel.js +24 -0
- package/esm/BarChart/BarLabel/index.js +2 -0
- package/esm/BarChart/BarPlot.js +22 -34
- package/esm/BarChart/checkScaleErrors.js +27 -0
- package/esm/BarChart/index.js +2 -1
- package/esm/ChartContainer/ChartContainer.js +20 -3
- package/esm/ChartsAxis/ChartsAxis.js +1 -1
- package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
- package/esm/ChartsClipPath/ChartsClipPath.js +1 -1
- package/esm/ChartsGrid/ChartsGrid.js +1 -1
- package/esm/ChartsLegend/ChartsLegend.js +1 -1
- package/esm/ChartsLegend/DefaultChartsLegend.js +1 -1
- package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
- package/esm/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
- package/esm/ChartsSurface.js +1 -1
- package/esm/ChartsText/ChartsText.js +1 -1
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
- package/esm/ChartsTooltip/ChartsTooltip.js +1 -1
- package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +1 -1
- package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
- package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +14 -2
- package/esm/ChartsXAxis/ChartsXAxis.js +1 -1
- package/esm/ChartsYAxis/ChartsYAxis.js +1 -1
- package/esm/Gauge/Gauge.js +1 -1
- package/esm/Gauge/GaugeContainer.js +1 -1
- package/esm/Gauge/GaugeValueText.js +1 -1
- package/esm/LineChart/AnimatedArea.js +1 -1
- package/esm/LineChart/AnimatedLine.js +1 -1
- package/esm/LineChart/AreaElement.js +9 -19
- package/esm/LineChart/AreaPlot.js +1 -3
- package/esm/LineChart/LineChart.js +19 -2
- package/esm/LineChart/LineElement.js +9 -19
- package/esm/LineChart/LineHighlightElement.js +1 -1
- package/esm/LineChart/LineHighlightPlot.js +1 -1
- package/esm/LineChart/LinePlot.js +1 -3
- package/esm/LineChart/MarkElement.js +12 -34
- package/esm/LineChart/MarkPlot.js +1 -2
- package/esm/PieChart/PieArc.js +8 -4
- package/esm/PieChart/PieArcLabel.js +1 -1
- package/esm/PieChart/PieArcLabelPlot.js +2 -8
- package/esm/PieChart/PieArcPlot.js +6 -8
- package/esm/PieChart/PieChart.js +19 -2
- package/esm/PieChart/PiePlot.js +3 -7
- package/esm/PieChart/dataTransform/useTransformData.js +10 -25
- package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +14 -1
- package/esm/ScatterChart/Scatter.js +16 -12
- package/esm/ScatterChart/ScatterChart.js +19 -2
- package/esm/ScatterChart/ScatterPlot.js +1 -1
- package/esm/SparkLineChart/SparkLineChart.js +14 -1
- package/esm/context/HighlightedProvider/HighlightedContext.js +29 -0
- package/esm/context/HighlightedProvider/HighlightedProvider.js +89 -0
- package/esm/context/HighlightedProvider/createIsFaded.js +12 -0
- package/esm/context/HighlightedProvider/createIsHighlighted.js +12 -0
- package/esm/context/HighlightedProvider/index.js +4 -0
- package/esm/context/HighlightedProvider/useHighlighted.js +17 -0
- package/esm/context/HighlightedProvider/useItemHighlighted.js +29 -0
- package/esm/context/ZAxisContextProvider.js +1 -1
- package/esm/context/index.js +1 -0
- package/esm/hooks/useInteractionItemProps.js +9 -41
- package/hooks/useInteractionItemProps.d.ts +1 -4
- package/hooks/useInteractionItemProps.js +11 -45
- package/index.js +1 -1
- package/internals/colorScale.d.ts +1 -1
- package/internals/defaultizeColor.d.ts +13 -13
- package/models/seriesType/common.d.ts +4 -1
- package/modern/BarChart/BarChart.js +30 -3
- package/modern/BarChart/BarElement.js +9 -20
- package/modern/BarChart/BarLabel/BarLabel.js +51 -0
- package/modern/BarChart/BarLabel/BarLabel.types.js +1 -0
- package/modern/BarChart/BarLabel/BarLabelItem.js +119 -0
- package/modern/BarChart/BarLabel/BarLabelPlot.js +98 -0
- package/modern/BarChart/BarLabel/barLabelClasses.js +19 -0
- package/modern/BarChart/BarLabel/getBarLabel.js +24 -0
- package/modern/BarChart/BarLabel/index.js +2 -0
- package/modern/BarChart/BarPlot.js +22 -34
- package/modern/BarChart/checkScaleErrors.js +27 -0
- package/modern/BarChart/index.js +2 -1
- package/modern/ChartContainer/ChartContainer.js +20 -3
- package/modern/ChartsAxis/ChartsAxis.js +1 -1
- package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
- package/modern/ChartsClipPath/ChartsClipPath.js +1 -1
- package/modern/ChartsGrid/ChartsGrid.js +1 -1
- package/modern/ChartsLegend/ChartsLegend.js +1 -1
- package/modern/ChartsLegend/DefaultChartsLegend.js +1 -1
- package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
- package/modern/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
- package/modern/ChartsSurface.js +1 -1
- package/modern/ChartsText/ChartsText.js +1 -1
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
- package/modern/ChartsTooltip/ChartsTooltip.js +1 -1
- package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +1 -1
- package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
- package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +14 -2
- package/modern/ChartsXAxis/ChartsXAxis.js +1 -1
- package/modern/ChartsYAxis/ChartsYAxis.js +1 -1
- package/modern/Gauge/Gauge.js +1 -1
- package/modern/Gauge/GaugeContainer.js +1 -1
- package/modern/Gauge/GaugeValueText.js +1 -1
- package/modern/LineChart/AnimatedArea.js +1 -1
- package/modern/LineChart/AnimatedLine.js +1 -1
- package/modern/LineChart/AreaElement.js +9 -19
- package/modern/LineChart/AreaPlot.js +1 -3
- package/modern/LineChart/LineChart.js +19 -2
- package/modern/LineChart/LineElement.js +9 -19
- package/modern/LineChart/LineHighlightElement.js +1 -1
- package/modern/LineChart/LineHighlightPlot.js +1 -1
- package/modern/LineChart/LinePlot.js +1 -3
- package/modern/LineChart/MarkElement.js +12 -34
- package/modern/LineChart/MarkPlot.js +1 -2
- package/modern/PieChart/PieArc.js +8 -4
- package/modern/PieChart/PieArcLabel.js +1 -1
- package/modern/PieChart/PieArcLabelPlot.js +2 -8
- package/modern/PieChart/PieArcPlot.js +6 -8
- package/modern/PieChart/PieChart.js +19 -2
- package/modern/PieChart/PiePlot.js +3 -7
- package/modern/PieChart/dataTransform/useTransformData.js +10 -25
- package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +14 -1
- package/modern/ScatterChart/Scatter.js +16 -12
- package/modern/ScatterChart/ScatterChart.js +19 -2
- package/modern/ScatterChart/ScatterPlot.js +1 -1
- package/modern/SparkLineChart/SparkLineChart.js +14 -1
- package/modern/context/HighlightedProvider/HighlightedContext.js +29 -0
- package/modern/context/HighlightedProvider/HighlightedProvider.js +89 -0
- package/modern/context/HighlightedProvider/createIsFaded.js +12 -0
- package/modern/context/HighlightedProvider/createIsHighlighted.js +12 -0
- package/modern/context/HighlightedProvider/index.js +4 -0
- package/modern/context/HighlightedProvider/useHighlighted.js +17 -0
- package/modern/context/HighlightedProvider/useItemHighlighted.js +29 -0
- package/modern/context/ZAxisContextProvider.js +1 -1
- package/modern/context/index.js +1 -0
- package/modern/hooks/useInteractionItemProps.js +9 -41
- package/modern/index.js +1 -1
- package/package.json +3 -3
- package/themeAugmentation/components.d.ts +4 -0
- package/themeAugmentation/overrides.d.ts +3 -0
- package/themeAugmentation/props.d.ts +2 -0
- package/context/HighlightProvider.d.ts +0 -45
- package/context/HighlightProvider.js +0 -60
- package/esm/context/HighlightProvider.js +0 -51
- package/modern/context/HighlightProvider.js +0 -51
package/esm/PieChart/PieArc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["classes", "color", "cornerRadius", "dataIndex", "endAngle", "
|
|
3
|
+
const _excluded = ["classes", "color", "cornerRadius", "dataIndex", "endAngle", "id", "innerRadius", "isFaded", "isHighlighted", "onClick", "outerRadius", "paddingAngle", "startAngle", "highlightScope"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { arc as d3Arc } from 'd3-shape';
|
|
@@ -45,7 +45,6 @@ function PieArc(props) {
|
|
|
45
45
|
cornerRadius,
|
|
46
46
|
dataIndex,
|
|
47
47
|
endAngle,
|
|
48
|
-
highlightScope,
|
|
49
48
|
id,
|
|
50
49
|
innerRadius,
|
|
51
50
|
isFaded,
|
|
@@ -65,7 +64,7 @@ function PieArc(props) {
|
|
|
65
64
|
isHighlighted
|
|
66
65
|
};
|
|
67
66
|
const classes = useUtilityClasses(ownerState);
|
|
68
|
-
const getInteractionItemProps = useInteractionItemProps(
|
|
67
|
+
const getInteractionItemProps = useInteractionItemProps();
|
|
69
68
|
return /*#__PURE__*/_jsx(PieArcRoot, _extends({
|
|
70
69
|
d: to([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], (sA, eA, pA, iR, oR, cR) => d3Arc().cornerRadius(cR)({
|
|
71
70
|
padAngle: pA,
|
|
@@ -87,12 +86,17 @@ function PieArc(props) {
|
|
|
87
86
|
process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
|
|
88
87
|
// ----------------------------- Warning --------------------------------
|
|
89
88
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
90
|
-
// | To update them edit the TypeScript types and run "
|
|
89
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
91
90
|
// ----------------------------------------------------------------------
|
|
92
91
|
classes: PropTypes.object,
|
|
93
92
|
dataIndex: PropTypes.number.isRequired,
|
|
93
|
+
/**
|
|
94
|
+
* @deprecated Use the `isFaded` or `isHighlighted` props instead.
|
|
95
|
+
*/
|
|
94
96
|
highlightScope: PropTypes.shape({
|
|
97
|
+
fade: PropTypes.oneOf(['global', 'none', 'series']),
|
|
95
98
|
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
99
|
+
highlight: PropTypes.oneOf(['item', 'none', 'series']),
|
|
96
100
|
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
97
101
|
}),
|
|
98
102
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
@@ -95,7 +95,7 @@ function PieArcLabel(props) {
|
|
|
95
95
|
process.env.NODE_ENV !== "production" ? PieArcLabel.propTypes = {
|
|
96
96
|
// ----------------------------- Warning --------------------------------
|
|
97
97
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
98
|
-
// | To update them edit the TypeScript types and run "
|
|
98
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
99
99
|
// ----------------------------------------------------------------------
|
|
100
100
|
classes: PropTypes.object,
|
|
101
101
|
color: PropTypes.string.isRequired,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["arcLabel", "arcLabelMinAngle", "arcLabelRadius", "cornerRadius", "data", "faded", "highlighted", "
|
|
3
|
+
const _excluded = ["arcLabel", "arcLabelMinAngle", "arcLabelRadius", "cornerRadius", "data", "faded", "highlighted", "id", "innerRadius", "outerRadius", "paddingAngle", "skipAnimation", "slotProps", "slots"],
|
|
4
4
|
_excluded2 = ["startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "arcLabelRadius", "cornerRadius"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
@@ -43,7 +43,6 @@ function PieArcLabelPlot(props) {
|
|
|
43
43
|
additionalRadius: -5
|
|
44
44
|
},
|
|
45
45
|
highlighted,
|
|
46
|
-
highlightScope,
|
|
47
46
|
id,
|
|
48
47
|
innerRadius,
|
|
49
48
|
outerRadius,
|
|
@@ -60,7 +59,6 @@ function PieArcLabelPlot(props) {
|
|
|
60
59
|
cornerRadius,
|
|
61
60
|
paddingAngle,
|
|
62
61
|
id,
|
|
63
|
-
highlightScope,
|
|
64
62
|
highlighted,
|
|
65
63
|
faded,
|
|
66
64
|
data
|
|
@@ -105,7 +103,7 @@ function PieArcLabelPlot(props) {
|
|
|
105
103
|
process.env.NODE_ENV !== "production" ? PieArcLabelPlot.propTypes = {
|
|
106
104
|
// ----------------------------- Warning --------------------------------
|
|
107
105
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
108
|
-
// | To update them edit the TypeScript types and run "
|
|
106
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
109
107
|
// ----------------------------------------------------------------------
|
|
110
108
|
/**
|
|
111
109
|
* The label displayed into the arc.
|
|
@@ -162,10 +160,6 @@ process.env.NODE_ENV !== "production" ? PieArcLabelPlot.propTypes = {
|
|
|
162
160
|
outerRadius: PropTypes.number,
|
|
163
161
|
paddingAngle: PropTypes.number
|
|
164
162
|
}),
|
|
165
|
-
highlightScope: PropTypes.shape({
|
|
166
|
-
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
167
|
-
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
168
|
-
}),
|
|
169
163
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
170
164
|
/**
|
|
171
165
|
* The radius between circle center and the beginning of the arc.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["slots", "slotProps", "innerRadius", "outerRadius", "cornerRadius", "paddingAngle", "id", "
|
|
3
|
+
const _excluded = ["slots", "slotProps", "innerRadius", "outerRadius", "cornerRadius", "paddingAngle", "id", "highlighted", "faded", "data", "onItemClick", "skipAnimation"],
|
|
4
4
|
_excluded2 = ["startAngle", "endAngle", "paddingAngle", "innerRadius", "arcLabelRadius", "outerRadius", "cornerRadius"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
@@ -8,6 +8,7 @@ import { useTransition } from '@react-spring/web';
|
|
|
8
8
|
import { PieArc } from './PieArc';
|
|
9
9
|
import { defaultTransitionConfig } from './dataTransform/transition';
|
|
10
10
|
import { useTransformData } from './dataTransform/useTransformData';
|
|
11
|
+
import { useHighlighted } from '../context';
|
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
13
|
function PieArcPlot(props) {
|
|
13
14
|
const {
|
|
@@ -18,7 +19,6 @@ function PieArcPlot(props) {
|
|
|
18
19
|
cornerRadius = 0,
|
|
19
20
|
paddingAngle = 0,
|
|
20
21
|
id,
|
|
21
|
-
highlightScope,
|
|
22
22
|
highlighted,
|
|
23
23
|
faded = {
|
|
24
24
|
additionalRadius: -5
|
|
@@ -34,7 +34,6 @@ function PieArcPlot(props) {
|
|
|
34
34
|
cornerRadius,
|
|
35
35
|
paddingAngle,
|
|
36
36
|
id,
|
|
37
|
-
highlightScope,
|
|
38
37
|
highlighted,
|
|
39
38
|
faded,
|
|
40
39
|
data
|
|
@@ -42,6 +41,9 @@ function PieArcPlot(props) {
|
|
|
42
41
|
const transition = useTransition(transformedData, _extends({}, defaultTransitionConfig, {
|
|
43
42
|
immediate: skipAnimation
|
|
44
43
|
}));
|
|
44
|
+
const {
|
|
45
|
+
highlightScope
|
|
46
|
+
} = useHighlighted();
|
|
45
47
|
if (data.length === 0) {
|
|
46
48
|
return null;
|
|
47
49
|
}
|
|
@@ -85,7 +87,7 @@ function PieArcPlot(props) {
|
|
|
85
87
|
process.env.NODE_ENV !== "production" ? PieArcPlot.propTypes = {
|
|
86
88
|
// ----------------------------- Warning --------------------------------
|
|
87
89
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
88
|
-
// | To update them edit the TypeScript types and run "
|
|
90
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
89
91
|
// ----------------------------------------------------------------------
|
|
90
92
|
/**
|
|
91
93
|
* The radius between circle center and the arc label in px.
|
|
@@ -133,10 +135,6 @@ process.env.NODE_ENV !== "production" ? PieArcPlot.propTypes = {
|
|
|
133
135
|
outerRadius: PropTypes.number,
|
|
134
136
|
paddingAngle: PropTypes.number
|
|
135
137
|
}),
|
|
136
|
-
highlightScope: PropTypes.shape({
|
|
137
|
-
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
138
|
-
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
139
|
-
}),
|
|
140
138
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
141
139
|
/**
|
|
142
140
|
* The radius between circle center and the beginning of the arc.
|
package/esm/PieChart/PieChart.js
CHANGED
|
@@ -61,7 +61,9 @@ function PieChart(props) {
|
|
|
61
61
|
slots,
|
|
62
62
|
slotProps,
|
|
63
63
|
onItemClick,
|
|
64
|
-
loading
|
|
64
|
+
loading,
|
|
65
|
+
highlightedItem,
|
|
66
|
+
onHighlightChange
|
|
65
67
|
} = props;
|
|
66
68
|
const isRTL = useIsRTL();
|
|
67
69
|
const margin = _extends({}, isRTL ? defaultRTLMargin : defaultMargin, marginProps);
|
|
@@ -88,6 +90,8 @@ function PieChart(props) {
|
|
|
88
90
|
colors: colors,
|
|
89
91
|
sx: sx,
|
|
90
92
|
disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
|
|
93
|
+
highlightedItem: highlightedItem,
|
|
94
|
+
onHighlightChange: onHighlightChange,
|
|
91
95
|
children: [/*#__PURE__*/_jsx(ChartsAxis, {
|
|
92
96
|
topAxis: topAxis,
|
|
93
97
|
leftAxis: leftAxis,
|
|
@@ -116,7 +120,7 @@ function PieChart(props) {
|
|
|
116
120
|
process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
117
121
|
// ----------------------------- Warning --------------------------------
|
|
118
122
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
119
|
-
// | To update them edit the TypeScript types and run "
|
|
123
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
120
124
|
// ----------------------------------------------------------------------
|
|
121
125
|
/**
|
|
122
126
|
* The configuration of axes highlight.
|
|
@@ -155,6 +159,13 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
155
159
|
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
156
160
|
*/
|
|
157
161
|
height: PropTypes.number,
|
|
162
|
+
/**
|
|
163
|
+
* The item currently highlighted. Turns highlighting into a controlled prop.
|
|
164
|
+
*/
|
|
165
|
+
highlightedItem: PropTypes.shape({
|
|
166
|
+
dataIndex: PropTypes.number,
|
|
167
|
+
seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
168
|
+
}),
|
|
158
169
|
/**
|
|
159
170
|
* Indicate which axis to display the left of the charts.
|
|
160
171
|
* Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
|
|
@@ -194,6 +205,12 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
194
205
|
right: PropTypes.number,
|
|
195
206
|
top: PropTypes.number
|
|
196
207
|
}),
|
|
208
|
+
/**
|
|
209
|
+
* The callback fired when the highlighted item changes.
|
|
210
|
+
*
|
|
211
|
+
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
212
|
+
*/
|
|
213
|
+
onHighlightChange: PropTypes.func,
|
|
197
214
|
/**
|
|
198
215
|
* Callback fired when a pie arc is clicked.
|
|
199
216
|
*/
|
package/esm/PieChart/PiePlot.js
CHANGED
|
@@ -49,8 +49,7 @@ function PiePlot(props) {
|
|
|
49
49
|
cx: cxParam,
|
|
50
50
|
cy: cyParam,
|
|
51
51
|
highlighted,
|
|
52
|
-
faded
|
|
53
|
-
highlightScope
|
|
52
|
+
faded
|
|
54
53
|
} = series[seriesId];
|
|
55
54
|
const {
|
|
56
55
|
cx,
|
|
@@ -75,7 +74,6 @@ function PiePlot(props) {
|
|
|
75
74
|
id: seriesId,
|
|
76
75
|
data: data,
|
|
77
76
|
skipAnimation: skipAnimation,
|
|
78
|
-
highlightScope: highlightScope,
|
|
79
77
|
highlighted: highlighted,
|
|
80
78
|
faded: faded,
|
|
81
79
|
onItemClick: onItemClick,
|
|
@@ -94,8 +92,7 @@ function PiePlot(props) {
|
|
|
94
92
|
arcLabelMinAngle,
|
|
95
93
|
data,
|
|
96
94
|
cx: cxParam,
|
|
97
|
-
cy: cyParam
|
|
98
|
-
highlightScope
|
|
95
|
+
cy: cyParam
|
|
99
96
|
} = series[seriesId];
|
|
100
97
|
const {
|
|
101
98
|
cx,
|
|
@@ -124,7 +121,6 @@ function PiePlot(props) {
|
|
|
124
121
|
skipAnimation: skipAnimation,
|
|
125
122
|
arcLabel: arcLabel,
|
|
126
123
|
arcLabelMinAngle: arcLabelMinAngle,
|
|
127
|
-
highlightScope: highlightScope,
|
|
128
124
|
slots: slots,
|
|
129
125
|
slotProps: slotProps
|
|
130
126
|
})
|
|
@@ -135,7 +131,7 @@ function PiePlot(props) {
|
|
|
135
131
|
process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
|
|
136
132
|
// ----------------------------- Warning --------------------------------
|
|
137
133
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
138
|
-
// | To update them edit the TypeScript types and run "
|
|
134
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
139
135
|
// ----------------------------------------------------------------------
|
|
140
136
|
/**
|
|
141
137
|
* Callback fired when a pie item is clicked.
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { getIsHighlighted, getIsFaded } from '../../hooks/useInteractionItemProps';
|
|
3
|
+
import { useHighlighted } from '../../context';
|
|
5
4
|
export function useTransformData(series) {
|
|
6
5
|
const {
|
|
7
6
|
id: seriesId,
|
|
8
|
-
highlightScope,
|
|
9
7
|
data,
|
|
10
8
|
faded,
|
|
11
9
|
highlighted,
|
|
@@ -16,29 +14,16 @@ export function useTransformData(series) {
|
|
|
16
14
|
cornerRadius: baseCornerRadius = 0
|
|
17
15
|
} = series;
|
|
18
16
|
const {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
seriesId,
|
|
25
|
-
dataIndex
|
|
26
|
-
}, highlightScope);
|
|
27
|
-
const isFaded = !isHighlighted && getIsFaded(highlightedItem, {
|
|
28
|
-
type: 'pie',
|
|
17
|
+
isFaded: isItemFaded,
|
|
18
|
+
isHighlighted: isItemHighlighted
|
|
19
|
+
} = useHighlighted();
|
|
20
|
+
const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
|
|
21
|
+
const currentItem = {
|
|
29
22
|
seriesId,
|
|
30
|
-
dataIndex
|
|
31
|
-
}, highlightScope);
|
|
32
|
-
return {
|
|
33
|
-
isHighlighted,
|
|
34
|
-
isFaded
|
|
23
|
+
dataIndex: itemIndex
|
|
35
24
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const {
|
|
39
|
-
isHighlighted,
|
|
40
|
-
isFaded
|
|
41
|
-
} = getHighlightStatus(itemIndex);
|
|
25
|
+
const isHighlighted = isItemHighlighted(currentItem);
|
|
26
|
+
const isFaded = !isHighlighted && isItemFaded(currentItem);
|
|
42
27
|
const attributesOverride = _extends({
|
|
43
28
|
additionalRadius: 0
|
|
44
29
|
}, isFaded && faded || isHighlighted && highlighted || {});
|
|
@@ -56,6 +41,6 @@ export function useTransformData(series) {
|
|
|
56
41
|
cornerRadius,
|
|
57
42
|
arcLabelRadius
|
|
58
43
|
});
|
|
59
|
-
}), [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, baseArcLabelRadius, data, faded,
|
|
44
|
+
}), [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, baseArcLabelRadius, data, faded, highlighted, isItemFaded, isItemHighlighted, seriesId]);
|
|
60
45
|
return dataWithHighlight;
|
|
61
46
|
}
|
|
@@ -50,7 +50,7 @@ const ResponsiveChartContainer = /*#__PURE__*/React.forwardRef(function Responsi
|
|
|
50
50
|
process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
51
51
|
// ----------------------------- Warning --------------------------------
|
|
52
52
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
53
|
-
// | To update them edit the TypeScript types and run "
|
|
53
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
54
54
|
// ----------------------------------------------------------------------
|
|
55
55
|
children: PropTypes.node,
|
|
56
56
|
className: PropTypes.string,
|
|
@@ -74,6 +74,13 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
74
74
|
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
75
75
|
*/
|
|
76
76
|
height: PropTypes.number,
|
|
77
|
+
/**
|
|
78
|
+
* The item currently highlighted. Turns highlighting into a controlled prop.
|
|
79
|
+
*/
|
|
80
|
+
highlightedItem: PropTypes.shape({
|
|
81
|
+
dataIndex: PropTypes.number,
|
|
82
|
+
seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
83
|
+
}),
|
|
77
84
|
/**
|
|
78
85
|
* The margin between the SVG and the drawing area.
|
|
79
86
|
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
@@ -86,6 +93,12 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
86
93
|
right: PropTypes.number,
|
|
87
94
|
top: PropTypes.number
|
|
88
95
|
}),
|
|
96
|
+
/**
|
|
97
|
+
* The callback fired when the highlighted item changes.
|
|
98
|
+
*
|
|
99
|
+
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
100
|
+
*/
|
|
101
|
+
onHighlightChange: PropTypes.func,
|
|
89
102
|
/**
|
|
90
103
|
* The array of series to display.
|
|
91
104
|
* Each type of series has its own specificity.
|
|
@@ -2,8 +2,9 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { getValueToPositionMapper } from '../hooks/useScale';
|
|
5
|
-
import {
|
|
5
|
+
import { useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
6
6
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
7
|
+
import { useHighlighted } from '../context';
|
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
9
|
/**
|
|
9
10
|
* Demos:
|
|
@@ -25,16 +26,15 @@ function Scatter(props) {
|
|
|
25
26
|
markerSize,
|
|
26
27
|
onItemClick
|
|
27
28
|
} = props;
|
|
28
|
-
const highlightScope = React.useMemo(() => _extends({
|
|
29
|
-
highlighted: 'item',
|
|
30
|
-
faded: 'global'
|
|
31
|
-
}, series.highlightScope), [series.highlightScope]);
|
|
32
29
|
const {
|
|
33
|
-
item,
|
|
34
30
|
useVoronoiInteraction
|
|
35
31
|
} = React.useContext(InteractionContext);
|
|
36
32
|
const skipInteractionHandlers = useVoronoiInteraction || series.disableHover;
|
|
37
|
-
const getInteractionItemProps = useInteractionItemProps(
|
|
33
|
+
const getInteractionItemProps = useInteractionItemProps(skipInteractionHandlers);
|
|
34
|
+
const {
|
|
35
|
+
isFaded,
|
|
36
|
+
isHighlighted
|
|
37
|
+
} = useHighlighted();
|
|
38
38
|
const cleanData = React.useMemo(() => {
|
|
39
39
|
const getXPosition = getValueToPositionMapper(xScale);
|
|
40
40
|
const getYPosition = getValueToPositionMapper(yScale);
|
|
@@ -56,12 +56,16 @@ function Scatter(props) {
|
|
|
56
56
|
dataIndex: i
|
|
57
57
|
};
|
|
58
58
|
if (isInRange) {
|
|
59
|
-
const
|
|
59
|
+
const currentItem = {
|
|
60
|
+
seriesId: pointCtx.seriesId,
|
|
61
|
+
dataIndex: pointCtx.dataIndex
|
|
62
|
+
};
|
|
63
|
+
const isItemHighlighted = isHighlighted(currentItem);
|
|
60
64
|
temp.push({
|
|
61
65
|
x,
|
|
62
66
|
y,
|
|
63
|
-
isHighlighted,
|
|
64
|
-
isFaded: !
|
|
67
|
+
isHighlighted: isItemHighlighted,
|
|
68
|
+
isFaded: !isItemHighlighted && isFaded(currentItem),
|
|
65
69
|
interactionProps: getInteractionItemProps(pointCtx),
|
|
66
70
|
id: scatterPoint.id,
|
|
67
71
|
dataIndex: i,
|
|
@@ -70,7 +74,7 @@ function Scatter(props) {
|
|
|
70
74
|
}
|
|
71
75
|
}
|
|
72
76
|
return temp;
|
|
73
|
-
}, [xScale, yScale, series.data, series.id,
|
|
77
|
+
}, [xScale, yScale, series.data, series.id, getInteractionItemProps, color, colorGetter, isFaded, isHighlighted]);
|
|
74
78
|
return /*#__PURE__*/_jsx("g", {
|
|
75
79
|
children: cleanData.map(dataPoint => /*#__PURE__*/_jsx("circle", _extends({
|
|
76
80
|
cx: 0,
|
|
@@ -91,7 +95,7 @@ function Scatter(props) {
|
|
|
91
95
|
process.env.NODE_ENV !== "production" ? Scatter.propTypes = {
|
|
92
96
|
// ----------------------------- Warning --------------------------------
|
|
93
97
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
94
|
-
// | To update them edit the TypeScript types and run "
|
|
98
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
95
99
|
// ----------------------------------------------------------------------
|
|
96
100
|
color: PropTypes.string.isRequired,
|
|
97
101
|
colorGetter: PropTypes.func,
|
|
@@ -47,7 +47,9 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
|
|
|
47
47
|
children,
|
|
48
48
|
slots,
|
|
49
49
|
slotProps,
|
|
50
|
-
loading
|
|
50
|
+
loading,
|
|
51
|
+
highlightedItem,
|
|
52
|
+
onHighlightChange
|
|
51
53
|
} = props;
|
|
52
54
|
return /*#__PURE__*/_jsx(ResponsiveChartContainer, {
|
|
53
55
|
ref: ref,
|
|
@@ -61,6 +63,8 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
|
|
|
61
63
|
xAxis: xAxis,
|
|
62
64
|
yAxis: yAxis,
|
|
63
65
|
sx: sx,
|
|
66
|
+
highlightedItem: highlightedItem,
|
|
67
|
+
onHighlightChange: onHighlightChange,
|
|
64
68
|
children: /*#__PURE__*/_jsxs(ZAxisContextProvider, {
|
|
65
69
|
zAxis: zAxis,
|
|
66
70
|
children: [!disableVoronoi && /*#__PURE__*/_jsx(ChartsVoronoiHandler, {
|
|
@@ -99,7 +103,7 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
|
|
|
99
103
|
process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
100
104
|
// ----------------------------- Warning --------------------------------
|
|
101
105
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
102
|
-
// | To update them edit the TypeScript types and run "
|
|
106
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
103
107
|
// ----------------------------------------------------------------------
|
|
104
108
|
/**
|
|
105
109
|
* The configuration of axes highlight.
|
|
@@ -150,6 +154,13 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
150
154
|
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
151
155
|
*/
|
|
152
156
|
height: PropTypes.number,
|
|
157
|
+
/**
|
|
158
|
+
* The item currently highlighted. Turns highlighting into a controlled prop.
|
|
159
|
+
*/
|
|
160
|
+
highlightedItem: PropTypes.shape({
|
|
161
|
+
dataIndex: PropTypes.number,
|
|
162
|
+
seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
163
|
+
}),
|
|
153
164
|
/**
|
|
154
165
|
* Indicate which axis to display the left of the charts.
|
|
155
166
|
* Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
|
|
@@ -187,6 +198,12 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
187
198
|
right: PropTypes.number,
|
|
188
199
|
top: PropTypes.number
|
|
189
200
|
}),
|
|
201
|
+
/**
|
|
202
|
+
* The callback fired when the highlighted item changes.
|
|
203
|
+
*
|
|
204
|
+
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
205
|
+
*/
|
|
206
|
+
onHighlightChange: PropTypes.func,
|
|
190
207
|
/**
|
|
191
208
|
* Callback fired when clicking on a scatter item.
|
|
192
209
|
* @param {MouseEvent} event The mouse event recorded on the `<svg/>` element if using Voronoi cells. Or the Mouse event from the scatter element, when `disableVoronoi=true`.
|
|
@@ -74,7 +74,7 @@ function ScatterPlot(props) {
|
|
|
74
74
|
process.env.NODE_ENV !== "production" ? ScatterPlot.propTypes = {
|
|
75
75
|
// ----------------------------- Warning --------------------------------
|
|
76
76
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
77
|
-
// | To update them edit the TypeScript types and run "
|
|
77
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
78
78
|
// ----------------------------------------------------------------------
|
|
79
79
|
/**
|
|
80
80
|
* Callback fired when clicking on a scatter item.
|
|
@@ -105,7 +105,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
105
105
|
process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
106
106
|
// ----------------------------- Warning --------------------------------
|
|
107
107
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
108
|
-
// | To update them edit the TypeScript types and run "
|
|
108
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
109
109
|
// ----------------------------------------------------------------------
|
|
110
110
|
/**
|
|
111
111
|
* Set to `true` to fill spark line area.
|
|
@@ -147,6 +147,13 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
147
147
|
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
148
148
|
*/
|
|
149
149
|
height: PropTypes.number,
|
|
150
|
+
/**
|
|
151
|
+
* The item currently highlighted. Turns highlighting into a controlled prop.
|
|
152
|
+
*/
|
|
153
|
+
highlightedItem: PropTypes.shape({
|
|
154
|
+
dataIndex: PropTypes.number,
|
|
155
|
+
seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
156
|
+
}),
|
|
150
157
|
/**
|
|
151
158
|
* The margin between the SVG and the drawing area.
|
|
152
159
|
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
@@ -164,6 +171,12 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
164
171
|
right: PropTypes.number,
|
|
165
172
|
top: PropTypes.number
|
|
166
173
|
}),
|
|
174
|
+
/**
|
|
175
|
+
* The callback fired when the highlighted item changes.
|
|
176
|
+
*
|
|
177
|
+
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
178
|
+
*/
|
|
179
|
+
onHighlightChange: PropTypes.func,
|
|
167
180
|
/**
|
|
168
181
|
* Type of plot used.
|
|
169
182
|
* @default 'line'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The data of the highlighted item.
|
|
5
|
+
* To highlight an item, you need to provide the series id and the item id.
|
|
6
|
+
* If targeting the whole series, you can omit the item id.
|
|
7
|
+
* To clear the highlight, set the value to an empty object.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Highlight the item with the series id 'london' and the item id 0.
|
|
11
|
+
* { seriesId: 'london', dataIndex: 0 }
|
|
12
|
+
*
|
|
13
|
+
* // Highlight the whole series with the series id 'london'.
|
|
14
|
+
* { seriesId: 'london' }
|
|
15
|
+
*
|
|
16
|
+
* // Clear the highlight.
|
|
17
|
+
* {}
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export const HighlightedContext = /*#__PURE__*/React.createContext({
|
|
21
|
+
highlightedItem: null,
|
|
22
|
+
setHighlighted: () => {},
|
|
23
|
+
clearHighlighted: () => {},
|
|
24
|
+
isHighlighted: () => false,
|
|
25
|
+
isFaded: () => false
|
|
26
|
+
});
|
|
27
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
28
|
+
HighlightedContext.displayName = 'HighlightedContext';
|
|
29
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["highlighted", "faded"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import useControlled from '@mui/utils/useControlled';
|
|
7
|
+
import { HighlightedContext } from './HighlightedContext';
|
|
8
|
+
import { createIsFaded } from './createIsFaded';
|
|
9
|
+
import { createIsHighlighted } from './createIsHighlighted';
|
|
10
|
+
import { useSeries } from '../../hooks/useSeries';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
const mergeDeprecatedOptions = options => {
|
|
13
|
+
const _ref = options ?? {},
|
|
14
|
+
{
|
|
15
|
+
highlighted,
|
|
16
|
+
faded
|
|
17
|
+
} = _ref,
|
|
18
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
19
|
+
return _extends({
|
|
20
|
+
highlight: highlighted,
|
|
21
|
+
fade: faded
|
|
22
|
+
}, rest);
|
|
23
|
+
};
|
|
24
|
+
function HighlightedProvider({
|
|
25
|
+
children,
|
|
26
|
+
highlightedItem: highlightedItemProps,
|
|
27
|
+
onHighlightChange
|
|
28
|
+
}) {
|
|
29
|
+
const [highlightedItem, setHighlightedItem] = useControlled({
|
|
30
|
+
controlled: highlightedItemProps,
|
|
31
|
+
default: null,
|
|
32
|
+
name: 'HighlightedProvider',
|
|
33
|
+
state: 'highlightedItem'
|
|
34
|
+
});
|
|
35
|
+
const series = useSeries();
|
|
36
|
+
const seriesById = React.useMemo(() => {
|
|
37
|
+
const map = new Map();
|
|
38
|
+
Object.keys(series).forEach(seriesType => {
|
|
39
|
+
const seriesData = series[seriesType];
|
|
40
|
+
Object.keys(seriesData?.series ?? {}).forEach(seriesId => {
|
|
41
|
+
const seriesItem = seriesData?.series[seriesId];
|
|
42
|
+
map.set(seriesId, mergeDeprecatedOptions(seriesItem?.highlightScope));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
return map;
|
|
46
|
+
}, [series]);
|
|
47
|
+
const highlightScope = highlightedItem && highlightedItem.seriesId ? seriesById.get(highlightedItem.seriesId) ?? undefined : undefined;
|
|
48
|
+
const providerValue = React.useMemo(() => {
|
|
49
|
+
return {
|
|
50
|
+
highlightScope,
|
|
51
|
+
highlightedItem,
|
|
52
|
+
setHighlighted: itemData => {
|
|
53
|
+
setHighlightedItem(itemData);
|
|
54
|
+
onHighlightChange?.(itemData);
|
|
55
|
+
},
|
|
56
|
+
clearHighlighted: () => {
|
|
57
|
+
setHighlightedItem(null);
|
|
58
|
+
onHighlightChange?.(null);
|
|
59
|
+
},
|
|
60
|
+
isHighlighted: createIsHighlighted(highlightScope, highlightedItem),
|
|
61
|
+
isFaded: createIsFaded(highlightScope, highlightedItem)
|
|
62
|
+
};
|
|
63
|
+
}, [highlightedItem, highlightScope, setHighlightedItem, onHighlightChange]);
|
|
64
|
+
return /*#__PURE__*/_jsx(HighlightedContext.Provider, {
|
|
65
|
+
value: providerValue,
|
|
66
|
+
children: children
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
process.env.NODE_ENV !== "production" ? HighlightedProvider.propTypes = {
|
|
70
|
+
// ----------------------------- Warning --------------------------------
|
|
71
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
72
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
73
|
+
// ----------------------------------------------------------------------
|
|
74
|
+
children: PropTypes.node,
|
|
75
|
+
/**
|
|
76
|
+
* The item currently highlighted. Turns highlighting into a controlled prop.
|
|
77
|
+
*/
|
|
78
|
+
highlightedItem: PropTypes.shape({
|
|
79
|
+
dataIndex: PropTypes.number,
|
|
80
|
+
seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
81
|
+
}),
|
|
82
|
+
/**
|
|
83
|
+
* The callback fired when the highlighted item changes.
|
|
84
|
+
*
|
|
85
|
+
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
86
|
+
*/
|
|
87
|
+
onHighlightChange: PropTypes.func
|
|
88
|
+
} : void 0;
|
|
89
|
+
export { HighlightedProvider };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const createIsFaded = (highlightScope, highlightedItem) => input => {
|
|
2
|
+
if (!highlightScope) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
if (highlightScope.fade === 'series') {
|
|
6
|
+
return input.seriesId === highlightedItem?.seriesId && input.dataIndex !== highlightedItem?.dataIndex;
|
|
7
|
+
}
|
|
8
|
+
if (highlightScope.fade === 'global') {
|
|
9
|
+
return input.seriesId !== highlightedItem?.seriesId || input.dataIndex !== highlightedItem?.dataIndex;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
};
|