@mui/x-charts 7.6.1 → 7.7.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 (245) hide show
  1. package/BarChart/BarChart.d.ts +1 -1
  2. package/BarChart/BarChart.js +2 -2
  3. package/BarChart/BarPlot.js +2 -2
  4. package/BarChart/formatter.js +2 -2
  5. package/BarChart/getColor.d.ts +1 -1
  6. package/BarChart/getColor.js +4 -4
  7. package/BarChart/plugin.d.ts +2 -0
  8. package/BarChart/plugin.js +17 -0
  9. package/CHANGELOG.md +147 -0
  10. package/ChartContainer/ChartContainer.d.ts +15 -3
  11. package/ChartContainer/ChartContainer.js +70 -22
  12. package/ChartContainer/defaultPlugins.d.ts +2 -0
  13. package/ChartContainer/defaultPlugins.js +11 -0
  14. package/ChartContainer/usePluginsMerge.d.ts +10 -0
  15. package/ChartContainer/usePluginsMerge.js +39 -0
  16. package/ChartsLegend/ChartsLegend.js +2 -2
  17. package/ChartsLegend/utils.js +4 -1
  18. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
  19. package/ChartsOverlay/index.d.ts +1 -0
  20. package/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
  21. package/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
  22. package/ChartsText/ChartsText.js +1 -3
  23. package/ChartsTooltip/ChartsAxisTooltipContent.js +9 -15
  24. package/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
  25. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
  26. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  27. package/ChartsTooltip/utils.d.ts +1 -7
  28. package/ChartsTooltip/utils.js +2 -10
  29. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
  30. package/ChartsXAxis/ChartsXAxis.js +17 -19
  31. package/ChartsYAxis/ChartsYAxis.js +17 -19
  32. package/LineChart/AreaPlot.js +2 -2
  33. package/LineChart/LineChart.d.ts +2 -2
  34. package/LineChart/LineChart.js +3 -3
  35. package/LineChart/LineHighlightPlot.js +2 -2
  36. package/LineChart/LinePlot.js +2 -2
  37. package/LineChart/MarkPlot.js +2 -2
  38. package/LineChart/formatter.js +2 -2
  39. package/LineChart/getColor.d.ts +1 -1
  40. package/LineChart/getColor.js +2 -2
  41. package/LineChart/plugin.d.ts +2 -0
  42. package/LineChart/plugin.js +17 -0
  43. package/PieChart/PieChart.d.ts +2 -2
  44. package/PieChart/PieChart.js +3 -3
  45. package/PieChart/PiePlot.js +2 -2
  46. package/PieChart/plugin.d.ts +2 -0
  47. package/PieChart/plugin.js +14 -0
  48. package/ResponsiveChartContainer/ResizableContainer.d.ts +10 -0
  49. package/ResponsiveChartContainer/ResizableContainer.js +32 -0
  50. package/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -24
  51. package/ScatterChart/ScatterChart.d.ts +2 -2
  52. package/ScatterChart/ScatterChart.js +3 -3
  53. package/ScatterChart/ScatterPlot.js +2 -2
  54. package/ScatterChart/formatter.js +2 -3
  55. package/ScatterChart/getColor.d.ts +1 -1
  56. package/ScatterChart/getColor.js +2 -2
  57. package/ScatterChart/plugin.d.ts +2 -0
  58. package/ScatterChart/plugin.js +17 -0
  59. package/SparkLineChart/SparkLineChart.d.ts +9 -4
  60. package/SparkLineChart/SparkLineChart.js +58 -2
  61. package/context/CartesianContextProvider.d.ts +21 -10
  62. package/context/CartesianContextProvider.js +7 -20
  63. package/context/ColorProvider.d.ts +12 -0
  64. package/context/ColorProvider.js +25 -0
  65. package/context/DrawingProvider.d.ts +3 -1
  66. package/context/DrawingProvider.js +9 -2
  67. package/context/HighlightedProvider/HighlightedContext.d.ts +2 -1
  68. package/context/HighlightedProvider/HighlightedContext.js +8 -5
  69. package/context/HighlightedProvider/HighlightedProvider.js +15 -12
  70. package/context/HighlightedProvider/useHighlighted.js +6 -3
  71. package/context/HighlightedProvider/useItemHighlighted.js +2 -8
  72. package/context/SeriesContextProvider.d.ts +16 -5
  73. package/context/SeriesContextProvider.js +14 -17
  74. package/context/context.types.d.ts +4 -0
  75. package/context/context.types.js +5 -0
  76. package/esm/BarChart/BarChart.js +2 -2
  77. package/esm/BarChart/BarPlot.js +2 -2
  78. package/esm/BarChart/formatter.js +1 -1
  79. package/esm/BarChart/getColor.js +4 -4
  80. package/esm/BarChart/plugin.js +10 -0
  81. package/esm/ChartContainer/ChartContainer.js +71 -23
  82. package/esm/ChartContainer/defaultPlugins.js +5 -0
  83. package/esm/ChartContainer/usePluginsMerge.js +31 -0
  84. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  85. package/esm/ChartsLegend/utils.js +4 -1
  86. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
  87. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
  88. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
  89. package/esm/ChartsText/ChartsText.js +1 -3
  90. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -14
  91. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
  92. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
  93. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  94. package/esm/ChartsTooltip/utils.js +2 -8
  95. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
  96. package/esm/ChartsXAxis/ChartsXAxis.js +17 -19
  97. package/esm/ChartsYAxis/ChartsYAxis.js +17 -19
  98. package/esm/LineChart/AreaPlot.js +2 -2
  99. package/esm/LineChart/LineChart.js +3 -3
  100. package/esm/LineChart/LineHighlightPlot.js +2 -2
  101. package/esm/LineChart/LinePlot.js +2 -2
  102. package/esm/LineChart/MarkPlot.js +2 -2
  103. package/esm/LineChart/formatter.js +1 -1
  104. package/esm/LineChart/getColor.js +2 -2
  105. package/esm/LineChart/plugin.js +10 -0
  106. package/esm/PieChart/PieChart.js +3 -3
  107. package/esm/PieChart/PiePlot.js +2 -2
  108. package/esm/PieChart/plugin.js +7 -0
  109. package/esm/ResponsiveChartContainer/ResizableContainer.js +26 -0
  110. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +31 -23
  111. package/esm/ScatterChart/ScatterChart.js +3 -3
  112. package/esm/ScatterChart/ScatterPlot.js +2 -2
  113. package/esm/ScatterChart/formatter.js +1 -1
  114. package/esm/ScatterChart/getColor.js +2 -2
  115. package/esm/ScatterChart/plugin.js +10 -0
  116. package/esm/SparkLineChart/SparkLineChart.js +58 -2
  117. package/esm/context/CartesianContextProvider.js +7 -20
  118. package/esm/context/ColorProvider.js +16 -0
  119. package/esm/context/DrawingProvider.js +9 -2
  120. package/esm/context/HighlightedProvider/HighlightedContext.js +8 -5
  121. package/esm/context/HighlightedProvider/HighlightedProvider.js +15 -12
  122. package/esm/context/HighlightedProvider/useHighlighted.js +6 -3
  123. package/esm/context/HighlightedProvider/useItemHighlighted.js +2 -6
  124. package/esm/context/SeriesContextProvider.js +14 -17
  125. package/esm/context/context.types.js +1 -0
  126. package/esm/hooks/index.js +1 -0
  127. package/esm/hooks/useColor.js +9 -0
  128. package/esm/hooks/useColorScale.js +27 -0
  129. package/esm/hooks/useInteractionItemProps.js +2 -2
  130. package/esm/hooks/useReducedMotion.js +7 -0
  131. package/esm/hooks/useSeries.js +6 -3
  132. package/esm/hooks/useSvgRef.js +6 -3
  133. package/esm/internals/configInit.js +20 -0
  134. package/esm/internals/defaultizeValueFormatter.js +2 -3
  135. package/esm/internals/index.js +27 -0
  136. package/esm/internals/isCartesian.js +7 -0
  137. package/esm/internals/warning.js +13 -0
  138. package/esm/models/index.js +1 -0
  139. package/esm/models/plugin.js +1 -0
  140. package/esm/models/seriesType/index.js +6 -0
  141. package/hooks/index.d.ts +1 -0
  142. package/hooks/index.js +12 -0
  143. package/hooks/useColor.d.ts +4 -0
  144. package/hooks/useColor.js +17 -0
  145. package/hooks/useColorScale.d.ts +4 -0
  146. package/hooks/useColorScale.js +37 -0
  147. package/hooks/useInteractionItemProps.js +1 -1
  148. package/hooks/useReducedMotion.js +7 -0
  149. package/hooks/useSeries.d.ts +6 -11
  150. package/hooks/useSeries.js +6 -3
  151. package/hooks/useSvgRef.js +6 -3
  152. package/hooks/useTicks.d.ts +4 -2
  153. package/index.js +1 -1
  154. package/internals/configInit.d.ts +9 -0
  155. package/internals/configInit.js +26 -0
  156. package/internals/defaultizeColor.d.ts +8 -8
  157. package/internals/defaultizeValueFormatter.d.ts +1 -2
  158. package/internals/defaultizeValueFormatter.js +2 -3
  159. package/internals/index.d.ts +17 -0
  160. package/internals/index.js +203 -0
  161. package/internals/isCartesian.d.ts +7 -0
  162. package/internals/isCartesian.js +14 -0
  163. package/internals/package.json +6 -0
  164. package/internals/warning.d.ts +1 -0
  165. package/internals/warning.js +19 -0
  166. package/models/axis.d.ts +4 -5
  167. package/models/index.d.ts +1 -0
  168. package/models/index.js +11 -0
  169. package/models/plugin.d.ts +16 -0
  170. package/models/plugin.js +5 -0
  171. package/models/seriesType/config.d.ts +30 -5
  172. package/models/seriesType/index.d.ts +8 -11
  173. package/models/seriesType/index.js +6 -0
  174. package/modern/BarChart/BarChart.js +2 -2
  175. package/modern/BarChart/BarPlot.js +2 -2
  176. package/modern/BarChart/formatter.js +1 -1
  177. package/modern/BarChart/getColor.js +4 -4
  178. package/modern/BarChart/plugin.js +10 -0
  179. package/modern/ChartContainer/ChartContainer.js +71 -23
  180. package/modern/ChartContainer/defaultPlugins.js +5 -0
  181. package/modern/ChartContainer/usePluginsMerge.js +31 -0
  182. package/modern/ChartsLegend/ChartsLegend.js +2 -2
  183. package/modern/ChartsLegend/utils.js +4 -1
  184. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
  185. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
  186. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
  187. package/modern/ChartsText/ChartsText.js +1 -3
  188. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -14
  189. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
  190. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
  191. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  192. package/modern/ChartsTooltip/utils.js +2 -8
  193. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
  194. package/modern/ChartsXAxis/ChartsXAxis.js +17 -19
  195. package/modern/ChartsYAxis/ChartsYAxis.js +17 -19
  196. package/modern/LineChart/AreaPlot.js +2 -2
  197. package/modern/LineChart/LineChart.js +3 -3
  198. package/modern/LineChart/LineHighlightPlot.js +2 -2
  199. package/modern/LineChart/LinePlot.js +2 -2
  200. package/modern/LineChart/MarkPlot.js +2 -2
  201. package/modern/LineChart/formatter.js +1 -1
  202. package/modern/LineChart/getColor.js +2 -2
  203. package/modern/LineChart/plugin.js +10 -0
  204. package/modern/PieChart/PieChart.js +3 -3
  205. package/modern/PieChart/PiePlot.js +2 -2
  206. package/modern/PieChart/plugin.js +7 -0
  207. package/modern/ResponsiveChartContainer/ResizableContainer.js +26 -0
  208. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +31 -23
  209. package/modern/ScatterChart/ScatterChart.js +3 -3
  210. package/modern/ScatterChart/ScatterPlot.js +2 -2
  211. package/modern/ScatterChart/formatter.js +1 -1
  212. package/modern/ScatterChart/getColor.js +2 -2
  213. package/modern/ScatterChart/plugin.js +10 -0
  214. package/modern/SparkLineChart/SparkLineChart.js +58 -2
  215. package/modern/context/CartesianContextProvider.js +7 -20
  216. package/modern/context/ColorProvider.js +16 -0
  217. package/modern/context/DrawingProvider.js +9 -2
  218. package/modern/context/HighlightedProvider/HighlightedContext.js +8 -5
  219. package/modern/context/HighlightedProvider/HighlightedProvider.js +15 -12
  220. package/modern/context/HighlightedProvider/useHighlighted.js +6 -3
  221. package/modern/context/HighlightedProvider/useItemHighlighted.js +2 -6
  222. package/modern/context/SeriesContextProvider.js +14 -17
  223. package/modern/context/context.types.js +1 -0
  224. package/modern/hooks/index.js +1 -0
  225. package/modern/hooks/useColor.js +9 -0
  226. package/modern/hooks/useColorScale.js +27 -0
  227. package/modern/hooks/useInteractionItemProps.js +2 -2
  228. package/modern/hooks/useReducedMotion.js +7 -0
  229. package/modern/hooks/useSeries.js +6 -3
  230. package/modern/hooks/useSvgRef.js +6 -3
  231. package/modern/index.js +1 -1
  232. package/modern/internals/configInit.js +20 -0
  233. package/modern/internals/defaultizeValueFormatter.js +2 -3
  234. package/modern/internals/index.js +27 -0
  235. package/modern/internals/isCartesian.js +7 -0
  236. package/modern/internals/warning.js +13 -0
  237. package/modern/models/index.js +1 -0
  238. package/modern/models/plugin.js +1 -0
  239. package/modern/models/seriesType/index.js +6 -0
  240. package/package.json +2 -2
  241. package/themeAugmentation/components.d.ts +12 -12
  242. package/esm/internals/colorGetter.js +0 -22
  243. package/internals/colorGetter.d.ts +0 -7
  244. package/internals/colorGetter.js +0 -29
  245. package/modern/internals/colorGetter.js +0 -22
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ColorContext = void 0;
7
+ exports.ColorProvider = ColorProvider;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ 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); }
11
+ 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 && {}.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; }
12
+ const ColorContext = exports.ColorContext = /*#__PURE__*/React.createContext({});
13
+ if (process.env.NODE_ENV !== 'production') {
14
+ ColorContext.displayName = 'ColorContext';
15
+ }
16
+ function ColorProvider(props) {
17
+ const {
18
+ colorProcessors,
19
+ children
20
+ } = props;
21
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ColorContext.Provider, {
22
+ value: colorProcessors,
23
+ children: children
24
+ });
25
+ }
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { LayoutConfig } from '../models/layout';
3
+ import { Initializable } from './context.types';
3
4
  export interface DrawingProviderProps extends LayoutConfig {
4
5
  children: React.ReactNode;
5
6
  svgRef: React.RefObject<SVGSVGElement>;
@@ -39,5 +40,6 @@ export declare const DrawingContext: React.Context<DrawingArea & {
39
40
  */
40
41
  chartId: string;
41
42
  }>;
42
- export declare const SvgContext: React.Context<React.RefObject<SVGSVGElement>>;
43
+ export type SvgContextState = React.RefObject<SVGSVGElement>;
44
+ export declare const SvgContext: React.Context<Initializable<SvgContextState>>;
43
45
  export declare function DrawingProvider(props: DrawingProviderProps): React.JSX.Element;
@@ -31,7 +31,10 @@ if (process.env.NODE_ENV !== 'production') {
31
31
  DrawingContext.displayName = 'DrawingContext';
32
32
  }
33
33
  const SvgContext = exports.SvgContext = /*#__PURE__*/React.createContext({
34
- current: null
34
+ isInitialized: false,
35
+ data: {
36
+ current: null
37
+ }
35
38
  });
36
39
  if (process.env.NODE_ENV !== 'production') {
37
40
  SvgContext.displayName = 'SvgContext';
@@ -49,8 +52,12 @@ function DrawingProvider(props) {
49
52
  const value = React.useMemo(() => (0, _extends2.default)({
50
53
  chartId: chartId ?? ''
51
54
  }, drawingArea), [chartId, drawingArea]);
55
+ const refValue = React.useMemo(() => ({
56
+ isInitialized: true,
57
+ data: svgRef
58
+ }), [svgRef]);
52
59
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SvgContext.Provider, {
53
- value: svgRef,
60
+ value: refValue,
54
61
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DrawingContext.Provider, {
55
62
  value: value,
56
63
  children: children
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { SeriesId } from '../../models/seriesType/common';
3
+ import { Initializable } from '../context.types';
3
4
  /**
4
5
  * The data of the highlighted item.
5
6
  * To highlight an item, you need to provide the series id and the item id.
@@ -62,4 +63,4 @@ export type HighlightedState = {
62
63
  isHighlighted: (input: HighlightItemData) => boolean;
63
64
  isFaded: (input: HighlightItemData) => boolean;
64
65
  };
65
- export declare const HighlightedContext: React.Context<HighlightedState>;
66
+ export declare const HighlightedContext: React.Context<Initializable<HighlightedState>>;
@@ -25,11 +25,14 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
25
25
  */
26
26
 
27
27
  const HighlightedContext = exports.HighlightedContext = /*#__PURE__*/React.createContext({
28
- highlightedItem: null,
29
- setHighlighted: () => {},
30
- clearHighlighted: () => {},
31
- isHighlighted: () => false,
32
- isFaded: () => false
28
+ isInitialized: false,
29
+ data: {
30
+ highlightedItem: null,
31
+ setHighlighted: () => {},
32
+ clearHighlighted: () => {},
33
+ isHighlighted: () => false,
34
+ isFaded: () => false
35
+ }
33
36
  });
34
37
  if (process.env.NODE_ENV !== 'production') {
35
38
  HighlightedContext.displayName = 'HighlightedContext';
@@ -56,18 +56,21 @@ function HighlightedProvider({
56
56
  const highlightScope = highlightedItem && highlightedItem.seriesId ? seriesById.get(highlightedItem.seriesId) ?? undefined : undefined;
57
57
  const providerValue = React.useMemo(() => {
58
58
  return {
59
- highlightScope,
60
- highlightedItem,
61
- setHighlighted: itemData => {
62
- setHighlightedItem(itemData);
63
- onHighlightChange?.(itemData);
64
- },
65
- clearHighlighted: () => {
66
- setHighlightedItem(null);
67
- onHighlightChange?.(null);
68
- },
69
- isHighlighted: (0, _createIsHighlighted.createIsHighlighted)(highlightScope, highlightedItem),
70
- isFaded: (0, _createIsFaded.createIsFaded)(highlightScope, highlightedItem)
59
+ isInitialized: true,
60
+ data: {
61
+ highlightScope,
62
+ highlightedItem,
63
+ setHighlighted: itemData => {
64
+ setHighlightedItem(itemData);
65
+ onHighlightChange?.(itemData);
66
+ },
67
+ clearHighlighted: () => {
68
+ setHighlightedItem(null);
69
+ onHighlightChange?.(null);
70
+ },
71
+ isHighlighted: (0, _createIsHighlighted.createIsHighlighted)(highlightScope, highlightedItem),
72
+ isFaded: (0, _createIsFaded.createIsFaded)(highlightScope, highlightedItem)
73
+ }
71
74
  };
72
75
  }, [highlightedItem, highlightScope, setHighlightedItem, onHighlightChange]);
73
76
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HighlightedContext.HighlightedContext.Provider, {
@@ -16,9 +16,12 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
16
16
  * @returns {HighlightedState} the state of the chart
17
17
  */
18
18
  function useHighlighted() {
19
- const highlighted = React.useContext(_HighlightedContext.HighlightedContext);
20
- if (highlighted === undefined) {
19
+ const {
20
+ isInitialized,
21
+ data
22
+ } = React.useContext(_HighlightedContext.HighlightedContext);
23
+ if (!isInitialized) {
21
24
  throw new Error(['MUI X: Could not find the highlighted ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
22
25
  }
23
- return highlighted;
26
+ return data;
24
27
  }
@@ -4,10 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useItemHighlighted = useItemHighlighted;
7
- var React = _interopRequireWildcard(require("react"));
8
- var _HighlightedContext = require("./HighlightedContext");
9
- 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); }
10
- 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 && {}.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; }
7
+ var _useHighlighted = require("./useHighlighted");
11
8
  /**
12
9
  * A hook to check the highlighted state of the item.
13
10
  * This function already calculates that an item is not faded if it is highlighted.
@@ -18,10 +15,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
18
15
  * @returns {ItemHighlightedState} the state of the item
19
16
  */
20
17
  function useItemHighlighted(item) {
21
- const highlighted = React.useContext(_HighlightedContext.HighlightedContext);
22
- if (highlighted === undefined) {
23
- throw new Error(['MUI X: Could not find the highlighted ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
24
- }
18
+ const highlighted = (0, _useHighlighted.useHighlighted)();
25
19
  if (!item) {
26
20
  return {
27
21
  isHighlighted: false,
@@ -1,25 +1,36 @@
1
1
  import * as React from 'react';
2
2
  import { AllSeriesType } from '../models/seriesType';
3
- import { ChartSeriesType, DatasetType, FormatterResult } from '../models/seriesType/config';
3
+ import { ChartSeriesType, DatasetType, FormatterParams, FormatterResult } from '../models/seriesType/config';
4
4
  import { ChartsColorPalette } from '../colorPalettes';
5
- export type SeriesContextProviderProps = {
5
+ import { Initializable } from './context.types';
6
+ export type SeriesFormatterType<T extends ChartSeriesType> = (series: AllSeriesType<T>[], colors: string[], dataset?: DatasetType) => {
7
+ [type in T]?: FormatterResult<type>;
8
+ };
9
+ export type SeriesContextProviderProps<T extends ChartSeriesType = ChartSeriesType> = {
6
10
  dataset?: DatasetType;
7
11
  /**
8
12
  * The array of series to display.
9
13
  * Each type of series has its own specificity.
10
14
  * Please refer to the appropriate docs page to learn more about it.
11
15
  */
12
- series: AllSeriesType[];
16
+ series: AllSeriesType<T>[];
13
17
  /**
14
18
  * Color palette used to colorize multiple series.
15
19
  * @default blueberryTwilightPalette
16
20
  */
17
21
  colors?: ChartsColorPalette;
22
+ /**
23
+ * Preprocessors for each series types.
24
+ */
25
+ seriesFormatters: SeriesFormatterConfig<T>;
18
26
  children: React.ReactNode;
19
27
  };
20
28
  export type FormattedSeries = {
21
29
  [type in ChartSeriesType]?: FormatterResult<type>;
22
30
  };
23
- export declare const SeriesContext: React.Context<FormattedSeries>;
24
- declare function SeriesContextProvider(props: SeriesContextProviderProps): React.JSX.Element;
31
+ export declare const SeriesContext: React.Context<Initializable<FormattedSeries>>;
32
+ export type SeriesFormatterConfig<T extends ChartSeriesType = ChartSeriesType> = {
33
+ [K in T]?: (series: FormatterParams<K>, dataset?: DatasetType) => any;
34
+ };
35
+ declare function SeriesContextProvider<T extends ChartSeriesType>(props: SeriesContextProviderProps<T>): React.JSX.Element;
25
36
  export { SeriesContextProvider };
@@ -9,26 +9,18 @@ exports.SeriesContextProvider = SeriesContextProvider;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _styles = require("@mui/material/styles");
12
- var _formatter = _interopRequireDefault(require("../BarChart/formatter"));
13
- var _formatter2 = _interopRequireDefault(require("../ScatterChart/formatter"));
14
- var _formatter3 = _interopRequireDefault(require("../LineChart/formatter"));
15
- var _formatter4 = _interopRequireDefault(require("../PieChart/formatter"));
16
12
  var _defaultizeColor = require("../internals/defaultizeColor");
17
13
  var _colorPalettes = require("../colorPalettes");
18
14
  var _jsxRuntime = require("react/jsx-runtime");
19
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); }
20
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 && {}.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
- const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({});
17
+ const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({
18
+ isInitialized: false,
19
+ data: {}
20
+ });
22
21
  if (process.env.NODE_ENV !== 'production') {
23
22
  SeriesContext.displayName = 'SeriesContext';
24
23
  }
25
- const seriesTypeFormatter = {
26
- bar: _formatter.default,
27
- scatter: _formatter2.default,
28
- line: _formatter3.default,
29
- pie: _formatter4.default
30
- };
31
-
32
24
  /**
33
25
  * This methods is the interface between what the developer is providing and what components receives
34
26
  * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified
@@ -37,7 +29,7 @@ const seriesTypeFormatter = {
37
29
  * @param colors The color palette used to defaultize series colors
38
30
  * @returns An object structuring all the series by type.
39
31
  */
40
- const formatSeries = (series, colors, dataset) => {
32
+ const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
41
33
  // Group series by type
42
34
  const seriesGroups = {};
43
35
  series.forEach((seriesData, seriesIndex) => {
@@ -61,9 +53,10 @@ const formatSeries = (series, colors, dataset) => {
61
53
  });
62
54
  const formattedSeries = {};
63
55
  // Apply formatter on a type group
64
- Object.keys(seriesTypeFormatter).forEach(type => {
65
- if (seriesGroups[type] !== undefined) {
66
- formattedSeries[type] = seriesTypeFormatter[type]?.(seriesGroups[type], dataset) ?? seriesGroups[type];
56
+ Object.keys(seriesFormatters).forEach(type => {
57
+ const group = seriesGroups[type];
58
+ if (group !== undefined) {
59
+ formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type];
67
60
  }
68
61
  });
69
62
  return formattedSeries;
@@ -73,10 +66,14 @@ function SeriesContextProvider(props) {
73
66
  series,
74
67
  dataset,
75
68
  colors = _colorPalettes.blueberryTwilightPalette,
69
+ seriesFormatters,
76
70
  children
77
71
  } = props;
78
72
  const theme = (0, _styles.useTheme)();
79
- const formattedSeries = React.useMemo(() => formatSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, dataset), [series, colors, theme.palette.mode, dataset]);
73
+ const formattedSeries = React.useMemo(() => ({
74
+ isInitialized: true,
75
+ data: preprocessSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, seriesFormatters, dataset)
76
+ }), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
80
77
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SeriesContext.Provider, {
81
78
  value: formattedSeries,
82
79
  children: children
@@ -0,0 +1,4 @@
1
+ export type Initializable<T> = {
2
+ isInitialized: boolean;
3
+ data: T;
4
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -351,7 +351,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
351
351
  labelStyle: PropTypes.object,
352
352
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
353
353
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
354
- position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
354
+ position: PropTypes.oneOf(['bottom', 'top']),
355
355
  reverse: PropTypes.bool,
356
356
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
357
357
  slotProps: PropTypes.object,
@@ -404,7 +404,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
404
404
  labelStyle: PropTypes.object,
405
405
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
406
406
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
407
- position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
407
+ position: PropTypes.oneOf(['left', 'right']),
408
408
  reverse: PropTypes.bool,
409
409
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
410
410
  slotProps: PropTypes.object,
@@ -4,7 +4,6 @@ const _excluded = ["skipAnimation", "onItemClick", "borderRadius", "barLabel"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useTransition } from '@react-spring/web';
7
- import { SeriesContext } from '../context/SeriesContextProvider';
8
7
  import { CartesianContext } from '../context/CartesianContextProvider';
9
8
  import { BarElement } from './BarElement';
10
9
  import getColor from './getColor';
@@ -12,6 +11,7 @@ import { useChartId } from '../hooks';
12
11
  import { BarClipPath } from './BarClipPath';
13
12
  import { BarLabelPlot } from './BarLabel/BarLabelPlot';
14
13
  import { checkScaleErrors } from './checkScaleErrors';
14
+ import { useBarSeries } from '../hooks/useSeries';
15
15
 
16
16
  /**
17
17
  * Solution of the equations
@@ -42,7 +42,7 @@ function getBandSize({
42
42
  };
43
43
  }
44
44
  const useAggregatedData = () => {
45
- const seriesData = React.useContext(SeriesContext).bar ?? {
45
+ const seriesData = useBarSeries() ?? {
46
46
  series: {},
47
47
  stackingGroups: [],
48
48
  seriesOrder: []
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { stack as d3Stack } from 'd3-shape';
3
3
  import { getStackingGroups } from '../internals/stackSeries';
4
- import defaultizeValueFormatter from '../internals/defaultizeValueFormatter';
4
+ import { defaultizeValueFormatter } from '../internals/defaultizeValueFormatter';
5
5
  let warnOnce = false;
6
6
  const formatter = (params, dataset) => {
7
7
  const {
@@ -1,8 +1,8 @@
1
1
  export default function getColor(series, xAxis, yAxis) {
2
2
  const verticalLayout = series.layout === 'vertical';
3
- const bandColorScale = verticalLayout ? xAxis.colorScale : yAxis.colorScale;
4
- const valueColorScale = verticalLayout ? yAxis.colorScale : xAxis.colorScale;
5
- const bandValues = verticalLayout ? xAxis.data : yAxis.data;
3
+ const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale;
4
+ const valueColorScale = verticalLayout ? yAxis?.colorScale : xAxis?.colorScale;
5
+ const bandValues = verticalLayout ? xAxis?.data : yAxis?.data;
6
6
  if (valueColorScale) {
7
7
  return dataIndex => {
8
8
  const value = series.data[dataIndex];
@@ -13,7 +13,7 @@ export default function getColor(series, xAxis, yAxis) {
13
13
  return color;
14
14
  };
15
15
  }
16
- if (bandColorScale) {
16
+ if (bandColorScale && bandValues) {
17
17
  return dataIndex => {
18
18
  const value = bandValues[dataIndex];
19
19
  const color = value === null ? series.color : bandColorScale(value);
@@ -0,0 +1,10 @@
1
+ import { getExtremumX, getExtremumY } from './extremums';
2
+ import formatter from './formatter';
3
+ import getColor from './getColor';
4
+ export const plugin = {
5
+ seriesType: 'bar',
6
+ seriesFormatter: formatter,
7
+ colorProcessor: getColor,
8
+ xExtremumGetter: getExtremumX,
9
+ yExtremumGetter: getExtremumY
10
+ };
@@ -4,11 +4,13 @@ import useForkRef from '@mui/utils/useForkRef';
4
4
  import { DrawingProvider } from '../context/DrawingProvider';
5
5
  import { SeriesContextProvider } from '../context/SeriesContextProvider';
6
6
  import { InteractionProvider } from '../context/InteractionProvider';
7
+ import { ColorProvider } from '../context/ColorProvider';
7
8
  import { useReducedMotion } from '../hooks/useReducedMotion';
8
9
  import { ChartsSurface } from '../ChartsSurface';
9
10
  import { CartesianContextProvider } from '../context/CartesianContextProvider';
10
11
  import { ChartsAxesGradients } from '../internals/components/ChartsAxesGradients';
11
- import { HighlightedProvider } from '../context';
12
+ import { HighlightedProvider, ZAxisContextProvider } from '../context';
13
+ import { usePluginsMerge } from './usePluginsMerge';
12
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
15
  const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(props, ref) {
14
16
  const {
@@ -18,6 +20,7 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
18
20
  margin,
19
21
  xAxis,
20
22
  yAxis,
23
+ zAxis,
21
24
  colors,
22
25
  dataset,
23
26
  sx,
@@ -26,10 +29,17 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
26
29
  disableAxisListener,
27
30
  highlightedItem,
28
31
  onHighlightChange,
32
+ plugins,
29
33
  children
30
34
  } = props;
31
35
  const svgRef = React.useRef(null);
32
36
  const handleRef = useForkRef(ref, svgRef);
37
+ const {
38
+ xExtremumGetters,
39
+ yExtremumGetters,
40
+ seriesFormatters,
41
+ colorProcessors
42
+ } = usePluginsMerge(plugins);
33
43
  useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion)
34
44
 
35
45
  return /*#__PURE__*/_jsx(DrawingProvider, {
@@ -37,27 +47,37 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
37
47
  height: height,
38
48
  margin: margin,
39
49
  svgRef: svgRef,
40
- children: /*#__PURE__*/_jsx(SeriesContextProvider, {
41
- series: series,
42
- colors: colors,
43
- dataset: dataset,
44
- children: /*#__PURE__*/_jsx(CartesianContextProvider, {
45
- xAxis: xAxis,
46
- yAxis: yAxis,
50
+ children: /*#__PURE__*/_jsx(ColorProvider, {
51
+ colorProcessors: colorProcessors,
52
+ children: /*#__PURE__*/_jsx(SeriesContextProvider, {
53
+ series: series,
54
+ colors: colors,
47
55
  dataset: dataset,
48
- children: /*#__PURE__*/_jsx(InteractionProvider, {
49
- children: /*#__PURE__*/_jsx(HighlightedProvider, {
50
- highlightedItem: highlightedItem,
51
- onHighlightChange: onHighlightChange,
52
- children: /*#__PURE__*/_jsxs(ChartsSurface, {
53
- width: width,
54
- height: height,
55
- ref: handleRef,
56
- sx: sx,
57
- title: title,
58
- desc: desc,
59
- disableAxisListener: disableAxisListener,
60
- children: [/*#__PURE__*/_jsx(ChartsAxesGradients, {}), children]
56
+ seriesFormatters: seriesFormatters,
57
+ children: /*#__PURE__*/_jsx(CartesianContextProvider, {
58
+ xAxis: xAxis,
59
+ yAxis: yAxis,
60
+ dataset: dataset,
61
+ xExtremumGetters: xExtremumGetters,
62
+ yExtremumGetters: yExtremumGetters,
63
+ children: /*#__PURE__*/_jsx(ZAxisContextProvider, {
64
+ zAxis: zAxis,
65
+ dataset: dataset,
66
+ children: /*#__PURE__*/_jsx(InteractionProvider, {
67
+ children: /*#__PURE__*/_jsx(HighlightedProvider, {
68
+ highlightedItem: highlightedItem,
69
+ onHighlightChange: onHighlightChange,
70
+ children: /*#__PURE__*/_jsxs(ChartsSurface, {
71
+ width: width,
72
+ height: height,
73
+ ref: handleRef,
74
+ sx: sx,
75
+ title: title,
76
+ desc: desc,
77
+ disableAxisListener: disableAxisListener,
78
+ children: [/*#__PURE__*/_jsx(ChartsAxesGradients, {}), children]
79
+ })
80
+ })
61
81
  })
62
82
  })
63
83
  })
@@ -117,6 +137,11 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
117
137
  * @param {HighlightItemData | null} highlightedItem The newly highlighted item.
118
138
  */
119
139
  onHighlightChange: PropTypes.func,
140
+ /**
141
+ * An array of plugins defining how to preprocess data.
142
+ * If not provided, the container supports line, bar, scatter and pie charts.
143
+ */
144
+ plugins: PropTypes.arrayOf(PropTypes.object),
120
145
  /**
121
146
  * The array of series to display.
122
147
  * Each type of series has its own specificity.
@@ -170,7 +195,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
170
195
  labelStyle: PropTypes.object,
171
196
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
172
197
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
173
- position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
198
+ position: PropTypes.oneOf(['bottom', 'top']),
174
199
  reverse: PropTypes.bool,
175
200
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
176
201
  slotProps: PropTypes.object,
@@ -223,7 +248,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
223
248
  labelStyle: PropTypes.object,
224
249
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
225
250
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
226
- position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
251
+ position: PropTypes.oneOf(['left', 'right']),
227
252
  reverse: PropTypes.bool,
228
253
  scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
229
254
  slotProps: PropTypes.object,
@@ -240,6 +265,29 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
240
265
  tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
241
266
  tickSize: PropTypes.number,
242
267
  valueFormatter: PropTypes.func
268
+ })),
269
+ /**
270
+ * The configuration of the z-axes.
271
+ */
272
+ zAxis: PropTypes.arrayOf(PropTypes.shape({
273
+ colorMap: PropTypes.oneOfType([PropTypes.shape({
274
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
275
+ type: PropTypes.oneOf(['ordinal']).isRequired,
276
+ unknownColor: PropTypes.string,
277
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
278
+ }), PropTypes.shape({
279
+ color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
280
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
281
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
282
+ type: PropTypes.oneOf(['continuous']).isRequired
283
+ }), PropTypes.shape({
284
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
285
+ thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
286
+ type: PropTypes.oneOf(['piecewise']).isRequired
287
+ })]),
288
+ data: PropTypes.array,
289
+ dataKey: PropTypes.string,
290
+ id: PropTypes.string
243
291
  }))
244
292
  } : void 0;
245
293
  export { ChartContainer };
@@ -0,0 +1,5 @@
1
+ import { plugin as barPlugin } from '../BarChart/plugin';
2
+ import { plugin as scatterPlugin } from '../ScatterChart/plugin';
3
+ import { plugin as linePlugin } from '../LineChart/plugin';
4
+ import { plugin as piePlugin } from '../PieChart/plugin';
5
+ export const defaultPlugins = [barPlugin, scatterPlugin, linePlugin, piePlugin];
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { defaultPlugins } from './defaultPlugins';
3
+ export function usePluginsMerge(plugins) {
4
+ const defaultizedPlugins = plugins ?? defaultPlugins;
5
+ return React.useMemo(() => {
6
+ const seriesFormatters = {};
7
+ const colorProcessors = {};
8
+ const xExtremumGetters = {};
9
+ const yExtremumGetters = {};
10
+ for (let i = 0; i < defaultizedPlugins.length; i += 1) {
11
+ const plugin = defaultizedPlugins[i];
12
+
13
+ // To remove those any we will need to solve this union discrimination issue:
14
+ // https://www.typescriptlang.org/play/?#code/FDAuE8AcFMAIDkCuBbARtATgYQPYDsAzASwHNYBeWAb2FlgGsi8ATALlgHI8V0MOBuWrBwwMAQ1A4M7ABQAPdtzSYAlBQB8sJb0EBfEBBiwAyqAxMSuQqQrUhjFuw4BnMxYFCRmCVNkLYruZ4JGrkmoEWeiAAxviuWqhWxCTsSMrY+Mm2VAxMbLAARNqYBQA0wqI+0rByGrAATLAAVDWw+rF48YFJpOymQZaZNpQ5DvkFEcFlFd6S1bVhsAAG9S0AJFRyukttMXGgsB3JzrYA2niJQyTl3VcAugZQcADylXPOALJikJAW2ULFDAAflSPEwPRIpw4XnEcw4d1KQkmJBBJjcwQhUJhVXhiN0gmAHXi2LmXx+FnYr1mUk+31+wWy+JABCksBkABtoAcjjYcARDldnGoaCA6AB6MWwADqUnoJxw9FgRH5AHc4L9ooroGJogALQ5iZxwPJEABuRGYiDE7PASJVRFAerZPJIADoxsKhHRooa4FwwXxWF66DNYVIyfTIS73Xk7rZoySpIIQyHUBhtfRkyGfUbOMiOEGU3RExgIxZTtGxnHKAm3kng8xoAQxIh2aBC0W0xms-pvftqLkWOUS2141chBLYABJDimuB4HBKxtiWBiVA4RAHXU4FWwSSwTkHAAqxlgiBYmFcYhYAusbrGq5vtepGFX6YPTHo0GYnjrpbp5ZVrYJZ6EAA
15
+ seriesFormatters[plugin.seriesType] = plugin.seriesFormatter;
16
+ colorProcessors[plugin.seriesType] = plugin.colorProcessor;
17
+ if (plugin.xExtremumGetter) {
18
+ xExtremumGetters[plugin.seriesType] = plugin.xExtremumGetter;
19
+ }
20
+ if (plugin.yExtremumGetter) {
21
+ yExtremumGetters[plugin.seriesType] = plugin.yExtremumGetter;
22
+ }
23
+ }
24
+ return {
25
+ seriesFormatters,
26
+ colorProcessors,
27
+ xExtremumGetters,
28
+ yExtremumGetters
29
+ };
30
+ }, [defaultizedPlugins]);
31
+ }
@@ -5,10 +5,10 @@ import { useSlotProps } from '@mui/base/utils';
5
5
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
6
  import { useThemeProps, useTheme } from '@mui/material/styles';
7
7
  import { getSeriesToDisplay } from './utils';
8
- import { SeriesContext } from '../context/SeriesContextProvider';
9
8
  import { getLegendUtilityClass } from './chartsLegendClasses';
10
9
  import { DefaultChartsLegend } from './DefaultChartsLegend';
11
10
  import { useDrawingArea } from '../hooks';
11
+ import { useSeries } from '../hooks/useSeries';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  const useUtilityClasses = ownerState => {
14
14
  const {
@@ -47,7 +47,7 @@ function ChartsLegend(inProps) {
47
47
  theme
48
48
  }));
49
49
  const drawingArea = useDrawingArea();
50
- const series = React.useContext(SeriesContext);
50
+ const series = useSeries();
51
51
  const seriesToDisplay = getSeriesToDisplay(series);
52
52
  const ChartLegendRender = slots?.legend ?? DefaultChartsLegend;
53
53
  const chartLegendRenderProps = useSlotProps({
@@ -9,5 +9,8 @@ const legendGetter = {
9
9
  pie: getPieLegend
10
10
  };
11
11
  export function getSeriesToDisplay(series) {
12
- return Object.keys(series).flatMap(seriesType => legendGetter[seriesType](series[seriesType]));
12
+ return Object.keys(series).flatMap(seriesType => {
13
+ const getter = legendGetter[seriesType];
14
+ return getter === undefined ? [] : getter(series[seriesType]);
15
+ });
13
16
  }
@@ -1,16 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { SvgContext } from '../context/DrawingProvider';
4
3
  import { InteractionContext } from '../context/InteractionProvider';
5
4
  import { CartesianContext } from '../context/CartesianContextProvider';
6
- import { SeriesContext } from '../context/SeriesContextProvider';
5
+ import { useSeries } from '../hooks/useSeries';
6
+ import { useSvgRef } from '../hooks';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  function ChartsOnAxisClickHandler(props) {
9
9
  const {
10
10
  onAxisClick
11
11
  } = props;
12
- const svgRef = React.useContext(SvgContext);
13
- const series = React.useContext(SeriesContext);
12
+ const svgRef = useSvgRef();
13
+ const series = useSeries();
14
14
  const {
15
15
  axis
16
16
  } = React.useContext(InteractionContext);