@mui/x-charts 6.0.0-alpha.15 → 6.0.0-alpha.17

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 (184) hide show
  1. package/BarChart/BarChart.d.ts +13 -2
  2. package/BarChart/BarChart.js +45 -3
  3. package/BarChart/BarElement.d.ts +1318 -3
  4. package/BarChart/BarElement.js +10 -8
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +131 -0
  9. package/ChartContainer/index.js +5 -2
  10. package/ChartsAxis/ChartsAxis.js +18 -2
  11. package/ChartsAxis/axisClasses.d.ts +1 -1
  12. package/ChartsAxisHighlight/ChartsAxisHighlight.js +2 -2
  13. package/ChartsClipPath/ChartsClipPath.js +2 -2
  14. package/ChartsLegend/ChartsLegend.d.ts +2 -1
  15. package/ChartsLegend/ChartsLegend.js +12 -8
  16. package/ChartsSurface.js +2 -2
  17. package/ChartsTooltip/ChartsAxisTooltipContent.js +29 -23
  18. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  19. package/ChartsTooltip/ChartsTooltip.js +2 -2
  20. package/ChartsTooltip/utils.js +2 -2
  21. package/ChartsXAxis/ChartsXAxis.js +123 -35
  22. package/ChartsYAxis/ChartsYAxis.js +38 -16
  23. package/LineChart/AreaElement.d.ts +10 -0
  24. package/LineChart/AreaElement.js +12 -2
  25. package/LineChart/AreaPlot.d.ts +11 -0
  26. package/LineChart/AreaPlot.js +24 -7
  27. package/LineChart/LineChart.d.ts +10 -0
  28. package/LineChart/LineChart.js +36 -2
  29. package/LineChart/LineElement.d.ts +10 -0
  30. package/LineChart/LineElement.js +12 -2
  31. package/LineChart/LineHighlightElement.d.ts +10 -0
  32. package/LineChart/LineHighlightElement.js +12 -2
  33. package/LineChart/LineHighlightPlot.d.ts +10 -0
  34. package/LineChart/LineHighlightPlot.js +14 -3
  35. package/LineChart/LinePlot.d.ts +10 -0
  36. package/LineChart/LinePlot.js +22 -11
  37. package/LineChart/MarkElement.d.ts +10 -0
  38. package/LineChart/MarkElement.js +12 -2
  39. package/LineChart/MarkPlot.d.ts +10 -0
  40. package/LineChart/MarkPlot.js +40 -9
  41. package/LineChart/formatter.js +4 -3
  42. package/PieChart/PieArc.js +2 -2
  43. package/PieChart/PieArcLabel.js +2 -2
  44. package/PieChart/PieChart.d.ts +10 -0
  45. package/PieChart/PieChart.js +37 -2
  46. package/PieChart/PiePlot.d.ts +10 -0
  47. package/PieChart/PiePlot.js +12 -2
  48. package/ResponsiveChartContainer/index.js +4 -4
  49. package/ScatterChart/Scatter.d.ts +10 -0
  50. package/ScatterChart/Scatter.js +12 -2
  51. package/ScatterChart/ScatterChart.d.ts +10 -0
  52. package/ScatterChart/ScatterChart.js +36 -2
  53. package/ScatterChart/ScatterPlot.d.ts +10 -0
  54. package/ScatterChart/ScatterPlot.js +12 -2
  55. package/SparkLineChart/SparkLineChart.d.ts +9 -0
  56. package/SparkLineChart/SparkLineChart.js +16 -2
  57. package/context/CartesianContextProvider.js +10 -2
  58. package/context/DrawingProvider.js +2 -2
  59. package/context/HighlightProvider.js +2 -2
  60. package/context/InteractionProvider.js +2 -2
  61. package/context/SeriesContextProvider.js +2 -2
  62. package/esm/BarChart/BarChart.js +43 -1
  63. package/esm/BarChart/BarElement.js +7 -4
  64. package/esm/BarChart/BarPlot.js +152 -67
  65. package/esm/BarChart/formatter.js +1 -1
  66. package/esm/ChartContainer/index.js +3 -0
  67. package/esm/ChartsAxis/ChartsAxis.js +16 -0
  68. package/esm/ChartsLegend/ChartsLegend.js +10 -6
  69. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +27 -21
  70. package/esm/ChartsXAxis/ChartsXAxis.js +122 -34
  71. package/esm/ChartsYAxis/ChartsYAxis.js +36 -14
  72. package/esm/LineChart/AreaElement.js +10 -0
  73. package/esm/LineChart/AreaPlot.js +24 -6
  74. package/esm/LineChart/LineChart.js +34 -0
  75. package/esm/LineChart/LineElement.js +10 -0
  76. package/esm/LineChart/LineHighlightElement.js +10 -0
  77. package/esm/LineChart/LineHighlightPlot.js +12 -1
  78. package/esm/LineChart/LinePlot.js +23 -14
  79. package/esm/LineChart/MarkElement.js +10 -0
  80. package/esm/LineChart/MarkPlot.js +38 -7
  81. package/esm/LineChart/formatter.js +7 -3
  82. package/esm/PieChart/PieChart.js +35 -0
  83. package/esm/PieChart/PiePlot.js +10 -0
  84. package/esm/ResponsiveChartContainer/index.js +2 -2
  85. package/esm/ScatterChart/Scatter.js +10 -0
  86. package/esm/ScatterChart/ScatterChart.js +34 -0
  87. package/esm/ScatterChart/ScatterPlot.js +10 -0
  88. package/esm/SparkLineChart/SparkLineChart.js +14 -0
  89. package/esm/context/CartesianContextProvider.js +8 -0
  90. package/esm/hooks/useMounted.js +16 -0
  91. package/esm/hooks/useReducedMotion.js +27 -0
  92. package/esm/hooks/useTicks.js +12 -6
  93. package/esm/internals/components/ChartsText.js +19 -13
  94. package/esm/internals/geometry.js +36 -0
  95. package/hooks/useAxisEvents.js +2 -2
  96. package/hooks/useChartDimensions.js +2 -2
  97. package/hooks/useDrawingArea.js +2 -2
  98. package/hooks/useInteractionItemProps.js +2 -2
  99. package/hooks/useMounted.d.ts +1 -0
  100. package/hooks/useMounted.js +25 -0
  101. package/hooks/useReducedMotion.d.ts +8 -0
  102. package/hooks/useReducedMotion.js +33 -0
  103. package/hooks/useScale.d.ts +2 -2
  104. package/hooks/useScale.js +2 -2
  105. package/hooks/useTicks.d.ts +18 -9
  106. package/hooks/useTicks.js +14 -8
  107. package/index.js +1 -1
  108. package/internals/components/ChartsText.d.ts +11 -8
  109. package/internals/components/ChartsText.js +21 -15
  110. package/internals/defaultizeColor.d.ts +2 -2
  111. package/internals/domUtils.d.ts +0 -1
  112. package/internals/geometry.d.ts +9 -0
  113. package/internals/geometry.js +42 -0
  114. package/legacy/BarChart/BarChart.js +43 -1
  115. package/legacy/BarChart/BarElement.js +6 -3
  116. package/legacy/BarChart/BarPlot.js +151 -63
  117. package/legacy/BarChart/formatter.js +1 -1
  118. package/legacy/ChartContainer/index.js +3 -0
  119. package/legacy/ChartsAxis/ChartsAxis.js +16 -0
  120. package/legacy/ChartsLegend/ChartsLegend.js +14 -7
  121. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +5 -1
  122. package/legacy/ChartsXAxis/ChartsXAxis.js +126 -36
  123. package/legacy/ChartsYAxis/ChartsYAxis.js +36 -14
  124. package/legacy/LineChart/AreaElement.js +10 -0
  125. package/legacy/LineChart/AreaPlot.js +27 -7
  126. package/legacy/LineChart/LineChart.js +34 -0
  127. package/legacy/LineChart/LineElement.js +10 -0
  128. package/legacy/LineChart/LineHighlightElement.js +10 -0
  129. package/legacy/LineChart/LineHighlightPlot.js +12 -1
  130. package/legacy/LineChart/LinePlot.js +25 -12
  131. package/legacy/LineChart/MarkElement.js +10 -0
  132. package/legacy/LineChart/MarkPlot.js +37 -7
  133. package/legacy/LineChart/formatter.js +7 -3
  134. package/legacy/PieChart/PieChart.js +35 -0
  135. package/legacy/PieChart/PiePlot.js +10 -0
  136. package/legacy/ResponsiveChartContainer/index.js +2 -2
  137. package/legacy/ScatterChart/Scatter.js +10 -0
  138. package/legacy/ScatterChart/ScatterChart.js +34 -0
  139. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  140. package/legacy/SparkLineChart/SparkLineChart.js +14 -0
  141. package/legacy/context/CartesianContextProvider.js +8 -0
  142. package/legacy/hooks/useMounted.js +21 -0
  143. package/legacy/hooks/useReducedMotion.js +27 -0
  144. package/legacy/hooks/useTicks.js +13 -6
  145. package/legacy/index.js +1 -1
  146. package/legacy/internals/components/ChartsText.js +17 -15
  147. package/legacy/internals/geometry.js +37 -0
  148. package/models/axis.d.ts +19 -2
  149. package/models/seriesType/line.d.ts +3 -3
  150. package/modern/BarChart/BarChart.js +43 -1
  151. package/modern/BarChart/BarElement.js +7 -4
  152. package/modern/BarChart/BarPlot.js +149 -65
  153. package/modern/BarChart/formatter.js +1 -1
  154. package/modern/ChartContainer/index.js +3 -0
  155. package/modern/ChartsAxis/ChartsAxis.js +16 -0
  156. package/modern/ChartsLegend/ChartsLegend.js +10 -6
  157. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +27 -21
  158. package/modern/ChartsXAxis/ChartsXAxis.js +122 -34
  159. package/modern/ChartsYAxis/ChartsYAxis.js +36 -14
  160. package/modern/LineChart/AreaElement.js +10 -0
  161. package/modern/LineChart/AreaPlot.js +22 -5
  162. package/modern/LineChart/LineChart.js +34 -0
  163. package/modern/LineChart/LineElement.js +10 -0
  164. package/modern/LineChart/LineHighlightElement.js +10 -0
  165. package/modern/LineChart/LineHighlightPlot.js +12 -1
  166. package/modern/LineChart/LinePlot.js +20 -9
  167. package/modern/LineChart/MarkElement.js +10 -0
  168. package/modern/LineChart/MarkPlot.js +38 -7
  169. package/modern/LineChart/formatter.js +4 -3
  170. package/modern/PieChart/PieChart.js +35 -0
  171. package/modern/PieChart/PiePlot.js +10 -0
  172. package/modern/ResponsiveChartContainer/index.js +2 -2
  173. package/modern/ScatterChart/Scatter.js +10 -0
  174. package/modern/ScatterChart/ScatterChart.js +34 -0
  175. package/modern/ScatterChart/ScatterPlot.js +10 -0
  176. package/modern/SparkLineChart/SparkLineChart.js +14 -0
  177. package/modern/context/CartesianContextProvider.js +8 -0
  178. package/modern/hooks/useMounted.js +16 -0
  179. package/modern/hooks/useReducedMotion.js +27 -0
  180. package/modern/hooks/useTicks.js +12 -6
  181. package/modern/index.js +1 -1
  182. package/modern/internals/components/ChartsText.js +19 -13
  183. package/modern/internals/geometry.js +36 -0
  184. package/package.json +5 -3
@@ -70,5 +70,14 @@ export interface SparkLineChartProps extends Omit<ResponsiveChartContainerProps,
70
70
  */
71
71
  slotProps?: SparkLineChartSlotComponentProps;
72
72
  }
73
+ /**
74
+ * Demos:
75
+ *
76
+ * - [SparkLine](https://mui.com/x/react-charts/sparkline/)
77
+ *
78
+ * API:
79
+ *
80
+ * - [SparkLineChart API](https://mui.com/x/api/charts/spark-line-chart/)
81
+ */
73
82
  declare const SparkLineChart: React.ForwardRefExoticComponent<SparkLineChartProps & React.RefAttributes<unknown>>;
74
83
  export { SparkLineChart };
@@ -15,14 +15,24 @@ var _constants = require("../constants");
15
15
  var _ChartsTooltip = require("../ChartsTooltip");
16
16
  var _ChartsAxisHighlight = require("../ChartsAxisHighlight");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
20
  const SPARKLINE_DEFAULT_MARGIN = {
21
21
  top: 5,
22
22
  bottom: 5,
23
23
  left: 5,
24
24
  right: 5
25
25
  };
26
+
27
+ /**
28
+ * Demos:
29
+ *
30
+ * - [SparkLine](https://mui.com/x/react-charts/sparkline/)
31
+ *
32
+ * API:
33
+ *
34
+ * - [SparkLineChart API](https://mui.com/x/api/charts/spark-line-chart/)
35
+ */
26
36
  const SparkLineChart = exports.SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(props, ref) {
27
37
  const {
28
38
  xAxis,
@@ -203,6 +213,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
203
213
  id: _propTypes.default.string,
204
214
  label: _propTypes.default.string,
205
215
  labelFontSize: _propTypes.default.number,
216
+ labelStyle: _propTypes.default.object,
206
217
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
207
218
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
208
219
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
@@ -211,6 +222,9 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
211
222
  slots: _propTypes.default.object,
212
223
  stroke: _propTypes.default.string,
213
224
  tickFontSize: _propTypes.default.number,
225
+ tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
226
+ tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
227
+ tickLabelStyle: _propTypes.default.object,
214
228
  tickMaxStep: _propTypes.default.number,
215
229
  tickMinStep: _propTypes.default.number,
216
230
  tickNumber: _propTypes.default.number,
@@ -20,8 +20,8 @@ var _SeriesContextProvider = require("./SeriesContextProvider");
20
20
  var _constants = require("../constants");
21
21
  var _useTicks = require("../hooks/useTicks");
22
22
  var _jsxRuntime = require("react/jsx-runtime");
23
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
25
  const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
26
26
  const DEFAULT_BAR_GAP_RATIO = 0.1;
27
27
 
@@ -232,6 +232,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
232
232
  id: _propTypes.default.string,
233
233
  label: _propTypes.default.string,
234
234
  labelFontSize: _propTypes.default.number,
235
+ labelStyle: _propTypes.default.object,
235
236
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
236
237
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
237
238
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
@@ -240,6 +241,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
240
241
  slots: _propTypes.default.object,
241
242
  stroke: _propTypes.default.string,
242
243
  tickFontSize: _propTypes.default.number,
244
+ tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
245
+ tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
246
+ tickLabelStyle: _propTypes.default.object,
243
247
  tickMaxStep: _propTypes.default.number,
244
248
  tickMinStep: _propTypes.default.number,
245
249
  tickNumber: _propTypes.default.number,
@@ -258,6 +262,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
258
262
  id: _propTypes.default.string,
259
263
  label: _propTypes.default.string,
260
264
  labelFontSize: _propTypes.default.number,
265
+ labelStyle: _propTypes.default.object,
261
266
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
262
267
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
263
268
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
@@ -266,6 +271,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
266
271
  slots: _propTypes.default.object,
267
272
  stroke: _propTypes.default.string,
268
273
  tickFontSize: _propTypes.default.number,
274
+ tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
275
+ tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
276
+ tickLabelStyle: _propTypes.default.object,
269
277
  tickMaxStep: _propTypes.default.number,
270
278
  tickMinStep: _propTypes.default.number,
271
279
  tickNumber: _propTypes.default.number,
@@ -11,8 +11,8 @@ var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _useChartDimensions = _interopRequireDefault(require("../hooks/useChartDimensions"));
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
16
  /**
17
17
  * Defines the area in which it is possible to draw the charts.
18
18
  */
@@ -9,8 +9,8 @@ exports.HighlightProvider = HighlightProvider;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
14
  const defaultScope = {
15
15
  highlighted: 'none',
16
16
  faded: 'none'
@@ -9,8 +9,8 @@ exports.InteractionProvider = InteractionProvider;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
14
  const InteractionContext = exports.InteractionContext = /*#__PURE__*/React.createContext({
15
15
  item: null,
16
16
  axis: {
@@ -16,8 +16,8 @@ var _formatter4 = _interopRequireDefault(require("../PieChart/formatter"));
16
16
  var _defaultizeColor = require("../internals/defaultizeColor");
17
17
  var _colorPalettes = require("../colorPalettes");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
21
  const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({});
22
22
  const seriesTypeFormatter = {
23
23
  bar: _formatter.default,
@@ -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,
@@ -118,11 +131,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
118
131
  fill: PropTypes.string,
119
132
  label: PropTypes.string,
120
133
  labelFontSize: PropTypes.number,
134
+ labelStyle: PropTypes.object,
121
135
  position: PropTypes.oneOf(['bottom', 'top']),
122
136
  slotProps: PropTypes.object,
123
137
  slots: PropTypes.object,
124
138
  stroke: PropTypes.string,
125
139
  tickFontSize: PropTypes.number,
140
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
141
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
142
+ tickLabelStyle: PropTypes.object,
126
143
  tickMaxStep: PropTypes.number,
127
144
  tickMinStep: PropTypes.number,
128
145
  tickNumber: PropTypes.number,
@@ -152,11 +169,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
152
169
  fill: PropTypes.string,
153
170
  label: PropTypes.string,
154
171
  labelFontSize: PropTypes.number,
172
+ labelStyle: PropTypes.object,
155
173
  position: PropTypes.oneOf(['left', 'right']),
156
174
  slotProps: PropTypes.object,
157
175
  slots: PropTypes.object,
158
176
  stroke: PropTypes.string,
159
177
  tickFontSize: PropTypes.number,
178
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
179
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
180
+ tickLabelStyle: PropTypes.object,
160
181
  tickMaxStep: PropTypes.number,
161
182
  tickMinStep: PropTypes.number,
162
183
  tickNumber: PropTypes.number,
@@ -195,11 +216,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
195
216
  fill: PropTypes.string,
196
217
  label: PropTypes.string,
197
218
  labelFontSize: PropTypes.number,
219
+ labelStyle: PropTypes.object,
198
220
  position: PropTypes.oneOf(['left', 'right']),
199
221
  slotProps: PropTypes.object,
200
222
  slots: PropTypes.object,
201
223
  stroke: PropTypes.string,
202
224
  tickFontSize: PropTypes.number,
225
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
226
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
227
+ tickLabelStyle: PropTypes.object,
203
228
  tickMaxStep: PropTypes.number,
204
229
  tickMinStep: PropTypes.number,
205
230
  tickNumber: PropTypes.number,
@@ -224,6 +249,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
224
249
  xAxisKey: PropTypes.string,
225
250
  yAxisKey: PropTypes.string
226
251
  })).isRequired,
252
+ /**
253
+ * If `true`, animations are skiped.
254
+ * @default false
255
+ */
256
+ skipAnimation: PropTypes.bool,
227
257
  /**
228
258
  * The props used for each component slot.
229
259
  * @default {}
@@ -257,11 +287,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
257
287
  fill: PropTypes.string,
258
288
  label: PropTypes.string,
259
289
  labelFontSize: PropTypes.number,
290
+ labelStyle: PropTypes.object,
260
291
  position: PropTypes.oneOf(['bottom', 'top']),
261
292
  slotProps: PropTypes.object,
262
293
  slots: PropTypes.object,
263
294
  stroke: PropTypes.string,
264
295
  tickFontSize: PropTypes.number,
296
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
297
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
298
+ tickLabelStyle: PropTypes.object,
265
299
  tickMaxStep: PropTypes.number,
266
300
  tickMinStep: PropTypes.number,
267
301
  tickNumber: PropTypes.number,
@@ -286,6 +320,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
286
320
  id: PropTypes.string,
287
321
  label: PropTypes.string,
288
322
  labelFontSize: PropTypes.number,
323
+ labelStyle: PropTypes.object,
289
324
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
290
325
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
291
326
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -294,6 +329,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
294
329
  slots: PropTypes.object,
295
330
  stroke: PropTypes.string,
296
331
  tickFontSize: PropTypes.number,
332
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
333
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
334
+ tickLabelStyle: PropTypes.object,
297
335
  tickMaxStep: PropTypes.number,
298
336
  tickMinStep: PropTypes.number,
299
337
  tickNumber: PropTypes.number,
@@ -312,6 +350,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
312
350
  id: PropTypes.string,
313
351
  label: PropTypes.string,
314
352
  labelFontSize: PropTypes.number,
353
+ labelStyle: PropTypes.object,
315
354
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
316
355
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
317
356
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -320,6 +359,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
320
359
  slots: PropTypes.object,
321
360
  stroke: PropTypes.string,
322
361
  tickFontSize: PropTypes.number,
362
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
363
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
364
+ tickLabelStyle: PropTypes.object,
323
365
  tickMaxStep: PropTypes.number,
324
366
  tickMinStep: PropTypes.number,
325
367
  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 {}