@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.
Files changed (214) hide show
  1. package/BarChart/BarChart.d.ts +2 -1
  2. package/BarChart/BarChart.js +24 -23
  3. package/BarChart/BarElement.d.ts +1 -1
  4. package/BarChart/BarElement.js +6 -3
  5. package/BarChart/BarPlot.d.ts +8 -1
  6. package/BarChart/BarPlot.js +19 -5
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +386 -38
  9. package/ChartContainer/ChartContainer.d.ts +12 -0
  10. package/ChartContainer/ChartContainer.js +197 -0
  11. package/ChartContainer/index.d.ts +1 -11
  12. package/ChartContainer/index.js +9 -63
  13. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
  14. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
  15. package/ChartsOnAxisClickHandler/index.d.ts +1 -0
  16. package/ChartsOnAxisClickHandler/index.js +16 -0
  17. package/ChartsOnAxisClickHandler/package.json +6 -0
  18. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  19. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  20. package/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  21. package/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  22. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
  23. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  24. package/ChartsTooltip/utils.d.ts +3 -1
  25. package/ChartsTooltip/utils.js +8 -0
  26. package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
  27. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  28. package/LineChart/AnimatedArea.d.ts +1361 -0
  29. package/LineChart/AnimatedArea.js +111 -0
  30. package/LineChart/AnimatedLine.d.ts +1361 -0
  31. package/LineChart/AnimatedLine.js +113 -0
  32. package/LineChart/AreaElement.d.ts +17 -17
  33. package/LineChart/AreaElement.js +17 -34
  34. package/LineChart/AreaPlot.d.ts +12 -7
  35. package/LineChart/AreaPlot.js +91 -58
  36. package/LineChart/LineChart.d.ts +13 -4
  37. package/LineChart/LineChart.js +36 -29
  38. package/LineChart/LineElement.d.ts +17 -17
  39. package/LineChart/LineElement.js +16 -36
  40. package/LineChart/LineHighlightElement.js +3 -2
  41. package/LineChart/LinePlot.d.ts +12 -7
  42. package/LineChart/LinePlot.js +89 -56
  43. package/LineChart/MarkElement.d.ts +5 -2
  44. package/LineChart/MarkElement.js +26 -13
  45. package/LineChart/MarkPlot.d.ts +8 -1
  46. package/LineChart/MarkPlot.js +80 -51
  47. package/LineChart/formatter.js +1 -1
  48. package/LineChart/index.d.ts +2 -0
  49. package/LineChart/index.js +22 -0
  50. package/PieChart/PieArcLabelPlot.d.ts +1 -1
  51. package/PieChart/PieArcLabelPlot.js +1 -1
  52. package/PieChart/PieArcPlot.d.ts +2 -2
  53. package/PieChart/PieArcPlot.js +6 -6
  54. package/PieChart/PieChart.d.ts +1 -1
  55. package/PieChart/PieChart.js +5 -50
  56. package/PieChart/PiePlot.d.ts +1 -1
  57. package/PieChart/PiePlot.js +4 -4
  58. package/README.md +2 -2
  59. package/ResponsiveChartContainer/ResponsiveChartContainer.d.ts +16 -0
  60. package/ResponsiveChartContainer/ResponsiveChartContainer.js +250 -0
  61. package/ResponsiveChartContainer/index.d.ts +1 -15
  62. package/ResponsiveChartContainer/index.js +8 -113
  63. package/ScatterChart/Scatter.d.ts +7 -1
  64. package/ScatterChart/Scatter.js +18 -23
  65. package/ScatterChart/ScatterChart.d.ts +8 -2
  66. package/ScatterChart/ScatterChart.js +12 -22
  67. package/ScatterChart/ScatterPlot.d.ts +1 -1
  68. package/ScatterChart/ScatterPlot.js +10 -2
  69. package/SparkLineChart/SparkLineChart.js +2 -0
  70. package/context/DrawingProvider.d.ts +6 -1
  71. package/context/DrawingProvider.js +9 -2
  72. package/context/InteractionProvider.d.ts +3 -3
  73. package/esm/BarChart/BarChart.js +24 -23
  74. package/esm/BarChart/BarElement.js +6 -3
  75. package/esm/BarChart/BarPlot.js +19 -5
  76. package/esm/BarChart/formatter.js +1 -1
  77. package/esm/ChartContainer/ChartContainer.js +189 -0
  78. package/esm/ChartContainer/index.js +1 -61
  79. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
  80. package/esm/ChartsOnAxisClickHandler/index.js +1 -0
  81. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  82. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  83. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  84. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  85. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
  86. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  87. package/esm/ChartsTooltip/utils.js +6 -0
  88. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  89. package/esm/LineChart/AnimatedArea.js +103 -0
  90. package/esm/LineChart/AnimatedLine.js +105 -0
  91. package/esm/LineChart/AreaElement.js +16 -33
  92. package/esm/LineChart/AreaPlot.js +92 -59
  93. package/esm/LineChart/LineChart.js +36 -29
  94. package/esm/LineChart/LineElement.js +16 -35
  95. package/esm/LineChart/LineHighlightElement.js +3 -2
  96. package/esm/LineChart/LinePlot.js +90 -57
  97. package/esm/LineChart/MarkElement.js +26 -13
  98. package/esm/LineChart/MarkPlot.js +80 -51
  99. package/esm/LineChart/formatter.js +1 -1
  100. package/esm/LineChart/index.js +2 -0
  101. package/esm/PieChart/PieArcLabelPlot.js +1 -1
  102. package/esm/PieChart/PieArcPlot.js +6 -6
  103. package/esm/PieChart/PieChart.js +5 -50
  104. package/esm/PieChart/PiePlot.js +4 -4
  105. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +245 -0
  106. package/esm/ResponsiveChartContainer/index.js +1 -115
  107. package/esm/ScatterChart/Scatter.js +18 -23
  108. package/esm/ScatterChart/ScatterChart.js +12 -22
  109. package/esm/ScatterChart/ScatterPlot.js +10 -2
  110. package/esm/SparkLineChart/SparkLineChart.js +2 -0
  111. package/esm/context/DrawingProvider.js +9 -2
  112. package/esm/hooks/useDrawingArea.js +7 -3
  113. package/esm/index.js +1 -0
  114. package/esm/internals/geometry.js +1 -1
  115. package/esm/internals/useAnimatedPath.js +29 -0
  116. package/esm/internals/utils.js +7 -0
  117. package/hooks/useDrawingArea.d.ts +2 -0
  118. package/hooks/useDrawingArea.js +7 -3
  119. package/index.d.ts +1 -0
  120. package/index.js +12 -1
  121. package/internals/geometry.js +1 -1
  122. package/internals/useAnimatedPath.d.ts +1 -0
  123. package/internals/useAnimatedPath.js +38 -0
  124. package/internals/utils.d.ts +4 -0
  125. package/internals/utils.js +8 -0
  126. package/legacy/BarChart/BarChart.js +24 -23
  127. package/legacy/BarChart/BarElement.js +5 -2
  128. package/legacy/BarChart/BarPlot.js +18 -4
  129. package/legacy/BarChart/formatter.js +1 -1
  130. package/legacy/ChartContainer/ChartContainer.js +187 -0
  131. package/legacy/ChartContainer/index.js +1 -59
  132. package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  133. package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
  134. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  135. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  136. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +8 -61
  137. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  138. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +9 -58
  139. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  140. package/legacy/ChartsTooltip/utils.js +6 -0
  141. package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
  142. package/legacy/LineChart/AnimatedArea.js +102 -0
  143. package/legacy/LineChart/AnimatedLine.js +104 -0
  144. package/legacy/LineChart/AreaElement.js +15 -35
  145. package/legacy/LineChart/AreaPlot.js +102 -66
  146. package/legacy/LineChart/LineChart.js +36 -29
  147. package/legacy/LineChart/LineElement.js +15 -37
  148. package/legacy/LineChart/LineHighlightElement.js +3 -2
  149. package/legacy/LineChart/LinePlot.js +97 -63
  150. package/legacy/LineChart/MarkElement.js +29 -12
  151. package/legacy/LineChart/MarkPlot.js +83 -53
  152. package/legacy/LineChart/formatter.js +1 -1
  153. package/legacy/LineChart/index.js +2 -0
  154. package/legacy/PieChart/PieArcLabelPlot.js +1 -1
  155. package/legacy/PieChart/PieArcPlot.js +6 -6
  156. package/legacy/PieChart/PieChart.js +5 -50
  157. package/legacy/PieChart/PiePlot.js +4 -4
  158. package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +253 -0
  159. package/legacy/ResponsiveChartContainer/index.js +1 -123
  160. package/legacy/ScatterChart/Scatter.js +20 -23
  161. package/legacy/ScatterChart/ScatterChart.js +12 -22
  162. package/legacy/ScatterChart/ScatterPlot.js +10 -2
  163. package/legacy/SparkLineChart/SparkLineChart.js +2 -0
  164. package/legacy/context/DrawingProvider.js +11 -2
  165. package/legacy/hooks/useDrawingArea.js +7 -3
  166. package/legacy/index.js +2 -1
  167. package/legacy/internals/geometry.js +1 -1
  168. package/legacy/internals/useAnimatedPath.js +32 -0
  169. package/legacy/internals/utils.js +7 -0
  170. package/modern/BarChart/BarChart.js +24 -23
  171. package/modern/BarChart/BarElement.js +6 -3
  172. package/modern/BarChart/BarPlot.js +19 -5
  173. package/modern/BarChart/formatter.js +1 -1
  174. package/modern/ChartContainer/ChartContainer.js +189 -0
  175. package/modern/ChartContainer/index.js +1 -61
  176. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  177. package/modern/ChartsOnAxisClickHandler/index.js +1 -0
  178. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  179. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  180. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -59
  181. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +1 -11
  182. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -58
  183. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -11
  184. package/modern/ChartsTooltip/utils.js +6 -0
  185. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  186. package/modern/LineChart/AnimatedArea.js +103 -0
  187. package/modern/LineChart/AnimatedLine.js +105 -0
  188. package/modern/LineChart/AreaElement.js +16 -33
  189. package/modern/LineChart/AreaPlot.js +91 -58
  190. package/modern/LineChart/LineChart.js +36 -29
  191. package/modern/LineChart/LineElement.js +16 -35
  192. package/modern/LineChart/LineHighlightElement.js +3 -2
  193. package/modern/LineChart/LinePlot.js +89 -56
  194. package/modern/LineChart/MarkElement.js +26 -13
  195. package/modern/LineChart/MarkPlot.js +80 -51
  196. package/modern/LineChart/formatter.js +1 -1
  197. package/modern/LineChart/index.js +2 -0
  198. package/modern/PieChart/PieArcLabelPlot.js +1 -1
  199. package/modern/PieChart/PieArcPlot.js +6 -6
  200. package/modern/PieChart/PieChart.js +5 -50
  201. package/modern/PieChart/PiePlot.js +4 -4
  202. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +242 -0
  203. package/modern/ResponsiveChartContainer/index.js +1 -112
  204. package/modern/ScatterChart/Scatter.js +18 -23
  205. package/modern/ScatterChart/ScatterChart.js +12 -22
  206. package/modern/ScatterChart/ScatterPlot.js +10 -2
  207. package/modern/SparkLineChart/SparkLineChart.js +2 -0
  208. package/modern/context/DrawingProvider.js +9 -2
  209. package/modern/hooks/useDrawingArea.js +7 -3
  210. package/modern/index.js +2 -1
  211. package/modern/internals/geometry.js +1 -1
  212. package/modern/internals/useAnimatedPath.js +29 -0
  213. package/modern/internals/utils.js +7 -0
  214. 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('path', {
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.flatMap(seriesId => {
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
- return xData?.map((x, index) => {
82
- const value = data[index] == null ? null : stackedData[index][1];
83
- return {
84
- x: xScale(x),
85
- y: value === null ? null : yScale(value),
86
- position: x,
87
- value,
88
- index
89
- };
90
- }).filter(({
91
- x,
92
- y,
93
- index,
94
- position,
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
- }).map(({
119
- x,
120
- y,
121
- index
122
- }) => {
123
- return /*#__PURE__*/_jsx(Mark, _extends({
124
- id: seriesId,
125
- dataIndex: index,
126
- shape: "circle",
127
- color: series[seriesId].color,
128
- x: x,
129
- y: y // Don't knwo why TS don't get from the filter that y can't be null
130
- ,
131
- highlightScope: series[seriesId].highlightScope
132
- }, slotProps?.mark), `${seriesId}-${index}`);
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 === null ? '' : v.toLocaleString())
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 skiped.
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", "onClick", "skipAnimation"],
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
- onClick,
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: onClick && (event => {
75
- onClick(event, {
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
- onClick: PropTypes.func,
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 skiped.
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
- onClick
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
- onClick: onClick,
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
- onClick: PropTypes.func,
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.shape({
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 skiped.
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
- onClick
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
- onClick: onClick,
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
- onClick: PropTypes.func,
127
+ onItemClick: PropTypes.func,
128
128
  /**
129
- * If `true`, animations are skiped.
129
+ * If `true`, animations are skipped.
130
130
  * @default false
131
131
  */
132
132
  skipAnimation: PropTypes.bool,