@mui/x-charts 6.0.0-alpha.9 → 6.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/BarChart/BarChart.d.ts +19 -5
  2. package/BarChart/BarChart.js +52 -13
  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 +735 -55
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +28 -2
  13. package/ChartsAxis/axisClasses.d.ts +1 -1
  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 +44 -24
  20. package/ChartsLegend/ChartsLegend.js +192 -150
  21. package/ChartsLegend/chartsLegendClasses.js +1 -2
  22. package/ChartsLegend/utils.d.ts +1 -6
  23. package/ChartsSurface.d.ts +1 -1
  24. package/ChartsSurface.js +9 -18
  25. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  27. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  28. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  29. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  30. package/ChartsTooltip/ChartsTooltip.js +62 -18
  31. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  32. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  33. package/ChartsTooltip/tooltipClasses.js +1 -2
  34. package/ChartsTooltip/utils.js +2 -2
  35. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  36. package/ChartsXAxis/ChartsXAxis.js +161 -40
  37. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  38. package/ChartsYAxis/ChartsYAxis.js +86 -33
  39. package/LineChart/AreaElement.d.ts +11 -1
  40. package/LineChart/AreaElement.js +14 -6
  41. package/LineChart/AreaPlot.d.ts +11 -0
  42. package/LineChart/AreaPlot.js +27 -8
  43. package/LineChart/LineChart.d.ts +16 -3
  44. package/LineChart/LineChart.js +48 -13
  45. package/LineChart/LineElement.d.ts +11 -1
  46. package/LineChart/LineElement.js +14 -6
  47. package/LineChart/LineHighlightElement.d.ts +10 -0
  48. package/LineChart/LineHighlightElement.js +13 -4
  49. package/LineChart/LineHighlightPlot.d.ts +10 -0
  50. package/LineChart/LineHighlightPlot.js +14 -3
  51. package/LineChart/LinePlot.d.ts +10 -0
  52. package/LineChart/LinePlot.js +25 -12
  53. package/LineChart/MarkElement.d.ts +10 -0
  54. package/LineChart/MarkElement.js +14 -5
  55. package/LineChart/MarkPlot.d.ts +10 -0
  56. package/LineChart/MarkPlot.js +40 -9
  57. package/LineChart/formatter.js +5 -5
  58. package/LineChart/legend.js +1 -2
  59. package/PieChart/PieArc.d.ts +11 -13
  60. package/PieChart/PieArc.js +28 -60
  61. package/PieChart/PieArcLabel.d.ts +8 -9
  62. package/PieChart/PieArcLabel.js +46 -38
  63. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  64. package/PieChart/PieArcLabelPlot.js +99 -0
  65. package/PieChart/PieArcPlot.d.ts +35 -0
  66. package/PieChart/PieArcPlot.js +92 -0
  67. package/PieChart/PieChart.d.ts +19 -5
  68. package/PieChart/PieChart.js +61 -14
  69. package/PieChart/PiePlot.d.ts +15 -9
  70. package/PieChart/PiePlot.js +77 -55
  71. package/PieChart/dataTransform/transition.d.ts +4 -0
  72. package/PieChart/dataTransform/transition.js +136 -0
  73. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  74. package/PieChart/dataTransform/useTransformData.js +67 -0
  75. package/PieChart/formatter.js +1 -2
  76. package/PieChart/legend.js +1 -2
  77. package/README.md +8 -14
  78. package/ResponsiveChartContainer/index.js +7 -8
  79. package/ScatterChart/Scatter.d.ts +10 -0
  80. package/ScatterChart/Scatter.js +12 -2
  81. package/ScatterChart/ScatterChart.d.ts +16 -3
  82. package/ScatterChart/ScatterChart.js +43 -12
  83. package/ScatterChart/ScatterPlot.d.ts +10 -0
  84. package/ScatterChart/ScatterPlot.js +12 -2
  85. package/ScatterChart/formatter.js +1 -2
  86. package/ScatterChart/legend.js +1 -2
  87. package/SparkLineChart/SparkLineChart.d.ts +12 -3
  88. package/SparkLineChart/SparkLineChart.js +28 -7
  89. package/colorPalettes/colorPalettes.js +6 -12
  90. package/constants.js +5 -8
  91. package/context/CartesianContextProvider.d.ts +5 -0
  92. package/context/CartesianContextProvider.js +31 -16
  93. package/context/DrawingProvider.d.ts +7 -0
  94. package/context/DrawingProvider.js +12 -6
  95. package/context/HighlightProvider.js +3 -4
  96. package/context/InteractionProvider.js +3 -4
  97. package/context/SeriesContextProvider.js +3 -4
  98. package/esm/BarChart/BarChart.js +49 -9
  99. package/esm/BarChart/BarElement.js +7 -4
  100. package/esm/BarChart/BarPlot.js +152 -67
  101. package/esm/BarChart/formatter.js +1 -1
  102. package/esm/ChartContainer/index.js +3 -0
  103. package/esm/ChartsAxis/ChartsAxis.js +26 -0
  104. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  105. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  106. package/esm/ChartsLegend/ChartsLegend.js +188 -142
  107. package/esm/ChartsSurface.js +4 -12
  108. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  109. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  110. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  111. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  112. package/esm/ChartsXAxis/ChartsXAxis.js +158 -37
  113. package/esm/ChartsYAxis/ChartsYAxis.js +83 -30
  114. package/esm/LineChart/AreaElement.js +10 -0
  115. package/esm/LineChart/AreaPlot.js +26 -6
  116. package/esm/LineChart/LineChart.js +45 -9
  117. package/esm/LineChart/LineElement.js +10 -0
  118. package/esm/LineChart/LineHighlightElement.js +10 -0
  119. package/esm/LineChart/LineHighlightPlot.js +12 -1
  120. package/esm/LineChart/LinePlot.js +25 -14
  121. package/esm/LineChart/MarkElement.js +11 -1
  122. package/esm/LineChart/MarkPlot.js +38 -7
  123. package/esm/LineChart/formatter.js +7 -3
  124. package/esm/PieChart/PieArc.js +26 -58
  125. package/esm/PieChart/PieArcLabel.js +43 -34
  126. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  127. package/esm/PieChart/PieArcPlot.js +84 -0
  128. package/esm/PieChart/PieChart.js +59 -12
  129. package/esm/PieChart/PiePlot.js +76 -57
  130. package/esm/PieChart/dataTransform/transition.js +130 -0
  131. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  132. package/esm/ResponsiveChartContainer/index.js +3 -3
  133. package/esm/ScatterChart/Scatter.js +10 -0
  134. package/esm/ScatterChart/ScatterChart.js +40 -8
  135. package/esm/ScatterChart/ScatterPlot.js +10 -0
  136. package/esm/SparkLineChart/SparkLineChart.js +25 -3
  137. package/esm/constants.js +1 -1
  138. package/esm/context/CartesianContextProvider.js +30 -14
  139. package/esm/context/DrawingProvider.js +8 -0
  140. package/esm/hooks/useChartDimensions.js +2 -0
  141. package/esm/hooks/useMounted.js +16 -0
  142. package/esm/hooks/useReducedMotion.js +27 -0
  143. package/esm/hooks/useTicks.js +15 -9
  144. package/esm/internals/components/AxisSharedComponents.js +15 -70
  145. package/esm/internals/components/ChartsText.js +77 -0
  146. package/esm/internals/domUtils.js +113 -0
  147. package/esm/internals/geometry.js +36 -0
  148. package/hooks/useAxisEvents.js +2 -2
  149. package/hooks/useChartDimensions.d.ts +2 -0
  150. package/hooks/useChartDimensions.js +5 -4
  151. package/hooks/useDrawingArea.js +2 -2
  152. package/hooks/useInteractionItemProps.js +2 -2
  153. package/hooks/useMounted.d.ts +1 -0
  154. package/hooks/useMounted.js +25 -0
  155. package/hooks/useReducedMotion.d.ts +8 -0
  156. package/hooks/useReducedMotion.js +33 -0
  157. package/hooks/useScale.d.ts +2 -2
  158. package/hooks/useScale.js +2 -2
  159. package/hooks/useTicks.d.ts +19 -11
  160. package/hooks/useTicks.js +19 -14
  161. package/index.js +1 -1
  162. package/internals/components/AxisSharedComponents.d.ts +0 -4
  163. package/internals/components/AxisSharedComponents.js +18 -78
  164. package/internals/components/ChartsText.d.ts +35 -0
  165. package/internals/components/ChartsText.js +87 -0
  166. package/internals/defaultizeColor.d.ts +7 -2
  167. package/internals/defaultizeValueFormatter.js +1 -2
  168. package/internals/domUtils.d.ts +13 -0
  169. package/internals/domUtils.js +122 -0
  170. package/internals/geometry.d.ts +9 -0
  171. package/internals/geometry.js +42 -0
  172. package/internals/stackSeries.js +2 -4
  173. package/legacy/BarChart/BarChart.js +49 -9
  174. package/legacy/BarChart/BarElement.js +6 -3
  175. package/legacy/BarChart/BarPlot.js +151 -63
  176. package/legacy/BarChart/formatter.js +1 -1
  177. package/legacy/ChartContainer/index.js +3 -0
  178. package/legacy/ChartsAxis/ChartsAxis.js +26 -0
  179. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  180. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  181. package/legacy/ChartsLegend/ChartsLegend.js +203 -140
  182. package/legacy/ChartsSurface.js +3 -12
  183. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  184. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  185. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  186. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  187. package/legacy/ChartsXAxis/ChartsXAxis.js +162 -39
  188. package/legacy/ChartsYAxis/ChartsYAxis.js +83 -30
  189. package/legacy/LineChart/AreaElement.js +10 -0
  190. package/legacy/LineChart/AreaPlot.js +31 -7
  191. package/legacy/LineChart/LineChart.js +45 -9
  192. package/legacy/LineChart/LineElement.js +10 -0
  193. package/legacy/LineChart/LineHighlightElement.js +10 -0
  194. package/legacy/LineChart/LineHighlightPlot.js +12 -1
  195. package/legacy/LineChart/LinePlot.js +29 -12
  196. package/legacy/LineChart/MarkElement.js +11 -1
  197. package/legacy/LineChart/MarkPlot.js +37 -7
  198. package/legacy/LineChart/formatter.js +7 -3
  199. package/legacy/PieChart/PieArc.js +30 -62
  200. package/legacy/PieChart/PieArcLabel.js +48 -34
  201. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  202. package/legacy/PieChart/PieArcPlot.js +84 -0
  203. package/legacy/PieChart/PieChart.js +59 -12
  204. package/legacy/PieChart/PiePlot.js +76 -59
  205. package/legacy/PieChart/dataTransform/transition.js +142 -0
  206. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  207. package/legacy/ResponsiveChartContainer/index.js +3 -3
  208. package/legacy/ScatterChart/Scatter.js +10 -0
  209. package/legacy/ScatterChart/ScatterChart.js +40 -8
  210. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  211. package/legacy/SparkLineChart/SparkLineChart.js +25 -3
  212. package/legacy/constants.js +1 -1
  213. package/legacy/context/CartesianContextProvider.js +30 -14
  214. package/legacy/context/DrawingProvider.js +8 -0
  215. package/legacy/hooks/useChartDimensions.js +2 -0
  216. package/legacy/hooks/useMounted.js +21 -0
  217. package/legacy/hooks/useReducedMotion.js +27 -0
  218. package/legacy/hooks/useTicks.js +16 -9
  219. package/legacy/index.js +1 -1
  220. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  221. package/legacy/internals/components/ChartsText.js +79 -0
  222. package/legacy/internals/domUtils.js +121 -0
  223. package/legacy/internals/geometry.js +37 -0
  224. package/models/axis.d.ts +27 -9
  225. package/models/layout.d.ts +7 -6
  226. package/models/seriesType/line.d.ts +8 -3
  227. package/models/seriesType/pie.d.ts +5 -1
  228. package/modern/BarChart/BarChart.js +49 -9
  229. package/modern/BarChart/BarElement.js +7 -4
  230. package/modern/BarChart/BarPlot.js +149 -65
  231. package/modern/BarChart/formatter.js +1 -1
  232. package/modern/ChartContainer/index.js +3 -0
  233. package/modern/ChartsAxis/ChartsAxis.js +26 -0
  234. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  235. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  236. package/modern/ChartsLegend/ChartsLegend.js +188 -142
  237. package/modern/ChartsSurface.js +4 -12
  238. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  239. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  240. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  241. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  242. package/modern/ChartsXAxis/ChartsXAxis.js +158 -37
  243. package/modern/ChartsYAxis/ChartsYAxis.js +83 -30
  244. package/modern/LineChart/AreaElement.js +10 -0
  245. package/modern/LineChart/AreaPlot.js +25 -6
  246. package/modern/LineChart/LineChart.js +45 -9
  247. package/modern/LineChart/LineElement.js +10 -0
  248. package/modern/LineChart/LineHighlightElement.js +10 -0
  249. package/modern/LineChart/LineHighlightPlot.js +12 -1
  250. package/modern/LineChart/LinePlot.js +23 -10
  251. package/modern/LineChart/MarkElement.js +11 -1
  252. package/modern/LineChart/MarkPlot.js +38 -7
  253. package/modern/LineChart/formatter.js +4 -3
  254. package/modern/PieChart/PieArc.js +26 -57
  255. package/modern/PieChart/PieArcLabel.js +43 -34
  256. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  257. package/modern/PieChart/PieArcPlot.js +83 -0
  258. package/modern/PieChart/PieChart.js +59 -12
  259. package/modern/PieChart/PiePlot.js +76 -55
  260. package/modern/PieChart/dataTransform/transition.js +130 -0
  261. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  262. package/modern/ResponsiveChartContainer/index.js +3 -3
  263. package/modern/ScatterChart/Scatter.js +10 -0
  264. package/modern/ScatterChart/ScatterChart.js +40 -8
  265. package/modern/ScatterChart/ScatterPlot.js +10 -0
  266. package/modern/SparkLineChart/SparkLineChart.js +25 -3
  267. package/modern/constants.js +1 -1
  268. package/modern/context/CartesianContextProvider.js +29 -13
  269. package/modern/context/DrawingProvider.js +8 -0
  270. package/modern/hooks/useChartDimensions.js +2 -0
  271. package/modern/hooks/useMounted.js +16 -0
  272. package/modern/hooks/useReducedMotion.js +27 -0
  273. package/modern/hooks/useTicks.js +15 -9
  274. package/modern/index.js +1 -1
  275. package/modern/internals/components/AxisSharedComponents.js +15 -70
  276. package/modern/internals/components/ChartsText.js +77 -0
  277. package/modern/internals/domUtils.js +113 -0
  278. package/modern/internals/geometry.js +36 -0
  279. package/package.json +9 -6
  280. package/themeAugmentation/components.d.ts +1 -0
  281. package/themeAugmentation/overrides.d.ts +2 -0
package/models/axis.d.ts CHANGED
@@ -2,19 +2,20 @@
2
2
  import type { ScaleBand, ScaleLogarithmic, ScalePower, ScaleTime, ScaleLinear, ScalePoint } from 'd3-scale';
3
3
  import { ChartsAxisClasses } from '../ChartsAxis/axisClasses';
4
4
  import type { TickParams } from '../hooks/useTicks';
5
- export type D3Scale = ScaleBand<any> | ScaleLogarithmic<any, any> | ScalePoint<any> | ScalePower<any, any> | ScaleTime<any, any> | ScaleLinear<any, any>;
6
- export type D3ContinuouseScale = ScaleLogarithmic<any, any> | ScalePower<any, any> | ScaleTime<any, any> | ScaleLinear<any, any>;
5
+ import { ChartsTextProps } from '../internals/components/ChartsText';
6
+ export type D3Scale = ScaleBand<any> | ScaleLogarithmic<any, number> | ScalePoint<any> | ScalePower<any, number> | ScaleTime<any, number> | ScaleLinear<any, number>;
7
+ export type D3ContinuouseScale = ScaleLogarithmic<any, number> | ScalePower<any, number> | ScaleTime<any, number> | ScaleLinear<any, number>;
7
8
  export interface ChartsAxisSlotsComponent {
8
9
  axisLine?: React.JSXElementConstructor<React.SVGAttributes<SVGPathElement>>;
9
10
  axisTick?: React.JSXElementConstructor<React.SVGAttributes<SVGPathElement>>;
10
- axisTickLabel?: React.JSXElementConstructor<React.SVGAttributes<SVGTextElement>>;
11
- axisLabel?: React.JSXElementConstructor<React.SVGAttributes<SVGTextElement>>;
11
+ axisTickLabel?: React.JSXElementConstructor<ChartsTextProps>;
12
+ axisLabel?: React.JSXElementConstructor<ChartsTextProps>;
12
13
  }
13
14
  export interface ChartsAxisSlotComponentProps {
14
15
  axisLine?: Partial<React.SVGAttributes<SVGPathElement>>;
15
16
  axisTick?: Partial<React.SVGAttributes<SVGPathElement>>;
16
- axisTickLabel?: Partial<React.SVGAttributes<SVGTextElement>>;
17
- axisLabel?: Partial<React.SVGAttributes<SVGTextElement>>;
17
+ axisTickLabel?: Partial<ChartsTextProps>;
18
+ axisLabel?: Partial<ChartsTextProps>;
18
19
  }
19
20
  export interface ChartsAxisProps extends TickParams {
20
21
  /**
@@ -39,8 +40,24 @@ export interface ChartsAxisProps extends TickParams {
39
40
  /**
40
41
  * The font size of the axis ticks text.
41
42
  * @default 12
43
+ * @deprecated Consider using `tickLabelStyle.fontSize` instead.
42
44
  */
43
45
  tickFontSize?: number;
46
+ /**
47
+ * The style applied to ticks text.
48
+ */
49
+ tickLabelStyle?: ChartsTextProps['style'];
50
+ /**
51
+ * The style applied to the axis label.
52
+ */
53
+ labelStyle?: ChartsTextProps['style'];
54
+ /**
55
+ * Defines which ticks get its label displayed. Its value can be:
56
+ * - 'auto' In such case, labels are displayed if they do not overlap with the previous one.
57
+ * - a filtering function of the form (value, index) => boolean. Warning: the index is tick index, not data ones.
58
+ * @default 'auto'
59
+ */
60
+ tickLabelInterval?: 'auto' | ((value: any, index: number) => boolean);
44
61
  /**
45
62
  * The label of the axis.
46
63
  */
@@ -48,6 +65,7 @@ export interface ChartsAxisProps extends TickParams {
48
65
  /**
49
66
  * The font size of the axis label.
50
67
  * @default 14
68
+ * @deprecated Consider using `labelStyle.fontSize` instead.
51
69
  */
52
70
  labelFontSize?: number;
53
71
  /**
@@ -96,13 +114,13 @@ interface AxisScaleConfig {
96
114
  /**
97
115
  * The ratio between the space allocated for padding between two categories and the category width.
98
116
  * 0 means no gap, and 1 no data.
99
- * @default 0.1
117
+ * @default 0.2
100
118
  */
101
119
  categoryGapRatio: number;
102
120
  /**
103
121
  * The ratio between the width of a bar, and the gap between two bars.
104
122
  * 0 means no gap, and 1 no bar.
105
- * @default 0
123
+ * @default 0.1
106
124
  */
107
125
  barGapRatio: number;
108
126
  };
@@ -151,7 +169,7 @@ export type AxisConfig<S extends ScaleName = ScaleName, V = any> = {
151
169
  hideTooltip?: boolean;
152
170
  } & Partial<ChartsXAxisProps | ChartsYAxisProps> & Partial<Omit<AxisScaleConfig[S], 'scale'>> & TickParams;
153
171
  export type AxisDefaultized<S extends ScaleName = ScaleName, V = any> = Omit<AxisConfig<S, V>, 'scaleType'> & AxisScaleConfig[S] & {
154
- ticksNumber: number;
172
+ tickNumber: number;
155
173
  };
156
174
  export declare function isBandScaleConfig(scaleConfig: AxisConfig<ScaleName>): scaleConfig is AxisConfig<'band'> & {
157
175
  scaleType: 'band';
@@ -1,10 +1,11 @@
1
+ export interface CardinalDirections<T> {
2
+ top?: T;
3
+ bottom?: T;
4
+ left?: T;
5
+ right?: T;
6
+ }
1
7
  export type LayoutConfig = {
2
8
  width: number;
3
9
  height: number;
4
- margin?: {
5
- top?: number;
6
- bottom?: number;
7
- left?: number;
8
- right?: number;
9
- };
10
+ margin?: Partial<CardinalDirections<number>>;
10
11
  };
@@ -1,7 +1,7 @@
1
1
  import { DefaultizedProps } from '../helpers';
2
2
  import { CartesianSeriesType, CommonDefaultizedProps, CommonSeriesType, StackableSeriesType } from './common';
3
3
  export type CurveType = 'catmullRom' | 'linear' | 'monotoneX' | 'monotoneY' | 'natural' | 'step' | 'stepBefore' | 'stepAfter';
4
- export interface ShowMarkParams {
4
+ export interface ShowMarkParams<AxisValue = number | Date> {
5
5
  /**
6
6
  * The item index.
7
7
  */
@@ -17,7 +17,7 @@ export interface ShowMarkParams {
17
17
  /**
18
18
  * The item position value. It likely comes from the axis `data` property.
19
19
  */
20
- position: number | Date;
20
+ position: AxisValue;
21
21
  /**
22
22
  * The item value. It comes from the series `data` property.
23
23
  */
@@ -28,7 +28,7 @@ export interface LineSeriesType extends CommonSeriesType<number>, CartesianSerie
28
28
  /**
29
29
  * Data associated to the line.
30
30
  */
31
- data?: number[];
31
+ data?: (number | null)[];
32
32
  /**
33
33
  * The key used to retrive data from the dataset.
34
34
  */
@@ -48,6 +48,11 @@ export interface LineSeriesType extends CommonSeriesType<number>, CartesianSerie
48
48
  * @default false
49
49
  */
50
50
  disableHighlight?: boolean;
51
+ /**
52
+ * If `true`, line and area connect points separated by `null` values.
53
+ * @default false
54
+ */
55
+ connectNulls?: boolean;
51
56
  }
52
57
  /**
53
58
  * An object that allows to identify a single line.
@@ -7,7 +7,7 @@ export type PieValueType = {
7
7
  label?: string;
8
8
  color?: string;
9
9
  };
10
- export type DefaultizedPieValueType = PieValueType & D3PieArcDatum<any> & {
10
+ export type DefaultizedPieValueType = PieValueType & Omit<D3PieArcDatum<any>, 'data'> & {
11
11
  color: string;
12
12
  formattedValue: string;
13
13
  };
@@ -76,6 +76,8 @@ export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Td
76
76
  innerRadius?: number;
77
77
  outerRadius?: number;
78
78
  cornerRadius?: number;
79
+ paddingAngle?: number;
80
+ color?: string;
79
81
  };
80
82
  /**
81
83
  * Override the arc attibutes when it is faded.
@@ -89,6 +91,8 @@ export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Td
89
91
  innerRadius?: number;
90
92
  outerRadius?: number;
91
93
  cornerRadius?: number;
94
+ paddingAngle?: number;
95
+ color?: string;
92
96
  };
93
97
  }
94
98
  /**
@@ -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
@@ -73,7 +85,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
73
85
  clipPath: `url(#${clipPathId})`,
74
86
  children: /*#__PURE__*/_jsx(BarPlot, {
75
87
  slots: slots,
76
- slotProps: slotProps
88
+ slotProps: slotProps,
89
+ skipAnimation: skipAnimation
77
90
  })
78
91
  }), /*#__PURE__*/_jsx(ChartsAxis, {
79
92
  topAxis: topAxis,
@@ -115,11 +128,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
115
128
  fill: PropTypes.string,
116
129
  label: PropTypes.string,
117
130
  labelFontSize: PropTypes.number,
131
+ labelStyle: PropTypes.object,
118
132
  position: PropTypes.oneOf(['bottom', 'top']),
119
133
  slotProps: PropTypes.object,
120
134
  slots: PropTypes.object,
121
135
  stroke: PropTypes.string,
122
136
  tickFontSize: PropTypes.number,
137
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
138
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
139
+ tickLabelStyle: PropTypes.object,
123
140
  tickMaxStep: PropTypes.number,
124
141
  tickMinStep: PropTypes.number,
125
142
  tickNumber: PropTypes.number,
@@ -149,33 +166,33 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
149
166
  fill: PropTypes.string,
150
167
  label: PropTypes.string,
151
168
  labelFontSize: PropTypes.number,
169
+ labelStyle: PropTypes.object,
152
170
  position: PropTypes.oneOf(['left', 'right']),
153
171
  slotProps: PropTypes.object,
154
172
  slots: PropTypes.object,
155
173
  stroke: PropTypes.string,
156
174
  tickFontSize: PropTypes.number,
175
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
176
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
177
+ tickLabelStyle: PropTypes.object,
157
178
  tickMaxStep: PropTypes.number,
158
179
  tickMinStep: PropTypes.number,
159
180
  tickNumber: PropTypes.number,
160
181
  tickSize: PropTypes.number
161
182
  }), PropTypes.string]),
183
+ /**
184
+ * @deprecated Consider using `slotProps.legend` instead.
185
+ */
162
186
  legend: PropTypes.shape({
163
187
  classes: PropTypes.object,
164
188
  direction: PropTypes.oneOf(['column', 'row']),
165
189
  hidden: PropTypes.bool,
166
- itemWidth: PropTypes.number,
167
- markSize: PropTypes.number,
168
- offset: PropTypes.shape({
169
- x: PropTypes.number,
170
- y: PropTypes.number
171
- }),
172
190
  position: PropTypes.shape({
173
191
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
174
192
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
175
193
  }),
176
194
  slotProps: PropTypes.object,
177
- slots: PropTypes.object,
178
- spacing: PropTypes.number
195
+ slots: PropTypes.object
179
196
  }),
180
197
  margin: PropTypes.shape({
181
198
  bottom: PropTypes.number,
@@ -196,11 +213,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
196
213
  fill: PropTypes.string,
197
214
  label: PropTypes.string,
198
215
  labelFontSize: PropTypes.number,
216
+ labelStyle: PropTypes.object,
199
217
  position: PropTypes.oneOf(['left', 'right']),
200
218
  slotProps: PropTypes.object,
201
219
  slots: PropTypes.object,
202
220
  stroke: PropTypes.string,
203
221
  tickFontSize: PropTypes.number,
222
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
223
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
224
+ tickLabelStyle: PropTypes.object,
204
225
  tickMaxStep: PropTypes.number,
205
226
  tickMinStep: PropTypes.number,
206
227
  tickNumber: PropTypes.number,
@@ -225,6 +246,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
225
246
  xAxisKey: PropTypes.string,
226
247
  yAxisKey: PropTypes.string
227
248
  })).isRequired,
249
+ /**
250
+ * If `true`, animations are skiped.
251
+ * @default false
252
+ */
253
+ skipAnimation: PropTypes.bool,
228
254
  /**
229
255
  * The props used for each component slot.
230
256
  * @default {}
@@ -241,6 +267,8 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
241
267
  axisContent: PropTypes.elementType,
242
268
  classes: PropTypes.object,
243
269
  itemContent: PropTypes.elementType,
270
+ slotProps: PropTypes.object,
271
+ slots: PropTypes.object,
244
272
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
245
273
  }),
246
274
  /**
@@ -256,11 +284,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
256
284
  fill: PropTypes.string,
257
285
  label: PropTypes.string,
258
286
  labelFontSize: PropTypes.number,
287
+ labelStyle: PropTypes.object,
259
288
  position: PropTypes.oneOf(['bottom', 'top']),
260
289
  slotProps: PropTypes.object,
261
290
  slots: PropTypes.object,
262
291
  stroke: PropTypes.string,
263
292
  tickFontSize: PropTypes.number,
293
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
294
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
295
+ tickLabelStyle: PropTypes.object,
264
296
  tickMaxStep: PropTypes.number,
265
297
  tickMinStep: PropTypes.number,
266
298
  tickNumber: PropTypes.number,
@@ -285,6 +317,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
285
317
  id: PropTypes.string,
286
318
  label: PropTypes.string,
287
319
  labelFontSize: PropTypes.number,
320
+ labelStyle: PropTypes.object,
288
321
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
289
322
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
290
323
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -293,6 +326,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
293
326
  slots: PropTypes.object,
294
327
  stroke: PropTypes.string,
295
328
  tickFontSize: PropTypes.number,
329
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
330
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
331
+ tickLabelStyle: PropTypes.object,
296
332
  tickMaxStep: PropTypes.number,
297
333
  tickMinStep: PropTypes.number,
298
334
  tickNumber: PropTypes.number,
@@ -311,6 +347,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
311
347
  id: PropTypes.string,
312
348
  label: PropTypes.string,
313
349
  labelFontSize: PropTypes.number,
350
+ labelStyle: PropTypes.object,
314
351
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
315
352
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
316
353
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -319,6 +356,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
319
356
  slots: PropTypes.object,
320
357
  stroke: PropTypes.string,
321
358
  tickFontSize: PropTypes.number,
359
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
360
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
361
+ tickLabelStyle: PropTypes.object,
322
362
  tickMaxStep: PropTypes.number,
323
363
  tickMinStep: PropTypes.number,
324
364
  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
@@ -46,7 +47,8 @@ export function BarElement(props) {
46
47
  color,
47
48
  highlightScope,
48
49
  slots,
49
- slotProps
50
+ slotProps,
51
+ style
50
52
  } = props,
51
53
  other = _objectWithoutPropertiesLoose(props, _excluded);
52
54
  const getInteractionItemProps = useInteractionItemProps(highlightScope);
@@ -81,6 +83,7 @@ export function BarElement(props) {
81
83
  seriesId: id,
82
84
  dataIndex
83
85
  }), {
86
+ style,
84
87
  className: classes.root
85
88
  }),
86
89
  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,13 @@ function getBandSize({
34
36
  offset
35
37
  };
36
38
  }
37
- function BarPlot(props) {
38
- const seriesData = React.useContext(SeriesContext).bar;
39
+ const useCompletedData = () => {
40
+ const seriesData = React.useContext(SeriesContext).bar ?? {
41
+ series: {},
42
+ stackingGroups: [],
43
+ seriesOrder: []
44
+ };
39
45
  const axisData = React.useContext(CartesianContext);
40
- if (seriesData === undefined) {
41
- return null;
42
- }
43
46
  const {
44
47
  series,
45
48
  stackingGroups
@@ -52,66 +55,142 @@ function BarPlot(props) {
52
55
  } = axisData;
53
56
  const defaultXAxisId = xAxisIds[0];
54
57
  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
- const xAxisKey = series[seriesId].xAxisKey ?? defaultXAxisId;
61
- const yAxisKey = series[seriesId].yAxisKey ?? defaultYAxisId;
62
- const xAxisConfig = xAxis[xAxisKey];
63
- const yAxisConfig = yAxis[yAxisKey];
64
- const verticalLayout = series[seriesId].layout === 'vertical';
65
- let baseScaleConfig;
66
- if (verticalLayout) {
67
- if (!isBandScaleConfig(xAxisConfig)) {
68
- throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
69
- }
70
- if (xAxis[xAxisKey].data === undefined) {
71
- throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
72
- }
73
- baseScaleConfig = xAxisConfig;
74
- } else {
75
- if (!isBandScaleConfig(yAxisConfig)) {
76
- throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
77
- }
78
- if (yAxis[yAxisKey].data === undefined) {
79
- throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
80
- }
81
- baseScaleConfig = yAxisConfig;
58
+ const data = stackingGroups.flatMap(({
59
+ ids: groupIds
60
+ }, groupIndex) => {
61
+ return groupIds.flatMap(seriesId => {
62
+ const xAxisKey = series[seriesId].xAxisKey ?? defaultXAxisId;
63
+ const yAxisKey = series[seriesId].yAxisKey ?? defaultYAxisId;
64
+ const xAxisConfig = xAxis[xAxisKey];
65
+ const yAxisConfig = yAxis[yAxisKey];
66
+ const verticalLayout = series[seriesId].layout === 'vertical';
67
+ let baseScaleConfig;
68
+ if (verticalLayout) {
69
+ if (!isBandScaleConfig(xAxisConfig)) {
70
+ throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
71
+ }
72
+ if (xAxis[xAxisKey].data === undefined) {
73
+ throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
74
+ }
75
+ baseScaleConfig = xAxisConfig;
76
+ } else {
77
+ if (!isBandScaleConfig(yAxisConfig)) {
78
+ throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
82
79
  }
83
- const xScale = xAxisConfig.scale;
84
- const yScale = yAxisConfig.scale;
85
- const bandWidth = baseScaleConfig.scale.bandwidth();
86
- const {
87
- barWidth,
88
- offset
89
- } = getBandSize({
90
- bandWidth,
91
- numberOfGroups: stackingGroups.length,
92
- gapRatio: baseScaleConfig.barGapRatio
93
- });
94
- const barOffset = groupIndex * (barWidth + offset);
95
- const {
96
- stackedData,
97
- color
98
- } = series[seriesId];
99
- return stackedData.map((values, dataIndex) => {
100
- const baseline = Math.min(...values);
101
- const value = Math.max(...values);
102
- return /*#__PURE__*/_jsx(BarElement, _extends({
103
- id: seriesId,
104
- dataIndex: dataIndex,
105
- x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex]) + barOffset : xScale(baseline),
106
- y: verticalLayout ? yScale(value) : yScale(yAxis[yAxisKey].data?.[dataIndex]) + barOffset,
107
- height: verticalLayout ? Math.abs(yScale(baseline) - yScale(value)) : barWidth,
108
- width: verticalLayout ? barWidth : Math.abs(xScale(baseline) - xScale(value)),
109
- color: color,
110
- highlightScope: series[seriesId].highlightScope
111
- }, props), `${seriesId}-${dataIndex}`);
112
- });
80
+ if (yAxis[yAxisKey].data === undefined) {
81
+ throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
82
+ }
83
+ baseScaleConfig = yAxisConfig;
84
+ }
85
+ const xScale = xAxisConfig.scale;
86
+ const yScale = yAxisConfig.scale;
87
+ const bandWidth = baseScaleConfig.scale.bandwidth();
88
+ const {
89
+ barWidth,
90
+ offset
91
+ } = getBandSize({
92
+ bandWidth,
93
+ numberOfGroups: stackingGroups.length,
94
+ gapRatio: baseScaleConfig.barGapRatio
95
+ });
96
+ const barOffset = groupIndex * (barWidth + offset);
97
+ const {
98
+ stackedData,
99
+ color
100
+ } = series[seriesId];
101
+ return stackedData.map((values, dataIndex) => {
102
+ const bottom = Math.min(...values);
103
+ const top = Math.max(...values);
104
+ return {
105
+ bottom,
106
+ top,
107
+ seriesId,
108
+ dataIndex,
109
+ layout: series[seriesId].layout,
110
+ x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex]) + barOffset : xScale(bottom),
111
+ y: verticalLayout ? yScale(top) : yScale(yAxis[yAxisKey].data?.[dataIndex]) + barOffset,
112
+ xOrigin: xScale(0),
113
+ yOrigin: yScale(0),
114
+ height: verticalLayout ? Math.abs(yScale(bottom) - yScale(top)) : barWidth,
115
+ width: verticalLayout ? barWidth : Math.abs(xScale(bottom) - xScale(top)),
116
+ color,
117
+ highlightScope: series[seriesId].highlightScope
118
+ };
113
119
  });
114
- })
120
+ });
121
+ });
122
+ return data;
123
+ };
124
+ const getOutStyle = ({
125
+ layout,
126
+ yOrigin,
127
+ x,
128
+ width,
129
+ y,
130
+ xOrigin,
131
+ height
132
+ }) => _extends({}, layout === 'vertical' ? {
133
+ y: yOrigin,
134
+ x,
135
+ height: 0,
136
+ width
137
+ } : {
138
+ y,
139
+ x: xOrigin,
140
+ height,
141
+ width: 0
142
+ });
143
+ const getInStyle = ({
144
+ x,
145
+ width,
146
+ y,
147
+ height
148
+ }) => ({
149
+ y,
150
+ x,
151
+ height,
152
+ width
153
+ });
154
+
155
+ /**
156
+ * Demos:
157
+ *
158
+ * - [Bars](https://mui.com/x/react-charts/bars/)
159
+ * - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
160
+ * - [Stacking](https://mui.com/x/react-charts/stacking/)
161
+ *
162
+ * API:
163
+ *
164
+ * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
165
+ */
166
+ function BarPlot(props) {
167
+ const completedData = useCompletedData();
168
+ const {
169
+ skipAnimation
170
+ } = props,
171
+ other = _objectWithoutPropertiesLoose(props, _excluded);
172
+ const transition = useTransition(completedData, {
173
+ keys: bar => `${bar.seriesId}-${bar.dataIndex}`,
174
+ from: getOutStyle,
175
+ leave: getOutStyle,
176
+ enter: getInStyle,
177
+ update: getInStyle,
178
+ immediate: skipAnimation
179
+ });
180
+ return /*#__PURE__*/_jsx(React.Fragment, {
181
+ children: transition((style, {
182
+ seriesId,
183
+ dataIndex,
184
+ color,
185
+ highlightScope
186
+ }) => /*#__PURE__*/_jsx(BarElement, _extends({
187
+ id: seriesId,
188
+ dataIndex: dataIndex,
189
+ highlightScope: highlightScope,
190
+ color: color
191
+ }, other, {
192
+ style: style
193
+ })))
115
194
  });
116
195
  }
117
196
  process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
@@ -119,6 +198,11 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
119
198
  // | These PropTypes are generated from the TypeScript type definitions |
120
199
  // | To update them edit the TypeScript types and run "yarn proptypes" |
121
200
  // ----------------------------------------------------------------------
201
+ /**
202
+ * If `true`, animations are skiped.
203
+ * @default false
204
+ */
205
+ skipAnimation: PropTypes.bool,
122
206
  /**
123
207
  * The props used for each component slot.
124
208
  * @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?.toLocaleString())
57
57
  };
58
58
  };
59
59
  export default formatter;