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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/BarChart/BarChart.d.ts +13 -2
  2. package/BarChart/BarChart.js +45 -3
  3. package/BarChart/BarElement.d.ts +1318 -3
  4. package/BarChart/BarElement.js +10 -8
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +131 -0
  9. package/ChartContainer/index.js +5 -2
  10. package/ChartsAxis/ChartsAxis.js +18 -2
  11. package/ChartsAxis/axisClasses.d.ts +1 -1
  12. package/ChartsAxisHighlight/ChartsAxisHighlight.js +2 -2
  13. package/ChartsClipPath/ChartsClipPath.js +2 -2
  14. package/ChartsLegend/ChartsLegend.d.ts +2 -1
  15. package/ChartsLegend/ChartsLegend.js +12 -8
  16. package/ChartsSurface.js +2 -2
  17. package/ChartsTooltip/ChartsAxisTooltipContent.js +29 -23
  18. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  19. package/ChartsTooltip/ChartsTooltip.js +2 -2
  20. package/ChartsTooltip/utils.js +2 -2
  21. package/ChartsXAxis/ChartsXAxis.js +123 -35
  22. package/ChartsYAxis/ChartsYAxis.js +38 -16
  23. package/LineChart/AreaElement.d.ts +10 -0
  24. package/LineChart/AreaElement.js +12 -2
  25. package/LineChart/AreaPlot.d.ts +11 -0
  26. package/LineChart/AreaPlot.js +24 -7
  27. package/LineChart/LineChart.d.ts +10 -0
  28. package/LineChart/LineChart.js +36 -2
  29. package/LineChart/LineElement.d.ts +10 -0
  30. package/LineChart/LineElement.js +12 -2
  31. package/LineChart/LineHighlightElement.d.ts +10 -0
  32. package/LineChart/LineHighlightElement.js +12 -2
  33. package/LineChart/LineHighlightPlot.d.ts +10 -0
  34. package/LineChart/LineHighlightPlot.js +14 -3
  35. package/LineChart/LinePlot.d.ts +10 -0
  36. package/LineChart/LinePlot.js +22 -11
  37. package/LineChart/MarkElement.d.ts +10 -0
  38. package/LineChart/MarkElement.js +12 -2
  39. package/LineChart/MarkPlot.d.ts +10 -0
  40. package/LineChart/MarkPlot.js +40 -9
  41. package/LineChart/formatter.js +4 -3
  42. package/PieChart/PieArc.js +2 -2
  43. package/PieChart/PieArcLabel.js +2 -2
  44. package/PieChart/PieChart.d.ts +10 -0
  45. package/PieChart/PieChart.js +37 -2
  46. package/PieChart/PiePlot.d.ts +10 -0
  47. package/PieChart/PiePlot.js +12 -2
  48. package/ResponsiveChartContainer/index.js +4 -4
  49. package/ScatterChart/Scatter.d.ts +10 -0
  50. package/ScatterChart/Scatter.js +12 -2
  51. package/ScatterChart/ScatterChart.d.ts +10 -0
  52. package/ScatterChart/ScatterChart.js +36 -2
  53. package/ScatterChart/ScatterPlot.d.ts +10 -0
  54. package/ScatterChart/ScatterPlot.js +12 -2
  55. package/SparkLineChart/SparkLineChart.d.ts +9 -0
  56. package/SparkLineChart/SparkLineChart.js +16 -2
  57. package/context/CartesianContextProvider.js +10 -2
  58. package/context/DrawingProvider.js +2 -2
  59. package/context/HighlightProvider.js +2 -2
  60. package/context/InteractionProvider.js +2 -2
  61. package/context/SeriesContextProvider.js +2 -2
  62. package/esm/BarChart/BarChart.js +43 -1
  63. package/esm/BarChart/BarElement.js +7 -4
  64. package/esm/BarChart/BarPlot.js +152 -67
  65. package/esm/BarChart/formatter.js +1 -1
  66. package/esm/ChartContainer/index.js +3 -0
  67. package/esm/ChartsAxis/ChartsAxis.js +16 -0
  68. package/esm/ChartsLegend/ChartsLegend.js +10 -6
  69. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +27 -21
  70. package/esm/ChartsXAxis/ChartsXAxis.js +122 -34
  71. package/esm/ChartsYAxis/ChartsYAxis.js +36 -14
  72. package/esm/LineChart/AreaElement.js +10 -0
  73. package/esm/LineChart/AreaPlot.js +24 -6
  74. package/esm/LineChart/LineChart.js +34 -0
  75. package/esm/LineChart/LineElement.js +10 -0
  76. package/esm/LineChart/LineHighlightElement.js +10 -0
  77. package/esm/LineChart/LineHighlightPlot.js +12 -1
  78. package/esm/LineChart/LinePlot.js +23 -14
  79. package/esm/LineChart/MarkElement.js +10 -0
  80. package/esm/LineChart/MarkPlot.js +38 -7
  81. package/esm/LineChart/formatter.js +7 -3
  82. package/esm/PieChart/PieChart.js +35 -0
  83. package/esm/PieChart/PiePlot.js +10 -0
  84. package/esm/ResponsiveChartContainer/index.js +2 -2
  85. package/esm/ScatterChart/Scatter.js +10 -0
  86. package/esm/ScatterChart/ScatterChart.js +34 -0
  87. package/esm/ScatterChart/ScatterPlot.js +10 -0
  88. package/esm/SparkLineChart/SparkLineChart.js +14 -0
  89. package/esm/context/CartesianContextProvider.js +8 -0
  90. package/esm/hooks/useMounted.js +16 -0
  91. package/esm/hooks/useReducedMotion.js +27 -0
  92. package/esm/hooks/useTicks.js +12 -6
  93. package/esm/internals/components/ChartsText.js +19 -13
  94. package/esm/internals/geometry.js +36 -0
  95. package/hooks/useAxisEvents.js +2 -2
  96. package/hooks/useChartDimensions.js +2 -2
  97. package/hooks/useDrawingArea.js +2 -2
  98. package/hooks/useInteractionItemProps.js +2 -2
  99. package/hooks/useMounted.d.ts +1 -0
  100. package/hooks/useMounted.js +25 -0
  101. package/hooks/useReducedMotion.d.ts +8 -0
  102. package/hooks/useReducedMotion.js +33 -0
  103. package/hooks/useScale.d.ts +2 -2
  104. package/hooks/useScale.js +2 -2
  105. package/hooks/useTicks.d.ts +18 -9
  106. package/hooks/useTicks.js +14 -8
  107. package/index.js +1 -1
  108. package/internals/components/ChartsText.d.ts +11 -8
  109. package/internals/components/ChartsText.js +21 -15
  110. package/internals/defaultizeColor.d.ts +2 -2
  111. package/internals/domUtils.d.ts +0 -1
  112. package/internals/geometry.d.ts +9 -0
  113. package/internals/geometry.js +42 -0
  114. package/legacy/BarChart/BarChart.js +43 -1
  115. package/legacy/BarChart/BarElement.js +6 -3
  116. package/legacy/BarChart/BarPlot.js +151 -63
  117. package/legacy/BarChart/formatter.js +1 -1
  118. package/legacy/ChartContainer/index.js +3 -0
  119. package/legacy/ChartsAxis/ChartsAxis.js +16 -0
  120. package/legacy/ChartsLegend/ChartsLegend.js +14 -7
  121. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +5 -1
  122. package/legacy/ChartsXAxis/ChartsXAxis.js +126 -36
  123. package/legacy/ChartsYAxis/ChartsYAxis.js +36 -14
  124. package/legacy/LineChart/AreaElement.js +10 -0
  125. package/legacy/LineChart/AreaPlot.js +27 -7
  126. package/legacy/LineChart/LineChart.js +34 -0
  127. package/legacy/LineChart/LineElement.js +10 -0
  128. package/legacy/LineChart/LineHighlightElement.js +10 -0
  129. package/legacy/LineChart/LineHighlightPlot.js +12 -1
  130. package/legacy/LineChart/LinePlot.js +25 -12
  131. package/legacy/LineChart/MarkElement.js +10 -0
  132. package/legacy/LineChart/MarkPlot.js +37 -7
  133. package/legacy/LineChart/formatter.js +7 -3
  134. package/legacy/PieChart/PieChart.js +35 -0
  135. package/legacy/PieChart/PiePlot.js +10 -0
  136. package/legacy/ResponsiveChartContainer/index.js +2 -2
  137. package/legacy/ScatterChart/Scatter.js +10 -0
  138. package/legacy/ScatterChart/ScatterChart.js +34 -0
  139. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  140. package/legacy/SparkLineChart/SparkLineChart.js +14 -0
  141. package/legacy/context/CartesianContextProvider.js +8 -0
  142. package/legacy/hooks/useMounted.js +21 -0
  143. package/legacy/hooks/useReducedMotion.js +27 -0
  144. package/legacy/hooks/useTicks.js +13 -6
  145. package/legacy/index.js +1 -1
  146. package/legacy/internals/components/ChartsText.js +17 -15
  147. package/legacy/internals/geometry.js +37 -0
  148. package/models/axis.d.ts +19 -2
  149. package/models/seriesType/line.d.ts +3 -3
  150. package/modern/BarChart/BarChart.js +43 -1
  151. package/modern/BarChart/BarElement.js +7 -4
  152. package/modern/BarChart/BarPlot.js +149 -65
  153. package/modern/BarChart/formatter.js +1 -1
  154. package/modern/ChartContainer/index.js +3 -0
  155. package/modern/ChartsAxis/ChartsAxis.js +16 -0
  156. package/modern/ChartsLegend/ChartsLegend.js +10 -6
  157. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +27 -21
  158. package/modern/ChartsXAxis/ChartsXAxis.js +122 -34
  159. package/modern/ChartsYAxis/ChartsYAxis.js +36 -14
  160. package/modern/LineChart/AreaElement.js +10 -0
  161. package/modern/LineChart/AreaPlot.js +22 -5
  162. package/modern/LineChart/LineChart.js +34 -0
  163. package/modern/LineChart/LineElement.js +10 -0
  164. package/modern/LineChart/LineHighlightElement.js +10 -0
  165. package/modern/LineChart/LineHighlightPlot.js +12 -1
  166. package/modern/LineChart/LinePlot.js +20 -9
  167. package/modern/LineChart/MarkElement.js +10 -0
  168. package/modern/LineChart/MarkPlot.js +38 -7
  169. package/modern/LineChart/formatter.js +4 -3
  170. package/modern/PieChart/PieChart.js +35 -0
  171. package/modern/PieChart/PiePlot.js +10 -0
  172. package/modern/ResponsiveChartContainer/index.js +2 -2
  173. package/modern/ScatterChart/Scatter.js +10 -0
  174. package/modern/ScatterChart/ScatterChart.js +34 -0
  175. package/modern/ScatterChart/ScatterPlot.js +10 -0
  176. package/modern/SparkLineChart/SparkLineChart.js +14 -0
  177. package/modern/context/CartesianContextProvider.js +8 -0
  178. package/modern/hooks/useMounted.js +16 -0
  179. package/modern/hooks/useReducedMotion.js +27 -0
  180. package/modern/hooks/useTicks.js +12 -6
  181. package/modern/index.js +1 -1
  182. package/modern/internals/components/ChartsText.js +19 -13
  183. package/modern/internals/geometry.js +36 -0
  184. package/package.json +5 -3
@@ -15,6 +15,16 @@ import { ChartsClipPath } from '../ChartsClipPath';
15
15
  import { LineHighlightPlot } from './LineHighlightPlot';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ /**
19
+ * Demos:
20
+ *
21
+ * - [Lines](https://mui.com/x/react-charts/lines/)
22
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
23
+ *
24
+ * API:
25
+ *
26
+ * - [LineChart API](https://mui.com/x/api/charts/line-chart/)
27
+ */
18
28
  const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
19
29
  const {
20
30
  xAxis,
@@ -121,11 +131,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
121
131
  fill: PropTypes.string,
122
132
  label: PropTypes.string,
123
133
  labelFontSize: PropTypes.number,
134
+ labelStyle: PropTypes.object,
124
135
  position: PropTypes.oneOf(['bottom', 'top']),
125
136
  slotProps: PropTypes.object,
126
137
  slots: PropTypes.object,
127
138
  stroke: PropTypes.string,
128
139
  tickFontSize: PropTypes.number,
140
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
141
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
142
+ tickLabelStyle: PropTypes.object,
129
143
  tickMaxStep: PropTypes.number,
130
144
  tickMinStep: PropTypes.number,
131
145
  tickNumber: PropTypes.number,
@@ -158,11 +172,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
158
172
  fill: PropTypes.string,
159
173
  label: PropTypes.string,
160
174
  labelFontSize: PropTypes.number,
175
+ labelStyle: PropTypes.object,
161
176
  position: PropTypes.oneOf(['left', 'right']),
162
177
  slotProps: PropTypes.object,
163
178
  slots: PropTypes.object,
164
179
  stroke: PropTypes.string,
165
180
  tickFontSize: PropTypes.number,
181
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
182
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
183
+ tickLabelStyle: PropTypes.object,
166
184
  tickMaxStep: PropTypes.number,
167
185
  tickMinStep: PropTypes.number,
168
186
  tickNumber: PropTypes.number,
@@ -201,11 +219,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
201
219
  fill: PropTypes.string,
202
220
  label: PropTypes.string,
203
221
  labelFontSize: PropTypes.number,
222
+ labelStyle: PropTypes.object,
204
223
  position: PropTypes.oneOf(['left', 'right']),
205
224
  slotProps: PropTypes.object,
206
225
  slots: PropTypes.object,
207
226
  stroke: PropTypes.string,
208
227
  tickFontSize: PropTypes.number,
228
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
229
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
230
+ tickLabelStyle: PropTypes.object,
209
231
  tickMaxStep: PropTypes.number,
210
232
  tickMinStep: PropTypes.number,
211
233
  tickNumber: PropTypes.number,
@@ -266,11 +288,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
266
288
  fill: PropTypes.string,
267
289
  label: PropTypes.string,
268
290
  labelFontSize: PropTypes.number,
291
+ labelStyle: PropTypes.object,
269
292
  position: PropTypes.oneOf(['bottom', 'top']),
270
293
  slotProps: PropTypes.object,
271
294
  slots: PropTypes.object,
272
295
  stroke: PropTypes.string,
273
296
  tickFontSize: PropTypes.number,
297
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
298
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
299
+ tickLabelStyle: PropTypes.object,
274
300
  tickMaxStep: PropTypes.number,
275
301
  tickMinStep: PropTypes.number,
276
302
  tickNumber: PropTypes.number,
@@ -295,6 +321,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
295
321
  id: PropTypes.string,
296
322
  label: PropTypes.string,
297
323
  labelFontSize: PropTypes.number,
324
+ labelStyle: PropTypes.object,
298
325
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
299
326
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
300
327
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -303,6 +330,9 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
303
330
  slots: PropTypes.object,
304
331
  stroke: PropTypes.string,
305
332
  tickFontSize: PropTypes.number,
333
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
334
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
335
+ tickLabelStyle: PropTypes.object,
306
336
  tickMaxStep: PropTypes.number,
307
337
  tickMinStep: PropTypes.number,
308
338
  tickNumber: PropTypes.number,
@@ -321,6 +351,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
321
351
  id: PropTypes.string,
322
352
  label: PropTypes.string,
323
353
  labelFontSize: PropTypes.number,
354
+ labelStyle: PropTypes.object,
324
355
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
325
356
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
326
357
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -329,6 +360,9 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
329
360
  slots: PropTypes.object,
330
361
  stroke: PropTypes.string,
331
362
  tickFontSize: PropTypes.number,
363
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
364
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
365
+ tickLabelStyle: PropTypes.object,
332
366
  tickMaxStep: PropTypes.number,
333
367
  tickMinStep: PropTypes.number,
334
368
  tickNumber: PropTypes.number,
@@ -57,6 +57,16 @@ LineElementPath.propTypes = {
57
57
  }).isRequired,
58
58
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
59
59
  };
60
+ /**
61
+ * Demos:
62
+ *
63
+ * - [Lines](https://mui.com/x/react-charts/lines/)
64
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
65
+ *
66
+ * API:
67
+ *
68
+ * - [LineElement API](https://mui.com/x/api/charts/line-element/)
69
+ */
60
70
  function LineElement(props) {
61
71
  var _slots$line;
62
72
  const {
@@ -33,6 +33,16 @@ const HighlightElement = styled('circle', {
33
33
  transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
34
34
  fill: ownerState.color
35
35
  }));
36
+ /**
37
+ * Demos:
38
+ *
39
+ * - [Lines](https://mui.com/x/react-charts/lines/)
40
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
41
+ *
42
+ * API:
43
+ *
44
+ * - [LineHighlightElement API](https://mui.com/x/api/charts/line-highlight-element/)
45
+ */
36
46
  function LineHighlightElement(props) {
37
47
  const {
38
48
  x,
@@ -9,6 +9,16 @@ import { LineHighlightElement } from './LineHighlightElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import { InteractionContext } from '../context/InteractionProvider';
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
+ /**
13
+ * Demos:
14
+ *
15
+ * - [Lines](https://mui.com/x/react-charts/lines/)
16
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
17
+ *
18
+ * API:
19
+ *
20
+ * - [LineHighlightPlot API](https://mui.com/x/api/charts/line-highlight-plot/)
21
+ */
12
22
  function LineHighlightPlot(props) {
13
23
  var _axis$x, _slots$lineHighlight;
14
24
  const {
@@ -50,9 +60,10 @@ function LineHighlightPlot(props) {
50
60
  xAxisKey = defaultXAxisId,
51
61
  yAxisKey = defaultYAxisId,
52
62
  stackedData,
63
+ data,
53
64
  disableHighlight
54
65
  } = series[seriesId];
55
- if (disableHighlight) {
66
+ if (disableHighlight || data[highlightedIndex] == null) {
56
67
  return null;
57
68
  }
58
69
  const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
@@ -10,6 +10,16 @@ import { LineElement } from './LineElement';
10
10
  import { getValueToPositionMapper } from '../hooks/useScale';
11
11
  import getCurveFactory from '../internals/getCurve';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
+ /**
14
+ * Demos:
15
+ *
16
+ * - [Lines](https://mui.com/x/react-charts/lines/)
17
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
18
+ *
19
+ * API:
20
+ *
21
+ * - [LinePlot API](https://mui.com/x/api/charts/line-plot/)
22
+ */
13
23
  function LinePlot(props) {
14
24
  const {
15
25
  slots,
@@ -38,31 +48,30 @@ function LinePlot(props) {
38
48
  ids: groupIds
39
49
  }) => {
40
50
  return groupIds.flatMap(seriesId => {
51
+ var _xData$map;
41
52
  const {
42
53
  xAxisKey = defaultXAxisId,
43
54
  yAxisKey = defaultYAxisId,
44
- stackedData
55
+ stackedData,
56
+ data
45
57
  } = series[seriesId];
46
58
  const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
47
59
  const yScale = yAxis[yAxisKey].scale;
48
60
  const xData = xAxis[xAxisKey].data;
49
- if (xData === undefined) {
50
- throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
51
- }
52
- const linePath = d3Line().x(d => xScale(d.x)).y(d => yScale(d.y[1]));
53
61
  if (process.env.NODE_ENV !== 'production') {
54
- if (xData.length !== stackedData.length) {
55
- throw new Error(`MUI: data length of the x axis (${xData.length} items) does not match length of series (${stackedData.length} items)`);
62
+ if (xData === undefined) {
63
+ throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
64
+ }
65
+ if (xData.length < stackedData.length) {
66
+ throw new Error(`MUI: data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items)`);
56
67
  }
57
68
  }
69
+ const linePath = d3Line().x(d => xScale(d.x)).defined((_, i) => data[i] != null).y(d => yScale(d.y[1]));
58
70
  const curve = getCurveFactory(series[seriesId].curve);
59
- const d3Data = xData == null ? void 0 : xData.map((x, index) => {
60
- var _stackedData$index;
61
- return {
62
- x,
63
- y: (_stackedData$index = stackedData[index]) != null ? _stackedData$index : [0, 0]
64
- };
65
- });
71
+ const d3Data = (_xData$map = xData == null ? void 0 : xData.map((x, index) => ({
72
+ x,
73
+ y: stackedData[index]
74
+ }))) != null ? _xData$map : [];
66
75
  return /*#__PURE__*/_jsx(LineElement, {
67
76
  id: seriesId,
68
77
  d: linePath.curve(curve)(d3Data) || undefined,
@@ -59,6 +59,16 @@ MarkElementPath.propTypes = {
59
59
  }).isRequired,
60
60
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
61
61
  };
62
+ /**
63
+ * Demos:
64
+ *
65
+ * - [Lines](https://mui.com/x/react-charts/lines/)
66
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
67
+ *
68
+ * API:
69
+ *
70
+ * - [MarkElement API](https://mui.com/x/api/charts/mark-element/)
71
+ */
62
72
  function MarkElement(props) {
63
73
  var _axis$x;
64
74
  const {
@@ -8,6 +8,16 @@ import { CartesianContext } from '../context/CartesianContextProvider';
8
8
  import { MarkElement } from './MarkElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
+ /**
12
+ * Demos:
13
+ *
14
+ * - [Lines](https://mui.com/x/react-charts/lines/)
15
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
16
+ *
17
+ * API:
18
+ *
19
+ * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
20
+ */
11
21
  function MarkPlot(props) {
12
22
  var _slots$mark;
13
23
  const {
@@ -42,6 +52,7 @@ function MarkPlot(props) {
42
52
  xAxisKey = defaultXAxisId,
43
53
  yAxisKey = defaultYAxisId,
44
54
  stackedData,
55
+ data,
45
56
  showMark = true
46
57
  } = series[seriesId];
47
58
  if (showMark === false) {
@@ -68,28 +79,48 @@ function MarkPlot(props) {
68
79
  throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
69
80
  }
70
81
  return xData == null ? void 0 : xData.map((x, index) => {
71
- const y = stackedData[index][1];
82
+ const value = data[index] == null ? null : stackedData[index][1];
72
83
  return {
73
84
  x: xScale(x),
74
- y: yScale(y),
85
+ y: value === null ? null : yScale(value),
75
86
  position: x,
76
- value: y,
87
+ value,
77
88
  index
78
89
  };
79
- }).filter(isInRange).map(({
90
+ }).filter(({
80
91
  x,
81
92
  y,
82
93
  index,
83
94
  position,
84
95
  value
85
96
  }) => {
86
- return showMark === true || showMark({
97
+ if (value === null || y === null) {
98
+ // Remove missing data point
99
+ return false;
100
+ }
101
+ if (!isInRange({
102
+ x,
103
+ y
104
+ })) {
105
+ // Remove out of range
106
+ return false;
107
+ }
108
+ if (showMark === true) {
109
+ return true;
110
+ }
111
+ return showMark({
87
112
  x,
88
113
  y,
89
114
  index,
90
115
  position,
91
116
  value
92
- }) ? /*#__PURE__*/_jsx(Mark, _extends({
117
+ });
118
+ }).map(({
119
+ x,
120
+ y,
121
+ index
122
+ }) => {
123
+ return /*#__PURE__*/_jsx(Mark, _extends({
93
124
  id: seriesId,
94
125
  dataIndex: index,
95
126
  shape: "circle",
@@ -97,7 +128,7 @@ function MarkPlot(props) {
97
128
  x: x,
98
129
  y: y,
99
130
  highlightScope: series[seriesId].highlightScope
100
- }, slotProps == null ? void 0 : slotProps.mark), `${seriesId}-${index}`) : null;
131
+ }, slotProps == null ? void 0 : slotProps.mark), `${seriesId}-${index}`);
101
132
  });
102
133
  });
103
134
  })
@@ -24,7 +24,7 @@ const formatter = (params, dataset) => {
24
24
  d3Dataset[index][id] = value;
25
25
  }
26
26
  });
27
- } else if (dataset === undefined) {
27
+ } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
28
28
  throw new Error([`MUI: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
29
29
  }
30
30
  });
@@ -40,7 +40,11 @@ const formatter = (params, dataset) => {
40
40
  // Use dataKey if needed and available
41
41
  const dataKey = series[id].dataKey;
42
42
  return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
43
- })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
43
+ })).value((d, key) => {
44
+ var _d$key;
45
+ return (_d$key = d[key]) != null ? _d$key : 0;
46
+ }) // defaultize null value to 0
47
+ .order(stackingOrder).offset(stackingOffset)(d3Dataset);
44
48
  ids.forEach((id, index) => {
45
49
  const dataKey = series[id].dataKey;
46
50
  completedSeries[id] = _extends({}, series[id], {
@@ -52,7 +56,7 @@ const formatter = (params, dataset) => {
52
56
  return {
53
57
  seriesOrder,
54
58
  stackingGroups,
55
- series: defaultizeValueFormatter(completedSeries, v => v.toLocaleString())
59
+ series: defaultizeValueFormatter(completedSeries, v => v == null ? void 0 : v.toLocaleString())
56
60
  };
57
61
  };
58
62
  export default formatter;
@@ -16,6 +16,17 @@ const defaultMargin = {
16
16
  left: 5,
17
17
  right: 100
18
18
  };
19
+
20
+ /**
21
+ * Demos:
22
+ *
23
+ * - [Pie](https://mui.com/x/react-charts/pie/)
24
+ * - [Pie demonstration](https://mui.com/x/react-charts/pie-demo/)
25
+ *
26
+ * API:
27
+ *
28
+ * - [PieChart API](https://mui.com/x/api/charts/pie-chart/)
29
+ */
19
30
  function PieChart(props) {
20
31
  const {
21
32
  xAxis,
@@ -105,11 +116,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
105
116
  fill: PropTypes.string,
106
117
  label: PropTypes.string,
107
118
  labelFontSize: PropTypes.number,
119
+ labelStyle: PropTypes.object,
108
120
  position: PropTypes.oneOf(['bottom', 'top']),
109
121
  slotProps: PropTypes.object,
110
122
  slots: PropTypes.object,
111
123
  stroke: PropTypes.string,
112
124
  tickFontSize: PropTypes.number,
125
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
126
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
127
+ tickLabelStyle: PropTypes.object,
113
128
  tickMaxStep: PropTypes.number,
114
129
  tickMinStep: PropTypes.number,
115
130
  tickNumber: PropTypes.number,
@@ -138,11 +153,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
138
153
  fill: PropTypes.string,
139
154
  label: PropTypes.string,
140
155
  labelFontSize: PropTypes.number,
156
+ labelStyle: PropTypes.object,
141
157
  position: PropTypes.oneOf(['left', 'right']),
142
158
  slotProps: PropTypes.object,
143
159
  slots: PropTypes.object,
144
160
  stroke: PropTypes.string,
145
161
  tickFontSize: PropTypes.number,
162
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
163
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
164
+ tickLabelStyle: PropTypes.object,
146
165
  tickMaxStep: PropTypes.number,
147
166
  tickMinStep: PropTypes.number,
148
167
  tickNumber: PropTypes.number,
@@ -182,11 +201,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
182
201
  fill: PropTypes.string,
183
202
  label: PropTypes.string,
184
203
  labelFontSize: PropTypes.number,
204
+ labelStyle: PropTypes.object,
185
205
  position: PropTypes.oneOf(['left', 'right']),
186
206
  slotProps: PropTypes.object,
187
207
  slots: PropTypes.object,
188
208
  stroke: PropTypes.string,
189
209
  tickFontSize: PropTypes.number,
210
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
211
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
212
+ tickLabelStyle: PropTypes.object,
190
213
  tickMaxStep: PropTypes.number,
191
214
  tickMinStep: PropTypes.number,
192
215
  tickNumber: PropTypes.number,
@@ -260,11 +283,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
260
283
  fill: PropTypes.string,
261
284
  label: PropTypes.string,
262
285
  labelFontSize: PropTypes.number,
286
+ labelStyle: PropTypes.object,
263
287
  position: PropTypes.oneOf(['bottom', 'top']),
264
288
  slotProps: PropTypes.object,
265
289
  slots: PropTypes.object,
266
290
  stroke: PropTypes.string,
267
291
  tickFontSize: PropTypes.number,
292
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
293
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
294
+ tickLabelStyle: PropTypes.object,
268
295
  tickMaxStep: PropTypes.number,
269
296
  tickMinStep: PropTypes.number,
270
297
  tickNumber: PropTypes.number,
@@ -289,6 +316,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
289
316
  id: PropTypes.string,
290
317
  label: PropTypes.string,
291
318
  labelFontSize: PropTypes.number,
319
+ labelStyle: PropTypes.object,
292
320
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
293
321
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
294
322
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -297,6 +325,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
297
325
  slots: PropTypes.object,
298
326
  stroke: PropTypes.string,
299
327
  tickFontSize: PropTypes.number,
328
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
329
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
330
+ tickLabelStyle: PropTypes.object,
300
331
  tickMaxStep: PropTypes.number,
301
332
  tickMinStep: PropTypes.number,
302
333
  tickNumber: PropTypes.number,
@@ -315,6 +346,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
315
346
  id: PropTypes.string,
316
347
  label: PropTypes.string,
317
348
  labelFontSize: PropTypes.number,
349
+ labelStyle: PropTypes.object,
318
350
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
319
351
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
320
352
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -323,6 +355,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
323
355
  slots: PropTypes.object,
324
356
  stroke: PropTypes.string,
325
357
  tickFontSize: PropTypes.number,
358
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
359
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
360
+ tickLabelStyle: PropTypes.object,
326
361
  tickMaxStep: PropTypes.number,
327
362
  tickMinStep: PropTypes.number,
328
363
  tickNumber: PropTypes.number,
@@ -23,6 +23,16 @@ function getItemLabel(arcLabel, arcLabelMinAngle, item) {
23
23
  }
24
24
  return arcLabel(item);
25
25
  }
26
+ /**
27
+ * Demos:
28
+ *
29
+ * - [Pie](https://mui.com/x/react-charts/pie/)
30
+ * - [Pie demonstration](https://mui.com/x/react-charts/pie-demo/)
31
+ *
32
+ * API:
33
+ *
34
+ * - [PiePlot API](https://mui.com/x/api/charts/pie-plot/)
35
+ */
26
36
  function PiePlot(props) {
27
37
  var _slots$pieArc, _slots$pieArcLabel;
28
38
  const {
@@ -106,10 +106,10 @@ export const ResponsiveChartContainer = /*#__PURE__*/React.forwardRef(function R
106
106
  width: inWidth,
107
107
  height: inHeight
108
108
  },
109
- children: /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
109
+ children: width && height ? /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
110
110
  width: width,
111
111
  height: height,
112
112
  ref: ref
113
- }))
113
+ })) : null
114
114
  });
115
115
  });
@@ -5,6 +5,16 @@ import { getValueToPositionMapper } from '../hooks/useScale';
5
5
  import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
6
6
  import { InteractionContext } from '../context/InteractionProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Demos:
10
+ *
11
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
12
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
13
+ *
14
+ * API:
15
+ *
16
+ * - [Scatter API](https://mui.com/x/api/charts/scatter/)
17
+ */
8
18
  function Scatter(props) {
9
19
  const {
10
20
  series,
@@ -9,6 +9,16 @@ import { ChartsLegend } from '../ChartsLegend';
9
9
  import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ /**
13
+ * Demos:
14
+ *
15
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
16
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
17
+ *
18
+ * API:
19
+ *
20
+ * - [ScatterChart API](https://mui.com/x/api/charts/scatter-chart/)
21
+ */
12
22
  const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props, ref) {
13
23
  const {
14
24
  xAxis,
@@ -85,11 +95,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
85
95
  fill: PropTypes.string,
86
96
  label: PropTypes.string,
87
97
  labelFontSize: PropTypes.number,
98
+ labelStyle: PropTypes.object,
88
99
  position: PropTypes.oneOf(['bottom', 'top']),
89
100
  slotProps: PropTypes.object,
90
101
  slots: PropTypes.object,
91
102
  stroke: PropTypes.string,
92
103
  tickFontSize: PropTypes.number,
104
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
105
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
106
+ tickLabelStyle: PropTypes.object,
93
107
  tickMaxStep: PropTypes.number,
94
108
  tickMinStep: PropTypes.number,
95
109
  tickNumber: PropTypes.number,
@@ -118,11 +132,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
118
132
  fill: PropTypes.string,
119
133
  label: PropTypes.string,
120
134
  labelFontSize: PropTypes.number,
135
+ labelStyle: PropTypes.object,
121
136
  position: PropTypes.oneOf(['left', 'right']),
122
137
  slotProps: PropTypes.object,
123
138
  slots: PropTypes.object,
124
139
  stroke: PropTypes.string,
125
140
  tickFontSize: PropTypes.number,
141
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
142
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
143
+ tickLabelStyle: PropTypes.object,
126
144
  tickMaxStep: PropTypes.number,
127
145
  tickMinStep: PropTypes.number,
128
146
  tickNumber: PropTypes.number,
@@ -161,11 +179,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
161
179
  fill: PropTypes.string,
162
180
  label: PropTypes.string,
163
181
  labelFontSize: PropTypes.number,
182
+ labelStyle: PropTypes.object,
164
183
  position: PropTypes.oneOf(['left', 'right']),
165
184
  slotProps: PropTypes.object,
166
185
  slots: PropTypes.object,
167
186
  stroke: PropTypes.string,
168
187
  tickFontSize: PropTypes.number,
188
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
189
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
190
+ tickLabelStyle: PropTypes.object,
169
191
  tickMaxStep: PropTypes.number,
170
192
  tickMinStep: PropTypes.number,
171
193
  tickNumber: PropTypes.number,
@@ -223,11 +245,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
223
245
  fill: PropTypes.string,
224
246
  label: PropTypes.string,
225
247
  labelFontSize: PropTypes.number,
248
+ labelStyle: PropTypes.object,
226
249
  position: PropTypes.oneOf(['bottom', 'top']),
227
250
  slotProps: PropTypes.object,
228
251
  slots: PropTypes.object,
229
252
  stroke: PropTypes.string,
230
253
  tickFontSize: PropTypes.number,
254
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
255
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
256
+ tickLabelStyle: PropTypes.object,
231
257
  tickMaxStep: PropTypes.number,
232
258
  tickMinStep: PropTypes.number,
233
259
  tickNumber: PropTypes.number,
@@ -252,6 +278,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
252
278
  id: PropTypes.string,
253
279
  label: PropTypes.string,
254
280
  labelFontSize: PropTypes.number,
281
+ labelStyle: PropTypes.object,
255
282
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
256
283
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
257
284
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -260,6 +287,9 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
260
287
  slots: PropTypes.object,
261
288
  stroke: PropTypes.string,
262
289
  tickFontSize: PropTypes.number,
290
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
291
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
292
+ tickLabelStyle: PropTypes.object,
263
293
  tickMaxStep: PropTypes.number,
264
294
  tickMinStep: PropTypes.number,
265
295
  tickNumber: PropTypes.number,
@@ -278,6 +308,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
278
308
  id: PropTypes.string,
279
309
  label: PropTypes.string,
280
310
  labelFontSize: PropTypes.number,
311
+ labelStyle: PropTypes.object,
281
312
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
282
313
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
283
314
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -286,6 +317,9 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
286
317
  slots: PropTypes.object,
287
318
  stroke: PropTypes.string,
288
319
  tickFontSize: PropTypes.number,
320
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
321
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
322
+ tickLabelStyle: PropTypes.object,
289
323
  tickMaxStep: PropTypes.number,
290
324
  tickMinStep: PropTypes.number,
291
325
  tickNumber: PropTypes.number,
@@ -5,6 +5,16 @@ import { Scatter } from './Scatter';
5
5
  import { SeriesContext } from '../context/SeriesContextProvider';
6
6
  import { CartesianContext } from '../context/CartesianContextProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Demos:
10
+ *
11
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
12
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
13
+ *
14
+ * API:
15
+ *
16
+ * - [ScatterPlot API](https://mui.com/x/api/charts/scatter-plot/)
17
+ */
8
18
  function ScatterPlot(props) {
9
19
  var _slots$scatter;
10
20
  const {