@mui/x-charts 7.7.0 → 7.8.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 (167) hide show
  1. package/BarChart/BarChart.js +21 -104
  2. package/BarChart/BarElement.d.ts +225 -228
  3. package/BarChart/BarLabel/BarLabel.d.ts +225 -228
  4. package/BarChart/BarLabel/BarLabelPlot.d.ts +0 -3
  5. package/BarChart/BarLabel/BarLabelPlot.js +1 -24
  6. package/BarChart/BarLabel/getBarLabel.d.ts +1 -1
  7. package/BarChart/BarPlot.js +2 -2
  8. package/BarChart/checkScaleErrors.d.ts +5 -9
  9. package/BarChart/types.d.ts +2 -2
  10. package/BarChart/useBarChartProps.d.ts +34 -0
  11. package/BarChart/useBarChartProps.js +143 -0
  12. package/CHANGELOG.md +181 -0
  13. package/ChartContainer/ChartContainer.d.ts +2 -2
  14. package/ChartContainer/ChartContainer.js +6 -10
  15. package/ChartContainer/useChartContainerHooks.d.ts +11 -0
  16. package/ChartContainer/useChartContainerHooks.js +34 -0
  17. package/ChartContainer/usePluginsMerge.d.ts +1 -2
  18. package/ChartsAxis/ChartsAxis.js +2 -2
  19. package/ChartsAxisHighlight/ChartsAxisHighlight.js +21 -6
  20. package/ChartsGrid/ChartsGrid.js +2 -2
  21. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +2 -2
  22. package/ChartsReferenceLine/common.d.ts +0 -1
  23. package/ChartsTooltip/ChartsAxisTooltipContent.js +2 -2
  24. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  25. package/ChartsTooltip/ChartsTooltipTable.d.ts +0 -1
  26. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +4 -4
  27. package/ChartsXAxis/ChartsXAxis.js +2 -2
  28. package/ChartsYAxis/ChartsYAxis.js +5 -3
  29. package/Gauge/GaugeProvider.d.ts +1 -1
  30. package/LineChart/AnimatedArea.d.ts +225 -228
  31. package/LineChart/AnimatedLine.d.ts +225 -228
  32. package/LineChart/AreaPlot.js +2 -2
  33. package/LineChart/LineChart.js +24 -106
  34. package/LineChart/LineHighlightPlot.js +2 -2
  35. package/LineChart/LinePlot.js +2 -2
  36. package/LineChart/MarkPlot.js +2 -2
  37. package/LineChart/useLineChartProps.d.ts +40 -0
  38. package/LineChart/useLineChartProps.js +152 -0
  39. package/PieChart/PieArc.d.ts +0 -1
  40. package/PieChart/PieArcLabel.d.ts +0 -1
  41. package/PieChart/dataTransform/transition.d.ts +0 -1
  42. package/ResponsiveChartContainer/ResizableContainer.d.ts +1 -2
  43. package/ScatterChart/ScatterChart.js +20 -75
  44. package/ScatterChart/ScatterPlot.js +2 -2
  45. package/ScatterChart/useScatterChartProps.d.ts +31 -0
  46. package/ScatterChart/useScatterChartProps.js +116 -0
  47. package/context/CartesianProvider/CartesianContext.d.ts +25 -0
  48. package/context/CartesianProvider/CartesianContext.js +21 -0
  49. package/context/CartesianProvider/CartesianProvider.d.ts +34 -0
  50. package/context/CartesianProvider/CartesianProvider.js +44 -0
  51. package/context/CartesianProvider/computeValue.d.ts +19 -0
  52. package/context/CartesianProvider/computeValue.js +104 -0
  53. package/context/CartesianProvider/getAxisExtremum.d.ts +4 -0
  54. package/context/CartesianProvider/getAxisExtremum.js +28 -0
  55. package/context/CartesianProvider/index.d.ts +9 -0
  56. package/context/CartesianProvider/index.js +51 -0
  57. package/context/CartesianProvider/normalizeAxis.d.ts +5 -0
  58. package/context/CartesianProvider/normalizeAxis.js +23 -0
  59. package/context/CartesianProvider/useCartesianContext.d.ts +2 -0
  60. package/context/CartesianProvider/useCartesianContext.js +17 -0
  61. package/context/ColorProvider.d.ts +2 -2
  62. package/esm/BarChart/BarChart.js +21 -104
  63. package/esm/BarChart/BarLabel/BarLabelPlot.js +0 -23
  64. package/esm/BarChart/BarPlot.js +2 -2
  65. package/esm/BarChart/useBarChartProps.js +135 -0
  66. package/esm/ChartContainer/ChartContainer.js +5 -9
  67. package/esm/ChartContainer/useChartContainerHooks.js +24 -0
  68. package/esm/ChartsAxis/ChartsAxis.js +2 -2
  69. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +21 -6
  70. package/esm/ChartsGrid/ChartsGrid.js +2 -2
  71. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +2 -2
  72. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +2 -2
  73. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  74. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +3 -3
  75. package/esm/ChartsXAxis/ChartsXAxis.js +2 -2
  76. package/esm/ChartsYAxis/ChartsYAxis.js +5 -3
  77. package/esm/LineChart/AreaPlot.js +2 -2
  78. package/esm/LineChart/LineChart.js +24 -106
  79. package/esm/LineChart/LineHighlightPlot.js +2 -2
  80. package/esm/LineChart/LinePlot.js +2 -2
  81. package/esm/LineChart/MarkPlot.js +2 -2
  82. package/esm/LineChart/useLineChartProps.js +144 -0
  83. package/esm/ScatterChart/ScatterChart.js +20 -75
  84. package/esm/ScatterChart/ScatterPlot.js +2 -2
  85. package/esm/ScatterChart/useScatterChartProps.js +108 -0
  86. package/esm/context/CartesianProvider/CartesianContext.js +13 -0
  87. package/esm/context/CartesianProvider/CartesianProvider.js +37 -0
  88. package/esm/context/CartesianProvider/computeValue.js +97 -0
  89. package/esm/context/CartesianProvider/getAxisExtremum.js +21 -0
  90. package/esm/context/CartesianProvider/index.js +10 -0
  91. package/esm/context/CartesianProvider/normalizeAxis.js +15 -0
  92. package/esm/context/CartesianProvider/useCartesianContext.js +8 -0
  93. package/esm/hooks/useAxisEvents.js +7 -10
  94. package/esm/hooks/useColorScale.js +3 -3
  95. package/esm/hooks/useScale.js +4 -5
  96. package/esm/hooks/useTicks.js +2 -1
  97. package/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +2 -2
  98. package/esm/internals/getSVGPoint.js +11 -0
  99. package/esm/internals/index.js +8 -2
  100. package/esm/internals/utils.js +0 -12
  101. package/hooks/useAxisEvents.js +8 -11
  102. package/hooks/useChartDimensions.d.ts +1 -1
  103. package/hooks/useColor.d.ts +1 -1
  104. package/hooks/useColorScale.js +3 -3
  105. package/hooks/useDrawingArea.d.ts +2 -8
  106. package/hooks/useScale.js +4 -7
  107. package/hooks/useTicks.js +2 -1
  108. package/index.js +1 -1
  109. package/internals/components/AxisSharedComponents.d.ts +0 -1
  110. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.d.ts +2 -1
  111. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +2 -2
  112. package/internals/defaultizeColor.d.ts +68 -68
  113. package/internals/getSVGPoint.d.ts +6 -0
  114. package/internals/getSVGPoint.js +17 -0
  115. package/internals/getWordsByLines.d.ts +0 -1
  116. package/internals/index.d.ts +9 -1
  117. package/internals/index.js +69 -5
  118. package/internals/useAnimatedPath.d.ts +0 -1
  119. package/internals/utils.d.ts +0 -6
  120. package/internals/utils.js +0 -13
  121. package/models/axis.d.ts +1 -2
  122. package/models/plugin.d.ts +4 -1
  123. package/modern/BarChart/BarChart.js +21 -104
  124. package/modern/BarChart/BarLabel/BarLabelPlot.js +0 -23
  125. package/modern/BarChart/BarPlot.js +2 -2
  126. package/modern/BarChart/useBarChartProps.js +135 -0
  127. package/modern/ChartContainer/ChartContainer.js +5 -9
  128. package/modern/ChartContainer/useChartContainerHooks.js +24 -0
  129. package/modern/ChartsAxis/ChartsAxis.js +2 -2
  130. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +21 -6
  131. package/modern/ChartsGrid/ChartsGrid.js +2 -2
  132. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +2 -2
  133. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +2 -2
  134. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  135. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +3 -3
  136. package/modern/ChartsXAxis/ChartsXAxis.js +2 -2
  137. package/modern/ChartsYAxis/ChartsYAxis.js +5 -3
  138. package/modern/LineChart/AreaPlot.js +2 -2
  139. package/modern/LineChart/LineChart.js +24 -106
  140. package/modern/LineChart/LineHighlightPlot.js +2 -2
  141. package/modern/LineChart/LinePlot.js +2 -2
  142. package/modern/LineChart/MarkPlot.js +2 -2
  143. package/modern/LineChart/useLineChartProps.js +144 -0
  144. package/modern/ScatterChart/ScatterChart.js +20 -75
  145. package/modern/ScatterChart/ScatterPlot.js +2 -2
  146. package/modern/ScatterChart/useScatterChartProps.js +108 -0
  147. package/modern/context/CartesianProvider/CartesianContext.js +13 -0
  148. package/modern/context/CartesianProvider/CartesianProvider.js +37 -0
  149. package/modern/context/CartesianProvider/computeValue.js +97 -0
  150. package/modern/context/CartesianProvider/getAxisExtremum.js +21 -0
  151. package/modern/context/CartesianProvider/index.js +10 -0
  152. package/modern/context/CartesianProvider/normalizeAxis.js +15 -0
  153. package/modern/context/CartesianProvider/useCartesianContext.js +8 -0
  154. package/modern/hooks/useAxisEvents.js +7 -10
  155. package/modern/hooks/useColorScale.js +3 -3
  156. package/modern/hooks/useScale.js +4 -5
  157. package/modern/hooks/useTicks.js +2 -1
  158. package/modern/index.js +1 -1
  159. package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +2 -2
  160. package/modern/internals/getSVGPoint.js +11 -0
  161. package/modern/internals/index.js +8 -2
  162. package/modern/internals/utils.js +0 -12
  163. package/package.json +3 -3
  164. package/context/CartesianContextProvider.d.ts +0 -61
  165. package/context/CartesianContextProvider.js +0 -220
  166. package/esm/context/CartesianContextProvider.js +0 -211
  167. package/modern/context/CartesianContextProvider.js +0 -211
@@ -1,13 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import useId from '@mui/utils/useId';
4
3
  import PropTypes from 'prop-types';
5
4
  import { AreaPlot } from './AreaPlot';
6
5
  import { LinePlot } from './LinePlot';
7
6
  import { ResponsiveChartContainer } from '../ResponsiveChartContainer';
8
7
  import { MarkPlot } from './MarkPlot';
9
8
  import { ChartsAxis } from '../ChartsAxis/ChartsAxis';
10
- import { DEFAULT_X_AXIS_KEY } from '../constants';
11
9
  import { ChartsTooltip } from '../ChartsTooltip';
12
10
  import { ChartsLegend } from '../ChartsLegend';
13
11
  import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
@@ -16,6 +14,7 @@ import { LineHighlightPlot } from './LineHighlightPlot';
16
14
  import { ChartsGrid } from '../ChartsGrid';
17
15
  import { ChartsOnAxisClickHandler } from '../ChartsOnAxisClickHandler';
18
16
  import { ChartsOverlay } from '../ChartsOverlay';
17
+ import { useLineChartProps } from './useLineChartProps';
19
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
19
  /**
21
20
  * Demos:
@@ -29,110 +28,29 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
29
28
  */
30
29
  const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
31
30
  const {
32
- xAxis,
33
- yAxis,
34
- series,
35
- width,
36
- height,
37
- margin,
38
- colors,
39
- dataset,
40
- sx,
41
- tooltip,
42
- onAxisClick,
43
- onAreaClick,
44
- onLineClick,
45
- onMarkClick,
46
- axisHighlight = {
47
- x: 'line'
48
- },
49
- disableLineItemHighlight,
50
- legend,
51
- grid,
52
- topAxis,
53
- leftAxis,
54
- rightAxis,
55
- bottomAxis,
56
- children,
57
- slots,
58
- slotProps,
59
- skipAnimation,
60
- loading,
61
- highlightedItem,
62
- onHighlightChange
63
- } = props;
64
- const id = useId();
65
- const clipPathId = `${id}-clip-path`;
66
- return /*#__PURE__*/_jsxs(ResponsiveChartContainer, {
67
- ref: ref,
68
- series: series.map(s => _extends({
69
- disableHighlight: !!disableLineItemHighlight,
70
- type: 'line'
71
- }, s)),
72
- width: width,
73
- height: height,
74
- margin: margin,
75
- xAxis: xAxis ?? [{
76
- id: DEFAULT_X_AXIS_KEY,
77
- scaleType: 'point',
78
- data: Array.from({
79
- length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
80
- }, (_, index) => index)
81
- }],
82
- yAxis: yAxis,
83
- colors: colors,
84
- dataset: dataset,
85
- sx: sx,
86
- disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none' && !onAxisClick,
87
- highlightedItem: highlightedItem,
88
- onHighlightChange: onHighlightChange,
89
- children: [onAxisClick && /*#__PURE__*/_jsx(ChartsOnAxisClickHandler, {
90
- onAxisClick: onAxisClick
91
- }), grid && /*#__PURE__*/_jsx(ChartsGrid, {
92
- vertical: grid.vertical,
93
- horizontal: grid.horizontal
94
- }), /*#__PURE__*/_jsxs("g", {
95
- clipPath: `url(#${clipPathId})`,
96
- children: [/*#__PURE__*/_jsx(AreaPlot, {
97
- slots: slots,
98
- slotProps: slotProps,
99
- onItemClick: onAreaClick,
100
- skipAnimation: skipAnimation
101
- }), /*#__PURE__*/_jsx(LinePlot, {
102
- slots: slots,
103
- slotProps: slotProps,
104
- onItemClick: onLineClick,
105
- skipAnimation: skipAnimation
106
- }), /*#__PURE__*/_jsx(ChartsOverlay, {
107
- loading: loading,
108
- slots: slots,
109
- slotProps: slotProps
110
- })]
111
- }), /*#__PURE__*/_jsx(ChartsAxis, {
112
- topAxis: topAxis,
113
- leftAxis: leftAxis,
114
- rightAxis: rightAxis,
115
- bottomAxis: bottomAxis,
116
- slots: slots,
117
- slotProps: slotProps
118
- }), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), /*#__PURE__*/_jsx(MarkPlot, {
119
- slots: slots,
120
- slotProps: slotProps,
121
- onItemClick: onMarkClick,
122
- skipAnimation: skipAnimation
123
- }), /*#__PURE__*/_jsx(LineHighlightPlot, {
124
- slots: slots,
125
- slotProps: slotProps
126
- }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
127
- slots: slots,
128
- slotProps: slotProps
129
- })), !loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
130
- slots: slots,
131
- slotProps: slotProps
132
- })), /*#__PURE__*/_jsx(ChartsClipPath, {
133
- id: clipPathId
134
- }), children]
135
- });
31
+ chartContainerProps,
32
+ axisClickHandlerProps,
33
+ gridProps,
34
+ clipPathProps,
35
+ clipPathGroupProps,
36
+ areaPlotProps,
37
+ linePlotProps,
38
+ markPlotProps,
39
+ overlayProps,
40
+ chartsAxisProps,
41
+ axisHighlightProps,
42
+ lineHighlightPlotProps,
43
+ legendProps,
44
+ tooltipProps,
45
+ children
46
+ } = useLineChartProps(props);
47
+ return /*#__PURE__*/_jsxs(ResponsiveChartContainer, _extends({
48
+ ref: ref
49
+ }, chartContainerProps, {
50
+ children: [props.onAxisClick && /*#__PURE__*/_jsx(ChartsOnAxisClickHandler, _extends({}, axisClickHandlerProps)), props.grid && /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
51
+ children: [/*#__PURE__*/_jsx(AreaPlot, _extends({}, areaPlotProps)), /*#__PURE__*/_jsx(LinePlot, _extends({}, linePlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps))]
52
+ })), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps)), /*#__PURE__*/_jsx(MarkPlot, _extends({}, markPlotProps)), /*#__PURE__*/_jsx(LineHighlightPlot, _extends({}, lineHighlightPlotProps)), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), !props.loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltipProps)), /*#__PURE__*/_jsx(ChartsClipPath, _extends({}, clipPathProps)), children]
53
+ }));
136
54
  });
137
55
  process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
138
56
  // ----------------------------- Warning --------------------------------
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["slots", "slotProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { CartesianContext } from '../context/CartesianContextProvider';
6
+ import { useCartesianContext } from '../context/CartesianProvider';
7
7
  import { LineHighlightElement } from './LineHighlightElement';
8
8
  import { getValueToPositionMapper } from '../hooks/useScale';
9
9
  import { InteractionContext } from '../context/InteractionProvider';
@@ -28,7 +28,7 @@ function LineHighlightPlot(props) {
28
28
  } = props,
29
29
  other = _objectWithoutPropertiesLoose(props, _excluded);
30
30
  const seriesData = useLineSeries();
31
- const axisData = React.useContext(CartesianContext);
31
+ const axisData = useCartesianContext();
32
32
  const {
33
33
  axis
34
34
  } = React.useContext(InteractionContext);
@@ -4,7 +4,7 @@ const _excluded = ["slots", "slotProps", "skipAnimation", "onItemClick"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { line as d3Line } from 'd3-shape';
7
- import { CartesianContext } from '../context/CartesianContextProvider';
7
+ import { useCartesianContext } from '../context/CartesianProvider';
8
8
  import { LineElement } from './LineElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import getCurveFactory from '../internals/getCurve';
@@ -14,7 +14,7 @@ import { useLineSeries } from '../hooks/useSeries';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  const useAggregatedData = () => {
16
16
  const seriesData = useLineSeries();
17
- const axisData = React.useContext(CartesianContext);
17
+ const axisData = useCartesianContext();
18
18
  if (seriesData === undefined) {
19
19
  return [];
20
20
  }
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["slots", "slotProps", "skipAnimation", "onItemClick"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { CartesianContext } from '../context/CartesianContextProvider';
6
+ import { useCartesianContext } from '../context/CartesianProvider';
7
7
  import { MarkElement } from './MarkElement';
8
8
  import { getValueToPositionMapper } from '../hooks/useScale';
9
9
  import { useChartId } from '../hooks/useChartId';
@@ -31,7 +31,7 @@ function MarkPlot(props) {
31
31
  } = props,
32
32
  other = _objectWithoutPropertiesLoose(props, _excluded);
33
33
  const seriesData = useLineSeries();
34
- const axisData = React.useContext(CartesianContext);
34
+ const axisData = useCartesianContext();
35
35
  const chartId = useChartId();
36
36
  const Mark = slots?.mark ?? MarkElement;
37
37
  if (seriesData === undefined) {
@@ -0,0 +1,144 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import useId from '@mui/utils/useId';
3
+ import { DEFAULT_X_AXIS_KEY } from '../constants';
4
+ /**
5
+ * A helper function that extracts LineChartProps from the input props
6
+ * and returns an object with props for the children components of LineChart.
7
+ *
8
+ * @param props The input props for LineChart
9
+ * @returns An object with props for the children components of LineChart
10
+ */
11
+ export const useLineChartProps = props => {
12
+ const {
13
+ xAxis,
14
+ yAxis,
15
+ series,
16
+ width,
17
+ height,
18
+ margin,
19
+ colors,
20
+ dataset,
21
+ sx,
22
+ tooltip,
23
+ onAxisClick,
24
+ onAreaClick,
25
+ onLineClick,
26
+ onMarkClick,
27
+ axisHighlight,
28
+ disableLineItemHighlight,
29
+ legend,
30
+ grid,
31
+ topAxis,
32
+ leftAxis,
33
+ rightAxis,
34
+ bottomAxis,
35
+ children,
36
+ slots,
37
+ slotProps,
38
+ skipAnimation,
39
+ loading,
40
+ highlightedItem,
41
+ onHighlightChange
42
+ } = props;
43
+ const id = useId();
44
+ const clipPathId = `${id}-clip-path`;
45
+ const chartContainerProps = {
46
+ series: series.map(s => _extends({
47
+ disableHighlight: !!disableLineItemHighlight,
48
+ type: 'line'
49
+ }, s)),
50
+ width,
51
+ height,
52
+ margin,
53
+ colors,
54
+ dataset,
55
+ xAxis: xAxis ?? [{
56
+ id: DEFAULT_X_AXIS_KEY,
57
+ scaleType: 'point',
58
+ data: Array.from({
59
+ length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
60
+ }, (_, index) => index)
61
+ }],
62
+ yAxis,
63
+ sx,
64
+ highlightedItem,
65
+ onHighlightChange,
66
+ disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none' && !onAxisClick
67
+ };
68
+ const axisClickHandlerProps = {
69
+ onAxisClick
70
+ };
71
+ const gridProps = {
72
+ vertical: grid?.vertical,
73
+ horizontal: grid?.horizontal
74
+ };
75
+ const clipPathGroupProps = {
76
+ clipPath: `url(#${clipPathId})`
77
+ };
78
+ const clipPathProps = {
79
+ id: clipPathId
80
+ };
81
+ const areaPlotProps = {
82
+ slots,
83
+ slotProps,
84
+ onItemClick: onAreaClick,
85
+ skipAnimation
86
+ };
87
+ const linePlotProps = {
88
+ slots,
89
+ slotProps,
90
+ onItemClick: onLineClick,
91
+ skipAnimation
92
+ };
93
+ const markPlotProps = {
94
+ slots,
95
+ slotProps,
96
+ onItemClick: onMarkClick,
97
+ skipAnimation
98
+ };
99
+ const overlayProps = {
100
+ slots,
101
+ slotProps,
102
+ loading
103
+ };
104
+ const chartsAxisProps = {
105
+ topAxis,
106
+ leftAxis,
107
+ rightAxis,
108
+ bottomAxis,
109
+ slots,
110
+ slotProps
111
+ };
112
+ const axisHighlightProps = _extends({
113
+ x: 'line'
114
+ }, axisHighlight);
115
+ const lineHighlightPlotProps = {
116
+ slots,
117
+ slotProps
118
+ };
119
+ const legendProps = _extends({}, legend, {
120
+ slots,
121
+ slotProps
122
+ });
123
+ const tooltipProps = _extends({}, tooltip, {
124
+ slots,
125
+ slotProps
126
+ });
127
+ return {
128
+ chartContainerProps,
129
+ axisClickHandlerProps,
130
+ gridProps,
131
+ clipPathProps,
132
+ clipPathGroupProps,
133
+ areaPlotProps,
134
+ linePlotProps,
135
+ markPlotProps,
136
+ overlayProps,
137
+ chartsAxisProps,
138
+ axisHighlightProps,
139
+ lineHighlightPlotProps,
140
+ legendProps,
141
+ tooltipProps,
142
+ children
143
+ };
144
+ };
@@ -11,6 +11,7 @@ import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
11
11
  import { ChartsVoronoiHandler } from '../ChartsVoronoiHandler/ChartsVoronoiHandler';
12
12
  import { ChartsGrid } from '../ChartsGrid';
13
13
  import { ZAxisContextProvider } from '../context/ZAxisContextProvider';
14
+ import { useScatterChartProps } from './useScatterChartProps';
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  /**
16
17
  * Demos:
@@ -24,81 +25,25 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
25
  */
25
26
  const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props, ref) {
26
27
  const {
27
- xAxis,
28
- yAxis,
29
- zAxis,
30
- series,
31
- tooltip,
32
- axisHighlight,
33
- voronoiMaxRadius,
34
- disableVoronoi,
35
- legend,
36
- width,
37
- height,
38
- margin,
39
- colors,
40
- sx,
41
- grid,
42
- topAxis,
43
- leftAxis,
44
- rightAxis,
45
- bottomAxis,
46
- onItemClick,
47
- children,
48
- slots,
49
- slotProps,
50
- loading,
51
- highlightedItem,
52
- onHighlightChange
53
- } = props;
54
- return /*#__PURE__*/_jsx(ResponsiveChartContainer, {
55
- ref: ref,
56
- series: series.map(s => _extends({
57
- type: 'scatter'
58
- }, s)),
59
- width: width,
60
- height: height,
61
- margin: margin,
62
- colors: colors,
63
- xAxis: xAxis,
64
- yAxis: yAxis,
65
- sx: sx,
66
- highlightedItem: highlightedItem,
67
- onHighlightChange: onHighlightChange,
68
- children: /*#__PURE__*/_jsxs(ZAxisContextProvider, {
69
- zAxis: zAxis,
70
- children: [!disableVoronoi && /*#__PURE__*/_jsx(ChartsVoronoiHandler, {
71
- voronoiMaxRadius: voronoiMaxRadius,
72
- onItemClick: onItemClick
73
- }), /*#__PURE__*/_jsx(ChartsAxis, {
74
- topAxis: topAxis,
75
- leftAxis: leftAxis,
76
- rightAxis: rightAxis,
77
- bottomAxis: bottomAxis,
78
- slots: slots,
79
- slotProps: slotProps
80
- }), grid && /*#__PURE__*/_jsx(ChartsGrid, {
81
- vertical: grid.vertical,
82
- horizontal: grid.horizontal
83
- }), /*#__PURE__*/_jsx(ScatterPlot, {
84
- slots: slots,
85
- slotProps: slotProps,
86
- onItemClick: disableVoronoi ? onItemClick : undefined
87
- }), /*#__PURE__*/_jsx(ChartsOverlay, {
88
- loading: loading,
89
- slots: slots,
90
- slotProps: slotProps
91
- }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
92
- slots: slots,
93
- slotProps: slotProps
94
- })), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({
95
- x: "none",
96
- y: "none"
97
- }, axisHighlight)), !loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({
98
- trigger: "item"
99
- }, tooltip)), children]
100
- })
101
- });
28
+ chartContainerProps,
29
+ zAxisProps,
30
+ voronoiHandlerProps,
31
+ chartsAxisProps,
32
+ gridProps,
33
+ scatterPlotProps,
34
+ overlayProps,
35
+ legendProps,
36
+ axisHighlightProps,
37
+ tooltipProps,
38
+ children
39
+ } = useScatterChartProps(props);
40
+ return /*#__PURE__*/_jsx(ResponsiveChartContainer, _extends({
41
+ ref: ref
42
+ }, chartContainerProps, {
43
+ children: /*#__PURE__*/_jsxs(ZAxisContextProvider, _extends({}, zAxisProps, {
44
+ children: [!props.disableVoronoi && /*#__PURE__*/_jsx(ChartsVoronoiHandler, _extends({}, voronoiHandlerProps)), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), props.grid && /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsx(ScatterPlot, _extends({}, scatterPlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps)), !props.loading && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltipProps)), children]
45
+ }))
46
+ }));
102
47
  });
103
48
  process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
104
49
  // ----------------------------- Warning --------------------------------
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { Scatter } from './Scatter';
5
- import { CartesianContext } from '../context/CartesianContextProvider';
5
+ import { useCartesianContext } from '../context/CartesianProvider';
6
6
  import getColor from './getColor';
7
7
  import { ZAxisContext } from '../context/ZAxisContextProvider';
8
8
  import { useScatterSeries } from '../hooks/useSeries';
@@ -24,7 +24,7 @@ function ScatterPlot(props) {
24
24
  onItemClick
25
25
  } = props;
26
26
  const seriesData = useScatterSeries();
27
- const axisData = React.useContext(CartesianContext);
27
+ const axisData = useCartesianContext();
28
28
  const {
29
29
  zAxis,
30
30
  zAxisIds
@@ -0,0 +1,108 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ /**
3
+ * A helper function that extracts ScatterChartProps from the input props
4
+ * and returns an object with props for the children components of ScatterChart.
5
+ *
6
+ * @param props The input props for ScatterChart
7
+ * @returns An object with props for the children components of ScatterChart
8
+ */
9
+ export const useScatterChartProps = props => {
10
+ const {
11
+ xAxis,
12
+ yAxis,
13
+ zAxis,
14
+ series,
15
+ tooltip,
16
+ axisHighlight,
17
+ voronoiMaxRadius,
18
+ disableVoronoi,
19
+ legend,
20
+ width,
21
+ height,
22
+ margin,
23
+ colors,
24
+ sx,
25
+ grid,
26
+ topAxis,
27
+ leftAxis,
28
+ rightAxis,
29
+ bottomAxis,
30
+ onItemClick,
31
+ children,
32
+ slots,
33
+ slotProps,
34
+ loading,
35
+ highlightedItem,
36
+ onHighlightChange
37
+ } = props;
38
+ const chartContainerProps = {
39
+ series: series.map(s => _extends({
40
+ type: 'scatter'
41
+ }, s)),
42
+ width,
43
+ height,
44
+ margin,
45
+ colors,
46
+ xAxis,
47
+ yAxis,
48
+ sx,
49
+ highlightedItem,
50
+ onHighlightChange
51
+ };
52
+ const zAxisProps = {
53
+ zAxis
54
+ };
55
+ const voronoiHandlerProps = {
56
+ voronoiMaxRadius,
57
+ onItemClick: onItemClick
58
+ };
59
+ const chartsAxisProps = {
60
+ topAxis,
61
+ leftAxis,
62
+ rightAxis,
63
+ bottomAxis,
64
+ slots,
65
+ slotProps
66
+ };
67
+ const gridProps = {
68
+ vertical: grid?.vertical,
69
+ horizontal: grid?.horizontal
70
+ };
71
+ const scatterPlotProps = {
72
+ onItemClick: disableVoronoi ? onItemClick : undefined,
73
+ slots,
74
+ slotProps
75
+ };
76
+ const overlayProps = {
77
+ loading,
78
+ slots,
79
+ slotProps
80
+ };
81
+ const legendProps = _extends({}, legend, {
82
+ slots,
83
+ slotProps
84
+ });
85
+ const axisHighlightProps = _extends({
86
+ y: 'none',
87
+ x: 'none'
88
+ }, axisHighlight);
89
+ const tooltipProps = _extends({
90
+ trigger: 'item'
91
+ }, tooltip, {
92
+ slots,
93
+ slotProps
94
+ });
95
+ return {
96
+ chartContainerProps,
97
+ zAxisProps,
98
+ voronoiHandlerProps,
99
+ chartsAxisProps,
100
+ gridProps,
101
+ scatterPlotProps,
102
+ overlayProps,
103
+ legendProps,
104
+ axisHighlightProps,
105
+ tooltipProps,
106
+ children
107
+ };
108
+ };
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ export const CartesianContext = /*#__PURE__*/React.createContext({
3
+ isInitialized: false,
4
+ data: {
5
+ xAxis: {},
6
+ yAxis: {},
7
+ xAxisIds: [],
8
+ yAxisIds: []
9
+ }
10
+ });
11
+ if (process.env.NODE_ENV !== 'production') {
12
+ CartesianContext.displayName = 'CartesianContext';
13
+ }
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { useDrawingArea } from '../../hooks/useDrawingArea';
3
+ import { useSeries } from '../../hooks/useSeries';
4
+ import { CartesianContext } from './CartesianContext';
5
+ import { normalizeAxis } from './normalizeAxis';
6
+ import { computeValue } from './computeValue';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ function CartesianContextProvider(props) {
9
+ const {
10
+ xAxis: inXAxis,
11
+ yAxis: inYAxis,
12
+ dataset,
13
+ xExtremumGetters,
14
+ yExtremumGetters,
15
+ children
16
+ } = props;
17
+ const formattedSeries = useSeries();
18
+ const drawingArea = useDrawingArea();
19
+ const xAxis = React.useMemo(() => normalizeAxis(inXAxis, dataset, 'x'), [inXAxis, dataset]);
20
+ const yAxis = React.useMemo(() => normalizeAxis(inYAxis, dataset, 'y'), [inYAxis, dataset]);
21
+ const xValues = React.useMemo(() => computeValue(drawingArea, formattedSeries, xAxis, xExtremumGetters, 'x'), [drawingArea, formattedSeries, xAxis, xExtremumGetters]);
22
+ const yValues = React.useMemo(() => computeValue(drawingArea, formattedSeries, yAxis, yExtremumGetters, 'y'), [drawingArea, formattedSeries, yAxis, yExtremumGetters]);
23
+ const value = React.useMemo(() => ({
24
+ isInitialized: true,
25
+ data: {
26
+ xAxis: xValues.axis,
27
+ yAxis: yValues.axis,
28
+ xAxisIds: xValues.axisIds,
29
+ yAxisIds: yValues.axisIds
30
+ }
31
+ }), [xValues, yValues]);
32
+ return /*#__PURE__*/_jsx(CartesianContext.Provider, {
33
+ value: value,
34
+ children: children
35
+ });
36
+ }
37
+ export { CartesianContextProvider };