@mui/x-charts 6.0.0-alpha.9 → 6.18.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 (325) hide show
  1. package/BarChart/BarChart.d.ts +26 -5
  2. package/BarChart/BarChart.js +93 -17
  3. package/BarChart/BarElement.d.ts +1319 -4
  4. package/BarChart/BarElement.js +10 -10
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +2 -3
  8. package/BarChart/legend.js +1 -2
  9. package/CHANGELOG.md +797 -59
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +33 -7
  13. package/ChartsAxis/axisClasses.d.ts +3 -3
  14. package/ChartsAxis/axisClasses.js +1 -2
  15. package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
  16. package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
  17. package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
  18. package/ChartsClipPath/ChartsClipPath.js +7 -2
  19. package/ChartsLegend/ChartsLegend.d.ts +45 -24
  20. package/ChartsLegend/ChartsLegend.js +193 -151
  21. package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
  22. package/ChartsLegend/chartsLegendClasses.js +3 -4
  23. package/ChartsLegend/utils.d.ts +1 -6
  24. package/ChartsReferenceLine/ChartsReferenceLine.d.ts +10 -0
  25. package/ChartsReferenceLine/ChartsReferenceLine.js +78 -0
  26. package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +13 -0
  27. package/ChartsReferenceLine/ChartsXReferenceLine.js +112 -0
  28. package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +13 -0
  29. package/ChartsReferenceLine/ChartsYReferenceLine.js +112 -0
  30. package/ChartsReferenceLine/chartsReferenceLineClasses.d.ts +15 -0
  31. package/ChartsReferenceLine/chartsReferenceLineClasses.js +14 -0
  32. package/ChartsReferenceLine/common.d.ts +41 -0
  33. package/ChartsReferenceLine/common.js +27 -0
  34. package/ChartsReferenceLine/index.d.ts +2 -0
  35. package/ChartsReferenceLine/index.js +27 -0
  36. package/ChartsReferenceLine/package.json +6 -0
  37. package/ChartsSurface.d.ts +12 -1
  38. package/ChartsSurface.js +9 -18
  39. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  40. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  41. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  42. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  43. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  44. package/ChartsTooltip/ChartsTooltip.js +62 -18
  45. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  46. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  47. package/ChartsTooltip/tooltipClasses.js +1 -2
  48. package/ChartsTooltip/utils.js +2 -2
  49. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  50. package/ChartsXAxis/ChartsXAxis.js +170 -45
  51. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  52. package/ChartsYAxis/ChartsYAxis.js +95 -38
  53. package/LineChart/AreaElement.d.ts +11 -1
  54. package/LineChart/AreaElement.js +14 -6
  55. package/LineChart/AreaPlot.d.ts +11 -0
  56. package/LineChart/AreaPlot.js +27 -8
  57. package/LineChart/LineChart.d.ts +23 -3
  58. package/LineChart/LineChart.js +89 -17
  59. package/LineChart/LineElement.d.ts +11 -1
  60. package/LineChart/LineElement.js +14 -6
  61. package/LineChart/LineHighlightElement.d.ts +10 -0
  62. package/LineChart/LineHighlightElement.js +13 -4
  63. package/LineChart/LineHighlightPlot.d.ts +10 -0
  64. package/LineChart/LineHighlightPlot.js +15 -4
  65. package/LineChart/LinePlot.d.ts +10 -0
  66. package/LineChart/LinePlot.js +25 -12
  67. package/LineChart/MarkElement.d.ts +10 -0
  68. package/LineChart/MarkElement.js +14 -5
  69. package/LineChart/MarkPlot.d.ts +10 -0
  70. package/LineChart/MarkPlot.js +42 -10
  71. package/LineChart/formatter.js +5 -5
  72. package/LineChart/legend.js +1 -2
  73. package/PieChart/PieArc.d.ts +11 -13
  74. package/PieChart/PieArc.js +28 -60
  75. package/PieChart/PieArcLabel.d.ts +8 -9
  76. package/PieChart/PieArcLabel.js +46 -38
  77. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  78. package/PieChart/PieArcLabelPlot.js +99 -0
  79. package/PieChart/PieArcPlot.d.ts +35 -0
  80. package/PieChart/PieArcPlot.js +92 -0
  81. package/PieChart/PieChart.d.ts +19 -5
  82. package/PieChart/PieChart.js +95 -18
  83. package/PieChart/PiePlot.d.ts +15 -9
  84. package/PieChart/PiePlot.js +77 -55
  85. package/PieChart/dataTransform/transition.d.ts +4 -0
  86. package/PieChart/dataTransform/transition.js +136 -0
  87. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  88. package/PieChart/dataTransform/useTransformData.js +67 -0
  89. package/PieChart/formatter.js +1 -2
  90. package/PieChart/legend.js +1 -2
  91. package/README.md +8 -14
  92. package/ResponsiveChartContainer/index.d.ts +13 -3
  93. package/ResponsiveChartContainer/index.js +7 -8
  94. package/ScatterChart/Scatter.d.ts +10 -0
  95. package/ScatterChart/Scatter.js +12 -2
  96. package/ScatterChart/ScatterChart.d.ts +16 -3
  97. package/ScatterChart/ScatterChart.js +77 -16
  98. package/ScatterChart/ScatterPlot.d.ts +10 -0
  99. package/ScatterChart/ScatterPlot.js +12 -2
  100. package/ScatterChart/formatter.js +1 -2
  101. package/ScatterChart/legend.js +1 -2
  102. package/SparkLineChart/SparkLineChart.d.ts +12 -3
  103. package/SparkLineChart/SparkLineChart.js +50 -7
  104. package/colorPalettes/colorPalettes.js +6 -12
  105. package/constants.js +5 -8
  106. package/context/CartesianContextProvider.d.ts +26 -1
  107. package/context/CartesianContextProvider.js +42 -16
  108. package/context/DrawingProvider.d.ts +25 -0
  109. package/context/DrawingProvider.js +18 -6
  110. package/context/HighlightProvider.d.ts +17 -0
  111. package/context/HighlightProvider.js +3 -4
  112. package/context/InteractionProvider.d.ts +6 -0
  113. package/context/InteractionProvider.js +3 -4
  114. package/context/SeriesContextProvider.d.ts +5 -0
  115. package/context/SeriesContextProvider.js +3 -4
  116. package/esm/BarChart/BarChart.js +90 -13
  117. package/esm/BarChart/BarElement.js +7 -4
  118. package/esm/BarChart/BarPlot.js +152 -67
  119. package/esm/BarChart/formatter.js +1 -1
  120. package/esm/ChartContainer/index.js +3 -0
  121. package/esm/ChartsAxis/ChartsAxis.js +32 -5
  122. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  123. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  124. package/esm/ChartsLegend/ChartsLegend.js +190 -144
  125. package/esm/ChartsLegend/chartsLegendClasses.js +1 -1
  126. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  127. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  128. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  129. package/esm/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  130. package/esm/ChartsReferenceLine/common.js +20 -0
  131. package/esm/ChartsReferenceLine/index.js +2 -0
  132. package/esm/ChartsSurface.js +4 -12
  133. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  134. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  135. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  136. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  137. package/esm/ChartsXAxis/ChartsXAxis.js +168 -43
  138. package/esm/ChartsYAxis/ChartsYAxis.js +93 -36
  139. package/esm/LineChart/AreaElement.js +10 -0
  140. package/esm/LineChart/AreaPlot.js +26 -6
  141. package/esm/LineChart/LineChart.js +86 -13
  142. package/esm/LineChart/LineElement.js +10 -0
  143. package/esm/LineChart/LineHighlightElement.js +10 -0
  144. package/esm/LineChart/LineHighlightPlot.js +13 -2
  145. package/esm/LineChart/LinePlot.js +25 -14
  146. package/esm/LineChart/MarkElement.js +11 -1
  147. package/esm/LineChart/MarkPlot.js +40 -8
  148. package/esm/LineChart/formatter.js +7 -3
  149. package/esm/PieChart/PieArc.js +26 -58
  150. package/esm/PieChart/PieArcLabel.js +43 -34
  151. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  152. package/esm/PieChart/PieArcPlot.js +84 -0
  153. package/esm/PieChart/PieChart.js +93 -16
  154. package/esm/PieChart/PiePlot.js +76 -57
  155. package/esm/PieChart/dataTransform/transition.js +130 -0
  156. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  157. package/esm/ResponsiveChartContainer/index.js +3 -3
  158. package/esm/ScatterChart/Scatter.js +10 -0
  159. package/esm/ScatterChart/ScatterChart.js +74 -12
  160. package/esm/ScatterChart/ScatterPlot.js +10 -0
  161. package/esm/SparkLineChart/SparkLineChart.js +47 -3
  162. package/esm/constants.js +1 -1
  163. package/esm/context/CartesianContextProvider.js +41 -14
  164. package/esm/context/DrawingProvider.js +14 -0
  165. package/esm/hooks/useChartDimensions.js +2 -0
  166. package/esm/hooks/useMounted.js +16 -0
  167. package/esm/hooks/useReducedMotion.js +27 -0
  168. package/esm/hooks/useTicks.js +15 -9
  169. package/esm/index.js +1 -0
  170. package/esm/internals/components/AxisSharedComponents.js +15 -70
  171. package/esm/internals/components/ChartsText.js +77 -0
  172. package/esm/internals/domUtils.js +113 -0
  173. package/esm/internals/geometry.js +36 -0
  174. package/hooks/useAxisEvents.js +2 -2
  175. package/hooks/useChartDimensions.d.ts +2 -0
  176. package/hooks/useChartDimensions.js +5 -4
  177. package/hooks/useDrawingArea.js +2 -2
  178. package/hooks/useInteractionItemProps.js +2 -2
  179. package/hooks/useMounted.d.ts +1 -0
  180. package/hooks/useMounted.js +25 -0
  181. package/hooks/useReducedMotion.d.ts +8 -0
  182. package/hooks/useReducedMotion.js +33 -0
  183. package/hooks/useScale.d.ts +2 -2
  184. package/hooks/useScale.js +2 -2
  185. package/hooks/useTicks.d.ts +19 -11
  186. package/hooks/useTicks.js +19 -14
  187. package/index.d.ts +1 -0
  188. package/index.js +12 -1
  189. package/internals/components/AxisSharedComponents.d.ts +0 -4
  190. package/internals/components/AxisSharedComponents.js +18 -78
  191. package/internals/components/ChartsText.d.ts +35 -0
  192. package/internals/components/ChartsText.js +87 -0
  193. package/internals/defaultizeColor.d.ts +7 -2
  194. package/internals/defaultizeValueFormatter.js +1 -2
  195. package/internals/domUtils.d.ts +13 -0
  196. package/internals/domUtils.js +122 -0
  197. package/internals/geometry.d.ts +9 -0
  198. package/internals/geometry.js +42 -0
  199. package/internals/isBandScale.d.ts +3 -1
  200. package/internals/stackSeries.js +2 -4
  201. package/internals/utils.d.ts +5 -0
  202. package/legacy/BarChart/BarChart.js +90 -13
  203. package/legacy/BarChart/BarElement.js +6 -3
  204. package/legacy/BarChart/BarPlot.js +151 -63
  205. package/legacy/BarChart/formatter.js +1 -1
  206. package/legacy/ChartContainer/index.js +3 -0
  207. package/legacy/ChartsAxis/ChartsAxis.js +32 -5
  208. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  209. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  210. package/legacy/ChartsLegend/ChartsLegend.js +205 -142
  211. package/legacy/ChartsLegend/chartsLegendClasses.js +1 -1
  212. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  213. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  214. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  215. package/legacy/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  216. package/legacy/ChartsReferenceLine/common.js +20 -0
  217. package/legacy/ChartsReferenceLine/index.js +2 -0
  218. package/legacy/ChartsSurface.js +3 -12
  219. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  220. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  221. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  222. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  223. package/legacy/ChartsXAxis/ChartsXAxis.js +176 -50
  224. package/legacy/ChartsYAxis/ChartsYAxis.js +97 -41
  225. package/legacy/LineChart/AreaElement.js +10 -0
  226. package/legacy/LineChart/AreaPlot.js +31 -7
  227. package/legacy/LineChart/LineChart.js +86 -13
  228. package/legacy/LineChart/LineElement.js +10 -0
  229. package/legacy/LineChart/LineHighlightElement.js +10 -0
  230. package/legacy/LineChart/LineHighlightPlot.js +13 -2
  231. package/legacy/LineChart/LinePlot.js +29 -12
  232. package/legacy/LineChart/MarkElement.js +11 -1
  233. package/legacy/LineChart/MarkPlot.js +39 -8
  234. package/legacy/LineChart/formatter.js +7 -3
  235. package/legacy/PieChart/PieArc.js +30 -62
  236. package/legacy/PieChart/PieArcLabel.js +48 -34
  237. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  238. package/legacy/PieChart/PieArcPlot.js +84 -0
  239. package/legacy/PieChart/PieChart.js +93 -16
  240. package/legacy/PieChart/PiePlot.js +76 -59
  241. package/legacy/PieChart/dataTransform/transition.js +142 -0
  242. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  243. package/legacy/ResponsiveChartContainer/index.js +3 -3
  244. package/legacy/ScatterChart/Scatter.js +10 -0
  245. package/legacy/ScatterChart/ScatterChart.js +74 -12
  246. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  247. package/legacy/SparkLineChart/SparkLineChart.js +47 -3
  248. package/legacy/constants.js +1 -1
  249. package/legacy/context/CartesianContextProvider.js +41 -14
  250. package/legacy/context/DrawingProvider.js +14 -0
  251. package/legacy/hooks/useChartDimensions.js +2 -0
  252. package/legacy/hooks/useMounted.js +21 -0
  253. package/legacy/hooks/useReducedMotion.js +27 -0
  254. package/legacy/hooks/useTicks.js +16 -9
  255. package/legacy/index.js +2 -1
  256. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  257. package/legacy/internals/components/ChartsText.js +79 -0
  258. package/legacy/internals/domUtils.js +121 -0
  259. package/legacy/internals/geometry.js +37 -0
  260. package/models/axis.d.ts +58 -20
  261. package/models/layout.d.ts +13 -6
  262. package/models/seriesType/common.d.ts +16 -0
  263. package/models/seriesType/line.d.ts +8 -3
  264. package/models/seriesType/pie.d.ts +5 -1
  265. package/modern/BarChart/BarChart.js +90 -13
  266. package/modern/BarChart/BarElement.js +7 -4
  267. package/modern/BarChart/BarPlot.js +149 -65
  268. package/modern/BarChart/formatter.js +1 -1
  269. package/modern/ChartContainer/index.js +3 -0
  270. package/modern/ChartsAxis/ChartsAxis.js +31 -5
  271. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  272. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  273. package/modern/ChartsLegend/ChartsLegend.js +190 -144
  274. package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
  275. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  276. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +104 -0
  277. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +104 -0
  278. package/modern/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  279. package/modern/ChartsReferenceLine/common.js +20 -0
  280. package/modern/ChartsReferenceLine/index.js +2 -0
  281. package/modern/ChartsSurface.js +4 -12
  282. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  283. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  284. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  285. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  286. package/modern/ChartsXAxis/ChartsXAxis.js +167 -42
  287. package/modern/ChartsYAxis/ChartsYAxis.js +92 -35
  288. package/modern/LineChart/AreaElement.js +10 -0
  289. package/modern/LineChart/AreaPlot.js +25 -6
  290. package/modern/LineChart/LineChart.js +86 -13
  291. package/modern/LineChart/LineElement.js +10 -0
  292. package/modern/LineChart/LineHighlightElement.js +10 -0
  293. package/modern/LineChart/LineHighlightPlot.js +13 -2
  294. package/modern/LineChart/LinePlot.js +23 -10
  295. package/modern/LineChart/MarkElement.js +11 -1
  296. package/modern/LineChart/MarkPlot.js +40 -8
  297. package/modern/LineChart/formatter.js +4 -3
  298. package/modern/PieChart/PieArc.js +26 -57
  299. package/modern/PieChart/PieArcLabel.js +43 -34
  300. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  301. package/modern/PieChart/PieArcPlot.js +83 -0
  302. package/modern/PieChart/PieChart.js +93 -16
  303. package/modern/PieChart/PiePlot.js +76 -55
  304. package/modern/PieChart/dataTransform/transition.js +130 -0
  305. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  306. package/modern/ResponsiveChartContainer/index.js +3 -3
  307. package/modern/ScatterChart/Scatter.js +10 -0
  308. package/modern/ScatterChart/ScatterChart.js +74 -12
  309. package/modern/ScatterChart/ScatterPlot.js +10 -0
  310. package/modern/SparkLineChart/SparkLineChart.js +47 -3
  311. package/modern/constants.js +1 -1
  312. package/modern/context/CartesianContextProvider.js +40 -13
  313. package/modern/context/DrawingProvider.js +14 -0
  314. package/modern/hooks/useChartDimensions.js +2 -0
  315. package/modern/hooks/useMounted.js +16 -0
  316. package/modern/hooks/useReducedMotion.js +27 -0
  317. package/modern/hooks/useTicks.js +15 -9
  318. package/modern/index.js +2 -1
  319. package/modern/internals/components/AxisSharedComponents.js +15 -70
  320. package/modern/internals/components/ChartsText.js +77 -0
  321. package/modern/internals/domUtils.js +113 -0
  322. package/modern/internals/geometry.js +36 -0
  323. package/package.json +9 -6
  324. package/themeAugmentation/components.d.ts +1 -0
  325. package/themeAugmentation/overrides.d.ts +2 -0
@@ -12,6 +12,17 @@ import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
12
12
  import { ChartsClipPath } from '../ChartsClipPath';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
+ /**
16
+ * Demos:
17
+ *
18
+ * - [Bars](https://mui.com/x/react-charts/bars/)
19
+ * - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
20
+ * - [Stacking](https://mui.com/x/react-charts/stacking/)
21
+ *
22
+ * API:
23
+ *
24
+ * - [BarChart API](https://mui.com/x/api/charts/bar-chart/)
25
+ */
15
26
  const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
16
27
  const {
17
28
  xAxis,
@@ -31,6 +42,7 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
31
42
  leftAxis,
32
43
  rightAxis,
33
44
  bottomAxis,
45
+ skipAnimation,
34
46
  children,
35
47
  slots,
36
48
  slotProps
@@ -76,7 +88,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
76
88
  clipPath: `url(#${clipPathId})`,
77
89
  children: /*#__PURE__*/_jsx(BarPlot, {
78
90
  slots: slots,
79
- slotProps: slotProps
91
+ slotProps: slotProps,
92
+ skipAnimation: skipAnimation
80
93
  })
81
94
  }), /*#__PURE__*/_jsx(ChartsAxis, {
82
95
  topAxis: topAxis,
@@ -101,6 +114,13 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
101
114
  // | These PropTypes are generated from the TypeScript type definitions |
102
115
  // | To update them edit the TypeScript types and run "yarn proptypes" |
103
116
  // ----------------------------------------------------------------------
117
+ /**
118
+ * Object `{ x, y }` that defines how the charts highlight the mouse position along the x- and y-axes.
119
+ * The two properties accept the following values:
120
+ * - 'none': display nothing.
121
+ * - 'line': display a line at the current mouse position.
122
+ * - 'band': display a band at the current mouse position. Only available with band scale.
123
+ */
104
124
  axisHighlight: PropTypes.shape({
105
125
  x: PropTypes.oneOf(['band', 'line', 'none']),
106
126
  y: PropTypes.oneOf(['band', 'line', 'none'])
@@ -111,18 +131,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
111
131
  * @default xAxisIds[0] The id of the first provided axis
112
132
  */
113
133
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
114
- axisId: PropTypes.string.isRequired,
134
+ axisId: PropTypes.string,
115
135
  classes: PropTypes.object,
116
136
  disableLine: PropTypes.bool,
117
137
  disableTicks: PropTypes.bool,
118
138
  fill: PropTypes.string,
119
139
  label: PropTypes.string,
120
140
  labelFontSize: PropTypes.number,
141
+ labelStyle: PropTypes.object,
121
142
  position: PropTypes.oneOf(['bottom', 'top']),
122
143
  slotProps: PropTypes.object,
123
144
  slots: PropTypes.object,
124
145
  stroke: PropTypes.string,
125
146
  tickFontSize: PropTypes.number,
147
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
148
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
149
+ tickLabelStyle: PropTypes.object,
126
150
  tickMaxStep: PropTypes.number,
127
151
  tickMinStep: PropTypes.number,
128
152
  tickNumber: PropTypes.number,
@@ -134,9 +158,21 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
134
158
  * Color palette used to colorize multiple series.
135
159
  */
136
160
  colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
161
+ /**
162
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
163
+ */
137
164
  dataset: PropTypes.arrayOf(PropTypes.object),
138
165
  desc: PropTypes.string,
166
+ /**
167
+ * If `true`, the charts will not listen to the mouse move event.
168
+ * It might break interactive features, but will improve performance.
169
+ * @default false
170
+ */
139
171
  disableAxisListener: PropTypes.bool,
172
+ /**
173
+ * The height of the chart in px. If not defined, it takes the height of the parent element.
174
+ * @default undefined
175
+ */
140
176
  height: PropTypes.number,
141
177
  layout: PropTypes.oneOf(['horizontal', 'vertical']),
142
178
  /**
@@ -145,41 +181,47 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
145
181
  * @default yAxisIds[0] The id of the first provided axis
146
182
  */
147
183
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
148
- axisId: PropTypes.string.isRequired,
184
+ axisId: PropTypes.string,
149
185
  classes: PropTypes.object,
150
186
  disableLine: PropTypes.bool,
151
187
  disableTicks: PropTypes.bool,
152
188
  fill: PropTypes.string,
153
189
  label: PropTypes.string,
154
190
  labelFontSize: PropTypes.number,
191
+ labelStyle: PropTypes.object,
155
192
  position: PropTypes.oneOf(['left', 'right']),
156
193
  slotProps: PropTypes.object,
157
194
  slots: PropTypes.object,
158
195
  stroke: PropTypes.string,
159
196
  tickFontSize: PropTypes.number,
197
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
198
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
199
+ tickLabelStyle: PropTypes.object,
160
200
  tickMaxStep: PropTypes.number,
161
201
  tickMinStep: PropTypes.number,
162
202
  tickNumber: PropTypes.number,
163
203
  tickSize: PropTypes.number
164
204
  }), PropTypes.string]),
205
+ /**
206
+ * @deprecated Consider using `slotProps.legend` instead.
207
+ */
165
208
  legend: PropTypes.shape({
166
209
  classes: PropTypes.object,
167
210
  direction: PropTypes.oneOf(['column', 'row']),
168
211
  hidden: PropTypes.bool,
169
- itemWidth: PropTypes.number,
170
- markSize: PropTypes.number,
171
- offset: PropTypes.shape({
172
- x: PropTypes.number,
173
- y: PropTypes.number
174
- }),
175
212
  position: PropTypes.shape({
176
213
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
177
214
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
178
215
  }),
179
216
  slotProps: PropTypes.object,
180
- slots: PropTypes.object,
181
- spacing: PropTypes.number
217
+ slots: PropTypes.object
182
218
  }),
219
+ /**
220
+ * The margin between the SVG and the drawing area.
221
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
222
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
223
+ * @default object Depends on the charts type.
224
+ */
183
225
  margin: PropTypes.shape({
184
226
  bottom: PropTypes.number,
185
227
  left: PropTypes.number,
@@ -192,18 +234,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
192
234
  * @default null
193
235
  */
194
236
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
195
- axisId: PropTypes.string.isRequired,
237
+ axisId: PropTypes.string,
196
238
  classes: PropTypes.object,
197
239
  disableLine: PropTypes.bool,
198
240
  disableTicks: PropTypes.bool,
199
241
  fill: PropTypes.string,
200
242
  label: PropTypes.string,
201
243
  labelFontSize: PropTypes.number,
244
+ labelStyle: PropTypes.object,
202
245
  position: PropTypes.oneOf(['left', 'right']),
203
246
  slotProps: PropTypes.object,
204
247
  slots: PropTypes.object,
205
248
  stroke: PropTypes.string,
206
249
  tickFontSize: PropTypes.number,
250
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
251
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
252
+ tickLabelStyle: PropTypes.object,
207
253
  tickMaxStep: PropTypes.number,
208
254
  tickMinStep: PropTypes.number,
209
255
  tickNumber: PropTypes.number,
@@ -228,6 +274,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
228
274
  xAxisKey: PropTypes.string,
229
275
  yAxisKey: PropTypes.string
230
276
  })).isRequired,
277
+ /**
278
+ * If `true`, animations are skiped.
279
+ * @default false
280
+ */
281
+ skipAnimation: PropTypes.bool,
231
282
  /**
232
283
  * The props used for each component slot.
233
284
  * @default {}
@@ -244,6 +295,8 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
244
295
  axisContent: PropTypes.elementType,
245
296
  classes: PropTypes.object,
246
297
  itemContent: PropTypes.elementType,
298
+ slotProps: PropTypes.object,
299
+ slots: PropTypes.object,
247
300
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
248
301
  }),
249
302
  /**
@@ -252,18 +305,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
252
305
  * @default null
253
306
  */
254
307
  topAxis: PropTypes.oneOfType([PropTypes.shape({
255
- axisId: PropTypes.string.isRequired,
308
+ axisId: PropTypes.string,
256
309
  classes: PropTypes.object,
257
310
  disableLine: PropTypes.bool,
258
311
  disableTicks: PropTypes.bool,
259
312
  fill: PropTypes.string,
260
313
  label: PropTypes.string,
261
314
  labelFontSize: PropTypes.number,
315
+ labelStyle: PropTypes.object,
262
316
  position: PropTypes.oneOf(['bottom', 'top']),
263
317
  slotProps: PropTypes.object,
264
318
  slots: PropTypes.object,
265
319
  stroke: PropTypes.string,
266
320
  tickFontSize: PropTypes.number,
321
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
322
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
323
+ tickLabelStyle: PropTypes.object,
267
324
  tickMaxStep: PropTypes.number,
268
325
  tickMinStep: PropTypes.number,
269
326
  tickNumber: PropTypes.number,
@@ -275,7 +332,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
275
332
  x: PropTypes.number,
276
333
  y: PropTypes.number
277
334
  }),
335
+ /**
336
+ * The width of the chart in px. If not defined, it takes the width of the parent element.
337
+ * @default undefined
338
+ */
278
339
  width: PropTypes.number,
340
+ /**
341
+ * The configuration of the x-axes.
342
+ * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
343
+ */
279
344
  xAxis: PropTypes.arrayOf(PropTypes.shape({
280
345
  axisId: PropTypes.string,
281
346
  classes: PropTypes.object,
@@ -288,6 +353,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
288
353
  id: PropTypes.string,
289
354
  label: PropTypes.string,
290
355
  labelFontSize: PropTypes.number,
356
+ labelStyle: PropTypes.object,
291
357
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
292
358
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
293
359
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -296,12 +362,19 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
296
362
  slots: PropTypes.object,
297
363
  stroke: PropTypes.string,
298
364
  tickFontSize: PropTypes.number,
365
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
366
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
367
+ tickLabelStyle: PropTypes.object,
299
368
  tickMaxStep: PropTypes.number,
300
369
  tickMinStep: PropTypes.number,
301
370
  tickNumber: PropTypes.number,
302
371
  tickSize: PropTypes.number,
303
372
  valueFormatter: PropTypes.func
304
373
  })),
374
+ /**
375
+ * The configuration of the y-axes.
376
+ * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
377
+ */
305
378
  yAxis: PropTypes.arrayOf(PropTypes.shape({
306
379
  axisId: PropTypes.string,
307
380
  classes: PropTypes.object,
@@ -314,6 +387,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
314
387
  id: PropTypes.string,
315
388
  label: PropTypes.string,
316
389
  labelFontSize: PropTypes.number,
390
+ labelStyle: PropTypes.object,
317
391
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
318
392
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
319
393
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -322,6 +396,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
322
396
  slots: PropTypes.object,
323
397
  stroke: PropTypes.string,
324
398
  tickFontSize: PropTypes.number,
399
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
400
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
401
+ tickLabelStyle: PropTypes.object,
325
402
  tickMaxStep: PropTypes.number,
326
403
  tickMinStep: PropTypes.number,
327
404
  tickNumber: PropTypes.number,
@@ -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 = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps"];
3
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps", "style"];
4
4
  import * as React from 'react';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
6
  import { useSlotProps } from '@mui/base/utils';
@@ -8,13 +8,14 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import { color as d3Color } from 'd3-color';
10
10
  import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
11
+ import { animated } from '@react-spring/web';
11
12
  import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
12
13
  import { InteractionContext } from '../context/InteractionProvider';
13
14
  import { jsx as _jsx } from "react/jsx-runtime";
14
15
  export function getBarElementUtilityClass(slot) {
15
16
  return generateUtilityClass('MuiBarElement', slot);
16
17
  }
17
- export const lineElementClasses = generateUtilityClasses('MuiBarElement', ['root']);
18
+ export const barElementClasses = generateUtilityClasses('MuiBarElement', ['root']);
18
19
  const useUtilityClasses = ownerState => {
19
20
  const {
20
21
  classes,
@@ -25,7 +26,7 @@ const useUtilityClasses = ownerState => {
25
26
  };
26
27
  return composeClasses(slots, getBarElementUtilityClass, classes);
27
28
  };
28
- export const BarElementPath = styled('rect', {
29
+ export const BarElementPath = styled(animated.rect, {
29
30
  name: 'MuiBarElement',
30
31
  slot: 'Root',
31
32
  overridesResolver: (_, styles) => styles.root
@@ -47,7 +48,8 @@ export function BarElement(props) {
47
48
  color,
48
49
  highlightScope,
49
50
  slots,
50
- slotProps
51
+ slotProps,
52
+ style
51
53
  } = props,
52
54
  other = _objectWithoutPropertiesLoose(props, _excluded);
53
55
  const getInteractionItemProps = useInteractionItemProps(highlightScope);
@@ -82,6 +84,7 @@ export function BarElement(props) {
82
84
  seriesId: id,
83
85
  dataIndex
84
86
  }), {
87
+ style,
85
88
  className: classes.root
86
89
  }),
87
90
  ownerState
@@ -1,11 +1,14 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
1
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["skipAnimation"];
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
6
+ import { useTransition } from '@react-spring/web';
4
7
  import { SeriesContext } from '../context/SeriesContextProvider';
5
8
  import { CartesianContext } from '../context/CartesianContextProvider';
6
9
  import { BarElement } from './BarElement';
7
10
  import { isBandScaleConfig } from '../models/axis';
8
-
11
+ import { jsx as _jsx } from "react/jsx-runtime";
9
12
  /**
10
13
  * Solution of the equations
11
14
  * W = barWidth * N + offset * (N-1)
@@ -15,7 +18,6 @@ import { isBandScaleConfig } from '../models/axis';
15
18
  * @param gapRatio The ratio of the gap between bars over the bar width.
16
19
  * @returns The bar width and the offset between bars.
17
20
  */
18
- import { jsx as _jsx } from "react/jsx-runtime";
19
21
  function getBandSize({
20
22
  bandWidth: W,
21
23
  numberOfGroups: N,
@@ -34,12 +36,14 @@ function getBandSize({
34
36
  offset
35
37
  };
36
38
  }
37
- function BarPlot(props) {
38
- const seriesData = React.useContext(SeriesContext).bar;
39
+ const useCompletedData = () => {
40
+ var _React$useContext$bar;
41
+ const seriesData = (_React$useContext$bar = React.useContext(SeriesContext).bar) != null ? _React$useContext$bar : {
42
+ series: {},
43
+ stackingGroups: [],
44
+ seriesOrder: []
45
+ };
39
46
  const axisData = React.useContext(CartesianContext);
40
- if (seriesData === undefined) {
41
- return null;
42
- }
43
47
  const {
44
48
  series,
45
49
  stackingGroups
@@ -52,68 +56,144 @@ function BarPlot(props) {
52
56
  } = axisData;
53
57
  const defaultXAxisId = xAxisIds[0];
54
58
  const defaultYAxisId = yAxisIds[0];
55
- return /*#__PURE__*/_jsx(React.Fragment, {
56
- children: stackingGroups.flatMap(({
57
- ids: groupIds
58
- }, groupIndex) => {
59
- return groupIds.flatMap(seriesId => {
60
- var _series$seriesId$xAxi, _series$seriesId$yAxi;
61
- const xAxisKey = (_series$seriesId$xAxi = series[seriesId].xAxisKey) != null ? _series$seriesId$xAxi : defaultXAxisId;
62
- const yAxisKey = (_series$seriesId$yAxi = series[seriesId].yAxisKey) != null ? _series$seriesId$yAxi : defaultYAxisId;
63
- const xAxisConfig = xAxis[xAxisKey];
64
- const yAxisConfig = yAxis[yAxisKey];
65
- const verticalLayout = series[seriesId].layout === 'vertical';
66
- let baseScaleConfig;
67
- if (verticalLayout) {
68
- if (!isBandScaleConfig(xAxisConfig)) {
69
- throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
70
- }
71
- if (xAxis[xAxisKey].data === undefined) {
72
- throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
73
- }
74
- baseScaleConfig = xAxisConfig;
75
- } else {
76
- if (!isBandScaleConfig(yAxisConfig)) {
77
- throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
78
- }
79
- if (yAxis[yAxisKey].data === undefined) {
80
- throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
81
- }
82
- baseScaleConfig = yAxisConfig;
59
+ const data = stackingGroups.flatMap(({
60
+ ids: groupIds
61
+ }, groupIndex) => {
62
+ return groupIds.flatMap(seriesId => {
63
+ var _series$seriesId$xAxi, _series$seriesId$yAxi;
64
+ const xAxisKey = (_series$seriesId$xAxi = series[seriesId].xAxisKey) != null ? _series$seriesId$xAxi : defaultXAxisId;
65
+ const yAxisKey = (_series$seriesId$yAxi = series[seriesId].yAxisKey) != null ? _series$seriesId$yAxi : defaultYAxisId;
66
+ const xAxisConfig = xAxis[xAxisKey];
67
+ const yAxisConfig = yAxis[yAxisKey];
68
+ const verticalLayout = series[seriesId].layout === 'vertical';
69
+ let baseScaleConfig;
70
+ if (verticalLayout) {
71
+ if (!isBandScaleConfig(xAxisConfig)) {
72
+ throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
73
+ }
74
+ if (xAxis[xAxisKey].data === undefined) {
75
+ throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
76
+ }
77
+ baseScaleConfig = xAxisConfig;
78
+ } else {
79
+ if (!isBandScaleConfig(yAxisConfig)) {
80
+ throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
83
81
  }
84
- const xScale = xAxisConfig.scale;
85
- const yScale = yAxisConfig.scale;
86
- const bandWidth = baseScaleConfig.scale.bandwidth();
87
- const {
88
- barWidth,
89
- offset
90
- } = getBandSize({
91
- bandWidth,
92
- numberOfGroups: stackingGroups.length,
93
- gapRatio: baseScaleConfig.barGapRatio
94
- });
95
- const barOffset = groupIndex * (barWidth + offset);
96
- const {
97
- stackedData,
98
- color
99
- } = series[seriesId];
100
- return stackedData.map((values, dataIndex) => {
101
- var _xAxis$xAxisKey$data, _yAxis$yAxisKey$data;
102
- const baseline = Math.min(...values);
103
- const value = Math.max(...values);
104
- return /*#__PURE__*/_jsx(BarElement, _extends({
105
- id: seriesId,
106
- dataIndex: dataIndex,
107
- x: verticalLayout ? xScale((_xAxis$xAxisKey$data = xAxis[xAxisKey].data) == null ? void 0 : _xAxis$xAxisKey$data[dataIndex]) + barOffset : xScale(baseline),
108
- y: verticalLayout ? yScale(value) : yScale((_yAxis$yAxisKey$data = yAxis[yAxisKey].data) == null ? void 0 : _yAxis$yAxisKey$data[dataIndex]) + barOffset,
109
- height: verticalLayout ? Math.abs(yScale(baseline) - yScale(value)) : barWidth,
110
- width: verticalLayout ? barWidth : Math.abs(xScale(baseline) - xScale(value)),
111
- color: color,
112
- highlightScope: series[seriesId].highlightScope
113
- }, props), `${seriesId}-${dataIndex}`);
114
- });
82
+ if (yAxis[yAxisKey].data === undefined) {
83
+ throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
84
+ }
85
+ baseScaleConfig = yAxisConfig;
86
+ }
87
+ const xScale = xAxisConfig.scale;
88
+ const yScale = yAxisConfig.scale;
89
+ const bandWidth = baseScaleConfig.scale.bandwidth();
90
+ const {
91
+ barWidth,
92
+ offset
93
+ } = getBandSize({
94
+ bandWidth,
95
+ numberOfGroups: stackingGroups.length,
96
+ gapRatio: baseScaleConfig.barGapRatio
97
+ });
98
+ const barOffset = groupIndex * (barWidth + offset);
99
+ const {
100
+ stackedData,
101
+ color
102
+ } = series[seriesId];
103
+ return stackedData.map((values, dataIndex) => {
104
+ var _xAxis$xAxisKey$data, _yAxis$yAxisKey$data;
105
+ const bottom = Math.min(...values);
106
+ const top = Math.max(...values);
107
+ return {
108
+ bottom,
109
+ top,
110
+ seriesId,
111
+ dataIndex,
112
+ layout: series[seriesId].layout,
113
+ x: verticalLayout ? xScale((_xAxis$xAxisKey$data = xAxis[xAxisKey].data) == null ? void 0 : _xAxis$xAxisKey$data[dataIndex]) + barOffset : xScale(bottom),
114
+ y: verticalLayout ? yScale(top) : yScale((_yAxis$yAxisKey$data = yAxis[yAxisKey].data) == null ? void 0 : _yAxis$yAxisKey$data[dataIndex]) + barOffset,
115
+ xOrigin: xScale(0),
116
+ yOrigin: yScale(0),
117
+ height: verticalLayout ? Math.abs(yScale(bottom) - yScale(top)) : barWidth,
118
+ width: verticalLayout ? barWidth : Math.abs(xScale(bottom) - xScale(top)),
119
+ color,
120
+ highlightScope: series[seriesId].highlightScope
121
+ };
115
122
  });
116
- })
123
+ });
124
+ });
125
+ return data;
126
+ };
127
+ const getOutStyle = ({
128
+ layout,
129
+ yOrigin,
130
+ x,
131
+ width,
132
+ y,
133
+ xOrigin,
134
+ height
135
+ }) => _extends({}, layout === 'vertical' ? {
136
+ y: yOrigin,
137
+ x,
138
+ height: 0,
139
+ width
140
+ } : {
141
+ y,
142
+ x: xOrigin,
143
+ height,
144
+ width: 0
145
+ });
146
+ const getInStyle = ({
147
+ x,
148
+ width,
149
+ y,
150
+ height
151
+ }) => ({
152
+ y,
153
+ x,
154
+ height,
155
+ width
156
+ });
157
+
158
+ /**
159
+ * Demos:
160
+ *
161
+ * - [Bars](https://mui.com/x/react-charts/bars/)
162
+ * - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
163
+ * - [Stacking](https://mui.com/x/react-charts/stacking/)
164
+ *
165
+ * API:
166
+ *
167
+ * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
168
+ */
169
+ function BarPlot(props) {
170
+ const completedData = useCompletedData();
171
+ const {
172
+ skipAnimation
173
+ } = props,
174
+ other = _objectWithoutPropertiesLoose(props, _excluded);
175
+ const transition = useTransition(completedData, {
176
+ keys: bar => `${bar.seriesId}-${bar.dataIndex}`,
177
+ from: getOutStyle,
178
+ leave: getOutStyle,
179
+ enter: getInStyle,
180
+ update: getInStyle,
181
+ immediate: skipAnimation
182
+ });
183
+ return /*#__PURE__*/_jsx(React.Fragment, {
184
+ children: transition((style, {
185
+ seriesId,
186
+ dataIndex,
187
+ color,
188
+ highlightScope
189
+ }) => /*#__PURE__*/_jsx(BarElement, _extends({
190
+ id: seriesId,
191
+ dataIndex: dataIndex,
192
+ highlightScope: highlightScope,
193
+ color: color
194
+ }, other, {
195
+ style: style
196
+ })))
117
197
  });
118
198
  }
119
199
  process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
@@ -121,6 +201,11 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
121
201
  // | These PropTypes are generated from the TypeScript type definitions |
122
202
  // | To update them edit the TypeScript types and run "yarn proptypes" |
123
203
  // ----------------------------------------------------------------------
204
+ /**
205
+ * If `true`, animations are skiped.
206
+ * @default false
207
+ */
208
+ skipAnimation: PropTypes.bool,
124
209
  /**
125
210
  * The props used for each component slot.
126
211
  * @default {}
@@ -53,7 +53,7 @@ const formatter = (params, dataset) => {
53
53
  return {
54
54
  seriesOrder,
55
55
  stackingGroups,
56
- series: defaultizeValueFormatter(completedSeries, v => v.toLocaleString())
56
+ series: defaultizeValueFormatter(completedSeries, v => v == null ? void 0 : v.toLocaleString())
57
57
  };
58
58
  };
59
59
  export default formatter;
@@ -3,6 +3,7 @@ import useForkRef from '@mui/utils/useForkRef';
3
3
  import { DrawingProvider } from '../context/DrawingProvider';
4
4
  import { SeriesContextProvider } from '../context/SeriesContextProvider';
5
5
  import { InteractionProvider } from '../context/InteractionProvider';
6
+ import { useReducedMotion } from '../hooks/useReducedMotion';
6
7
  import { ChartsSurface } from '../ChartsSurface';
7
8
  import { CartesianContextProvider } from '../context/CartesianContextProvider';
8
9
  import { HighlightProvider } from '../context/HighlightProvider';
@@ -25,6 +26,8 @@ export const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContai
25
26
  } = props;
26
27
  const svgRef = React.useRef(null);
27
28
  const handleRef = useForkRef(ref, svgRef);
29
+ useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion)
30
+
28
31
  return /*#__PURE__*/_jsx(DrawingProvider, {
29
32
  width: width,
30
33
  height: height,