@mui/x-charts 7.0.0-alpha.9 → 7.0.0-beta.1
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.d.ts +2 -1
- package/BarChart/BarChart.js +24 -23
- package/BarChart/BarElement.d.ts +1 -1
- package/BarChart/BarElement.js +6 -3
- package/BarChart/BarPlot.d.ts +8 -1
- package/BarChart/BarPlot.js +19 -5
- package/BarChart/formatter.js +1 -1
- package/CHANGELOG.md +386 -38
- package/ChartContainer/ChartContainer.d.ts +12 -0
- package/ChartContainer/ChartContainer.js +197 -0
- package/ChartContainer/index.d.ts +1 -11
- package/ChartContainer/index.js +9 -63
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
- package/ChartsOnAxisClickHandler/index.d.ts +1 -0
- package/ChartsOnAxisClickHandler/index.js +16 -0
- package/ChartsOnAxisClickHandler/package.json +6 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
- package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
- package/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
- package/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
- package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
- package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
- package/ChartsTooltip/utils.d.ts +3 -1
- package/ChartsTooltip/utils.js +8 -0
- package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
- package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
- package/LineChart/AnimatedArea.d.ts +1361 -0
- package/LineChart/AnimatedArea.js +111 -0
- package/LineChart/AnimatedLine.d.ts +1361 -0
- package/LineChart/AnimatedLine.js +113 -0
- package/LineChart/AreaElement.d.ts +17 -17
- package/LineChart/AreaElement.js +17 -34
- package/LineChart/AreaPlot.d.ts +12 -7
- package/LineChart/AreaPlot.js +91 -58
- package/LineChart/LineChart.d.ts +13 -4
- package/LineChart/LineChart.js +36 -29
- package/LineChart/LineElement.d.ts +17 -17
- package/LineChart/LineElement.js +16 -36
- package/LineChart/LineHighlightElement.js +3 -2
- package/LineChart/LinePlot.d.ts +12 -7
- package/LineChart/LinePlot.js +89 -56
- package/LineChart/MarkElement.d.ts +5 -2
- package/LineChart/MarkElement.js +26 -13
- package/LineChart/MarkPlot.d.ts +8 -1
- package/LineChart/MarkPlot.js +80 -51
- package/LineChart/formatter.js +1 -1
- package/LineChart/index.d.ts +2 -0
- package/LineChart/index.js +22 -0
- package/PieChart/PieArcLabelPlot.d.ts +1 -1
- package/PieChart/PieArcLabelPlot.js +1 -1
- package/PieChart/PieArcPlot.d.ts +2 -2
- package/PieChart/PieArcPlot.js +6 -6
- package/PieChart/PieChart.d.ts +1 -1
- package/PieChart/PieChart.js +5 -50
- package/PieChart/PiePlot.d.ts +1 -1
- package/PieChart/PiePlot.js +4 -4
- package/README.md +2 -2
- package/ResponsiveChartContainer/ResponsiveChartContainer.d.ts +16 -0
- package/ResponsiveChartContainer/ResponsiveChartContainer.js +250 -0
- package/ResponsiveChartContainer/index.d.ts +1 -15
- package/ResponsiveChartContainer/index.js +8 -113
- package/ScatterChart/Scatter.d.ts +7 -1
- package/ScatterChart/Scatter.js +18 -23
- package/ScatterChart/ScatterChart.d.ts +8 -2
- package/ScatterChart/ScatterChart.js +12 -22
- package/ScatterChart/ScatterPlot.d.ts +1 -1
- package/ScatterChart/ScatterPlot.js +10 -2
- package/SparkLineChart/SparkLineChart.js +2 -0
- package/context/DrawingProvider.d.ts +6 -1
- package/context/DrawingProvider.js +9 -2
- package/context/InteractionProvider.d.ts +3 -3
- package/esm/BarChart/BarChart.js +24 -23
- package/esm/BarChart/BarElement.js +6 -3
- package/esm/BarChart/BarPlot.js +19 -5
- package/esm/BarChart/formatter.js +1 -1
- package/esm/ChartContainer/ChartContainer.js +189 -0
- package/esm/ChartContainer/index.js +1 -61
- package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
- package/esm/ChartsOnAxisClickHandler/index.js +1 -0
- package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
- package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
- package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
- package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
- package/esm/ChartsTooltip/utils.js +6 -0
- package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
- package/esm/LineChart/AnimatedArea.js +103 -0
- package/esm/LineChart/AnimatedLine.js +105 -0
- package/esm/LineChart/AreaElement.js +16 -33
- package/esm/LineChart/AreaPlot.js +92 -59
- package/esm/LineChart/LineChart.js +36 -29
- package/esm/LineChart/LineElement.js +16 -35
- package/esm/LineChart/LineHighlightElement.js +3 -2
- package/esm/LineChart/LinePlot.js +90 -57
- package/esm/LineChart/MarkElement.js +26 -13
- package/esm/LineChart/MarkPlot.js +80 -51
- package/esm/LineChart/formatter.js +1 -1
- package/esm/LineChart/index.js +2 -0
- package/esm/PieChart/PieArcLabelPlot.js +1 -1
- package/esm/PieChart/PieArcPlot.js +6 -6
- package/esm/PieChart/PieChart.js +5 -50
- package/esm/PieChart/PiePlot.js +4 -4
- package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +245 -0
- package/esm/ResponsiveChartContainer/index.js +1 -115
- package/esm/ScatterChart/Scatter.js +18 -23
- package/esm/ScatterChart/ScatterChart.js +12 -22
- package/esm/ScatterChart/ScatterPlot.js +10 -2
- package/esm/SparkLineChart/SparkLineChart.js +2 -0
- package/esm/context/DrawingProvider.js +9 -2
- package/esm/hooks/useDrawingArea.js +7 -3
- package/esm/index.js +1 -0
- package/esm/internals/geometry.js +1 -1
- package/esm/internals/useAnimatedPath.js +29 -0
- package/esm/internals/utils.js +7 -0
- package/hooks/useDrawingArea.d.ts +2 -0
- package/hooks/useDrawingArea.js +7 -3
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/internals/geometry.js +1 -1
- package/internals/useAnimatedPath.d.ts +1 -0
- package/internals/useAnimatedPath.js +38 -0
- package/internals/utils.d.ts +4 -0
- package/internals/utils.js +8 -0
- package/legacy/BarChart/BarChart.js +24 -23
- package/legacy/BarChart/BarElement.js +5 -2
- package/legacy/BarChart/BarPlot.js +18 -4
- package/legacy/BarChart/formatter.js +1 -1
- package/legacy/ChartContainer/ChartContainer.js +187 -0
- package/legacy/ChartContainer/index.js +1 -59
- package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
- package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
- package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
- package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
- package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +8 -61
- package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
- package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
- package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
- package/legacy/ChartsTooltip/utils.js +6 -0
- package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
- package/legacy/LineChart/AnimatedArea.js +102 -0
- package/legacy/LineChart/AnimatedLine.js +104 -0
- package/legacy/LineChart/AreaElement.js +15 -35
- package/legacy/LineChart/AreaPlot.js +102 -66
- package/legacy/LineChart/LineChart.js +36 -29
- package/legacy/LineChart/LineElement.js +15 -37
- package/legacy/LineChart/LineHighlightElement.js +3 -2
- package/legacy/LineChart/LinePlot.js +97 -63
- package/legacy/LineChart/MarkElement.js +29 -12
- package/legacy/LineChart/MarkPlot.js +83 -53
- package/legacy/LineChart/formatter.js +1 -1
- package/legacy/LineChart/index.js +2 -0
- package/legacy/PieChart/PieArcLabelPlot.js +1 -1
- package/legacy/PieChart/PieArcPlot.js +6 -6
- package/legacy/PieChart/PieChart.js +5 -50
- package/legacy/PieChart/PiePlot.js +4 -4
- package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +253 -0
- package/legacy/ResponsiveChartContainer/index.js +1 -123
- package/legacy/ScatterChart/Scatter.js +20 -23
- package/legacy/ScatterChart/ScatterChart.js +12 -22
- package/legacy/ScatterChart/ScatterPlot.js +10 -2
- package/legacy/SparkLineChart/SparkLineChart.js +2 -0
- package/legacy/context/DrawingProvider.js +11 -2
- package/legacy/hooks/useDrawingArea.js +7 -3
- package/legacy/index.js +2 -1
- package/legacy/internals/geometry.js +1 -1
- package/legacy/internals/useAnimatedPath.js +32 -0
- package/legacy/internals/utils.js +7 -0
- package/modern/BarChart/BarChart.js +24 -23
- package/modern/BarChart/BarElement.js +6 -3
- package/modern/BarChart/BarPlot.js +19 -5
- package/modern/BarChart/formatter.js +1 -1
- package/modern/ChartContainer/ChartContainer.js +189 -0
- package/modern/ChartContainer/index.js +1 -61
- package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
- package/modern/ChartsOnAxisClickHandler/index.js +1 -0
- package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
- package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
- package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
- package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
- package/modern/ChartsTooltip/utils.js +6 -0
- package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
- package/modern/LineChart/AnimatedArea.js +103 -0
- package/modern/LineChart/AnimatedLine.js +105 -0
- package/modern/LineChart/AreaElement.js +16 -33
- package/modern/LineChart/AreaPlot.js +91 -58
- package/modern/LineChart/LineChart.js +36 -29
- package/modern/LineChart/LineElement.js +16 -35
- package/modern/LineChart/LineHighlightElement.js +3 -2
- package/modern/LineChart/LinePlot.js +89 -56
- package/modern/LineChart/MarkElement.js +26 -13
- package/modern/LineChart/MarkPlot.js +80 -51
- package/modern/LineChart/formatter.js +1 -1
- package/modern/LineChart/index.js +2 -0
- package/modern/PieChart/PieArcLabelPlot.js +1 -1
- package/modern/PieChart/PieArcPlot.js +6 -6
- package/modern/PieChart/PieChart.js +5 -50
- package/modern/PieChart/PiePlot.js +4 -4
- package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +242 -0
- package/modern/ResponsiveChartContainer/index.js +1 -112
- package/modern/ScatterChart/Scatter.js +18 -23
- package/modern/ScatterChart/ScatterChart.js +12 -22
- package/modern/ScatterChart/ScatterPlot.js +10 -2
- package/modern/SparkLineChart/SparkLineChart.js +2 -0
- package/modern/context/DrawingProvider.js +9 -2
- package/modern/hooks/useDrawingArea.js +7 -3
- package/modern/index.js +2 -1
- package/modern/internals/geometry.js +1 -1
- package/modern/internals/useAnimatedPath.js +29 -0
- package/modern/internals/utils.js +7 -0
- package/package.json +6 -5
|
@@ -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 = ["x", "y", "id", "classes", "color", "shape", "dataIndex", "highlightScope"];
|
|
3
|
+
const _excluded = ["x", "y", "id", "classes", "color", "shape", "dataIndex", "highlightScope", "onClick", "skipAnimation"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import composeClasses from '@mui/utils/composeClasses';
|
|
@@ -8,6 +8,7 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
|
8
8
|
import { styled } from '@mui/material/styles';
|
|
9
9
|
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
10
10
|
import { symbol as d3Symbol, symbolsFill as d3SymbolsFill } from 'd3-shape';
|
|
11
|
+
import { animated, to, useSpring } from '@react-spring/web';
|
|
11
12
|
import { getSymbol } from '../internals/utils';
|
|
12
13
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
13
14
|
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
@@ -28,7 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
28
29
|
};
|
|
29
30
|
return composeClasses(slots, getMarkElementUtilityClass, classes);
|
|
30
31
|
};
|
|
31
|
-
const MarkElementPath = styled(
|
|
32
|
+
const MarkElementPath = styled(animated.path, {
|
|
32
33
|
name: 'MuiMarkElement',
|
|
33
34
|
slot: 'Root',
|
|
34
35
|
overridesResolver: (_, styles) => styles.root
|
|
@@ -36,8 +37,6 @@ const MarkElementPath = styled('path', {
|
|
|
36
37
|
ownerState,
|
|
37
38
|
theme
|
|
38
39
|
}) => ({
|
|
39
|
-
transform: `translate(${ownerState.x}px, ${ownerState.y}px)`,
|
|
40
|
-
transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
|
|
41
40
|
fill: (theme.vars || theme).palette.background.paper,
|
|
42
41
|
stroke: ownerState.color,
|
|
43
42
|
strokeWidth: 2
|
|
@@ -53,9 +52,7 @@ MarkElementPath.propTypes = {
|
|
|
53
52
|
color: PropTypes.string.isRequired,
|
|
54
53
|
id: PropTypes.string.isRequired,
|
|
55
54
|
isFaded: PropTypes.bool.isRequired,
|
|
56
|
-
isHighlighted: PropTypes.bool.isRequired
|
|
57
|
-
x: PropTypes.number.isRequired,
|
|
58
|
-
y: PropTypes.number.isRequired
|
|
55
|
+
isHighlighted: PropTypes.bool.isRequired
|
|
59
56
|
}).isRequired,
|
|
60
57
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
61
58
|
};
|
|
@@ -78,7 +75,9 @@ function MarkElement(props) {
|
|
|
78
75
|
color,
|
|
79
76
|
shape,
|
|
80
77
|
dataIndex,
|
|
81
|
-
highlightScope
|
|
78
|
+
highlightScope,
|
|
79
|
+
onClick,
|
|
80
|
+
skipAnimation
|
|
82
81
|
} = props,
|
|
83
82
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
84
83
|
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
@@ -94,20 +93,29 @@ function MarkElement(props) {
|
|
|
94
93
|
type: 'line',
|
|
95
94
|
seriesId: id
|
|
96
95
|
}, highlightScope);
|
|
96
|
+
const position = useSpring({
|
|
97
|
+
x,
|
|
98
|
+
y,
|
|
99
|
+
immediate: skipAnimation
|
|
100
|
+
});
|
|
97
101
|
const ownerState = {
|
|
98
102
|
id,
|
|
99
103
|
classes: innerClasses,
|
|
100
104
|
isHighlighted,
|
|
101
105
|
isFaded,
|
|
102
|
-
color
|
|
103
|
-
x,
|
|
104
|
-
y
|
|
106
|
+
color
|
|
105
107
|
};
|
|
106
108
|
const classes = useUtilityClasses(ownerState);
|
|
107
109
|
return /*#__PURE__*/_jsx(MarkElementPath, _extends({}, other, {
|
|
110
|
+
style: {
|
|
111
|
+
transform: to([position.x, position.y], (pX, pY) => `translate(${pX}px, ${pY}px)`),
|
|
112
|
+
transformOrigin: to([position.x, position.y], (pX, pY) => `${pX}px ${pY}px`)
|
|
113
|
+
},
|
|
108
114
|
ownerState: ownerState,
|
|
109
115
|
className: classes.root,
|
|
110
|
-
d: d3Symbol(d3SymbolsFill[getSymbol(shape)])()
|
|
116
|
+
d: d3Symbol(d3SymbolsFill[getSymbol(shape)])(),
|
|
117
|
+
onClick: onClick,
|
|
118
|
+
cursor: onClick ? 'pointer' : 'unset'
|
|
111
119
|
}, getInteractionItemProps({
|
|
112
120
|
type: 'line',
|
|
113
121
|
seriesId: id,
|
|
@@ -131,6 +139,11 @@ process.env.NODE_ENV !== "production" ? MarkElement.propTypes = {
|
|
|
131
139
|
/**
|
|
132
140
|
* The shape of the marker.
|
|
133
141
|
*/
|
|
134
|
-
shape: PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']).isRequired
|
|
142
|
+
shape: PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']).isRequired,
|
|
143
|
+
/**
|
|
144
|
+
* If `true`, animations are skipped.
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
147
|
+
skipAnimation: PropTypes.bool
|
|
135
148
|
} : void 0;
|
|
136
149
|
export { MarkElement };
|
|
@@ -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"];
|
|
3
|
+
const _excluded = ["slots", "slotProps", "skipAnimation", "onItemClick"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
@@ -8,6 +8,8 @@ import { CartesianContext } from '../context/CartesianContextProvider';
|
|
|
8
8
|
import { MarkElement } from './MarkElement';
|
|
9
9
|
import { getValueToPositionMapper } from '../hooks/useScale';
|
|
10
10
|
import { DEFAULT_X_AXIS_KEY } from '../constants';
|
|
11
|
+
import { DrawingContext } from '../context/DrawingProvider';
|
|
12
|
+
import { cleanId } from '../internals/utils';
|
|
11
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
14
|
/**
|
|
13
15
|
* Demos:
|
|
@@ -22,11 +24,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
22
24
|
function MarkPlot(props) {
|
|
23
25
|
const {
|
|
24
26
|
slots,
|
|
25
|
-
slotProps
|
|
27
|
+
slotProps,
|
|
28
|
+
skipAnimation,
|
|
29
|
+
onItemClick
|
|
26
30
|
} = props,
|
|
27
31
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
28
32
|
const seriesData = React.useContext(SeriesContext).line;
|
|
29
33
|
const axisData = React.useContext(CartesianContext);
|
|
34
|
+
const {
|
|
35
|
+
chartId
|
|
36
|
+
} = React.useContext(DrawingContext);
|
|
30
37
|
const Mark = slots?.mark ?? MarkElement;
|
|
31
38
|
if (seriesData === undefined) {
|
|
32
39
|
return null;
|
|
@@ -47,7 +54,7 @@ function MarkPlot(props) {
|
|
|
47
54
|
children: stackingGroups.flatMap(({
|
|
48
55
|
ids: groupIds
|
|
49
56
|
}) => {
|
|
50
|
-
return groupIds.
|
|
57
|
+
return groupIds.map(seriesId => {
|
|
51
58
|
const {
|
|
52
59
|
xAxisKey = defaultXAxisId,
|
|
53
60
|
yAxisKey = defaultYAxisId,
|
|
@@ -78,59 +85,70 @@ function MarkPlot(props) {
|
|
|
78
85
|
if (xData === undefined) {
|
|
79
86
|
throw new Error(`MUI X Charts: ${xAxisKey === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} should have data property to be able to display a line plot.`);
|
|
80
87
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
value
|
|
96
|
-
}) => {
|
|
97
|
-
if (value === null || y === null) {
|
|
98
|
-
// Remove missing data point
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
if (!isInRange({
|
|
102
|
-
x,
|
|
103
|
-
y
|
|
104
|
-
})) {
|
|
105
|
-
// Remove out of range
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
if (showMark === true) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
return showMark({
|
|
88
|
+
const clipId = cleanId(`${chartId}-${seriesId}-line-clip`); // We assume that if displaying line mark, the line will also be rendered
|
|
89
|
+
|
|
90
|
+
return /*#__PURE__*/_jsx("g", {
|
|
91
|
+
clipPath: `url(#${clipId})`,
|
|
92
|
+
children: xData?.map((x, index) => {
|
|
93
|
+
const value = data[index] == null ? null : stackedData[index][1];
|
|
94
|
+
return {
|
|
95
|
+
x: xScale(x),
|
|
96
|
+
y: value === null ? null : yScale(value),
|
|
97
|
+
position: x,
|
|
98
|
+
value,
|
|
99
|
+
index
|
|
100
|
+
};
|
|
101
|
+
}).filter(({
|
|
112
102
|
x,
|
|
113
103
|
y,
|
|
114
104
|
index,
|
|
115
105
|
position,
|
|
116
106
|
value
|
|
117
|
-
})
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
107
|
+
}) => {
|
|
108
|
+
if (value === null || y === null) {
|
|
109
|
+
// Remove missing data point
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (!isInRange({
|
|
113
|
+
x,
|
|
114
|
+
y
|
|
115
|
+
})) {
|
|
116
|
+
// Remove out of range
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (showMark === true) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return showMark({
|
|
123
|
+
x,
|
|
124
|
+
y,
|
|
125
|
+
index,
|
|
126
|
+
position,
|
|
127
|
+
value
|
|
128
|
+
});
|
|
129
|
+
}).map(({
|
|
130
|
+
x,
|
|
131
|
+
y,
|
|
132
|
+
index
|
|
133
|
+
}) => {
|
|
134
|
+
return /*#__PURE__*/_jsx(Mark, _extends({
|
|
135
|
+
id: seriesId,
|
|
136
|
+
dataIndex: index,
|
|
137
|
+
shape: "circle",
|
|
138
|
+
color: series[seriesId].color,
|
|
139
|
+
x: x,
|
|
140
|
+
y: y // Don't know why TS doesn't get from the filter that y can't be null
|
|
141
|
+
,
|
|
142
|
+
highlightScope: series[seriesId].highlightScope,
|
|
143
|
+
skipAnimation: skipAnimation,
|
|
144
|
+
onClick: onItemClick && (event => onItemClick(event, {
|
|
145
|
+
type: 'line',
|
|
146
|
+
seriesId,
|
|
147
|
+
dataIndex: index
|
|
148
|
+
}))
|
|
149
|
+
}, slotProps?.mark), `${seriesId}-${index}`);
|
|
150
|
+
})
|
|
151
|
+
}, seriesId);
|
|
134
152
|
});
|
|
135
153
|
})
|
|
136
154
|
}));
|
|
@@ -140,6 +158,17 @@ process.env.NODE_ENV !== "production" ? MarkPlot.propTypes = {
|
|
|
140
158
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
141
159
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
142
160
|
// ----------------------------------------------------------------------
|
|
161
|
+
/**
|
|
162
|
+
* Callback fired when a line mark item is clicked.
|
|
163
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
164
|
+
* @param {LineItemIdentifier} lineItemIdentifier The line mark item identifier.
|
|
165
|
+
*/
|
|
166
|
+
onItemClick: PropTypes.func,
|
|
167
|
+
/**
|
|
168
|
+
* If `true`, animations are skipped.
|
|
169
|
+
* @default false
|
|
170
|
+
*/
|
|
171
|
+
skipAnimation: PropTypes.bool,
|
|
143
172
|
/**
|
|
144
173
|
* The props used for each component slot.
|
|
145
174
|
* @default {}
|
|
@@ -69,7 +69,7 @@ const formatter = (params, dataset) => {
|
|
|
69
69
|
return {
|
|
70
70
|
seriesOrder,
|
|
71
71
|
stackingGroups,
|
|
72
|
-
series: defaultizeValueFormatter(completedSeries, v => v
|
|
72
|
+
series: defaultizeValueFormatter(completedSeries, v => v == null ? '' : v.toLocaleString())
|
|
73
73
|
};
|
|
74
74
|
};
|
|
75
75
|
export default formatter;
|
|
@@ -4,6 +4,8 @@ export * from './AreaPlot';
|
|
|
4
4
|
export * from './MarkPlot';
|
|
5
5
|
export * from './LineHighlightPlot';
|
|
6
6
|
export * from './AreaElement';
|
|
7
|
+
export * from './AnimatedArea';
|
|
7
8
|
export * from './LineElement';
|
|
9
|
+
export * from './AnimatedLine';
|
|
8
10
|
export * from './MarkElement';
|
|
9
11
|
export * from './LineHighlightElement';
|
|
@@ -173,7 +173,7 @@ process.env.NODE_ENV !== "production" ? PieArcLabelPlot.propTypes = {
|
|
|
173
173
|
*/
|
|
174
174
|
paddingAngle: PropTypes.number,
|
|
175
175
|
/**
|
|
176
|
-
* If `true`, animations are
|
|
176
|
+
* If `true`, animations are skipped.
|
|
177
177
|
* @default false
|
|
178
178
|
*/
|
|
179
179
|
skipAnimation: PropTypes.bool,
|
|
@@ -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", "highlightScope", "highlighted", "faded", "data", "
|
|
3
|
+
const _excluded = ["slots", "slotProps", "innerRadius", "outerRadius", "cornerRadius", "paddingAngle", "id", "highlightScope", "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';
|
|
@@ -24,7 +24,7 @@ function PieArcPlot(props) {
|
|
|
24
24
|
additionalRadius: -5
|
|
25
25
|
},
|
|
26
26
|
data,
|
|
27
|
-
|
|
27
|
+
onItemClick,
|
|
28
28
|
skipAnimation
|
|
29
29
|
} = props,
|
|
30
30
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
@@ -71,8 +71,8 @@ function PieArcPlot(props) {
|
|
|
71
71
|
highlightScope: highlightScope,
|
|
72
72
|
isFaded: item.isFaded,
|
|
73
73
|
isHighlighted: item.isHighlighted,
|
|
74
|
-
onClick:
|
|
75
|
-
|
|
74
|
+
onClick: onItemClick && (event => {
|
|
75
|
+
onItemClick(event, {
|
|
76
76
|
type: 'pie',
|
|
77
77
|
seriesId: id,
|
|
78
78
|
dataIndex: index
|
|
@@ -149,7 +149,7 @@ process.env.NODE_ENV !== "production" ? PieArcPlot.propTypes = {
|
|
|
149
149
|
* @param {PieItemIdentifier} pieItemIdentifier The pie item identifier.
|
|
150
150
|
* @param {DefaultizedPieValueType} item The pie item.
|
|
151
151
|
*/
|
|
152
|
-
|
|
152
|
+
onItemClick: PropTypes.func,
|
|
153
153
|
/**
|
|
154
154
|
* The radius between circle center and the end of the arc.
|
|
155
155
|
*/
|
|
@@ -160,7 +160,7 @@ process.env.NODE_ENV !== "production" ? PieArcPlot.propTypes = {
|
|
|
160
160
|
*/
|
|
161
161
|
paddingAngle: PropTypes.number,
|
|
162
162
|
/**
|
|
163
|
-
* If `true`, animations are
|
|
163
|
+
* If `true`, animations are skipped.
|
|
164
164
|
* @default false
|
|
165
165
|
*/
|
|
166
166
|
skipAnimation: PropTypes.bool,
|
|
@@ -59,7 +59,7 @@ function PieChart(props) {
|
|
|
59
59
|
children,
|
|
60
60
|
slots,
|
|
61
61
|
slotProps,
|
|
62
|
-
|
|
62
|
+
onItemClick
|
|
63
63
|
} = props;
|
|
64
64
|
const margin = _extends({}, defaultMargin, marginProps);
|
|
65
65
|
return /*#__PURE__*/_jsxs(ResponsiveChartContainer, {
|
|
@@ -88,7 +88,7 @@ function PieChart(props) {
|
|
|
88
88
|
}), /*#__PURE__*/_jsx(PiePlot, {
|
|
89
89
|
slots: slots,
|
|
90
90
|
slotProps: slotProps,
|
|
91
|
-
|
|
91
|
+
onItemClick: onItemClick,
|
|
92
92
|
skipAnimation: skipAnimation
|
|
93
93
|
}), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
|
|
94
94
|
slots: slots,
|
|
@@ -208,7 +208,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
208
208
|
right: PropTypes.number,
|
|
209
209
|
top: PropTypes.number
|
|
210
210
|
}),
|
|
211
|
-
|
|
211
|
+
onItemClick: PropTypes.func,
|
|
212
212
|
/**
|
|
213
213
|
* Indicate which axis to display the right of the charts.
|
|
214
214
|
* Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
|
|
@@ -236,54 +236,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
236
236
|
tickNumber: PropTypes.number,
|
|
237
237
|
tickSize: PropTypes.number
|
|
238
238
|
}), PropTypes.string]),
|
|
239
|
-
series: PropTypes.arrayOf(PropTypes.
|
|
240
|
-
arcLabel: PropTypes.oneOfType([PropTypes.oneOf(['formattedValue', 'label', 'value']), PropTypes.func]),
|
|
241
|
-
arcLabelMinAngle: PropTypes.number,
|
|
242
|
-
arcLabelRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
243
|
-
color: PropTypes.string,
|
|
244
|
-
cornerRadius: PropTypes.number,
|
|
245
|
-
cx: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
246
|
-
cy: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
247
|
-
data: PropTypes.arrayOf(PropTypes.shape({
|
|
248
|
-
color: PropTypes.string,
|
|
249
|
-
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
250
|
-
label: PropTypes.string,
|
|
251
|
-
value: PropTypes.number.isRequired
|
|
252
|
-
})).isRequired,
|
|
253
|
-
endAngle: PropTypes.number,
|
|
254
|
-
faded: PropTypes.shape({
|
|
255
|
-
additionalRadius: PropTypes.number,
|
|
256
|
-
arcLabelRadius: PropTypes.number,
|
|
257
|
-
color: PropTypes.string,
|
|
258
|
-
cornerRadius: PropTypes.number,
|
|
259
|
-
innerRadius: PropTypes.number,
|
|
260
|
-
outerRadius: PropTypes.number,
|
|
261
|
-
paddingAngle: PropTypes.number
|
|
262
|
-
}),
|
|
263
|
-
highlighted: PropTypes.shape({
|
|
264
|
-
additionalRadius: PropTypes.number,
|
|
265
|
-
arcLabelRadius: PropTypes.number,
|
|
266
|
-
color: PropTypes.string,
|
|
267
|
-
cornerRadius: PropTypes.number,
|
|
268
|
-
innerRadius: PropTypes.number,
|
|
269
|
-
outerRadius: PropTypes.number,
|
|
270
|
-
paddingAngle: PropTypes.number
|
|
271
|
-
}),
|
|
272
|
-
highlightScope: PropTypes.shape({
|
|
273
|
-
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
274
|
-
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
275
|
-
}),
|
|
276
|
-
id: PropTypes.string,
|
|
277
|
-
innerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
278
|
-
outerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
279
|
-
paddingAngle: PropTypes.number,
|
|
280
|
-
sortingValues: PropTypes.oneOfType([PropTypes.oneOf(['asc', 'desc', 'none']), PropTypes.func]),
|
|
281
|
-
startAngle: PropTypes.number,
|
|
282
|
-
type: PropTypes.oneOf(['pie']),
|
|
283
|
-
valueFormatter: PropTypes.func
|
|
284
|
-
})).isRequired,
|
|
239
|
+
series: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
285
240
|
/**
|
|
286
|
-
* If `true`, animations are
|
|
241
|
+
* If `true`, animations are skipped.
|
|
287
242
|
* @default false
|
|
288
243
|
*/
|
|
289
244
|
skipAnimation: PropTypes.bool,
|
|
@@ -22,7 +22,7 @@ function PiePlot(props) {
|
|
|
22
22
|
skipAnimation,
|
|
23
23
|
slots,
|
|
24
24
|
slotProps,
|
|
25
|
-
|
|
25
|
+
onItemClick
|
|
26
26
|
} = props;
|
|
27
27
|
const seriesData = React.useContext(SeriesContext).pie;
|
|
28
28
|
const {
|
|
@@ -70,7 +70,7 @@ function PiePlot(props) {
|
|
|
70
70
|
highlightScope: highlightScope,
|
|
71
71
|
highlighted: highlighted,
|
|
72
72
|
faded: faded,
|
|
73
|
-
|
|
73
|
+
onItemClick: onItemClick,
|
|
74
74
|
slots: slots,
|
|
75
75
|
slotProps: slotProps
|
|
76
76
|
})
|
|
@@ -124,9 +124,9 @@ process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
|
|
|
124
124
|
* @param {PieItemIdentifier} pieItemIdentifier The pie item identifier.
|
|
125
125
|
* @param {DefaultizedPieValueType} item The pie item.
|
|
126
126
|
*/
|
|
127
|
-
|
|
127
|
+
onItemClick: PropTypes.func,
|
|
128
128
|
/**
|
|
129
|
-
* If `true`, animations are
|
|
129
|
+
* If `true`, animations are skipped.
|
|
130
130
|
* @default false
|
|
131
131
|
*/
|
|
132
132
|
skipAnimation: PropTypes.bool,
|