@mui/x-charts 7.0.0-beta.0 → 7.0.0-beta.2

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 (258) hide show
  1. package/BarChart/BarChart.d.ts +2 -1
  2. package/BarChart/BarChart.js +33 -12
  3. package/BarChart/BarElement.d.ts +20 -13
  4. package/BarChart/BarElement.js +7 -3
  5. package/BarChart/BarPlot.d.ts +11 -6
  6. package/BarChart/BarPlot.js +28 -15
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +406 -1
  9. package/ChartContainer/ChartContainer.js +6 -4
  10. package/ChartsAxis/ChartsAxis.js +4 -4
  11. package/ChartsLegend/ChartsLegend.d.ts +5 -54
  12. package/ChartsLegend/ChartsLegend.js +2 -307
  13. package/ChartsLegend/DefaultChartsLegend.d.ts +60 -0
  14. package/ChartsLegend/DefaultChartsLegend.js +294 -0
  15. package/ChartsLegend/index.d.ts +1 -0
  16. package/ChartsLegend/index.js +11 -0
  17. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
  18. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
  19. package/ChartsOnAxisClickHandler/index.d.ts +1 -0
  20. package/ChartsOnAxisClickHandler/index.js +16 -0
  21. package/ChartsOnAxisClickHandler/package.json +6 -0
  22. package/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  23. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  24. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  25. package/ChartsReferenceLine/common.d.ts +2 -1
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  27. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  28. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  29. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  30. package/ChartsTooltip/utils.d.ts +4 -1
  31. package/ChartsTooltip/utils.js +15 -0
  32. package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
  33. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  34. package/ChartsXAxis/ChartsXAxis.js +13 -9
  35. package/ChartsYAxis/ChartsYAxis.js +1 -1
  36. package/LineChart/AnimatedArea.d.ts +1361 -0
  37. package/LineChart/AnimatedArea.js +111 -0
  38. package/LineChart/AnimatedLine.d.ts +1361 -0
  39. package/LineChart/AnimatedLine.js +113 -0
  40. package/LineChart/AreaElement.d.ts +19 -18
  41. package/LineChart/AreaElement.js +17 -34
  42. package/LineChart/AreaPlot.d.ts +12 -7
  43. package/LineChart/AreaPlot.js +91 -58
  44. package/LineChart/LineChart.d.ts +13 -4
  45. package/LineChart/LineChart.js +45 -14
  46. package/LineChart/LineElement.d.ts +19 -18
  47. package/LineChart/LineElement.js +16 -36
  48. package/LineChart/LineHighlightElement.d.ts +3 -2
  49. package/LineChart/LineHighlightElement.js +5 -3
  50. package/LineChart/LinePlot.d.ts +12 -7
  51. package/LineChart/LinePlot.js +89 -56
  52. package/LineChart/MarkElement.d.ts +8 -4
  53. package/LineChart/MarkElement.js +27 -13
  54. package/LineChart/MarkPlot.d.ts +8 -1
  55. package/LineChart/MarkPlot.js +80 -51
  56. package/LineChart/formatter.js +1 -1
  57. package/LineChart/index.d.ts +2 -0
  58. package/LineChart/index.js +22 -0
  59. package/PieChart/PieArc.d.ts +3 -2
  60. package/PieChart/PieArc.js +1 -0
  61. package/PieChart/PieArcLabel.d.ts +3 -2
  62. package/PieChart/PieArcLabel.js +1 -0
  63. package/PieChart/PieArcLabelPlot.d.ts +1 -1
  64. package/PieChart/PieArcLabelPlot.js +2 -2
  65. package/PieChart/PieArcPlot.d.ts +2 -2
  66. package/PieChart/PieArcPlot.js +7 -7
  67. package/PieChart/PieChart.d.ts +1 -1
  68. package/PieChart/PieChart.js +14 -12
  69. package/PieChart/PiePlot.d.ts +1 -1
  70. package/PieChart/PiePlot.js +4 -4
  71. package/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  72. package/ScatterChart/Scatter.d.ts +7 -1
  73. package/ScatterChart/Scatter.js +17 -3
  74. package/ScatterChart/ScatterChart.d.ts +8 -2
  75. package/ScatterChart/ScatterChart.js +21 -10
  76. package/ScatterChart/ScatterPlot.d.ts +1 -1
  77. package/ScatterChart/ScatterPlot.js +10 -2
  78. package/SparkLineChart/SparkLineChart.d.ts +1 -1
  79. package/SparkLineChart/SparkLineChart.js +7 -4
  80. package/context/CartesianContextProvider.js +8 -6
  81. package/context/DrawingProvider.d.ts +6 -1
  82. package/context/DrawingProvider.js +9 -2
  83. package/context/InteractionProvider.d.ts +3 -3
  84. package/esm/BarChart/BarChart.js +33 -12
  85. package/esm/BarChart/BarElement.js +7 -3
  86. package/esm/BarChart/BarPlot.js +27 -15
  87. package/esm/BarChart/formatter.js +1 -1
  88. package/esm/ChartContainer/ChartContainer.js +6 -4
  89. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  90. package/esm/ChartsLegend/ChartsLegend.js +2 -307
  91. package/esm/ChartsLegend/DefaultChartsLegend.js +286 -0
  92. package/esm/ChartsLegend/index.js +1 -0
  93. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
  94. package/esm/ChartsOnAxisClickHandler/index.js +1 -0
  95. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  96. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  97. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  98. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  99. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  100. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  101. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  102. package/esm/ChartsTooltip/utils.js +12 -0
  103. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  104. package/esm/ChartsXAxis/ChartsXAxis.js +13 -9
  105. package/esm/ChartsYAxis/ChartsYAxis.js +1 -1
  106. package/esm/LineChart/AnimatedArea.js +103 -0
  107. package/esm/LineChart/AnimatedLine.js +105 -0
  108. package/esm/LineChart/AreaElement.js +16 -33
  109. package/esm/LineChart/AreaPlot.js +92 -59
  110. package/esm/LineChart/LineChart.js +45 -14
  111. package/esm/LineChart/LineElement.js +16 -35
  112. package/esm/LineChart/LineHighlightElement.js +5 -3
  113. package/esm/LineChart/LinePlot.js +90 -57
  114. package/esm/LineChart/MarkElement.js +27 -13
  115. package/esm/LineChart/MarkPlot.js +80 -51
  116. package/esm/LineChart/formatter.js +1 -1
  117. package/esm/LineChart/index.js +2 -0
  118. package/esm/PieChart/PieArc.js +1 -0
  119. package/esm/PieChart/PieArcLabel.js +1 -0
  120. package/esm/PieChart/PieArcLabelPlot.js +2 -2
  121. package/esm/PieChart/PieArcPlot.js +7 -7
  122. package/esm/PieChart/PieChart.js +14 -12
  123. package/esm/PieChart/PiePlot.js +4 -4
  124. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  125. package/esm/ScatterChart/Scatter.js +17 -3
  126. package/esm/ScatterChart/ScatterChart.js +21 -10
  127. package/esm/ScatterChart/ScatterPlot.js +10 -2
  128. package/esm/SparkLineChart/SparkLineChart.js +7 -4
  129. package/esm/context/CartesianContextProvider.js +8 -6
  130. package/esm/context/DrawingProvider.js +9 -2
  131. package/esm/hooks/useDrawingArea.js +7 -3
  132. package/esm/index.js +1 -0
  133. package/esm/internals/geometry.js +1 -1
  134. package/esm/internals/useAnimatedPath.js +29 -0
  135. package/esm/internals/utils.js +7 -0
  136. package/hooks/useDrawingArea.d.ts +2 -0
  137. package/hooks/useDrawingArea.js +7 -3
  138. package/index.d.ts +1 -0
  139. package/index.js +12 -1
  140. package/internals/defaultizeColor.d.ts +16 -16
  141. package/internals/defaultizeValueFormatter.d.ts +4 -7
  142. package/internals/geometry.js +1 -1
  143. package/internals/stackSeries.d.ts +4 -7
  144. package/internals/useAnimatedPath.d.ts +1 -0
  145. package/internals/useAnimatedPath.js +38 -0
  146. package/internals/utils.d.ts +4 -0
  147. package/internals/utils.js +8 -0
  148. package/legacy/BarChart/BarChart.js +33 -12
  149. package/legacy/BarChart/BarElement.js +6 -2
  150. package/legacy/BarChart/BarPlot.js +28 -14
  151. package/legacy/BarChart/formatter.js +1 -1
  152. package/legacy/ChartContainer/ChartContainer.js +6 -4
  153. package/legacy/ChartsAxis/ChartsAxis.js +4 -4
  154. package/legacy/ChartsLegend/ChartsLegend.js +2 -323
  155. package/legacy/ChartsLegend/DefaultChartsLegend.js +302 -0
  156. package/legacy/ChartsLegend/index.js +1 -0
  157. package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  158. package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
  159. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  160. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  161. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  162. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +6 -7
  163. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  164. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  165. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  166. package/legacy/ChartsTooltip/utils.js +12 -0
  167. package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
  168. package/legacy/ChartsXAxis/ChartsXAxis.js +12 -8
  169. package/legacy/ChartsYAxis/ChartsYAxis.js +1 -1
  170. package/legacy/LineChart/AnimatedArea.js +102 -0
  171. package/legacy/LineChart/AnimatedLine.js +104 -0
  172. package/legacy/LineChart/AreaElement.js +15 -35
  173. package/legacy/LineChart/AreaPlot.js +102 -66
  174. package/legacy/LineChart/LineChart.js +45 -14
  175. package/legacy/LineChart/LineElement.js +15 -37
  176. package/legacy/LineChart/LineHighlightElement.js +5 -3
  177. package/legacy/LineChart/LinePlot.js +97 -63
  178. package/legacy/LineChart/MarkElement.js +30 -12
  179. package/legacy/LineChart/MarkPlot.js +83 -53
  180. package/legacy/LineChart/formatter.js +1 -1
  181. package/legacy/LineChart/index.js +2 -0
  182. package/legacy/PieChart/PieArc.js +1 -0
  183. package/legacy/PieChart/PieArcLabel.js +1 -0
  184. package/legacy/PieChart/PieArcLabelPlot.js +2 -2
  185. package/legacy/PieChart/PieArcPlot.js +7 -7
  186. package/legacy/PieChart/PieChart.js +14 -12
  187. package/legacy/PieChart/PiePlot.js +4 -4
  188. package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  189. package/legacy/ScatterChart/Scatter.js +19 -3
  190. package/legacy/ScatterChart/ScatterChart.js +21 -10
  191. package/legacy/ScatterChart/ScatterPlot.js +10 -2
  192. package/legacy/SparkLineChart/SparkLineChart.js +8 -5
  193. package/legacy/context/CartesianContextProvider.js +8 -6
  194. package/legacy/context/DrawingProvider.js +11 -2
  195. package/legacy/hooks/useDrawingArea.js +7 -3
  196. package/legacy/index.js +2 -1
  197. package/legacy/internals/geometry.js +1 -1
  198. package/legacy/internals/useAnimatedPath.js +32 -0
  199. package/legacy/internals/utils.js +7 -0
  200. package/models/axis.d.ts +7 -2
  201. package/models/seriesType/common.d.ts +2 -1
  202. package/models/seriesType/config.d.ts +7 -12
  203. package/models/seriesType/line.d.ts +2 -2
  204. package/models/seriesType/pie.d.ts +7 -3
  205. package/models/seriesType/scatter.d.ts +5 -2
  206. package/modern/BarChart/BarChart.js +33 -12
  207. package/modern/BarChart/BarElement.js +7 -3
  208. package/modern/BarChart/BarPlot.js +27 -15
  209. package/modern/BarChart/formatter.js +1 -1
  210. package/modern/ChartContainer/ChartContainer.js +6 -4
  211. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  212. package/modern/ChartsLegend/ChartsLegend.js +2 -307
  213. package/modern/ChartsLegend/DefaultChartsLegend.js +286 -0
  214. package/modern/ChartsLegend/index.js +1 -0
  215. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  216. package/modern/ChartsOnAxisClickHandler/index.js +1 -0
  217. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  218. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  219. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  220. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  221. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  222. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  223. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  224. package/modern/ChartsTooltip/utils.js +12 -0
  225. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  226. package/modern/ChartsXAxis/ChartsXAxis.js +13 -9
  227. package/modern/ChartsYAxis/ChartsYAxis.js +1 -1
  228. package/modern/LineChart/AnimatedArea.js +103 -0
  229. package/modern/LineChart/AnimatedLine.js +105 -0
  230. package/modern/LineChart/AreaElement.js +16 -33
  231. package/modern/LineChart/AreaPlot.js +91 -58
  232. package/modern/LineChart/LineChart.js +45 -14
  233. package/modern/LineChart/LineElement.js +16 -35
  234. package/modern/LineChart/LineHighlightElement.js +5 -3
  235. package/modern/LineChart/LinePlot.js +89 -56
  236. package/modern/LineChart/MarkElement.js +27 -13
  237. package/modern/LineChart/MarkPlot.js +80 -51
  238. package/modern/LineChart/formatter.js +1 -1
  239. package/modern/LineChart/index.js +2 -0
  240. package/modern/PieChart/PieArc.js +1 -0
  241. package/modern/PieChart/PieArcLabel.js +1 -0
  242. package/modern/PieChart/PieArcLabelPlot.js +2 -2
  243. package/modern/PieChart/PieArcPlot.js +7 -7
  244. package/modern/PieChart/PieChart.js +14 -12
  245. package/modern/PieChart/PiePlot.js +4 -4
  246. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  247. package/modern/ScatterChart/Scatter.js +17 -3
  248. package/modern/ScatterChart/ScatterChart.js +21 -10
  249. package/modern/ScatterChart/ScatterPlot.js +10 -2
  250. package/modern/SparkLineChart/SparkLineChart.js +7 -4
  251. package/modern/context/CartesianContextProvider.js +8 -6
  252. package/modern/context/DrawingProvider.js +9 -2
  253. package/modern/hooks/useDrawingArea.js +7 -3
  254. package/modern/index.js +2 -1
  255. package/modern/internals/geometry.js +1 -1
  256. package/modern/internals/useAnimatedPath.js +29 -0
  257. package/modern/internals/utils.js +7 -0
  258. package/package.json +6 -5
@@ -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,
@@ -111,7 +111,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
111
111
  * @default null
112
112
  */
113
113
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
114
- axisId: PropTypes.string,
114
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
115
115
  classes: PropTypes.object,
116
116
  disableLine: PropTypes.bool,
117
117
  disableTicks: PropTypes.bool,
@@ -161,7 +161,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
161
161
  * @default null
162
162
  */
163
163
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
164
- axisId: PropTypes.string,
164
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
165
165
  classes: PropTypes.object,
166
166
  disableLine: PropTypes.bool,
167
167
  disableTicks: PropTypes.bool,
@@ -208,14 +208,14 @@ 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`.
215
215
  * @default null
216
216
  */
217
217
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
218
- axisId: PropTypes.string,
218
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
219
219
  classes: PropTypes.object,
220
220
  disableLine: PropTypes.bool,
221
221
  disableTicks: PropTypes.bool,
@@ -238,7 +238,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
238
238
  }), PropTypes.string]),
239
239
  series: PropTypes.arrayOf(PropTypes.object).isRequired,
240
240
  /**
241
- * If `true`, animations are skiped.
241
+ * If `true`, animations are skipped.
242
242
  * @default false
243
243
  */
244
244
  skipAnimation: PropTypes.bool,
@@ -264,7 +264,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
264
264
  * @default null
265
265
  */
266
266
  topAxis: PropTypes.oneOfType([PropTypes.shape({
267
- axisId: PropTypes.string,
267
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
268
268
  classes: PropTypes.object,
269
269
  disableLine: PropTypes.bool,
270
270
  disableTicks: PropTypes.bool,
@@ -301,7 +301,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
301
301
  * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
302
302
  */
303
303
  xAxis: PropTypes.arrayOf(PropTypes.shape({
304
- axisId: PropTypes.string,
304
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
305
305
  classes: PropTypes.object,
306
306
  data: PropTypes.array,
307
307
  dataKey: PropTypes.string,
@@ -309,13 +309,14 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
309
309
  disableTicks: PropTypes.bool,
310
310
  fill: PropTypes.string,
311
311
  hideTooltip: PropTypes.bool,
312
- id: PropTypes.string,
312
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
313
313
  label: PropTypes.string,
314
314
  labelFontSize: PropTypes.number,
315
315
  labelStyle: PropTypes.object,
316
316
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
317
317
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
318
318
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
319
+ reverse: PropTypes.bool,
319
320
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
320
321
  slotProps: PropTypes.object,
321
322
  slots: PropTypes.object,
@@ -335,7 +336,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
335
336
  * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
336
337
  */
337
338
  yAxis: PropTypes.arrayOf(PropTypes.shape({
338
- axisId: PropTypes.string,
339
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
339
340
  classes: PropTypes.object,
340
341
  data: PropTypes.array,
341
342
  dataKey: PropTypes.string,
@@ -343,13 +344,14 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
343
344
  disableTicks: PropTypes.bool,
344
345
  fill: PropTypes.string,
345
346
  hideTooltip: PropTypes.bool,
346
- id: PropTypes.string,
347
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
347
348
  label: PropTypes.string,
348
349
  labelFontSize: PropTypes.number,
349
350
  labelStyle: PropTypes.object,
350
351
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
351
352
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
352
353
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
354
+ reverse: PropTypes.bool,
353
355
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
354
356
  slotProps: PropTypes.object,
355
357
  slots: PropTypes.object,
@@ -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,
@@ -175,7 +175,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
175
175
  * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
176
176
  */
177
177
  xAxis: PropTypes.arrayOf(PropTypes.shape({
178
- axisId: PropTypes.string,
178
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
179
179
  classes: PropTypes.object,
180
180
  data: PropTypes.array,
181
181
  dataKey: PropTypes.string,
@@ -183,13 +183,14 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
183
183
  disableTicks: PropTypes.bool,
184
184
  fill: PropTypes.string,
185
185
  hideTooltip: PropTypes.bool,
186
- id: PropTypes.string,
186
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
187
187
  label: PropTypes.string,
188
188
  labelFontSize: PropTypes.number,
189
189
  labelStyle: PropTypes.object,
190
190
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
191
191
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
192
192
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
193
+ reverse: PropTypes.bool,
193
194
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
194
195
  slotProps: PropTypes.object,
195
196
  slots: PropTypes.object,
@@ -209,7 +210,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
209
210
  * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
210
211
  */
211
212
  yAxis: PropTypes.arrayOf(PropTypes.shape({
212
- axisId: PropTypes.string,
213
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
213
214
  classes: PropTypes.object,
214
215
  data: PropTypes.array,
215
216
  dataKey: PropTypes.string,
@@ -217,13 +218,14 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
217
218
  disableTicks: PropTypes.bool,
218
219
  fill: PropTypes.string,
219
220
  hideTooltip: PropTypes.bool,
220
- id: PropTypes.string,
221
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
221
222
  label: PropTypes.string,
222
223
  labelFontSize: PropTypes.number,
223
224
  labelStyle: PropTypes.object,
224
225
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
225
226
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
226
227
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
228
+ reverse: PropTypes.bool,
227
229
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
228
230
  slotProps: PropTypes.object,
229
231
  slots: PropTypes.object,
@@ -21,7 +21,8 @@ function Scatter(props) {
21
21
  xScale,
22
22
  yScale,
23
23
  color,
24
- markerSize
24
+ markerSize,
25
+ onItemClick
25
26
  } = props;
26
27
  const highlightScope = React.useMemo(() => _extends({
27
28
  highlighted: 'item',
@@ -61,7 +62,8 @@ function Scatter(props) {
61
62
  isHighlighted,
62
63
  isFaded: !isHighlighted && getIsFaded(item, pointCtx, highlightScope),
63
64
  interactionProps: getInteractionItemProps(pointCtx),
64
- id: scatterPoint.id
65
+ id: scatterPoint.id,
66
+ dataIndex: i
65
67
  });
66
68
  }
67
69
  }
@@ -74,7 +76,13 @@ function Scatter(props) {
74
76
  r: (dataPoint.isHighlighted ? 1.2 : 1) * markerSize,
75
77
  transform: `translate(${dataPoint.x}, ${dataPoint.y})`,
76
78
  fill: color,
77
- opacity: dataPoint.isFaded && 0.3 || 1
79
+ opacity: dataPoint.isFaded && 0.3 || 1,
80
+ onClick: onItemClick && (event => onItemClick(event, {
81
+ type: 'scatter',
82
+ seriesId: series.id,
83
+ dataIndex: dataPoint.dataIndex
84
+ })),
85
+ cursor: onItemClick ? 'pointer' : 'unset'
78
86
  }, dataPoint.interactionProps), dataPoint.id))
79
87
  });
80
88
  }
@@ -85,6 +93,12 @@ process.env.NODE_ENV !== "production" ? Scatter.propTypes = {
85
93
  // ----------------------------------------------------------------------
86
94
  color: PropTypes.string.isRequired,
87
95
  markerSize: PropTypes.number.isRequired,
96
+ /**
97
+ * Callback fired when clicking on a scatter item.
98
+ * @param {MouseEvent} event Mouse event recorded on the `<svg/>` element.
99
+ * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
100
+ */
101
+ onItemClick: PropTypes.func,
88
102
  series: PropTypes.object.isRequired,
89
103
  xScale: PropTypes.func.isRequired,
90
104
  yScale: PropTypes.func.isRequired
@@ -39,6 +39,7 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
39
39
  leftAxis,
40
40
  rightAxis,
41
41
  bottomAxis,
42
+ onItemClick,
42
43
  children,
43
44
  slots,
44
45
  slotProps
@@ -56,7 +57,8 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
56
57
  yAxis: yAxis,
57
58
  sx: sx,
58
59
  children: [!disableVoronoi && /*#__PURE__*/_jsx(ChartsVoronoiHandler, {
59
- voronoiMaxRadius: voronoiMaxRadius
60
+ voronoiMaxRadius: voronoiMaxRadius,
61
+ onItemClick: onItemClick
60
62
  }), /*#__PURE__*/_jsx(ChartsAxis, {
61
63
  topAxis: topAxis,
62
64
  leftAxis: leftAxis,
@@ -66,7 +68,8 @@ const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props,
66
68
  slotProps: slotProps
67
69
  }), /*#__PURE__*/_jsx(ScatterPlot, {
68
70
  slots: slots,
69
- slotProps: slotProps
71
+ slotProps: slotProps,
72
+ onItemClick: disableVoronoi ? onItemClick : undefined
70
73
  }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
71
74
  slots: slots,
72
75
  slotProps: slotProps
@@ -93,7 +96,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
93
96
  * @default xAxisIds[0] The id of the first provided axis
94
97
  */
95
98
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
96
- axisId: PropTypes.string,
99
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
97
100
  classes: PropTypes.object,
98
101
  disableLine: PropTypes.bool,
99
102
  disableTicks: PropTypes.bool,
@@ -148,7 +151,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
148
151
  * @default yAxisIds[0] The id of the first provided axis
149
152
  */
150
153
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
151
- axisId: PropTypes.string,
154
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
152
155
  classes: PropTypes.object,
153
156
  disableLine: PropTypes.bool,
154
157
  disableTicks: PropTypes.bool,
@@ -195,13 +198,19 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
195
198
  right: PropTypes.number,
196
199
  top: PropTypes.number
197
200
  }),
201
+ /**
202
+ * Callback fired when clicking on a scatter item.
203
+ * @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`.
204
+ * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
205
+ */
206
+ onItemClick: PropTypes.func,
198
207
  /**
199
208
  * Indicate which axis to display the right of the charts.
200
209
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
201
210
  * @default null
202
211
  */
203
212
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
204
- axisId: PropTypes.string,
213
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
205
214
  classes: PropTypes.object,
206
215
  disableLine: PropTypes.bool,
207
216
  disableTicks: PropTypes.bool,
@@ -249,7 +258,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
249
258
  * @default null
250
259
  */
251
260
  topAxis: PropTypes.oneOfType([PropTypes.shape({
252
- axisId: PropTypes.string,
261
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
253
262
  classes: PropTypes.object,
254
263
  disableLine: PropTypes.bool,
255
264
  disableTicks: PropTypes.bool,
@@ -292,7 +301,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
292
301
  * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
293
302
  */
294
303
  xAxis: PropTypes.arrayOf(PropTypes.shape({
295
- axisId: PropTypes.string,
304
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
296
305
  classes: PropTypes.object,
297
306
  data: PropTypes.array,
298
307
  dataKey: PropTypes.string,
@@ -300,13 +309,14 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
300
309
  disableTicks: PropTypes.bool,
301
310
  fill: PropTypes.string,
302
311
  hideTooltip: PropTypes.bool,
303
- id: PropTypes.string,
312
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
304
313
  label: PropTypes.string,
305
314
  labelFontSize: PropTypes.number,
306
315
  labelStyle: PropTypes.object,
307
316
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
308
317
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
309
318
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
319
+ reverse: PropTypes.bool,
310
320
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
311
321
  slotProps: PropTypes.object,
312
322
  slots: PropTypes.object,
@@ -326,7 +336,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
326
336
  * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
327
337
  */
328
338
  yAxis: PropTypes.arrayOf(PropTypes.shape({
329
- axisId: PropTypes.string,
339
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
330
340
  classes: PropTypes.object,
331
341
  data: PropTypes.array,
332
342
  dataKey: PropTypes.string,
@@ -334,13 +344,14 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
334
344
  disableTicks: PropTypes.bool,
335
345
  fill: PropTypes.string,
336
346
  hideTooltip: PropTypes.bool,
337
- id: PropTypes.string,
347
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
338
348
  label: PropTypes.string,
339
349
  labelFontSize: PropTypes.number,
340
350
  labelStyle: PropTypes.object,
341
351
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
342
352
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
343
353
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
354
+ reverse: PropTypes.bool,
344
355
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
345
356
  slotProps: PropTypes.object,
346
357
  slots: PropTypes.object,
@@ -18,7 +18,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
18
18
  function ScatterPlot(props) {
19
19
  const {
20
20
  slots,
21
- slotProps
21
+ slotProps,
22
+ onItemClick
22
23
  } = props;
23
24
  const seriesData = React.useContext(SeriesContext).scatter;
24
25
  const axisData = React.useContext(CartesianContext);
@@ -54,7 +55,8 @@ function ScatterPlot(props) {
54
55
  yScale: yScale,
55
56
  color: color,
56
57
  markerSize: markerSize ?? 4,
57
- series: series[seriesId]
58
+ series: series[seriesId],
59
+ onItemClick: onItemClick
58
60
  }, slotProps?.scatter), id);
59
61
  })
60
62
  });
@@ -64,6 +66,12 @@ process.env.NODE_ENV !== "production" ? ScatterPlot.propTypes = {
64
66
  // | These PropTypes are generated from the TypeScript type definitions |
65
67
  // | To update them edit the TypeScript types and run "yarn proptypes" |
66
68
  // ----------------------------------------------------------------------
69
+ /**
70
+ * Callback fired when clicking on a scatter item.
71
+ * @param {MouseEvent} event Mouse event recorded on the `<svg/>` element.
72
+ * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
73
+ */
74
+ onItemClick: PropTypes.func,
67
75
  /**
68
76
  * The props used for each component slot.
69
77
  * @default {}
@@ -42,7 +42,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
42
42
  slotProps,
43
43
  data,
44
44
  plotType = 'line',
45
- valueFormatter = v => v === null ? '' : v.toString(),
45
+ valueFormatter = value => value === null ? '' : value.toString(),
46
46
  area,
47
47
  curve = 'linear'
48
48
  } = props;
@@ -86,9 +86,11 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
86
86
  }
87
87
  }), plotType === 'line' && /*#__PURE__*/_jsxs(React.Fragment, {
88
88
  children: [/*#__PURE__*/_jsx(AreaPlot, {
89
+ skipAnimation: true,
89
90
  slots: slots,
90
91
  slotProps: slotProps
91
92
  }), /*#__PURE__*/_jsx(LinePlot, {
93
+ skipAnimation: true,
92
94
  slots: slots,
93
95
  slotProps: slotProps
94
96
  }), /*#__PURE__*/_jsx(LineHighlightPlot, {
@@ -205,7 +207,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
205
207
  * Formatter used by the tooltip.
206
208
  * @param {number} value The value to format.
207
209
  * @returns {string} the formatted value.
208
- * @default (v: number | null) => (v === null ? '' : v.toString())
210
+ * @default (value: number | null) => (value === null ? '' : value.toString())
209
211
  */
210
212
  valueFormatter: PropTypes.func,
211
213
  viewBox: PropTypes.shape({
@@ -224,7 +226,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
224
226
  * Notice it is a single configuration object, not an array of configuration.
225
227
  */
226
228
  xAxis: PropTypes.shape({
227
- axisId: PropTypes.string,
229
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
228
230
  classes: PropTypes.object,
229
231
  data: PropTypes.array,
230
232
  dataKey: PropTypes.string,
@@ -232,13 +234,14 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
232
234
  disableTicks: PropTypes.bool,
233
235
  fill: PropTypes.string,
234
236
  hideTooltip: PropTypes.bool,
235
- id: PropTypes.string,
237
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
236
238
  label: PropTypes.string,
237
239
  labelFontSize: PropTypes.number,
238
240
  labelStyle: PropTypes.object,
239
241
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
240
242
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
241
243
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
244
+ reverse: PropTypes.bool,
242
245
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
243
246
  slotProps: PropTypes.object,
244
247
  slots: PropTypes.object,
@@ -107,7 +107,7 @@ function CartesianContextProvider(props) {
107
107
  allXAxis.forEach((axis, axisIndex) => {
108
108
  const isDefaultAxis = axisIndex === 0;
109
109
  const [minData, maxData] = getAxisExtremum(axis, xExtremumGetters, isDefaultAxis);
110
- const range = [drawingArea.left, drawingArea.left + drawingArea.width];
110
+ const range = axis.reverse ? [drawingArea.left + drawingArea.width, drawingArea.left] : [drawingArea.left, drawingArea.left + drawingArea.width];
111
111
  if (isBandScaleConfig(axis)) {
112
112
  const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
113
113
  const barGapRatio = axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;
@@ -156,7 +156,7 @@ function CartesianContextProvider(props) {
156
156
  allYAxis.forEach((axis, axisIndex) => {
157
157
  const isDefaultAxis = axisIndex === 0;
158
158
  const [minData, maxData] = getAxisExtremum(axis, yExtremumGetters, isDefaultAxis);
159
- const range = [drawingArea.top + drawingArea.height, drawingArea.top];
159
+ const range = axis.reverse ? [drawingArea.top, drawingArea.top + drawingArea.height] : [drawingArea.top + drawingArea.height, drawingArea.top];
160
160
  if (isBandScaleConfig(axis)) {
161
161
  const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
162
162
  completedYAxis[axis.id] = _extends({
@@ -225,7 +225,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
225
225
  * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
226
226
  */
227
227
  xAxis: PropTypes.arrayOf(PropTypes.shape({
228
- axisId: PropTypes.string,
228
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
229
229
  classes: PropTypes.object,
230
230
  data: PropTypes.array,
231
231
  dataKey: PropTypes.string,
@@ -233,13 +233,14 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
233
233
  disableTicks: PropTypes.bool,
234
234
  fill: PropTypes.string,
235
235
  hideTooltip: PropTypes.bool,
236
- id: PropTypes.string,
236
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
237
237
  label: PropTypes.string,
238
238
  labelFontSize: PropTypes.number,
239
239
  labelStyle: PropTypes.object,
240
240
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
241
241
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
242
242
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
243
+ reverse: PropTypes.bool,
243
244
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
244
245
  slotProps: PropTypes.object,
245
246
  slots: PropTypes.object,
@@ -259,7 +260,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
259
260
  * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
260
261
  */
261
262
  yAxis: PropTypes.arrayOf(PropTypes.shape({
262
- axisId: PropTypes.string,
263
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
263
264
  classes: PropTypes.object,
264
265
  data: PropTypes.array,
265
266
  dataKey: PropTypes.string,
@@ -267,13 +268,14 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
267
268
  disableTicks: PropTypes.bool,
268
269
  fill: PropTypes.string,
269
270
  hideTooltip: PropTypes.bool,
270
- id: PropTypes.string,
271
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
271
272
  label: PropTypes.string,
272
273
  labelFontSize: PropTypes.number,
273
274
  labelStyle: PropTypes.object,
274
275
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
275
276
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
276
277
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
278
+ reverse: PropTypes.bool,
277
279
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
278
280
  slotProps: PropTypes.object,
279
281
  slots: PropTypes.object,
@@ -1,5 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import PropTypes from 'prop-types';
4
+ import useId from '@mui/utils/useId';
3
5
  import useChartDimensions from '../hooks/useChartDimensions';
4
6
 
5
7
  /**
@@ -12,7 +14,8 @@ export const DrawingContext = /*#__PURE__*/React.createContext({
12
14
  bottom: 0,
13
15
  right: 0,
14
16
  height: 300,
15
- width: 400
17
+ width: 400,
18
+ chartId: ''
16
19
  });
17
20
  export const SVGContext = /*#__PURE__*/React.createContext({
18
21
  current: null
@@ -32,10 +35,14 @@ function DrawingProvider(props) {
32
35
  children
33
36
  } = props;
34
37
  const drawingArea = useChartDimensions(width, height, margin);
38
+ const chartId = useId();
39
+ const value = React.useMemo(() => _extends({
40
+ chartId: chartId ?? ''
41
+ }, drawingArea), [chartId, drawingArea]);
35
42
  return /*#__PURE__*/_jsx(SVGContext.Provider, {
36
43
  value: svgRef,
37
44
  children: /*#__PURE__*/_jsx(DrawingContext.Provider, {
38
- value: drawingArea,
45
+ value: value,
39
46
  children: children
40
47
  })
41
48
  });
@@ -5,12 +5,16 @@ export function useDrawingArea() {
5
5
  left,
6
6
  top,
7
7
  width,
8
- height
8
+ height,
9
+ bottom,
10
+ right
9
11
  } = React.useContext(DrawingContext);
10
12
  return React.useMemo(() => ({
11
13
  left,
12
14
  top,
13
15
  width,
14
- height
15
- }), [height, left, top, width]);
16
+ height,
17
+ bottom,
18
+ right
19
+ }), [height, left, top, width, bottom, right]);
16
20
  }
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v7.0.0-beta.0
2
+ * @mui/x-charts v7.0.0-beta.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -20,6 +20,7 @@ export * from './ChartsTooltip';
20
20
  export * from './ChartsLegend';
21
21
  export * from './ChartsAxisHighlight';
22
22
  export * from './ChartsVoronoiHandler';
23
+ export * from './ChartsOnAxisClickHandler';
23
24
  export * from './BarChart';
24
25
  export * from './LineChart';
25
26
  export * from './PieChart';
@@ -14,7 +14,7 @@ export function getMinXTranslation(width, height, angle = 0) {
14
14
  if (process.env.NODE_ENV !== 'production') {
15
15
  if (!warnedOnce && angle > 90 && angle < -90) {
16
16
  warnedOnce = true;
17
- console.warn([`MUI X: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`].join('\n'));
17
+ console.warn([`MUI X Charts: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`].join('\n'));
18
18
  }
19
19
  }
20
20
  const standardAngle = Math.min(Math.abs(angle) % 180, Math.abs(Math.abs(angle) % 180 - 180) % 180); // Map from R to [0, 90]
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { interpolateString } from 'd3-interpolate';
3
+ import { useSpring, to } from '@react-spring/web';
4
+ function usePrevious(value) {
5
+ const ref = React.useRef(null);
6
+ React.useEffect(() => {
7
+ ref.current = value;
8
+ }, [value]);
9
+ return ref.current;
10
+ }
11
+
12
+ // Taken from Nivo
13
+ export const useAnimatedPath = (path, skipAnimation) => {
14
+ const previousPath = usePrevious(path);
15
+ const interpolator = React.useMemo(() => previousPath ? interpolateString(previousPath, path) : () => path, [previousPath, path]);
16
+ const {
17
+ value
18
+ } = useSpring({
19
+ from: {
20
+ value: 0
21
+ },
22
+ to: {
23
+ value: 1
24
+ },
25
+ reset: true,
26
+ immediate: skipAnimation
27
+ });
28
+ return to([value], interpolator);
29
+ };
@@ -42,4 +42,11 @@ export function getPercentageValue(value, refValue) {
42
42
  }
43
43
  }
44
44
  throw Error(`MUI-Charts: Received an unknown value "${value}". It should be a number, or a string with a percentage value.`);
45
+ }
46
+
47
+ /**
48
+ * Remove spaces to have viable ids
49
+ */
50
+ export function cleanId(id) {
51
+ return id.replace(' ', '_');
45
52
  }