@mui/x-charts 7.9.0 → 7.11.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 (222) hide show
  1. package/BarChart/BarChart.js +2 -2
  2. package/BarChart/formatter.js +1 -1
  3. package/BarChart/useBarChartProps.js +38 -33
  4. package/CHANGELOG.md +159 -0
  5. package/ChartContainer/ChartContainer.d.ts +28 -2
  6. package/ChartContainer/ChartContainer.js +25 -66
  7. package/ChartContainer/useChartContainerHooks.d.ts +1 -1
  8. package/ChartContainer/useChartContainerHooks.js +2 -2
  9. package/ChartContainer/useChartContainerProps.d.ts +86 -0
  10. package/ChartContainer/useChartContainerProps.js +95 -0
  11. package/ChartContainer/useDefaultizeAxis.d.ts +36 -0
  12. package/ChartContainer/useDefaultizeAxis.js +29 -0
  13. package/ChartsLegend/ChartsLegend.d.ts +3 -12
  14. package/ChartsLegend/ContinuousColorLegend.d.ts +65 -0
  15. package/ChartsLegend/ContinuousColorLegend.js +398 -0
  16. package/ChartsLegend/DefaultChartsLegend.d.ts +7 -50
  17. package/ChartsLegend/DefaultChartsLegend.js +13 -198
  18. package/ChartsLegend/LegendPerItem.d.ts +61 -0
  19. package/ChartsLegend/LegendPerItem.js +151 -0
  20. package/ChartsLegend/PiecewiseColorLegend.d.ts +26 -0
  21. package/ChartsLegend/PiecewiseColorLegend.js +169 -0
  22. package/ChartsLegend/chartsLegend.types.d.ts +31 -0
  23. package/ChartsLegend/chartsLegend.types.js +5 -0
  24. package/ChartsLegend/index.d.ts +2 -0
  25. package/ChartsLegend/index.js +22 -0
  26. package/ChartsLegend/legend.types.d.ts +62 -0
  27. package/ChartsLegend/legend.types.js +5 -0
  28. package/ChartsLegend/legendItemsPlacement.d.ts +3 -0
  29. package/ChartsLegend/legendItemsPlacement.js +79 -0
  30. package/ChartsLegend/useAxis.d.ts +7 -0
  31. package/ChartsLegend/useAxis.js +47 -0
  32. package/ChartsLegend/utils.d.ts +1 -8
  33. package/ChartsReferenceLine/ChartsReferenceLine.d.ts +1 -1
  34. package/ChartsSurface.js +3 -1
  35. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +26 -18
  36. package/ChartsXAxis/ChartsXAxis.js +1 -1
  37. package/ChartsYAxis/ChartsYAxis.js +15 -3
  38. package/Gauge/Gauge.d.ts +1 -4
  39. package/Gauge/Gauge.js +9 -6
  40. package/Gauge/GaugeContainer.js +8 -4
  41. package/Gauge/GaugeProvider.js +9 -9
  42. package/LineChart/AnimatedArea.js +2 -2
  43. package/LineChart/AnimatedLine.js +2 -2
  44. package/LineChart/AreaPlot.js +7 -1
  45. package/LineChart/LineChart.js +2 -2
  46. package/LineChart/LineHighlightPlot.js +8 -0
  47. package/LineChart/MarkElement.js +2 -2
  48. package/LineChart/MarkPlot.js +4 -20
  49. package/LineChart/extremums.js +1 -1
  50. package/LineChart/formatter.js +1 -1
  51. package/LineChart/useLineChartProps.js +38 -33
  52. package/PieChart/PieChart.d.ts +1 -4
  53. package/PieChart/PieChart.js +40 -34
  54. package/PieChart/PiePlot.js +6 -6
  55. package/PieChart/getPieCoordinates.js +3 -3
  56. package/ResponsiveChartContainer/ResponsiveChartContainer.js +8 -20
  57. package/ResponsiveChartContainer/useChartContainerDimensions.d.ts +5 -1
  58. package/ResponsiveChartContainer/useChartContainerDimensions.js +6 -2
  59. package/ResponsiveChartContainer/useResponsiveChartContainerProps.d.ts +20 -0
  60. package/ResponsiveChartContainer/useResponsiveChartContainerProps.js +73 -0
  61. package/ScatterChart/Scatter.js +6 -9
  62. package/ScatterChart/useScatterChartProps.js +35 -30
  63. package/SparkLineChart/SparkLineChart.js +27 -22
  64. package/context/CartesianProvider/CartesianProvider.d.ts +2 -3
  65. package/context/CartesianProvider/CartesianProvider.js +18 -7
  66. package/context/CartesianProvider/computeValue.d.ts +32 -9
  67. package/context/CartesianProvider/computeValue.js +20 -16
  68. package/context/CartesianProvider/defaultizeAxis.d.ts +36 -0
  69. package/context/CartesianProvider/defaultizeAxis.js +21 -0
  70. package/context/CartesianProvider/index.d.ts +0 -1
  71. package/context/CartesianProvider/index.js +1 -3
  72. package/context/CartesianProvider/normalizeAxis.d.ts +1 -1
  73. package/context/CartesianProvider/normalizeAxis.js +1 -1
  74. package/context/DrawingProvider.d.ts +11 -0
  75. package/context/DrawingProvider.js +9 -2
  76. package/context/HighlightedProvider/HighlightedProvider.js +2 -2
  77. package/esm/BarChart/BarChart.js +2 -2
  78. package/esm/BarChart/formatter.js +1 -1
  79. package/esm/BarChart/useBarChartProps.js +38 -33
  80. package/esm/ChartContainer/ChartContainer.js +25 -66
  81. package/esm/ChartContainer/useChartContainerHooks.js +2 -2
  82. package/esm/ChartContainer/useChartContainerProps.js +87 -0
  83. package/esm/ChartContainer/useDefaultizeAxis.js +19 -0
  84. package/esm/ChartsLegend/ContinuousColorLegend.js +390 -0
  85. package/esm/ChartsLegend/DefaultChartsLegend.js +14 -198
  86. package/esm/ChartsLegend/LegendPerItem.js +141 -0
  87. package/esm/ChartsLegend/PiecewiseColorLegend.js +161 -0
  88. package/esm/ChartsLegend/chartsLegend.types.js +1 -0
  89. package/esm/ChartsLegend/index.js +2 -0
  90. package/esm/ChartsLegend/legend.types.js +1 -0
  91. package/esm/ChartsLegend/legendItemsPlacement.js +72 -0
  92. package/esm/ChartsLegend/useAxis.js +39 -0
  93. package/esm/ChartsSurface.js +3 -1
  94. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +26 -18
  95. package/esm/ChartsXAxis/ChartsXAxis.js +1 -1
  96. package/esm/ChartsYAxis/ChartsYAxis.js +15 -3
  97. package/esm/Gauge/Gauge.js +8 -5
  98. package/esm/Gauge/GaugeContainer.js +8 -4
  99. package/esm/Gauge/GaugeProvider.js +1 -1
  100. package/esm/LineChart/AnimatedArea.js +1 -1
  101. package/esm/LineChart/AnimatedLine.js +1 -1
  102. package/esm/LineChart/AreaPlot.js +7 -1
  103. package/esm/LineChart/LineChart.js +2 -2
  104. package/esm/LineChart/LineHighlightPlot.js +8 -0
  105. package/esm/LineChart/MarkElement.js +1 -1
  106. package/esm/LineChart/MarkPlot.js +3 -19
  107. package/esm/LineChart/extremums.js +1 -1
  108. package/esm/LineChart/formatter.js +1 -1
  109. package/esm/LineChart/useLineChartProps.js +38 -33
  110. package/esm/PieChart/PieChart.js +39 -33
  111. package/esm/PieChart/PiePlot.js +1 -1
  112. package/esm/PieChart/getPieCoordinates.js +1 -1
  113. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +8 -20
  114. package/esm/ResponsiveChartContainer/useChartContainerDimensions.js +6 -2
  115. package/esm/ResponsiveChartContainer/useResponsiveChartContainerProps.js +65 -0
  116. package/esm/ScatterChart/Scatter.js +6 -9
  117. package/esm/ScatterChart/useScatterChartProps.js +35 -30
  118. package/esm/SparkLineChart/SparkLineChart.js +27 -22
  119. package/esm/context/CartesianProvider/CartesianProvider.js +18 -7
  120. package/esm/context/CartesianProvider/computeValue.js +20 -16
  121. package/esm/context/CartesianProvider/defaultizeAxis.js +13 -0
  122. package/esm/context/CartesianProvider/index.js +1 -3
  123. package/esm/context/CartesianProvider/normalizeAxis.js +1 -1
  124. package/esm/context/DrawingProvider.js +9 -2
  125. package/esm/context/HighlightedProvider/HighlightedProvider.js +2 -2
  126. package/esm/hooks/useAxisEvents.js +3 -10
  127. package/esm/hooks/useDrawingArea.js +5 -3
  128. package/esm/hooks/useReducedMotion.js +4 -2
  129. package/esm/internals/cleanId.js +6 -0
  130. package/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +3 -2
  131. package/esm/internals/{utils.js → getPercentageValue.js} +1 -13
  132. package/esm/internals/getSymbol.js +5 -0
  133. package/esm/internals/index.js +3 -1
  134. package/esm/internals/isDefined.js +3 -0
  135. package/esm/internals/notNull.js +3 -0
  136. package/esm/internals/ts-generic.js +1 -0
  137. package/hooks/useAxisEvents.js +3 -10
  138. package/hooks/useDrawingArea.js +5 -3
  139. package/hooks/useReducedMotion.js +4 -2
  140. package/index.js +1 -1
  141. package/internals/cleanId.d.ts +4 -0
  142. package/internals/cleanId.js +12 -0
  143. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.d.ts +6 -0
  144. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +3 -2
  145. package/internals/getPercentageValue.d.ts +7 -0
  146. package/internals/{utils.js → getPercentageValue.js} +1 -15
  147. package/internals/getSymbol.d.ts +2 -0
  148. package/internals/getSymbol.js +11 -0
  149. package/internals/index.d.ts +3 -1
  150. package/internals/index.js +25 -5
  151. package/internals/isDefined.d.ts +1 -0
  152. package/internals/isDefined.js +9 -0
  153. package/internals/notNull.d.ts +1 -0
  154. package/internals/notNull.js +9 -0
  155. package/internals/ts-generic.d.ts +5 -0
  156. package/internals/ts-generic.js +5 -0
  157. package/models/axis.d.ts +5 -2
  158. package/models/helpers.d.ts +1 -0
  159. package/models/seriesType/config.d.ts +2 -16
  160. package/modern/BarChart/BarChart.js +2 -2
  161. package/modern/BarChart/formatter.js +1 -1
  162. package/modern/BarChart/useBarChartProps.js +38 -33
  163. package/modern/ChartContainer/ChartContainer.js +25 -66
  164. package/modern/ChartContainer/useChartContainerHooks.js +2 -2
  165. package/modern/ChartContainer/useChartContainerProps.js +87 -0
  166. package/modern/ChartContainer/useDefaultizeAxis.js +19 -0
  167. package/modern/ChartsLegend/ContinuousColorLegend.js +390 -0
  168. package/modern/ChartsLegend/DefaultChartsLegend.js +14 -198
  169. package/modern/ChartsLegend/LegendPerItem.js +141 -0
  170. package/modern/ChartsLegend/PiecewiseColorLegend.js +161 -0
  171. package/modern/ChartsLegend/chartsLegend.types.js +1 -0
  172. package/modern/ChartsLegend/index.js +2 -0
  173. package/modern/ChartsLegend/legend.types.js +1 -0
  174. package/modern/ChartsLegend/legendItemsPlacement.js +72 -0
  175. package/modern/ChartsLegend/useAxis.js +39 -0
  176. package/modern/ChartsSurface.js +3 -1
  177. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +26 -18
  178. package/modern/ChartsXAxis/ChartsXAxis.js +1 -1
  179. package/modern/ChartsYAxis/ChartsYAxis.js +15 -3
  180. package/modern/Gauge/Gauge.js +8 -5
  181. package/modern/Gauge/GaugeContainer.js +8 -4
  182. package/modern/Gauge/GaugeProvider.js +1 -1
  183. package/modern/LineChart/AnimatedArea.js +1 -1
  184. package/modern/LineChart/AnimatedLine.js +1 -1
  185. package/modern/LineChart/AreaPlot.js +7 -1
  186. package/modern/LineChart/LineChart.js +2 -2
  187. package/modern/LineChart/LineHighlightPlot.js +8 -0
  188. package/modern/LineChart/MarkElement.js +1 -1
  189. package/modern/LineChart/MarkPlot.js +3 -19
  190. package/modern/LineChart/extremums.js +1 -1
  191. package/modern/LineChart/formatter.js +1 -1
  192. package/modern/LineChart/useLineChartProps.js +38 -33
  193. package/modern/PieChart/PieChart.js +39 -33
  194. package/modern/PieChart/PiePlot.js +1 -1
  195. package/modern/PieChart/getPieCoordinates.js +1 -1
  196. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +8 -20
  197. package/modern/ResponsiveChartContainer/useChartContainerDimensions.js +6 -2
  198. package/modern/ResponsiveChartContainer/useResponsiveChartContainerProps.js +65 -0
  199. package/modern/ScatterChart/Scatter.js +6 -9
  200. package/modern/ScatterChart/useScatterChartProps.js +35 -30
  201. package/modern/SparkLineChart/SparkLineChart.js +27 -22
  202. package/modern/context/CartesianProvider/CartesianProvider.js +18 -7
  203. package/modern/context/CartesianProvider/computeValue.js +20 -16
  204. package/modern/context/CartesianProvider/defaultizeAxis.js +13 -0
  205. package/modern/context/CartesianProvider/index.js +1 -3
  206. package/modern/context/CartesianProvider/normalizeAxis.js +1 -1
  207. package/modern/context/DrawingProvider.js +9 -2
  208. package/modern/context/HighlightedProvider/HighlightedProvider.js +2 -2
  209. package/modern/hooks/useAxisEvents.js +3 -10
  210. package/modern/hooks/useDrawingArea.js +5 -3
  211. package/modern/hooks/useReducedMotion.js +4 -2
  212. package/modern/index.js +1 -1
  213. package/modern/internals/cleanId.js +6 -0
  214. package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +3 -2
  215. package/modern/internals/{utils.js → getPercentageValue.js} +1 -13
  216. package/modern/internals/getSymbol.js +5 -0
  217. package/modern/internals/index.js +3 -1
  218. package/modern/internals/isDefined.js +3 -0
  219. package/modern/internals/notNull.js +3 -0
  220. package/modern/internals/ts-generic.js +1 -0
  221. package/package.json +4 -4
  222. package/internals/utils.d.ts +0 -18
@@ -8,10 +8,11 @@ var _exportNames = {
8
8
  useSeries: true,
9
9
  useInteractionItemProps: true,
10
10
  useDrawingArea: true,
11
- useChartContainerHooks: true,
12
11
  useScatterChartProps: true,
13
12
  useLineChartProps: true,
14
- useBarChartProps: true
13
+ useBarChartProps: true,
14
+ useResponsiveChartContainerProps: true,
15
+ useChartContainerProps: true
15
16
  };
16
17
  Object.defineProperty(exports, "useBarChartProps", {
17
18
  enumerable: true,
@@ -19,10 +20,10 @@ Object.defineProperty(exports, "useBarChartProps", {
19
20
  return _useBarChartProps.useBarChartProps;
20
21
  }
21
22
  });
22
- Object.defineProperty(exports, "useChartContainerHooks", {
23
+ Object.defineProperty(exports, "useChartContainerProps", {
23
24
  enumerable: true,
24
25
  get: function () {
25
- return _useChartContainerHooks.useChartContainerHooks;
26
+ return _useChartContainerProps.useChartContainerProps;
26
27
  }
27
28
  });
28
29
  Object.defineProperty(exports, "useDrawingArea", {
@@ -49,6 +50,12 @@ Object.defineProperty(exports, "useReducedMotion", {
49
50
  return _useReducedMotion.useReducedMotion;
50
51
  }
51
52
  });
53
+ Object.defineProperty(exports, "useResponsiveChartContainerProps", {
54
+ enumerable: true,
55
+ get: function () {
56
+ return _useResponsiveChartContainerProps.useResponsiveChartContainerProps;
57
+ }
58
+ });
52
59
  Object.defineProperty(exports, "useScatterChartProps", {
53
60
  enumerable: true,
54
61
  get: function () {
@@ -101,10 +108,11 @@ var _useReducedMotion = require("../hooks/useReducedMotion");
101
108
  var _useSeries = require("../hooks/useSeries");
102
109
  var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
103
110
  var _useDrawingArea = require("../hooks/useDrawingArea");
104
- var _useChartContainerHooks = require("../ChartContainer/useChartContainerHooks");
105
111
  var _useScatterChartProps = require("../ScatterChart/useScatterChartProps");
106
112
  var _useLineChartProps = require("../LineChart/useLineChartProps");
107
113
  var _useBarChartProps = require("../BarChart/useBarChartProps");
114
+ var _useResponsiveChartContainerProps = require("../ResponsiveChartContainer/useResponsiveChartContainerProps");
115
+ var _useChartContainerProps = require("../ChartContainer/useChartContainerProps");
108
116
  var _defaultizeValueFormatter = require("./defaultizeValueFormatter");
109
117
  Object.keys(_defaultizeValueFormatter).forEach(function (key) {
110
118
  if (key === "default" || key === "__esModule") return;
@@ -153,6 +161,18 @@ Object.keys(_getSVGPoint).forEach(function (key) {
153
161
  }
154
162
  });
155
163
  });
164
+ var _isDefined = require("./isDefined");
165
+ Object.keys(_isDefined).forEach(function (key) {
166
+ if (key === "default" || key === "__esModule") return;
167
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
168
+ if (key in exports && exports[key] === _isDefined[key]) return;
169
+ Object.defineProperty(exports, key, {
170
+ enumerable: true,
171
+ get: function () {
172
+ return _isDefined[key];
173
+ }
174
+ });
175
+ });
156
176
  var _CartesianProvider = require("../context/CartesianProvider");
157
177
  Object.keys(_CartesianProvider).forEach(function (key) {
158
178
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1 @@
1
+ export declare function isDefined<T>(value: T | null | undefined): value is NonNullable<T>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isDefined = isDefined;
7
+ function isDefined(value) {
8
+ return value !== null && value !== undefined;
9
+ }
@@ -0,0 +1 @@
1
+ export declare function notNull<T>(value: T): value is NonNullable<T>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.notNull = notNull;
7
+ function notNull(value) {
8
+ return value !== null;
9
+ }
@@ -0,0 +1,5 @@
1
+ type Without<T, U> = {
2
+ [P in Exclude<keyof T, keyof U>]?: never;
3
+ };
4
+ export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/models/axis.d.ts CHANGED
@@ -212,8 +212,9 @@ export type AxisValueFormatterContext = {
212
212
  * Location indicates where the value will be displayed.
213
213
  * - `'tick'` The value is displayed on the axis ticks.
214
214
  * - `'tooltip'` The value is displayed in the tooltip when hovering the chart.
215
+ * - `'legend'` The value is displayed in the legend when using color legend.
215
216
  */
216
- location: 'tick' | 'tooltip';
217
+ location: 'tick' | 'tooltip' | 'legend';
217
218
  };
218
219
  export type AxisConfig<S extends ScaleName = ScaleName, V = any, AxisProps = ChartsXAxisProps | ChartsYAxisProps> = {
219
220
  /**
@@ -253,7 +254,9 @@ export type AxisConfig<S extends ScaleName = ScaleName, V = any, AxisProps = Cha
253
254
  * If `true`, Reverse the axis scaleBand.
254
255
  */
255
256
  reverse?: boolean;
256
- } & Partial<AxisProps> & Partial<Omit<AxisScaleConfig[S], 'scale'>> & TickParams;
257
+ } & Partial<AxisProps> & Partial<Omit<AxisScaleConfig[S], 'scale'>> & TickParams & AxisConfigExtension;
258
+ export interface AxisConfigExtension {
259
+ }
257
260
  export type AxisDefaultized<S extends ScaleName = ScaleName, V = any, AxisProps = ChartsXAxisProps | ChartsYAxisProps> = Omit<AxisConfig<S, V, AxisProps>, 'scaleType'> & AxisScaleConfig[S] & AxisScaleComputedConfig[S] & {
258
261
  /**
259
262
  * An indication of the expected number of ticks.
@@ -1,2 +1,3 @@
1
1
  export type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
2
+ export type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
2
3
  export type DefaultizedProps<P extends {}, RequiredProps extends keyof P, AdditionalProps extends {} = {}> = Omit<P, RequiredProps | keyof AdditionalProps> & Required<Pick<P, RequiredProps>> & AdditionalProps;
@@ -6,6 +6,7 @@ import { AxisConfig } from '../axis';
6
6
  import { DefaultizedProps, MakeOptional } from '../helpers';
7
7
  import { StackingGroupsType } from '../../internals/stackSeries';
8
8
  import { SeriesId } from './common';
9
+ import { LegendItemParams } from '../../ChartsLegend/chartsLegend.types';
9
10
  export interface ChartsSeriesConfig {
10
11
  bar: {
11
12
  /**
@@ -102,20 +103,5 @@ export type DatasetElementType<T> = {
102
103
  };
103
104
  export type DatasetType<T = number | string | Date | null | undefined> = DatasetElementType<T>[];
104
105
  export type Formatter<T extends ChartSeriesType> = (params: FormatterParams<T>, dataset?: DatasetType) => FormatterResult<T>;
105
- export type LegendParams = {
106
- /**
107
- * The color used in the legend
108
- */
109
- color: string;
110
- /**
111
- * The label displayed in the legend
112
- */
113
- label: string;
114
- /**
115
- * The identifier of the legend element.
116
- * Used for internal purpose such as `key` props
117
- */
118
- id: SeriesId;
119
- };
120
- export type LegendGetter<T extends ChartSeriesType> = (series: FormatterResult<T>) => LegendParams[];
106
+ export type LegendGetter<T extends ChartSeriesType> = (series: FormatterResult<T>) => LegendItemParams[];
121
107
  export {};
@@ -43,8 +43,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
43
43
  ref: ref
44
44
  }, chartContainerProps, {
45
45
  children: [props.onAxisClick && /*#__PURE__*/_jsx(ChartsOnAxisClickHandler, _extends({}, axisClickHandlerProps)), props.grid && /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
46
- children: [/*#__PURE__*/_jsx(BarPlot, _extends({}, barPlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps))]
47
- })), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps)), !props.loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltipProps)), /*#__PURE__*/_jsx(ChartsClipPath, _extends({}, clipPathProps)), children]
46
+ children: [/*#__PURE__*/_jsx(BarPlot, _extends({}, barPlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps))]
47
+ })), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), !props.loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltipProps)), /*#__PURE__*/_jsx(ChartsClipPath, _extends({}, clipPathProps)), children]
48
48
  }));
49
49
  });
50
50
  process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
@@ -52,7 +52,7 @@ const formatter = (params, dataset) => {
52
52
  if (typeof value !== 'number') {
53
53
  if (process.env.NODE_ENV !== 'production' && !warnOnce && value !== null) {
54
54
  warnOnce = true;
55
- console.error([`MUI-X charts: your dataset key "${dataKey}" is used for plotting bars, but contains nonnumerical elements.`, 'Bar plots only support numbers and null values.']);
55
+ console.error([`MUI X charts: your dataset key "${dataKey}" is used for plotting bars, but contains nonnumerical elements.`, 'Bar plots only support numbers and null values.']);
56
56
  }
57
57
  return 0;
58
58
  }
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["xAxis", "yAxis", "series", "width", "height", "margin", "colors", "dataset", "sx", "tooltip", "onAxisClick", "axisHighlight", "legend", "grid", "topAxis", "leftAxis", "rightAxis", "bottomAxis", "children", "slots", "slotProps", "skipAnimation", "loading", "layout", "onItemClick", "highlightedItem", "onHighlightChange", "borderRadius", "barLabel", "className"];
2
4
  import useId from '@mui/utils/useId';
3
5
  import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
4
6
  /**
@@ -10,36 +12,38 @@ import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
10
12
  */
11
13
  export const useBarChartProps = props => {
12
14
  const {
13
- xAxis,
14
- yAxis,
15
- series,
16
- width,
17
- height,
18
- margin,
19
- colors,
20
- dataset,
21
- sx,
22
- tooltip,
23
- onAxisClick,
24
- axisHighlight,
25
- legend,
26
- grid,
27
- topAxis,
28
- leftAxis,
29
- rightAxis,
30
- bottomAxis,
31
- children,
32
- slots,
33
- slotProps,
34
- skipAnimation,
35
- loading,
36
- layout,
37
- onItemClick,
38
- highlightedItem,
39
- onHighlightChange,
40
- borderRadius,
41
- barLabel
42
- } = props;
15
+ xAxis,
16
+ yAxis,
17
+ series,
18
+ width,
19
+ height,
20
+ margin,
21
+ colors,
22
+ dataset,
23
+ sx,
24
+ tooltip,
25
+ onAxisClick,
26
+ axisHighlight,
27
+ legend,
28
+ grid,
29
+ topAxis,
30
+ leftAxis,
31
+ rightAxis,
32
+ bottomAxis,
33
+ children,
34
+ slots,
35
+ slotProps,
36
+ skipAnimation,
37
+ loading,
38
+ layout,
39
+ onItemClick,
40
+ highlightedItem,
41
+ onHighlightChange,
42
+ borderRadius,
43
+ barLabel,
44
+ className
45
+ } = props,
46
+ rest = _objectWithoutPropertiesLoose(props, _excluded);
43
47
  const id = useId();
44
48
  const clipPathId = `${id}-clip-path`;
45
49
  const hasHorizontalSeries = layout === 'horizontal' || layout === undefined && series.some(item => item.layout === 'horizontal');
@@ -49,7 +53,7 @@ export const useBarChartProps = props => {
49
53
  length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
50
54
  }, (_, index) => index)
51
55
  };
52
- const chartContainerProps = {
56
+ const chartContainerProps = _extends({}, rest, {
53
57
  series: series.map(s => _extends({
54
58
  type: 'bar'
55
59
  }, s, {
@@ -69,8 +73,9 @@ export const useBarChartProps = props => {
69
73
  sx,
70
74
  highlightedItem,
71
75
  onHighlightChange,
72
- disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none' && !onAxisClick
73
- };
76
+ disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none' && !onAxisClick,
77
+ className
78
+ });
74
79
  const barPlotProps = {
75
80
  onItemClick,
76
81
  slots,
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { DrawingProvider } from '../context/DrawingProvider';
@@ -8,78 +9,36 @@ import { ChartsSurface } from '../ChartsSurface';
8
9
  import { CartesianContextProvider } from '../context/CartesianProvider';
9
10
  import { ChartsAxesGradients } from '../internals/components/ChartsAxesGradients';
10
11
  import { HighlightedProvider, ZAxisContextProvider } from '../context';
11
- import { useChartContainerHooks } from './useChartContainerHooks';
12
+ import { useChartContainerProps } from './useChartContainerProps';
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(props, ref) {
14
15
  const {
15
- width,
16
- height,
17
- series,
18
- margin,
19
- xAxis,
20
- yAxis,
21
- zAxis,
22
- colors,
23
- dataset,
24
- sx,
25
- title,
26
- desc,
27
- disableAxisListener,
28
- highlightedItem,
29
- onHighlightChange,
30
- plugins,
31
- children
32
- } = props;
33
- const {
34
- svgRef,
35
- handleRef,
36
- xExtremumGetters,
37
- yExtremumGetters,
38
- seriesFormatters,
39
- colorProcessors
40
- } = useChartContainerHooks(ref, plugins);
41
- return /*#__PURE__*/_jsx(DrawingProvider, {
42
- width: width,
43
- height: height,
44
- margin: margin,
45
- svgRef: svgRef,
46
- children: /*#__PURE__*/_jsx(ColorProvider, {
47
- colorProcessors: colorProcessors,
48
- children: /*#__PURE__*/_jsx(SeriesContextProvider, {
49
- series: series,
50
- colors: colors,
51
- dataset: dataset,
52
- seriesFormatters: seriesFormatters,
53
- children: /*#__PURE__*/_jsx(CartesianContextProvider, {
54
- xAxis: xAxis,
55
- yAxis: yAxis,
56
- dataset: dataset,
57
- xExtremumGetters: xExtremumGetters,
58
- yExtremumGetters: yExtremumGetters,
59
- children: /*#__PURE__*/_jsx(ZAxisContextProvider, {
60
- zAxis: zAxis,
61
- dataset: dataset,
16
+ children,
17
+ drawingProviderProps,
18
+ colorProviderProps,
19
+ seriesContextProps,
20
+ cartesianContextProps,
21
+ zAxisContextProps,
22
+ highlightedProviderProps,
23
+ chartsSurfaceProps
24
+ } = useChartContainerProps(props, ref);
25
+ return /*#__PURE__*/_jsx(DrawingProvider, _extends({}, drawingProviderProps, {
26
+ children: /*#__PURE__*/_jsx(ColorProvider, _extends({}, colorProviderProps, {
27
+ children: /*#__PURE__*/_jsx(SeriesContextProvider, _extends({}, seriesContextProps, {
28
+ children: /*#__PURE__*/_jsx(CartesianContextProvider, _extends({}, cartesianContextProps, {
29
+ children: /*#__PURE__*/_jsx(ZAxisContextProvider, _extends({}, zAxisContextProps, {
62
30
  children: /*#__PURE__*/_jsx(InteractionProvider, {
63
- children: /*#__PURE__*/_jsx(HighlightedProvider, {
64
- highlightedItem: highlightedItem,
65
- onHighlightChange: onHighlightChange,
66
- children: /*#__PURE__*/_jsxs(ChartsSurface, {
67
- width: width,
68
- height: height,
69
- ref: handleRef,
70
- sx: sx,
71
- title: title,
72
- desc: desc,
73
- disableAxisListener: disableAxisListener,
31
+ children: /*#__PURE__*/_jsx(HighlightedProvider, _extends({}, highlightedProviderProps, {
32
+ children: /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
74
33
  children: [/*#__PURE__*/_jsx(ChartsAxesGradients, {}), children]
75
- })
76
- })
34
+ }))
35
+ }))
77
36
  })
78
- })
79
- })
80
- })
81
- })
82
- });
37
+ }))
38
+ }))
39
+ }))
40
+ }))
41
+ }));
83
42
  });
84
43
  process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
85
44
  // ----------------------------- Warning --------------------------------
@@ -4,7 +4,7 @@ import { usePluginsMerge } from './usePluginsMerge';
4
4
  import { useReducedMotion } from '../hooks/useReducedMotion';
5
5
  export const useChartContainerHooks = (ref, plugins) => {
6
6
  const svgRef = React.useRef(null);
7
- const handleRef = useForkRef(ref, svgRef);
7
+ const chartSurfaceRef = useForkRef(ref, svgRef);
8
8
  const {
9
9
  xExtremumGetters,
10
10
  yExtremumGetters,
@@ -15,7 +15,7 @@ export const useChartContainerHooks = (ref, plugins) => {
15
15
 
16
16
  return {
17
17
  svgRef,
18
- handleRef,
18
+ chartSurfaceRef,
19
19
  xExtremumGetters,
20
20
  yExtremumGetters,
21
21
  seriesFormatters,
@@ -0,0 +1,87 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["width", "height", "series", "margin", "xAxis", "yAxis", "zAxis", "colors", "dataset", "sx", "title", "desc", "disableAxisListener", "highlightedItem", "onHighlightChange", "plugins", "children"];
4
+ import { useChartContainerHooks } from './useChartContainerHooks';
5
+ import { useDefaultizeAxis } from './useDefaultizeAxis';
6
+ export const useChartContainerProps = (props, ref) => {
7
+ const {
8
+ width,
9
+ height,
10
+ series,
11
+ margin,
12
+ xAxis,
13
+ yAxis,
14
+ zAxis,
15
+ colors,
16
+ dataset,
17
+ sx,
18
+ title,
19
+ desc,
20
+ disableAxisListener,
21
+ highlightedItem,
22
+ onHighlightChange,
23
+ plugins,
24
+ children
25
+ } = props,
26
+ other = _objectWithoutPropertiesLoose(props, _excluded);
27
+ const {
28
+ svgRef,
29
+ chartSurfaceRef,
30
+ xExtremumGetters,
31
+ yExtremumGetters,
32
+ seriesFormatters,
33
+ colorProcessors
34
+ } = useChartContainerHooks(ref, plugins);
35
+ const [defaultizedXAxis, defaultizedYAxis] = useDefaultizeAxis(xAxis, yAxis);
36
+ const drawingProviderProps = {
37
+ width,
38
+ height,
39
+ margin,
40
+ svgRef
41
+ };
42
+ const colorProviderProps = {
43
+ colorProcessors
44
+ };
45
+ const seriesContextProps = {
46
+ series,
47
+ colors,
48
+ dataset,
49
+ seriesFormatters
50
+ };
51
+ const cartesianContextProps = {
52
+ xAxis: defaultizedXAxis,
53
+ yAxis: defaultizedYAxis,
54
+ dataset,
55
+ xExtremumGetters,
56
+ yExtremumGetters
57
+ };
58
+ const zAxisContextProps = {
59
+ zAxis,
60
+ dataset
61
+ };
62
+ const highlightedProviderProps = {
63
+ highlightedItem,
64
+ onHighlightChange
65
+ };
66
+ const chartsSurfaceProps = _extends({}, other, {
67
+ width,
68
+ height,
69
+ ref: chartSurfaceRef,
70
+ sx,
71
+ title,
72
+ desc,
73
+ disableAxisListener
74
+ });
75
+ return {
76
+ children,
77
+ drawingProviderProps,
78
+ colorProviderProps,
79
+ seriesContextProps,
80
+ cartesianContextProps,
81
+ zAxisContextProps,
82
+ highlightedProviderProps,
83
+ chartsSurfaceProps,
84
+ xAxis: defaultizedXAxis,
85
+ yAxis: defaultizedYAxis
86
+ };
87
+ };
@@ -0,0 +1,19 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
4
+ const defaultizeAxis = (inAxis, axisName) => {
5
+ const DEFAULT_AXIS_KEY = axisName === 'x' ? DEFAULT_X_AXIS_KEY : DEFAULT_Y_AXIS_KEY;
6
+ return [...(inAxis?.map((axis, index) => _extends({
7
+ id: `defaultized-${axisName}-axis-${index}`
8
+ }, axis)) ?? []), ...(inAxis === undefined || inAxis.findIndex(({
9
+ id
10
+ }) => id === DEFAULT_AXIS_KEY) === -1 ? [{
11
+ id: DEFAULT_AXIS_KEY,
12
+ scaleType: 'linear'
13
+ }] : [])];
14
+ };
15
+ export const useDefaultizeAxis = (inXAxis, inYAxis) => {
16
+ const xAxis = React.useMemo(() => defaultizeAxis(inXAxis, 'x'), [inXAxis]);
17
+ const yAxis = React.useMemo(() => defaultizeAxis(inYAxis, 'y'), [inYAxis]);
18
+ return [xAxis, yAxis];
19
+ };