@mui/x-charts 7.1.1 → 7.3.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 (192) hide show
  1. package/BarChart/BarChart.js +32 -2
  2. package/BarChart/BarPlot.js +12 -5
  3. package/BarChart/extremums.js +1 -1
  4. package/BarChart/getColor.d.ts +3 -0
  5. package/BarChart/getColor.js +33 -0
  6. package/CHANGELOG.md +211 -0
  7. package/ChartContainer/ChartContainer.js +35 -4
  8. package/ChartsAxis/ChartsAxis.js +4 -4
  9. package/ChartsClipPath/ChartsClipPath.js +2 -2
  10. package/ChartsLegend/ChartsLegend.js +2 -2
  11. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +4 -1
  12. package/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  13. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +6 -0
  14. package/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  15. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  16. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  17. package/ChartsTooltip/utils.d.ts +5 -1
  18. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  19. package/ChartsXAxis/ChartsXAxis.js +7 -7
  20. package/ChartsYAxis/ChartsYAxis.js +9 -6
  21. package/Gauge/GaugeProvider.js +5 -5
  22. package/LineChart/AnimatedArea.js +6 -5
  23. package/LineChart/AnimatedLine.js +7 -5
  24. package/LineChart/AreaElement.d.ts +1 -0
  25. package/LineChart/AreaElement.js +4 -1
  26. package/LineChart/AreaPlot.js +7 -1
  27. package/LineChart/LineChart.js +32 -2
  28. package/LineChart/LineElement.d.ts +1 -0
  29. package/LineChart/LineElement.js +4 -1
  30. package/LineChart/LineHighlightPlot.js +4 -1
  31. package/LineChart/LinePlot.js +7 -1
  32. package/LineChart/MarkPlot.js +5 -5
  33. package/LineChart/getColor.d.ts +3 -0
  34. package/LineChart/getColor.js +31 -0
  35. package/PieChart/PieChart.js +32 -2
  36. package/PieChart/PiePlot.js +26 -6
  37. package/PieChart/formatter.js +4 -2
  38. package/PieChart/getColor.d.ts +2 -0
  39. package/PieChart/getColor.js +11 -0
  40. package/PieChart/getPieCoordinates.d.ts +7 -0
  41. package/PieChart/getPieCoordinates.js +25 -0
  42. package/PieChart/index.d.ts +1 -0
  43. package/PieChart/index.js +11 -0
  44. package/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  45. package/ScatterChart/Scatter.d.ts +1 -0
  46. package/ScatterChart/Scatter.js +6 -3
  47. package/ScatterChart/ScatterChart.js +32 -2
  48. package/ScatterChart/ScatterPlot.js +3 -0
  49. package/ScatterChart/getColor.d.ts +3 -0
  50. package/ScatterChart/getColor.js +31 -0
  51. package/SparkLineChart/SparkLineChart.js +15 -0
  52. package/context/CartesianContextProvider.d.ts +2 -2
  53. package/context/CartesianContextProvider.js +23 -8
  54. package/esm/BarChart/BarChart.js +32 -2
  55. package/esm/BarChart/BarPlot.js +13 -5
  56. package/esm/BarChart/extremums.js +1 -1
  57. package/esm/BarChart/getColor.js +27 -0
  58. package/esm/ChartContainer/ChartContainer.js +36 -4
  59. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  60. package/esm/ChartsClipPath/ChartsClipPath.js +2 -2
  61. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  62. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  63. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  64. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  65. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  66. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  67. package/esm/ChartsXAxis/ChartsXAxis.js +7 -7
  68. package/esm/ChartsYAxis/ChartsYAxis.js +9 -6
  69. package/esm/Gauge/GaugeProvider.js +5 -5
  70. package/esm/LineChart/AnimatedArea.js +6 -5
  71. package/esm/LineChart/AnimatedLine.js +7 -5
  72. package/esm/LineChart/AreaElement.js +4 -1
  73. package/esm/LineChart/AreaPlot.js +7 -1
  74. package/esm/LineChart/LineChart.js +32 -2
  75. package/esm/LineChart/LineElement.js +4 -1
  76. package/esm/LineChart/LineHighlightPlot.js +4 -1
  77. package/esm/LineChart/LinePlot.js +7 -1
  78. package/esm/LineChart/MarkPlot.js +5 -5
  79. package/esm/LineChart/getColor.js +25 -0
  80. package/esm/PieChart/PieChart.js +32 -2
  81. package/esm/PieChart/PiePlot.js +26 -6
  82. package/esm/PieChart/formatter.js +4 -2
  83. package/esm/PieChart/getColor.js +5 -0
  84. package/esm/PieChart/getPieCoordinates.js +19 -0
  85. package/esm/PieChart/index.js +2 -1
  86. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  87. package/esm/ScatterChart/Scatter.js +6 -3
  88. package/esm/ScatterChart/ScatterChart.js +32 -2
  89. package/esm/ScatterChart/ScatterPlot.js +3 -0
  90. package/esm/ScatterChart/getColor.js +25 -0
  91. package/esm/SparkLineChart/SparkLineChart.js +15 -0
  92. package/esm/context/CartesianContextProvider.js +23 -8
  93. package/esm/hooks/index.js +4 -1
  94. package/esm/hooks/useAxisEvents.js +7 -6
  95. package/esm/hooks/useChartId.js +8 -0
  96. package/esm/hooks/useSeries.js +64 -0
  97. package/esm/hooks/useSvgRef.js +9 -0
  98. package/esm/internals/colorGetter.js +22 -0
  99. package/esm/internals/colorScale.js +16 -0
  100. package/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +96 -0
  101. package/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  102. package/esm/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +41 -0
  103. package/esm/internals/components/ChartsAxesGradients/index.js +1 -0
  104. package/esm/models/colorMapping.js +1 -0
  105. package/esm/models/seriesType/index.js +6 -1
  106. package/hooks/index.d.ts +3 -0
  107. package/hooks/index.js +65 -1
  108. package/hooks/useAxisEvents.js +7 -6
  109. package/hooks/useChartId.d.ts +1 -0
  110. package/hooks/useChartId.js +16 -0
  111. package/hooks/useSeries.d.ts +45 -0
  112. package/hooks/useSeries.js +75 -0
  113. package/hooks/useSvgRef.d.ts +2 -0
  114. package/hooks/useSvgRef.js +17 -0
  115. package/hooks/useTicks.d.ts +1 -1
  116. package/index.js +1 -1
  117. package/internals/colorGetter.d.ts +5 -0
  118. package/internals/colorGetter.js +29 -0
  119. package/internals/colorScale.d.ts +5 -0
  120. package/internals/colorScale.js +24 -0
  121. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.d.ts +3 -0
  122. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +105 -0
  123. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.d.ts +13 -0
  124. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +63 -0
  125. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.d.ts +12 -0
  126. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +48 -0
  127. package/internals/components/ChartsAxesGradients/index.d.ts +1 -0
  128. package/internals/components/ChartsAxesGradients/index.js +16 -0
  129. package/internals/defaultizeColor.d.ts +4 -4
  130. package/internals/defaultizeValueFormatter.d.ts +5 -5
  131. package/internals/getScale.d.ts +2 -2
  132. package/models/axis.d.ts +44 -4
  133. package/models/colorMapping.d.ts +45 -0
  134. package/models/colorMapping.js +5 -0
  135. package/models/index.d.ts +1 -1
  136. package/models/seriesType/common.d.ts +10 -2
  137. package/models/seriesType/index.d.ts +2 -0
  138. package/models/seriesType/index.js +17 -1
  139. package/modern/BarChart/BarChart.js +32 -2
  140. package/modern/BarChart/BarPlot.js +13 -5
  141. package/modern/BarChart/extremums.js +1 -1
  142. package/modern/BarChart/getColor.js +27 -0
  143. package/modern/ChartContainer/ChartContainer.js +36 -4
  144. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  145. package/modern/ChartsClipPath/ChartsClipPath.js +2 -2
  146. package/modern/ChartsLegend/ChartsLegend.js +2 -2
  147. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +7 -2
  148. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -1
  149. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +6 -3
  150. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +13 -4
  151. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  152. package/modern/ChartsXAxis/ChartsXAxis.js +7 -7
  153. package/modern/ChartsYAxis/ChartsYAxis.js +9 -6
  154. package/modern/Gauge/GaugeProvider.js +5 -5
  155. package/modern/LineChart/AnimatedArea.js +6 -5
  156. package/modern/LineChart/AnimatedLine.js +7 -5
  157. package/modern/LineChart/AreaElement.js +4 -1
  158. package/modern/LineChart/AreaPlot.js +7 -1
  159. package/modern/LineChart/LineChart.js +32 -2
  160. package/modern/LineChart/LineElement.js +4 -1
  161. package/modern/LineChart/LineHighlightPlot.js +4 -1
  162. package/modern/LineChart/LinePlot.js +7 -1
  163. package/modern/LineChart/MarkPlot.js +5 -5
  164. package/modern/LineChart/getColor.js +25 -0
  165. package/modern/PieChart/PieChart.js +32 -2
  166. package/modern/PieChart/PiePlot.js +26 -6
  167. package/modern/PieChart/formatter.js +4 -2
  168. package/modern/PieChart/getColor.js +5 -0
  169. package/modern/PieChart/getPieCoordinates.js +19 -0
  170. package/modern/PieChart/index.js +2 -1
  171. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -2
  172. package/modern/ScatterChart/Scatter.js +6 -3
  173. package/modern/ScatterChart/ScatterChart.js +32 -2
  174. package/modern/ScatterChart/ScatterPlot.js +3 -0
  175. package/modern/ScatterChart/getColor.js +25 -0
  176. package/modern/SparkLineChart/SparkLineChart.js +15 -0
  177. package/modern/context/CartesianContextProvider.js +23 -8
  178. package/modern/hooks/index.js +4 -1
  179. package/modern/hooks/useAxisEvents.js +7 -6
  180. package/modern/hooks/useChartId.js +8 -0
  181. package/modern/hooks/useSeries.js +64 -0
  182. package/modern/hooks/useSvgRef.js +9 -0
  183. package/modern/index.js +1 -1
  184. package/modern/internals/colorGetter.js +22 -0
  185. package/modern/internals/colorScale.js +16 -0
  186. package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +96 -0
  187. package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  188. package/modern/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +41 -0
  189. package/modern/internals/components/ChartsAxesGradients/index.js +1 -0
  190. package/modern/models/colorMapping.js +1 -0
  191. package/modern/models/seriesType/index.js +6 -1
  192. package/package.json +1 -1
@@ -374,11 +374,26 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
374
374
  width: _propTypes.default.number,
375
375
  /**
376
376
  * The configuration of the x-axes.
377
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
377
+ * If not provided, a default axis config is used.
378
378
  */
379
379
  xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
380
380
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
381
381
  classes: _propTypes.default.object,
382
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
383
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
384
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
385
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
386
+ type: _propTypes.default.oneOf(['continuous']).isRequired
387
+ }), _propTypes.default.shape({
388
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
389
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
390
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
391
+ }), _propTypes.default.shape({
392
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
393
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
394
+ unknownColor: _propTypes.default.string,
395
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
396
+ })]),
382
397
  data: _propTypes.default.array,
383
398
  dataKey: _propTypes.default.string,
384
399
  disableLine: _propTypes.default.bool,
@@ -411,11 +426,26 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
411
426
  })),
412
427
  /**
413
428
  * The configuration of the y-axes.
414
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
429
+ * If not provided, a default axis config is used.
415
430
  */
416
431
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
417
432
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
418
433
  classes: _propTypes.default.object,
434
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
435
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
436
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
437
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
438
+ type: _propTypes.default.oneOf(['continuous']).isRequired
439
+ }), _propTypes.default.shape({
440
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
441
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
442
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
443
+ }), _propTypes.default.shape({
444
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
445
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
446
+ unknownColor: _propTypes.default.string,
447
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
448
+ })]),
419
449
  data: _propTypes.default.array,
420
450
  dataKey: _propTypes.default.string,
421
451
  disableLine: _propTypes.default.bool,
@@ -15,10 +15,9 @@ var _CartesianContextProvider = require("../context/CartesianContextProvider");
15
15
  var _BarElement = require("./BarElement");
16
16
  var _axis = require("../models/axis");
17
17
  var _constants = require("../constants");
18
+ var _getColor = _interopRequireDefault(require("./getColor"));
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  const _excluded = ["skipAnimation", "onItemClick"];
20
- 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); }
21
- 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; }
22
21
  /**
23
22
  * Solution of the equations
24
23
  * W = barWidth * N + offset * (N-1)
@@ -28,6 +27,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
28
27
  * @param gapRatio The ratio of the gap between bars over the bar width.
29
28
  * @returns The bar width and the offset between bars.
30
29
  */
30
+ 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); }
31
+ 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; }
31
32
  function getBandSize({
32
33
  bandWidth: W,
33
34
  numberOfGroups: N,
@@ -83,6 +84,9 @@ const useAggregatedData = () => {
83
84
  throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} shoud have data property.`);
84
85
  }
85
86
  baseScaleConfig = xAxisConfig;
87
+ if ((0, _axis.isBandScaleConfig)(yAxisConfig) || (0, _axis.isPointScaleConfig)(yAxisConfig)) {
88
+ throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud be a continuous type to display the bar series of id "${seriesId}".`);
89
+ }
86
90
  } else {
87
91
  if (!(0, _axis.isBandScaleConfig)(yAxisConfig)) {
88
92
  throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud be of type "band" to display the bar series of id "${seriesId}".`);
@@ -91,9 +95,13 @@ const useAggregatedData = () => {
91
95
  throw new Error(`MUI X Charts: ${yAxisKey === _constants.DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"`} shoud have data property.`);
92
96
  }
93
97
  baseScaleConfig = yAxisConfig;
98
+ if ((0, _axis.isBandScaleConfig)(xAxisConfig) || (0, _axis.isPointScaleConfig)(xAxisConfig)) {
99
+ throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} shoud be a continuous type to display the bar series of id "${seriesId}".`);
100
+ }
94
101
  }
95
102
  const xScale = xAxisConfig.scale;
96
103
  const yScale = yAxisConfig.scale;
104
+ const colorGetter = (0, _getColor.default)(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]);
97
105
  const bandWidth = baseScaleConfig.scale.bandwidth();
98
106
  const {
99
107
  barWidth,
@@ -105,8 +113,7 @@ const useAggregatedData = () => {
105
113
  });
106
114
  const barOffset = groupIndex * (barWidth + offset);
107
115
  const {
108
- stackedData,
109
- color
116
+ stackedData
110
117
  } = series[seriesId];
111
118
  return stackedData.map((values, dataIndex) => {
112
119
  const valueCoordinates = values.map(v => verticalLayout ? yScale(v) : xScale(v));
@@ -122,7 +129,7 @@ const useAggregatedData = () => {
122
129
  yOrigin: yScale(0),
123
130
  height: verticalLayout ? maxValueCoord - minValueCoord : barWidth,
124
131
  width: verticalLayout ? barWidth : maxValueCoord - minValueCoord,
125
- color,
132
+ color: colorGetter(dataIndex),
126
133
  highlightScope: series[seriesId].highlightScope
127
134
  };
128
135
  });
@@ -19,7 +19,7 @@ const getValueExtremum = params => {
19
19
  isDefaultAxis
20
20
  } = params;
21
21
  return Object.keys(series).filter(seriesId => series[seriesId].yAxisKey === axis.id || isDefaultAxis && series[seriesId].yAxisKey === undefined).reduce((acc, seriesId) => {
22
- const [seriesMin, seriesMax] = series[seriesId].stackedData.reduce((seriesAcc, values) => [Math.min(...values, ...(seriesAcc[0] === null ? [] : [seriesAcc[0]])), Math.max(...values, ...(seriesAcc[1] === null ? [] : [seriesAcc[1]]))], series[seriesId].stackedData[0]);
22
+ const [seriesMin, seriesMax] = series[seriesId].stackedData?.reduce((seriesAcc, values) => [Math.min(...values, ...(seriesAcc[0] === null ? [] : [seriesAcc[0]])), Math.max(...values, ...(seriesAcc[1] === null ? [] : [seriesAcc[1]]))], series[seriesId].stackedData[0]) ?? [null, null];
23
23
  return [acc[0] === null ? seriesMin : Math.min(seriesMin, acc[0]), acc[1] === null ? seriesMax : Math.max(seriesMax, acc[1])];
24
24
  }, [null, null]);
25
25
  };
@@ -0,0 +1,3 @@
1
+ import { AxisDefaultized } from '../models/axis';
2
+ import { DefaultizedBarSeriesType } from '../models/seriesType/bar';
3
+ export default function getColor(series: DefaultizedBarSeriesType, xAxis: AxisDefaultized, yAxis: AxisDefaultized): (dataIndex: number) => string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getColor;
7
+ function getColor(series, xAxis, yAxis) {
8
+ const verticalLayout = series.layout === 'vertical';
9
+ const bandColorScale = verticalLayout ? xAxis.colorScale : yAxis.colorScale;
10
+ const valueColorScale = verticalLayout ? yAxis.colorScale : xAxis.colorScale;
11
+ const bandValues = verticalLayout ? xAxis.data : yAxis.data;
12
+ if (valueColorScale) {
13
+ return dataIndex => {
14
+ const value = series.data[dataIndex];
15
+ const color = value === null ? series.color : valueColorScale(value);
16
+ if (color === null) {
17
+ return series.color;
18
+ }
19
+ return color;
20
+ };
21
+ }
22
+ if (bandColorScale) {
23
+ return dataIndex => {
24
+ const value = bandValues[dataIndex];
25
+ const color = value === null ? series.color : bandColorScale(value);
26
+ if (color === null) {
27
+ return series.color;
28
+ }
29
+ return color;
30
+ };
31
+ }
32
+ return () => series.color;
33
+ }
package/CHANGELOG.md CHANGED
@@ -3,6 +3,167 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.3.0
7
+
8
+ _Apr 18, 2024_
9
+
10
+ We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 📄 Support [unknown and estimated row count in server-side pagination](https://mui.com/x/react-data-grid/pagination/#index-based-pagination) (#12490) @MBilalShafi
13
+ - 🎨 Support color scales in Charts (#12490) @alexfauquette
14
+ Add a [`colorMap` configuration](https://mui.com/x/react-charts/styling/#values-color) to an axis, and the chart will use it to select colors.
15
+ Each impacted chart ([bar charts](https://mui.com/x/react-charts/bars/#color-scale), [line charts](https://mui.com/x/react-charts/lines/#color-scale), [scatter charts](https://mui.com/x/react-charts/scatter/#color-scale)) has a dedicated section explaining how this color map is impacting it.
16
+
17
+ <img src="https://github.com/mui/mui-x/assets/45398769/f0066606-3486-4c4e-b3be-7fdd56d763c3" alt="scatter chart with gradient along y-axis" />
18
+
19
+ - 🌍 Improve Danish (da-DK) locale on the Data Grid
20
+ - 🐞 Bugfixes
21
+ - 📚 Documentation improvements
22
+
23
+ ### Data Grid
24
+
25
+ #### `@mui/x-data-grid@7.3.0`
26
+
27
+ - [DataGrid] Fix calling `onCellEditStop` on error (#12747) @sai6855
28
+ - [DataGrid] Fix column resize (#12792) @romgrk
29
+ - [DataGrid] Fix column separators (#12808) @romgrk
30
+ - [DataGrid] Limit panel width to not exceed screen width (#12799) @cherniavskii
31
+ - [DataGrid] Support advanced server-side pagination use cases (#12474) @MBilalShafi
32
+ - [DataGrid] Support state export and restore on grid density (#12671) @MBilalShafi
33
+ - [l10n] Improve Danish (da-DK) locale (#12784) @EmilBahnsen
34
+
35
+ #### `@mui/x-data-grid-pro@7.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
36
+
37
+ Same changes as in `@mui/x-data-grid@7.3.0`, plus:
38
+
39
+ - [DataGridPro] Implement header filter height (#12666) @romgrk
40
+
41
+ #### `@mui/x-data-grid-premium@7.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
42
+
43
+ Same changes as in `@mui/x-data-grid-pro@7.3.0`.
44
+
45
+ ### Charts
46
+
47
+ #### Breaking change
48
+
49
+ A typo fix:
50
+
51
+ ```diff
52
+ - ContinuouseScaleName
53
+ + ContinuousScaleName
54
+ ```
55
+
56
+ #### `@mui/x-charts@7.3.0`
57
+
58
+ - [charts] Add `dataIndex` to series `valueFormatter` (#12745) @JCQuintas
59
+ - [charts] Add color scale (#12490) @alexfauquette
60
+ - [charts] Do not document the usage of `DEFAULT_X_AXIS_KEY` and `DEFAULT_Y_AXIS_KEY` (#12780) @alexfauquette
61
+ - [charts] Export more utils (#12744) @alexfauquette
62
+ - [charts] Fix passing slot props down to `PieArcLabel` (#12806) @JCQuintas
63
+
64
+ ### Tree View
65
+
66
+ #### `@mui/x-tree-view@7.3.0`
67
+
68
+ - [TreeView] Support `defaultMuiPrevented` on the `onFocus` prop of the root slot (#12813) @flaviendelangle
69
+
70
+ ### Docs
71
+
72
+ - [docs] Add grid cell display example to the migration guide (#12793) @romgrk
73
+ - [docs] Use charts classes objects (#12781) @alexfauquette
74
+ - [docs] Fix layout shift on demos (#12816) @zanivan
75
+ - [test] Increase timeout for test that sometimes fail on `DateTimeRangePicker` (#12786) @LukasTy
76
+
77
+ ### Core
78
+
79
+ - [docs-infra] Prepare infra to document charts interfaces (#12653) @alexfauquette
80
+
81
+ ## 7.2.0
82
+
83
+ _Apr 12, 2024_
84
+
85
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
86
+
87
+ - 🎨 Make grid colors customizable through the MUI themes API
88
+ - 🌍 Improve French (fr-FR), German (de-DE), and Swedish (sv-SE) locales on the Data Grid and Pickers
89
+ - 🐞 Bugfixes
90
+ - 📚 Documentation improvements
91
+
92
+ ### Data Grid
93
+
94
+ #### `@mui/x-data-grid@7.2.0`
95
+
96
+ - [DataGrid] Add missing `api` property to `GridCallbackDetails` (#12742) @sai6855
97
+ - [DataGrid] Do not escape double quotes when copying to clipboard (#12722) @cherniavskii
98
+ - [DataGrid] Fix column vertical border (#12741) @romgrk
99
+ - [DataGrid] Fix invalid date error when filtering `date`/`dateTime` columns (#12709) @cherniavskii
100
+ - [DataGrid] Fix overflow with dynamic row height (#12683) @romgrk
101
+ - [DataGrid] Make colors customizable (#12614) @romgrk
102
+ - [l10n] Improve French (fr-FR) locale (#12755) @derek-0000
103
+ - [l10n] Improve German (de-DE) locale (#12752) @Jens-Schoen
104
+ - [l10n] Improve Swedish (sv-SE) locale (#12731) @pontusdacke
105
+
106
+ #### `@mui/x-data-grid-pro@7.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
107
+
108
+ Same changes as in `@mui/x-data-grid@7.2.0`.
109
+
110
+ #### `@mui/x-data-grid-premium@7.2.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
111
+
112
+ Same changes as in `@mui/x-data-grid-pro@7.2.0`, plus:
113
+
114
+ - [DataGridPremium] Fix clipboard paste not working when cell loses focus (#12724) @cherniavskii
115
+
116
+ ### Date and Time Pickers
117
+
118
+ #### `@mui/x-date-pickers@7.2.0`
119
+
120
+ - [fields] Fix field editing after closing the picker (#12675) @LukasTy
121
+ - [l10n] Improve French (fr-FR) locale (#12692) @FaroukBel
122
+ - [l10n] Improve German (de-DE) locale (#12752) @Jens-Schoen
123
+ - [l10n] Improve Swedish (sv-SE) locale (#12731) @pontusdacke
124
+ - [pickers] Fix desktop date time Pickers grid layout (#12748) @LukasTy
125
+
126
+ #### `@mui/x-date-pickers-pro@7.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
127
+
128
+ Same changes as in `@mui/x-date-pickers@7.2.0`, plus:
129
+
130
+ - [DateTimeRangePicker] Fix desktop toolbar style (#12760) @LukasTy
131
+
132
+ ### Charts
133
+
134
+ #### `@mui/x-charts@7.2.0`
135
+
136
+ - [charts] Fix Bar chart with empty dataset throwing an error (#12708) @JCQuintas
137
+ - [charts] Fix `tickLabelInterval` not working on `YAxis` (#12746) @JCQuintas
138
+
139
+ ### Tree View
140
+
141
+ #### `@mui/x-tree-view@7.2.0`
142
+
143
+ - [TreeView] Add a new lookup to access an item index without expansive computation (#12729) @flaviendelangle
144
+ - [TreeView] Clean up usage of term "node" in internals (#12655) @noraleonte
145
+ - [TreeView] Improve performance by removing `getNavigableChildrenIds` method (#12713) @flaviendelangle
146
+ - [TreeView] Remove `state.items.itemTree` (#12717) @flaviendelangle
147
+ - [TreeView] Remove remaining occurences of the word "node" in the codebase (#12712) @flaviendelangle
148
+ - [TreeView] Return `instance` and `publicAPI` methods from plugin and populate the main objects inside `useTreeView` (#12650) @flaviendelangle
149
+ - [TreeView] Fix behaviors when the item order changes (#12369) @flaviendelangle
150
+
151
+ ### Docs
152
+
153
+ - [docs] Add `AxisFormatter` documentation for customizing tick/tooltip value formatting (#12700) @JCQuintas
154
+ - [docs] Add file explorer example to rich tree view customization docs (#12707) @noraleonte
155
+ - [docs] Do not use import of depth 3 in the doc (#12716) @flaviendelangle
156
+ - [docs] Explain how to clip plots with composition (#12679) @alexfauquette
157
+ - [docs] Fix typo in Data Grid v7 migration page (#12720) @bfaulk96
158
+ - [docs] Fix typo in Pickers v7 migration page (#12721) @bfaulk96
159
+
160
+ ### Core
161
+
162
+ - [core] Support multiple resolved `l10n` PR packages (#12735) @LukasTy
163
+ - [core] Update Netlify release references in release README (#12687) @LukasTy
164
+ - [core] Use `describeTreeView` for icons tests (#12672) @flaviendelangle
165
+ - [core] Use `describeTreeView` in existing tests for `useTreeViewItems` (#12732) @flaviendelangle
166
+
6
167
  ## 7.1.1
7
168
 
8
169
  _Apr 5, 2024_
@@ -2972,6 +3133,56 @@ Here is an example of the renaming for the `<ChartsTooltip />` component.
2972
3133
  - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi
2973
3134
  - [license] Correctly throw errors (#10924) @oliviertassinari
2974
3135
 
3136
+ ## 6.19.11
3137
+
3138
+ _Apr 18, 2024_
3139
+
3140
+ We'd like to offer a big thanks to the 1 contributor who made this release possible. Here are some highlights ✨:
3141
+
3142
+ - 🐞 Bugfixes
3143
+
3144
+ ### Data Grid
3145
+
3146
+ #### `@mui/x-data-grid@6.19.11`
3147
+
3148
+ - [DataGrid] Fix virtualization memory leak (#12812) @romgrk
3149
+
3150
+ #### `@mui/x-data-grid-pro@6.19.11` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3151
+
3152
+ Same changes as in `@mui/x-data-grid@6.19.11`.
3153
+
3154
+ #### `@mui/x-data-grid-premium@6.19.11` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
3155
+
3156
+ Same changes as in `@mui/x-data-grid-pro@6.19.11`.
3157
+
3158
+ ## 6.19.10
3159
+
3160
+ _Apr 12, 2024_
3161
+
3162
+ We'd like to offer a big thanks to the 2 contributors who made this release possible. Here are some highlights ✨:
3163
+
3164
+ - 🐞 Bugfixes
3165
+ - 📚 Documentation improvements
3166
+
3167
+ ### Data Grid
3168
+
3169
+ #### `@mui/x-data-grid@6.19.10`
3170
+
3171
+ - [DataGrid] Do not escape double quotes when copying to clipboard (#12734) @cherniavskii
3172
+ - [DataGrid] Fix bug in suspense (#12754) @cherniavskii
3173
+
3174
+ #### `@mui/x-data-grid-pro@6.19.10` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3175
+
3176
+ Same changes as in `@mui/x-data-grid@6.19.10`.
3177
+
3178
+ #### `@mui/x-data-grid-premium@6.19.10` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
3179
+
3180
+ Same changes as in `@mui/x-data-grid-pro@6.19.10`.
3181
+
3182
+ ### Core
3183
+
3184
+ - [core] Update the docs release source branch (#12685) @LukasTy
3185
+
2975
3186
  ## 6.19.9
2976
3187
 
2977
3188
  _Apr 5, 2024_
@@ -15,6 +15,7 @@ var _useReducedMotion = require("../hooks/useReducedMotion");
15
15
  var _ChartsSurface = require("../ChartsSurface");
16
16
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
17
17
  var _HighlightProvider = require("../context/HighlightProvider");
18
+ var _ChartsAxesGradients = require("../internals/components/ChartsAxesGradients");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  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
21
  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; }
@@ -53,7 +54,7 @@ const ChartContainer = exports.ChartContainer = /*#__PURE__*/React.forwardRef(fu
53
54
  dataset: dataset,
54
55
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_InteractionProvider.InteractionProvider, {
55
56
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_HighlightProvider.HighlightProvider, {
56
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsSurface.ChartsSurface, {
57
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsSurface.ChartsSurface, {
57
58
  width: width,
58
59
  height: height,
59
60
  ref: handleRef,
@@ -61,7 +62,7 @@ const ChartContainer = exports.ChartContainer = /*#__PURE__*/React.forwardRef(fu
61
62
  title: title,
62
63
  desc: desc,
63
64
  disableAxisListener: disableAxisListener,
64
- children: children
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxesGradients.ChartsAxesGradients, {}), children]
65
66
  })
66
67
  })
67
68
  })
@@ -128,11 +129,26 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
128
129
  width: _propTypes.default.number.isRequired,
129
130
  /**
130
131
  * The configuration of the x-axes.
131
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
132
+ * If not provided, a default axis config is used.
132
133
  */
133
134
  xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
134
135
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
135
136
  classes: _propTypes.default.object,
137
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
138
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
139
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
140
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
141
+ type: _propTypes.default.oneOf(['continuous']).isRequired
142
+ }), _propTypes.default.shape({
143
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
144
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
145
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
146
+ }), _propTypes.default.shape({
147
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
148
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
149
+ unknownColor: _propTypes.default.string,
150
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
151
+ })]),
136
152
  data: _propTypes.default.array,
137
153
  dataKey: _propTypes.default.string,
138
154
  disableLine: _propTypes.default.bool,
@@ -165,11 +181,26 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
165
181
  })),
166
182
  /**
167
183
  * The configuration of the y-axes.
168
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
184
+ * If not provided, a default axis config is used.
169
185
  */
170
186
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
171
187
  axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
172
188
  classes: _propTypes.default.object,
189
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
190
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
191
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
192
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
193
+ type: _propTypes.default.oneOf(['continuous']).isRequired
194
+ }), _propTypes.default.shape({
195
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
196
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
197
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
198
+ }), _propTypes.default.shape({
199
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
200
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
201
+ unknownColor: _propTypes.default.string,
202
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
203
+ })]),
173
204
  data: _propTypes.default.array,
174
205
  dataKey: _propTypes.default.string,
175
206
  disableLine: _propTypes.default.bool,
@@ -14,12 +14,12 @@ var _ChartsYAxis = require("../ChartsYAxis");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  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); }
16
16
  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; }
17
- const getAxisId = propsValue => {
17
+ const getAxisId = (propsValue, defaultAxisId) => {
18
18
  if (propsValue == null) {
19
19
  return null;
20
20
  }
21
21
  if (typeof propsValue === 'object') {
22
- return propsValue.axisId ?? null;
22
+ return propsValue.axisId ?? defaultAxisId ?? null;
23
23
  }
24
24
  return propsValue;
25
25
  };
@@ -63,8 +63,8 @@ function ChartsAxis(props) {
63
63
 
64
64
  const leftId = getAxisId(leftAxis === undefined ? yAxisIds[0] : leftAxis);
65
65
  const bottomId = getAxisId(bottomAxis === undefined ? xAxisIds[0] : bottomAxis);
66
- const topId = getAxisId(topAxis);
67
- const rightId = getAxisId(rightAxis);
66
+ const topId = getAxisId(topAxis, xAxisIds[0]);
67
+ const rightId = getAxisId(rightAxis, yAxisIds[0]);
68
68
  if (topId !== null && !xAxis[topId]) {
69
69
  throw Error([`MUI X Charts: id used for top axis "${topId}" is not defined.`, `Available ids are: ${xAxisIds.join(', ')}.`].join('\n'));
70
70
  }
@@ -8,7 +8,7 @@ exports.ChartsClipPath = ChartsClipPath;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _DrawingProvider = require("../context/DrawingProvider");
11
+ var _useDrawingArea = require("../hooks/useDrawingArea");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  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); }
14
14
  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; }
@@ -27,7 +27,7 @@ function ChartsClipPath(props) {
27
27
  top,
28
28
  width,
29
29
  height
30
- } = React.useContext(_DrawingProvider.DrawingContext);
30
+ } = (0, _useDrawingArea.useDrawingArea)();
31
31
  const offset = (0, _extends2.default)({
32
32
  top: 0,
33
33
  right: 0,
@@ -11,11 +11,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _utils = require("@mui/base/utils");
12
12
  var _utils2 = require("@mui/utils");
13
13
  var _styles = require("@mui/material/styles");
14
- var _DrawingProvider = require("../context/DrawingProvider");
15
14
  var _utils3 = require("./utils");
16
15
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
17
16
  var _chartsLegendClasses = require("./chartsLegendClasses");
18
17
  var _DefaultChartsLegend = require("./DefaultChartsLegend");
18
+ var _hooks = require("../hooks");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  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); }
21
21
  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; }
@@ -55,7 +55,7 @@ function ChartsLegend(inProps) {
55
55
  const classes = useUtilityClasses((0, _extends2.default)({}, props, {
56
56
  theme
57
57
  }));
58
- const drawingArea = React.useContext(_DrawingProvider.DrawingContext);
58
+ const drawingArea = (0, _hooks.useDrawingArea)();
59
59
  const series = React.useContext(_SeriesContextProvider.SeriesContext);
60
60
  const seriesToDisplay = (0, _utils3.getSeriesToDisplay)(series);
61
61
  const ChartLegendRender = slots?.legend ?? _DefaultChartsLegend.DefaultChartsLegend;
@@ -4,6 +4,9 @@ import { AxisInteractionData } from '../context/InteractionProvider';
4
4
  import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config';
5
5
  import { AxisDefaultized } from '../models/axis';
6
6
  import { ChartsTooltipClasses } from './chartsTooltipClasses';
7
+ type ChartSeriesDefaultizedWithColorGetter = ChartSeriesDefaultized<ChartSeriesType> & {
8
+ getColor: (dataIndex: number) => string;
9
+ };
7
10
  export type ChartsAxisContentProps = {
8
11
  /**
9
12
  * Data identifying the triggered axis.
@@ -12,7 +15,7 @@ export type ChartsAxisContentProps = {
12
15
  /**
13
16
  * The series linked to the triggered axis.
14
17
  */
15
- series: ChartSeriesDefaultized<ChartSeriesType>[];
18
+ series: ChartSeriesDefaultizedWithColorGetter[];
16
19
  /**
17
20
  * The properties of the triggered axis.
18
21
  */
@@ -13,6 +13,7 @@ var _SeriesContextProvider = require("../context/SeriesContextProvider");
13
13
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
14
14
  var _DefaultChartsAxisTooltipContent = require("./DefaultChartsAxisTooltipContent");
15
15
  var _utils2 = require("./utils");
16
+ var _colorGetter = _interopRequireDefault(require("../internals/colorGetter"));
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
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); }
18
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; }
@@ -42,12 +43,16 @@ function ChartsAxisTooltipContent(props) {
42
43
  const item = series[seriesType].series[seriesId];
43
44
  const axisKey = isXaxis ? item.xAxisKey : item.yAxisKey;
44
45
  if (axisKey === undefined || axisKey === USED_AXIS_ID) {
45
- rep.push(series[seriesType].series[seriesId]);
46
+ const seriesToAdd = series[seriesType].series[seriesId];
47
+ const color = (0, _colorGetter.default)(seriesToAdd, xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]]);
48
+ rep.push((0, _extends2.default)({}, seriesToAdd, {
49
+ getColor: color
50
+ }));
46
51
  }
47
52
  });
48
53
  });
49
54
  return rep;
50
- }, [USED_AXIS_ID, isXaxis, series]);
55
+ }, [USED_AXIS_ID, isXaxis, series, xAxis, xAxisIds, yAxis, yAxisIds]);
51
56
  const relevantAxis = React.useMemo(() => {
52
57
  return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID];
53
58
  }, [USED_AXIS_ID, isXaxis, xAxis, yAxis]);
@@ -16,6 +16,12 @@ export type ChartsItemContentProps<T extends ChartSeriesType = ChartSeriesType>
16
16
  * Override or extend the styles applied to the component.
17
17
  */
18
18
  classes: ChartsTooltipClasses;
19
+ /**
20
+ * Get the color of the item with index `dataIndex`.
21
+ * @param {number} dataIndex The data index of the item.
22
+ * @returns {string} The color to display.
23
+ */
24
+ getColor: (dataIndex: number) => string;
19
25
  sx?: SxProps<Theme>;
20
26
  };
21
27
  declare function ChartsItemTooltipContent<T extends ChartSeriesType>(props: {
@@ -11,6 +11,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _utils = require("@mui/base/utils");
12
12
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
13
13
  var _DefaultChartsItemTooltipContent = require("./DefaultChartsItemTooltipContent");
14
+ var _CartesianContextProvider = require("../context/CartesianContextProvider");
15
+ var _colorGetter = _interopRequireDefault(require("../internals/colorGetter"));
14
16
  var _jsxRuntime = require("react/jsx-runtime");
15
17
  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); }
16
18
  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; }
@@ -23,6 +25,16 @@ function ChartsItemTooltipContent(props) {
23
25
  contentProps
24
26
  } = props;
25
27
  const series = React.useContext(_SeriesContextProvider.SeriesContext)[itemData.type].series[itemData.seriesId];
28
+ const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
29
+ const {
30
+ xAxis,
31
+ yAxis,
32
+ xAxisIds,
33
+ yAxisIds
34
+ } = axisData;
35
+ const defaultXAxisId = xAxisIds[0];
36
+ const defaultYAxisId = yAxisIds[0];
37
+ const getColor = series.type === 'pie' ? (0, _colorGetter.default)(series) : (0, _colorGetter.default)(series, xAxis[series.xAxisKey ?? defaultXAxisId], yAxis[series.yAxisKey ?? defaultYAxisId]);
26
38
  const Content = content ?? _DefaultChartsItemTooltipContent.DefaultChartsItemTooltipContent;
27
39
  const chartTooltipContentProps = (0, _utils.useSlotProps)({
28
40
  elementType: Content,
@@ -31,7 +43,8 @@ function ChartsItemTooltipContent(props) {
31
43
  itemData,
32
44
  series,
33
45
  sx,
34
- classes
46
+ classes,
47
+ getColor
35
48
  },
36
49
  ownerState: {}
37
50
  });
@@ -46,6 +59,7 @@ process.env.NODE_ENV !== "production" ? ChartsItemTooltipContent.propTypes = {
46
59
  content: _propTypes.default.elementType,
47
60
  contentProps: _propTypes.default.shape({
48
61
  classes: _propTypes.default.object,
62
+ getColor: _propTypes.default.func,
49
63
  itemData: _propTypes.default.shape({
50
64
  dataIndex: _propTypes.default.number,
51
65
  seriesId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,