@mui/x-charts 6.0.0-alpha.9 → 6.18.1

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 (325) hide show
  1. package/BarChart/BarChart.d.ts +26 -5
  2. package/BarChart/BarChart.js +93 -17
  3. package/BarChart/BarElement.d.ts +1319 -4
  4. package/BarChart/BarElement.js +10 -10
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +2 -3
  8. package/BarChart/legend.js +1 -2
  9. package/CHANGELOG.md +797 -59
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +33 -7
  13. package/ChartsAxis/axisClasses.d.ts +3 -3
  14. package/ChartsAxis/axisClasses.js +1 -2
  15. package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
  16. package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
  17. package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
  18. package/ChartsClipPath/ChartsClipPath.js +7 -2
  19. package/ChartsLegend/ChartsLegend.d.ts +45 -24
  20. package/ChartsLegend/ChartsLegend.js +193 -151
  21. package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
  22. package/ChartsLegend/chartsLegendClasses.js +3 -4
  23. package/ChartsLegend/utils.d.ts +1 -6
  24. package/ChartsReferenceLine/ChartsReferenceLine.d.ts +10 -0
  25. package/ChartsReferenceLine/ChartsReferenceLine.js +78 -0
  26. package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +13 -0
  27. package/ChartsReferenceLine/ChartsXReferenceLine.js +112 -0
  28. package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +13 -0
  29. package/ChartsReferenceLine/ChartsYReferenceLine.js +112 -0
  30. package/ChartsReferenceLine/chartsReferenceLineClasses.d.ts +15 -0
  31. package/ChartsReferenceLine/chartsReferenceLineClasses.js +14 -0
  32. package/ChartsReferenceLine/common.d.ts +41 -0
  33. package/ChartsReferenceLine/common.js +27 -0
  34. package/ChartsReferenceLine/index.d.ts +2 -0
  35. package/ChartsReferenceLine/index.js +27 -0
  36. package/ChartsReferenceLine/package.json +6 -0
  37. package/ChartsSurface.d.ts +12 -1
  38. package/ChartsSurface.js +9 -18
  39. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  40. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  41. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  42. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  43. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  44. package/ChartsTooltip/ChartsTooltip.js +62 -18
  45. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  46. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  47. package/ChartsTooltip/tooltipClasses.js +1 -2
  48. package/ChartsTooltip/utils.js +2 -2
  49. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  50. package/ChartsXAxis/ChartsXAxis.js +170 -45
  51. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  52. package/ChartsYAxis/ChartsYAxis.js +95 -38
  53. package/LineChart/AreaElement.d.ts +11 -1
  54. package/LineChart/AreaElement.js +14 -6
  55. package/LineChart/AreaPlot.d.ts +11 -0
  56. package/LineChart/AreaPlot.js +27 -8
  57. package/LineChart/LineChart.d.ts +23 -3
  58. package/LineChart/LineChart.js +89 -17
  59. package/LineChart/LineElement.d.ts +11 -1
  60. package/LineChart/LineElement.js +14 -6
  61. package/LineChart/LineHighlightElement.d.ts +10 -0
  62. package/LineChart/LineHighlightElement.js +13 -4
  63. package/LineChart/LineHighlightPlot.d.ts +10 -0
  64. package/LineChart/LineHighlightPlot.js +15 -4
  65. package/LineChart/LinePlot.d.ts +10 -0
  66. package/LineChart/LinePlot.js +25 -12
  67. package/LineChart/MarkElement.d.ts +10 -0
  68. package/LineChart/MarkElement.js +14 -5
  69. package/LineChart/MarkPlot.d.ts +10 -0
  70. package/LineChart/MarkPlot.js +42 -10
  71. package/LineChart/formatter.js +5 -5
  72. package/LineChart/legend.js +1 -2
  73. package/PieChart/PieArc.d.ts +11 -13
  74. package/PieChart/PieArc.js +28 -60
  75. package/PieChart/PieArcLabel.d.ts +8 -9
  76. package/PieChart/PieArcLabel.js +46 -38
  77. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  78. package/PieChart/PieArcLabelPlot.js +99 -0
  79. package/PieChart/PieArcPlot.d.ts +35 -0
  80. package/PieChart/PieArcPlot.js +92 -0
  81. package/PieChart/PieChart.d.ts +19 -5
  82. package/PieChart/PieChart.js +95 -18
  83. package/PieChart/PiePlot.d.ts +15 -9
  84. package/PieChart/PiePlot.js +77 -55
  85. package/PieChart/dataTransform/transition.d.ts +4 -0
  86. package/PieChart/dataTransform/transition.js +136 -0
  87. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  88. package/PieChart/dataTransform/useTransformData.js +67 -0
  89. package/PieChart/formatter.js +1 -2
  90. package/PieChart/legend.js +1 -2
  91. package/README.md +8 -14
  92. package/ResponsiveChartContainer/index.d.ts +13 -3
  93. package/ResponsiveChartContainer/index.js +7 -8
  94. package/ScatterChart/Scatter.d.ts +10 -0
  95. package/ScatterChart/Scatter.js +12 -2
  96. package/ScatterChart/ScatterChart.d.ts +16 -3
  97. package/ScatterChart/ScatterChart.js +77 -16
  98. package/ScatterChart/ScatterPlot.d.ts +10 -0
  99. package/ScatterChart/ScatterPlot.js +12 -2
  100. package/ScatterChart/formatter.js +1 -2
  101. package/ScatterChart/legend.js +1 -2
  102. package/SparkLineChart/SparkLineChart.d.ts +12 -3
  103. package/SparkLineChart/SparkLineChart.js +50 -7
  104. package/colorPalettes/colorPalettes.js +6 -12
  105. package/constants.js +5 -8
  106. package/context/CartesianContextProvider.d.ts +26 -1
  107. package/context/CartesianContextProvider.js +42 -16
  108. package/context/DrawingProvider.d.ts +25 -0
  109. package/context/DrawingProvider.js +18 -6
  110. package/context/HighlightProvider.d.ts +17 -0
  111. package/context/HighlightProvider.js +3 -4
  112. package/context/InteractionProvider.d.ts +6 -0
  113. package/context/InteractionProvider.js +3 -4
  114. package/context/SeriesContextProvider.d.ts +5 -0
  115. package/context/SeriesContextProvider.js +3 -4
  116. package/esm/BarChart/BarChart.js +90 -13
  117. package/esm/BarChart/BarElement.js +7 -4
  118. package/esm/BarChart/BarPlot.js +152 -67
  119. package/esm/BarChart/formatter.js +1 -1
  120. package/esm/ChartContainer/index.js +3 -0
  121. package/esm/ChartsAxis/ChartsAxis.js +32 -5
  122. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  123. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  124. package/esm/ChartsLegend/ChartsLegend.js +190 -144
  125. package/esm/ChartsLegend/chartsLegendClasses.js +1 -1
  126. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  127. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  128. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  129. package/esm/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  130. package/esm/ChartsReferenceLine/common.js +20 -0
  131. package/esm/ChartsReferenceLine/index.js +2 -0
  132. package/esm/ChartsSurface.js +4 -12
  133. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  134. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  135. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  136. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  137. package/esm/ChartsXAxis/ChartsXAxis.js +168 -43
  138. package/esm/ChartsYAxis/ChartsYAxis.js +93 -36
  139. package/esm/LineChart/AreaElement.js +10 -0
  140. package/esm/LineChart/AreaPlot.js +26 -6
  141. package/esm/LineChart/LineChart.js +86 -13
  142. package/esm/LineChart/LineElement.js +10 -0
  143. package/esm/LineChart/LineHighlightElement.js +10 -0
  144. package/esm/LineChart/LineHighlightPlot.js +13 -2
  145. package/esm/LineChart/LinePlot.js +25 -14
  146. package/esm/LineChart/MarkElement.js +11 -1
  147. package/esm/LineChart/MarkPlot.js +40 -8
  148. package/esm/LineChart/formatter.js +7 -3
  149. package/esm/PieChart/PieArc.js +26 -58
  150. package/esm/PieChart/PieArcLabel.js +43 -34
  151. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  152. package/esm/PieChart/PieArcPlot.js +84 -0
  153. package/esm/PieChart/PieChart.js +93 -16
  154. package/esm/PieChart/PiePlot.js +76 -57
  155. package/esm/PieChart/dataTransform/transition.js +130 -0
  156. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  157. package/esm/ResponsiveChartContainer/index.js +3 -3
  158. package/esm/ScatterChart/Scatter.js +10 -0
  159. package/esm/ScatterChart/ScatterChart.js +74 -12
  160. package/esm/ScatterChart/ScatterPlot.js +10 -0
  161. package/esm/SparkLineChart/SparkLineChart.js +47 -3
  162. package/esm/constants.js +1 -1
  163. package/esm/context/CartesianContextProvider.js +41 -14
  164. package/esm/context/DrawingProvider.js +14 -0
  165. package/esm/hooks/useChartDimensions.js +2 -0
  166. package/esm/hooks/useMounted.js +16 -0
  167. package/esm/hooks/useReducedMotion.js +27 -0
  168. package/esm/hooks/useTicks.js +15 -9
  169. package/esm/index.js +1 -0
  170. package/esm/internals/components/AxisSharedComponents.js +15 -70
  171. package/esm/internals/components/ChartsText.js +77 -0
  172. package/esm/internals/domUtils.js +113 -0
  173. package/esm/internals/geometry.js +36 -0
  174. package/hooks/useAxisEvents.js +2 -2
  175. package/hooks/useChartDimensions.d.ts +2 -0
  176. package/hooks/useChartDimensions.js +5 -4
  177. package/hooks/useDrawingArea.js +2 -2
  178. package/hooks/useInteractionItemProps.js +2 -2
  179. package/hooks/useMounted.d.ts +1 -0
  180. package/hooks/useMounted.js +25 -0
  181. package/hooks/useReducedMotion.d.ts +8 -0
  182. package/hooks/useReducedMotion.js +33 -0
  183. package/hooks/useScale.d.ts +2 -2
  184. package/hooks/useScale.js +2 -2
  185. package/hooks/useTicks.d.ts +19 -11
  186. package/hooks/useTicks.js +19 -14
  187. package/index.d.ts +1 -0
  188. package/index.js +12 -1
  189. package/internals/components/AxisSharedComponents.d.ts +0 -4
  190. package/internals/components/AxisSharedComponents.js +18 -78
  191. package/internals/components/ChartsText.d.ts +35 -0
  192. package/internals/components/ChartsText.js +87 -0
  193. package/internals/defaultizeColor.d.ts +7 -2
  194. package/internals/defaultizeValueFormatter.js +1 -2
  195. package/internals/domUtils.d.ts +13 -0
  196. package/internals/domUtils.js +122 -0
  197. package/internals/geometry.d.ts +9 -0
  198. package/internals/geometry.js +42 -0
  199. package/internals/isBandScale.d.ts +3 -1
  200. package/internals/stackSeries.js +2 -4
  201. package/internals/utils.d.ts +5 -0
  202. package/legacy/BarChart/BarChart.js +90 -13
  203. package/legacy/BarChart/BarElement.js +6 -3
  204. package/legacy/BarChart/BarPlot.js +151 -63
  205. package/legacy/BarChart/formatter.js +1 -1
  206. package/legacy/ChartContainer/index.js +3 -0
  207. package/legacy/ChartsAxis/ChartsAxis.js +32 -5
  208. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  209. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  210. package/legacy/ChartsLegend/ChartsLegend.js +205 -142
  211. package/legacy/ChartsLegend/chartsLegendClasses.js +1 -1
  212. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  213. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  214. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  215. package/legacy/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  216. package/legacy/ChartsReferenceLine/common.js +20 -0
  217. package/legacy/ChartsReferenceLine/index.js +2 -0
  218. package/legacy/ChartsSurface.js +3 -12
  219. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  220. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  221. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  222. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  223. package/legacy/ChartsXAxis/ChartsXAxis.js +176 -50
  224. package/legacy/ChartsYAxis/ChartsYAxis.js +97 -41
  225. package/legacy/LineChart/AreaElement.js +10 -0
  226. package/legacy/LineChart/AreaPlot.js +31 -7
  227. package/legacy/LineChart/LineChart.js +86 -13
  228. package/legacy/LineChart/LineElement.js +10 -0
  229. package/legacy/LineChart/LineHighlightElement.js +10 -0
  230. package/legacy/LineChart/LineHighlightPlot.js +13 -2
  231. package/legacy/LineChart/LinePlot.js +29 -12
  232. package/legacy/LineChart/MarkElement.js +11 -1
  233. package/legacy/LineChart/MarkPlot.js +39 -8
  234. package/legacy/LineChart/formatter.js +7 -3
  235. package/legacy/PieChart/PieArc.js +30 -62
  236. package/legacy/PieChart/PieArcLabel.js +48 -34
  237. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  238. package/legacy/PieChart/PieArcPlot.js +84 -0
  239. package/legacy/PieChart/PieChart.js +93 -16
  240. package/legacy/PieChart/PiePlot.js +76 -59
  241. package/legacy/PieChart/dataTransform/transition.js +142 -0
  242. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  243. package/legacy/ResponsiveChartContainer/index.js +3 -3
  244. package/legacy/ScatterChart/Scatter.js +10 -0
  245. package/legacy/ScatterChart/ScatterChart.js +74 -12
  246. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  247. package/legacy/SparkLineChart/SparkLineChart.js +47 -3
  248. package/legacy/constants.js +1 -1
  249. package/legacy/context/CartesianContextProvider.js +41 -14
  250. package/legacy/context/DrawingProvider.js +14 -0
  251. package/legacy/hooks/useChartDimensions.js +2 -0
  252. package/legacy/hooks/useMounted.js +21 -0
  253. package/legacy/hooks/useReducedMotion.js +27 -0
  254. package/legacy/hooks/useTicks.js +16 -9
  255. package/legacy/index.js +2 -1
  256. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  257. package/legacy/internals/components/ChartsText.js +79 -0
  258. package/legacy/internals/domUtils.js +121 -0
  259. package/legacy/internals/geometry.js +37 -0
  260. package/models/axis.d.ts +58 -20
  261. package/models/layout.d.ts +13 -6
  262. package/models/seriesType/common.d.ts +16 -0
  263. package/models/seriesType/line.d.ts +8 -3
  264. package/models/seriesType/pie.d.ts +5 -1
  265. package/modern/BarChart/BarChart.js +90 -13
  266. package/modern/BarChart/BarElement.js +7 -4
  267. package/modern/BarChart/BarPlot.js +149 -65
  268. package/modern/BarChart/formatter.js +1 -1
  269. package/modern/ChartContainer/index.js +3 -0
  270. package/modern/ChartsAxis/ChartsAxis.js +31 -5
  271. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  272. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  273. package/modern/ChartsLegend/ChartsLegend.js +190 -144
  274. package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
  275. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  276. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +104 -0
  277. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +104 -0
  278. package/modern/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  279. package/modern/ChartsReferenceLine/common.js +20 -0
  280. package/modern/ChartsReferenceLine/index.js +2 -0
  281. package/modern/ChartsSurface.js +4 -12
  282. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  283. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  284. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  285. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  286. package/modern/ChartsXAxis/ChartsXAxis.js +167 -42
  287. package/modern/ChartsYAxis/ChartsYAxis.js +92 -35
  288. package/modern/LineChart/AreaElement.js +10 -0
  289. package/modern/LineChart/AreaPlot.js +25 -6
  290. package/modern/LineChart/LineChart.js +86 -13
  291. package/modern/LineChart/LineElement.js +10 -0
  292. package/modern/LineChart/LineHighlightElement.js +10 -0
  293. package/modern/LineChart/LineHighlightPlot.js +13 -2
  294. package/modern/LineChart/LinePlot.js +23 -10
  295. package/modern/LineChart/MarkElement.js +11 -1
  296. package/modern/LineChart/MarkPlot.js +40 -8
  297. package/modern/LineChart/formatter.js +4 -3
  298. package/modern/PieChart/PieArc.js +26 -57
  299. package/modern/PieChart/PieArcLabel.js +43 -34
  300. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  301. package/modern/PieChart/PieArcPlot.js +83 -0
  302. package/modern/PieChart/PieChart.js +93 -16
  303. package/modern/PieChart/PiePlot.js +76 -55
  304. package/modern/PieChart/dataTransform/transition.js +130 -0
  305. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  306. package/modern/ResponsiveChartContainer/index.js +3 -3
  307. package/modern/ScatterChart/Scatter.js +10 -0
  308. package/modern/ScatterChart/ScatterChart.js +74 -12
  309. package/modern/ScatterChart/ScatterPlot.js +10 -0
  310. package/modern/SparkLineChart/SparkLineChart.js +47 -3
  311. package/modern/constants.js +1 -1
  312. package/modern/context/CartesianContextProvider.js +40 -13
  313. package/modern/context/DrawingProvider.js +14 -0
  314. package/modern/hooks/useChartDimensions.js +2 -0
  315. package/modern/hooks/useMounted.js +16 -0
  316. package/modern/hooks/useReducedMotion.js +27 -0
  317. package/modern/hooks/useTicks.js +15 -9
  318. package/modern/index.js +2 -1
  319. package/modern/internals/components/AxisSharedComponents.js +15 -70
  320. package/modern/internals/components/ChartsText.js +77 -0
  321. package/modern/internals/domUtils.js +113 -0
  322. package/modern/internals/geometry.js +36 -0
  323. package/package.json +9 -6
  324. package/themeAugmentation/components.d.ts +1 -0
  325. package/themeAugmentation/overrides.d.ts +2 -0
@@ -10,6 +10,17 @@ import { AreaElement } from './AreaElement';
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
+ * - [Areas demonstration](https://mui.com/x/react-charts/areas-demo/)
18
+ * - [Stacking](https://mui.com/x/react-charts/stacking/)
19
+ *
20
+ * API:
21
+ *
22
+ * - [AreaPlot API](https://mui.com/x/api/charts/area-plot/)
23
+ */
13
24
  function AreaPlot(props) {
14
25
  var slots = props.slots,
15
26
  slotProps = props.slotProps,
@@ -31,32 +42,45 @@ function AreaPlot(props) {
31
42
  children: stackingGroups.flatMap(function (_ref) {
32
43
  var groupIds = _ref.ids;
33
44
  return groupIds.flatMap(function (seriesId) {
45
+ var _xData$map;
34
46
  var _series$seriesId = series[seriesId],
35
47
  _series$seriesId$xAxi = _series$seriesId.xAxisKey,
36
48
  xAxisKey = _series$seriesId$xAxi === void 0 ? defaultXAxisId : _series$seriesId$xAxi,
37
49
  _series$seriesId$yAxi = _series$seriesId.yAxisKey,
38
50
  yAxisKey = _series$seriesId$yAxi === void 0 ? defaultYAxisId : _series$seriesId$yAxi,
39
- stackedData = _series$seriesId.stackedData;
51
+ stackedData = _series$seriesId.stackedData,
52
+ data = _series$seriesId.data,
53
+ connectNulls = _series$seriesId.connectNulls;
40
54
  var xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
41
55
  var yScale = yAxis[yAxisKey].scale;
42
56
  var xData = xAxis[xAxisKey].data;
43
- if (xData === undefined) {
44
- throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot."));
57
+ if (process.env.NODE_ENV !== 'production') {
58
+ if (xData === undefined) {
59
+ throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot."));
60
+ }
61
+ if (xData.length < stackedData.length) {
62
+ throw new Error("MUI: data length of the x axis (".concat(xData.length, " items) is lower than the length of series (").concat(stackedData.length, " items)"));
63
+ }
45
64
  }
46
65
  var areaPath = d3Area().x(function (d) {
47
66
  return xScale(d.x);
67
+ }).defined(function (_, i) {
68
+ return connectNulls || data[i] != null;
48
69
  }).y0(function (d) {
49
- return yScale(d.y[0]);
70
+ return d.y && yScale(d.y[0]);
50
71
  }).y1(function (d) {
51
- return yScale(d.y[1]);
72
+ return d.y && yScale(d.y[1]);
52
73
  });
53
74
  var curve = getCurveFactory(series[seriesId].curve);
54
- var d3Data = xData == null ? void 0 : xData.map(function (x, index) {
75
+ var formattedData = (_xData$map = xData == null ? void 0 : xData.map(function (x, index) {
55
76
  return {
56
77
  x: x,
57
78
  y: stackedData[index]
58
79
  };
59
- });
80
+ })) != null ? _xData$map : [];
81
+ var d3Data = connectNulls ? formattedData.filter(function (_, i) {
82
+ return data[i] != null;
83
+ }) : formattedData;
60
84
  return !!series[seriesId].area && /*#__PURE__*/_jsx(AreaElement, {
61
85
  id: seriesId,
62
86
  d: areaPath.curve(curve)(d3Data) || undefined,
@@ -16,6 +16,16 @@ import { ChartsClipPath } from '../ChartsClipPath';
16
16
  import { LineHighlightPlot } from './LineHighlightPlot';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
18
  import { jsxs as _jsxs } from "react/jsx-runtime";
19
+ /**
20
+ * Demos:
21
+ *
22
+ * - [Lines](https://mui.com/x/react-charts/lines/)
23
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
24
+ *
25
+ * API:
26
+ *
27
+ * - [LineChart API](https://mui.com/x/api/charts/line-chart/)
28
+ */
19
29
  var LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
20
30
  var xAxis = props.xAxis,
21
31
  yAxis = props.yAxis,
@@ -95,7 +105,10 @@ var LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
95
105
  }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
96
106
  slots: slots,
97
107
  slotProps: slotProps
98
- })), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip)), /*#__PURE__*/_jsx(ChartsClipPath, {
108
+ })), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
109
+ slots: slots,
110
+ slotProps: slotProps
111
+ })), /*#__PURE__*/_jsx(ChartsClipPath, {
99
112
  id: clipPathId
100
113
  }), children]
101
114
  });
@@ -105,6 +118,13 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
105
118
  // | These PropTypes are generated from the TypeScript type definitions |
106
119
  // | To update them edit the TypeScript types and run "yarn proptypes" |
107
120
  // ----------------------------------------------------------------------
121
+ /**
122
+ * Object `{ x, y }` that defines how the charts highlight the mouse position along the x- and y-axes.
123
+ * The two properties accept the following values:
124
+ * - 'none': display nothing.
125
+ * - 'line': display a line at the current mouse position.
126
+ * - 'band': display a band at the current mouse position. Only available with band scale.
127
+ */
108
128
  axisHighlight: PropTypes.shape({
109
129
  x: PropTypes.oneOf(['band', 'line', 'none']),
110
130
  y: PropTypes.oneOf(['band', 'line', 'none'])
@@ -115,18 +135,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
115
135
  * @default xAxisIds[0] The id of the first provided axis
116
136
  */
117
137
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
118
- axisId: PropTypes.string.isRequired,
138
+ axisId: PropTypes.string,
119
139
  classes: PropTypes.object,
120
140
  disableLine: PropTypes.bool,
121
141
  disableTicks: PropTypes.bool,
122
142
  fill: PropTypes.string,
123
143
  label: PropTypes.string,
124
144
  labelFontSize: PropTypes.number,
145
+ labelStyle: PropTypes.object,
125
146
  position: PropTypes.oneOf(['bottom', 'top']),
126
147
  slotProps: PropTypes.object,
127
148
  slots: PropTypes.object,
128
149
  stroke: PropTypes.string,
129
150
  tickFontSize: PropTypes.number,
151
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
152
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
153
+ tickLabelStyle: PropTypes.object,
130
154
  tickMaxStep: PropTypes.number,
131
155
  tickMinStep: PropTypes.number,
132
156
  tickNumber: PropTypes.number,
@@ -138,13 +162,25 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
138
162
  * Color palette used to colorize multiple series.
139
163
  */
140
164
  colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
165
+ /**
166
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
167
+ */
141
168
  dataset: PropTypes.arrayOf(PropTypes.object),
142
169
  desc: PropTypes.string,
170
+ /**
171
+ * If `true`, the charts will not listen to the mouse move event.
172
+ * It might break interactive features, but will improve performance.
173
+ * @default false
174
+ */
143
175
  disableAxisListener: PropTypes.bool,
144
176
  /**
145
177
  * If `true`, render the line highlight item.
146
178
  */
147
179
  disableLineItemHighlight: PropTypes.bool,
180
+ /**
181
+ * The height of the chart in px. If not defined, it takes the height of the parent element.
182
+ * @default undefined
183
+ */
148
184
  height: PropTypes.number,
149
185
  /**
150
186
  * Indicate which axis to display the left of the charts.
@@ -152,41 +188,47 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
152
188
  * @default yAxisIds[0] The id of the first provided axis
153
189
  */
154
190
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
155
- axisId: PropTypes.string.isRequired,
191
+ axisId: PropTypes.string,
156
192
  classes: PropTypes.object,
157
193
  disableLine: PropTypes.bool,
158
194
  disableTicks: PropTypes.bool,
159
195
  fill: PropTypes.string,
160
196
  label: PropTypes.string,
161
197
  labelFontSize: PropTypes.number,
198
+ labelStyle: PropTypes.object,
162
199
  position: PropTypes.oneOf(['left', 'right']),
163
200
  slotProps: PropTypes.object,
164
201
  slots: PropTypes.object,
165
202
  stroke: PropTypes.string,
166
203
  tickFontSize: PropTypes.number,
204
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
205
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
206
+ tickLabelStyle: PropTypes.object,
167
207
  tickMaxStep: PropTypes.number,
168
208
  tickMinStep: PropTypes.number,
169
209
  tickNumber: PropTypes.number,
170
210
  tickSize: PropTypes.number
171
211
  }), PropTypes.string]),
212
+ /**
213
+ * @deprecated Consider using `slotProps.legend` instead.
214
+ */
172
215
  legend: PropTypes.shape({
173
216
  classes: PropTypes.object,
174
217
  direction: PropTypes.oneOf(['column', 'row']),
175
218
  hidden: PropTypes.bool,
176
- itemWidth: PropTypes.number,
177
- markSize: PropTypes.number,
178
- offset: PropTypes.shape({
179
- x: PropTypes.number,
180
- y: PropTypes.number
181
- }),
182
219
  position: PropTypes.shape({
183
220
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
184
221
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
185
222
  }),
186
223
  slotProps: PropTypes.object,
187
- slots: PropTypes.object,
188
- spacing: PropTypes.number
224
+ slots: PropTypes.object
189
225
  }),
226
+ /**
227
+ * The margin between the SVG and the drawing area.
228
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
229
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
230
+ * @default object Depends on the charts type.
231
+ */
190
232
  margin: PropTypes.shape({
191
233
  bottom: PropTypes.number,
192
234
  left: PropTypes.number,
@@ -199,18 +241,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
199
241
  * @default null
200
242
  */
201
243
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
202
- axisId: PropTypes.string.isRequired,
244
+ axisId: PropTypes.string,
203
245
  classes: PropTypes.object,
204
246
  disableLine: PropTypes.bool,
205
247
  disableTicks: PropTypes.bool,
206
248
  fill: PropTypes.string,
207
249
  label: PropTypes.string,
208
250
  labelFontSize: PropTypes.number,
251
+ labelStyle: PropTypes.object,
209
252
  position: PropTypes.oneOf(['left', 'right']),
210
253
  slotProps: PropTypes.object,
211
254
  slots: PropTypes.object,
212
255
  stroke: PropTypes.string,
213
256
  tickFontSize: PropTypes.number,
257
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
258
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
259
+ tickLabelStyle: PropTypes.object,
214
260
  tickMaxStep: PropTypes.number,
215
261
  tickMinStep: PropTypes.number,
216
262
  tickNumber: PropTypes.number,
@@ -219,6 +265,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
219
265
  series: PropTypes.arrayOf(PropTypes.shape({
220
266
  area: PropTypes.bool,
221
267
  color: PropTypes.string,
268
+ connectNulls: PropTypes.bool,
222
269
  curve: PropTypes.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
223
270
  data: PropTypes.arrayOf(PropTypes.number),
224
271
  dataKey: PropTypes.string,
@@ -254,6 +301,8 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
254
301
  axisContent: PropTypes.elementType,
255
302
  classes: PropTypes.object,
256
303
  itemContent: PropTypes.elementType,
304
+ slotProps: PropTypes.object,
305
+ slots: PropTypes.object,
257
306
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
258
307
  }),
259
308
  /**
@@ -262,18 +311,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
262
311
  * @default null
263
312
  */
264
313
  topAxis: PropTypes.oneOfType([PropTypes.shape({
265
- axisId: PropTypes.string.isRequired,
314
+ axisId: PropTypes.string,
266
315
  classes: PropTypes.object,
267
316
  disableLine: PropTypes.bool,
268
317
  disableTicks: PropTypes.bool,
269
318
  fill: PropTypes.string,
270
319
  label: PropTypes.string,
271
320
  labelFontSize: PropTypes.number,
321
+ labelStyle: PropTypes.object,
272
322
  position: PropTypes.oneOf(['bottom', 'top']),
273
323
  slotProps: PropTypes.object,
274
324
  slots: PropTypes.object,
275
325
  stroke: PropTypes.string,
276
326
  tickFontSize: PropTypes.number,
327
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
328
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
329
+ tickLabelStyle: PropTypes.object,
277
330
  tickMaxStep: PropTypes.number,
278
331
  tickMinStep: PropTypes.number,
279
332
  tickNumber: PropTypes.number,
@@ -285,7 +338,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
285
338
  x: PropTypes.number,
286
339
  y: PropTypes.number
287
340
  }),
341
+ /**
342
+ * The width of the chart in px. If not defined, it takes the width of the parent element.
343
+ * @default undefined
344
+ */
288
345
  width: PropTypes.number,
346
+ /**
347
+ * The configuration of the x-axes.
348
+ * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
349
+ */
289
350
  xAxis: PropTypes.arrayOf(PropTypes.shape({
290
351
  axisId: PropTypes.string,
291
352
  classes: PropTypes.object,
@@ -298,6 +359,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
298
359
  id: PropTypes.string,
299
360
  label: PropTypes.string,
300
361
  labelFontSize: PropTypes.number,
362
+ labelStyle: PropTypes.object,
301
363
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
302
364
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
303
365
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -306,12 +368,19 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
306
368
  slots: PropTypes.object,
307
369
  stroke: PropTypes.string,
308
370
  tickFontSize: PropTypes.number,
371
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
372
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
373
+ tickLabelStyle: PropTypes.object,
309
374
  tickMaxStep: PropTypes.number,
310
375
  tickMinStep: PropTypes.number,
311
376
  tickNumber: PropTypes.number,
312
377
  tickSize: PropTypes.number,
313
378
  valueFormatter: PropTypes.func
314
379
  })),
380
+ /**
381
+ * The configuration of the y-axes.
382
+ * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
383
+ */
315
384
  yAxis: PropTypes.arrayOf(PropTypes.shape({
316
385
  axisId: PropTypes.string,
317
386
  classes: PropTypes.object,
@@ -324,6 +393,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
324
393
  id: PropTypes.string,
325
394
  label: PropTypes.string,
326
395
  labelFontSize: PropTypes.number,
396
+ labelStyle: PropTypes.object,
327
397
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
328
398
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
329
399
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -332,6 +402,9 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
332
402
  slots: PropTypes.object,
333
403
  stroke: PropTypes.string,
334
404
  tickFontSize: PropTypes.number,
405
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
406
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
407
+ tickLabelStyle: PropTypes.object,
335
408
  tickMaxStep: PropTypes.number,
336
409
  tickMinStep: PropTypes.number,
337
410
  tickNumber: PropTypes.number,
@@ -58,6 +58,16 @@ LineElementPath.propTypes = {
58
58
  }).isRequired,
59
59
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
60
60
  };
61
+ /**
62
+ * Demos:
63
+ *
64
+ * - [Lines](https://mui.com/x/react-charts/lines/)
65
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
66
+ *
67
+ * API:
68
+ *
69
+ * - [LineElement API](https://mui.com/x/api/charts/line-element/)
70
+ */
61
71
  function LineElement(props) {
62
72
  var _slots$line;
63
73
  var id = props.id,
@@ -34,6 +34,16 @@ var HighlightElement = styled('circle', {
34
34
  fill: ownerState.color
35
35
  };
36
36
  });
37
+ /**
38
+ * Demos:
39
+ *
40
+ * - [Lines](https://mui.com/x/react-charts/lines/)
41
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
42
+ *
43
+ * API:
44
+ *
45
+ * - [LineHighlightElement API](https://mui.com/x/api/charts/line-highlight-element/)
46
+ */
37
47
  function LineHighlightElement(props) {
38
48
  var x = props.x,
39
49
  y = props.y,
@@ -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
  var slots = props.slots,
@@ -44,8 +54,9 @@ function LineHighlightPlot(props) {
44
54
  _series$seriesId$yAxi = _series$seriesId.yAxisKey,
45
55
  yAxisKey = _series$seriesId$yAxi === void 0 ? defaultYAxisId : _series$seriesId$yAxi,
46
56
  stackedData = _series$seriesId.stackedData,
57
+ data = _series$seriesId.data,
47
58
  disableHighlight = _series$seriesId.disableHighlight;
48
- if (disableHighlight) {
59
+ if (disableHighlight || data[highlightedIndex] == null) {
49
60
  return null;
50
61
  }
51
62
  var xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
@@ -55,7 +66,7 @@ function LineHighlightPlot(props) {
55
66
  throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot."));
56
67
  }
57
68
  var x = xScale(xData[highlightedIndex]);
58
- var y = yScale(stackedData[highlightedIndex][1]);
69
+ var y = yScale(stackedData[highlightedIndex][1]); // This should not be undefined since y should not be a band scale
59
70
  return /*#__PURE__*/_jsx(Element, _extends({
60
71
  id: seriesId,
61
72
  color: series[seriesId].color,
@@ -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
  var slots = props.slots,
15
25
  slotProps = props.slotProps,
@@ -31,36 +41,43 @@ function LinePlot(props) {
31
41
  children: stackingGroups.flatMap(function (_ref) {
32
42
  var groupIds = _ref.ids;
33
43
  return groupIds.flatMap(function (seriesId) {
44
+ var _xData$map;
34
45
  var _series$seriesId = series[seriesId],
35
46
  _series$seriesId$xAxi = _series$seriesId.xAxisKey,
36
47
  xAxisKey = _series$seriesId$xAxi === void 0 ? defaultXAxisId : _series$seriesId$xAxi,
37
48
  _series$seriesId$yAxi = _series$seriesId.yAxisKey,
38
49
  yAxisKey = _series$seriesId$yAxi === void 0 ? defaultYAxisId : _series$seriesId$yAxi,
39
- stackedData = _series$seriesId.stackedData;
50
+ stackedData = _series$seriesId.stackedData,
51
+ data = _series$seriesId.data,
52
+ connectNulls = _series$seriesId.connectNulls;
40
53
  var xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
41
54
  var yScale = yAxis[yAxisKey].scale;
42
55
  var xData = xAxis[xAxisKey].data;
43
- if (xData === undefined) {
44
- throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot"));
56
+ if (process.env.NODE_ENV !== 'production') {
57
+ if (xData === undefined) {
58
+ throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot"));
59
+ }
60
+ if (xData.length < stackedData.length) {
61
+ throw new Error("MUI: data length of the x axis (".concat(xData.length, " items) is lower than the length of series (").concat(stackedData.length, " items)"));
62
+ }
45
63
  }
46
64
  var linePath = d3Line().x(function (d) {
47
65
  return xScale(d.x);
66
+ }).defined(function (_, i) {
67
+ return connectNulls || data[i] != null;
48
68
  }).y(function (d) {
49
69
  return yScale(d.y[1]);
50
70
  });
51
- if (process.env.NODE_ENV !== 'production') {
52
- if (xData.length !== stackedData.length) {
53
- throw new Error("MUI: data length of the x axis (".concat(xData.length, " items) does not match length of series (").concat(stackedData.length, " items)"));
54
- }
55
- }
56
71
  var curve = getCurveFactory(series[seriesId].curve);
57
- var d3Data = xData == null ? void 0 : xData.map(function (x, index) {
58
- var _stackedData$index;
72
+ var formattedData = (_xData$map = xData == null ? void 0 : xData.map(function (x, index) {
59
73
  return {
60
74
  x: x,
61
- y: (_stackedData$index = stackedData[index]) != null ? _stackedData$index : [0, 0]
75
+ y: stackedData[index]
62
76
  };
63
- });
77
+ })) != null ? _xData$map : [];
78
+ var d3Data = connectNulls ? formattedData.filter(function (_, i) {
79
+ return data[i] != null;
80
+ }) : formattedData;
64
81
  return /*#__PURE__*/_jsx(LineElement, {
65
82
  id: seriesId,
66
83
  d: linePath.curve(curve)(d3Data) || undefined,
@@ -38,7 +38,7 @@ var MarkElementPath = styled('path', {
38
38
  return {
39
39
  transform: "translate(".concat(ownerState.x, "px, ").concat(ownerState.y, "px)"),
40
40
  transformOrigin: "".concat(ownerState.x, "px ").concat(ownerState.y, "px"),
41
- fill: theme.palette.background.paper,
41
+ fill: (theme.vars || theme).palette.background.paper,
42
42
  stroke: ownerState.color,
43
43
  strokeWidth: 2
44
44
  };
@@ -60,6 +60,16 @@ MarkElementPath.propTypes = {
60
60
  }).isRequired,
61
61
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
62
62
  };
63
+ /**
64
+ * Demos:
65
+ *
66
+ * - [Lines](https://mui.com/x/react-charts/lines/)
67
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
68
+ *
69
+ * API:
70
+ *
71
+ * - [MarkElement API](https://mui.com/x/api/charts/mark-element/)
72
+ */
63
73
  function MarkElement(props) {
64
74
  var _axis$x;
65
75
  var x = props.x,
@@ -9,6 +9,16 @@ import { CartesianContext } from '../context/CartesianContextProvider';
9
9
  import { MarkElement } from './MarkElement';
10
10
  import { getValueToPositionMapper } from '../hooks/useScale';
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
+ * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
21
+ */
12
22
  function MarkPlot(props) {
13
23
  var _slots$mark;
14
24
  var slots = props.slots,
@@ -38,6 +48,7 @@ function MarkPlot(props) {
38
48
  _series$seriesId$yAxi = _series$seriesId.yAxisKey,
39
49
  yAxisKey = _series$seriesId$yAxi === void 0 ? defaultYAxisId : _series$seriesId$yAxi,
40
50
  stackedData = _series$seriesId.stackedData,
51
+ data = _series$seriesId.data,
41
52
  _series$seriesId$show = _series$seriesId.showMark,
42
53
  showMark = _series$seriesId$show === void 0 ? true : _series$seriesId$show;
43
54
  if (showMark === false) {
@@ -63,35 +74,55 @@ function MarkPlot(props) {
63
74
  throw new Error("Axis of id \"".concat(xAxisKey, "\" should have data property to be able to display a line plot"));
64
75
  }
65
76
  return xData == null ? void 0 : xData.map(function (x, index) {
66
- var y = stackedData[index][1];
77
+ var value = data[index] == null ? null : stackedData[index][1];
67
78
  return {
68
79
  x: xScale(x),
69
- y: yScale(y),
80
+ y: value === null ? null : yScale(value),
70
81
  position: x,
71
- value: y,
82
+ value: value,
72
83
  index: index
73
84
  };
74
- }).filter(isInRange).map(function (_ref3) {
85
+ }).filter(function (_ref3) {
75
86
  var x = _ref3.x,
76
87
  y = _ref3.y,
77
88
  index = _ref3.index,
78
89
  position = _ref3.position,
79
90
  value = _ref3.value;
80
- return showMark === true || showMark({
91
+ if (value === null || y === null) {
92
+ // Remove missing data point
93
+ return false;
94
+ }
95
+ if (!isInRange({
96
+ x: x,
97
+ y: y
98
+ })) {
99
+ // Remove out of range
100
+ return false;
101
+ }
102
+ if (showMark === true) {
103
+ return true;
104
+ }
105
+ return showMark({
81
106
  x: x,
82
107
  y: y,
83
108
  index: index,
84
109
  position: position,
85
110
  value: value
86
- }) ? /*#__PURE__*/_jsx(Mark, _extends({
111
+ });
112
+ }).map(function (_ref4) {
113
+ var x = _ref4.x,
114
+ y = _ref4.y,
115
+ index = _ref4.index;
116
+ return /*#__PURE__*/_jsx(Mark, _extends({
87
117
  id: seriesId,
88
118
  dataIndex: index,
89
119
  shape: "circle",
90
120
  color: series[seriesId].color,
91
121
  x: x,
92
- y: y,
122
+ y: y // Don't knwo why TS don't get from the filter that y can't be null
123
+ ,
93
124
  highlightScope: series[seriesId].highlightScope
94
- }, slotProps == null ? void 0 : slotProps.mark), "".concat(seriesId, "-").concat(index)) : null;
125
+ }, slotProps == null ? void 0 : slotProps.mark), "".concat(seriesId, "-").concat(index));
95
126
  });
96
127
  });
97
128
  })
@@ -22,7 +22,7 @@ var formatter = function formatter(params, dataset) {
22
22
  d3Dataset[index][id] = value;
23
23
  }
24
24
  });
25
- } else if (dataset === undefined) {
25
+ } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
26
26
  throw new Error(["MUI: line series with id='".concat(id, "' has no data."), 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
27
27
  }
28
28
  });
@@ -36,7 +36,11 @@ var formatter = function formatter(params, dataset) {
36
36
  // Use dataKey if needed and available
37
37
  var dataKey = series[id].dataKey;
38
38
  return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
39
- })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
39
+ })).value(function (d, key) {
40
+ var _d$key;
41
+ return (_d$key = d[key]) != null ? _d$key : 0;
42
+ }) // defaultize null value to 0
43
+ .order(stackingOrder).offset(stackingOffset)(d3Dataset);
40
44
  ids.forEach(function (id, index) {
41
45
  var dataKey = series[id].dataKey;
42
46
  completedSeries[id] = _extends({}, series[id], {
@@ -56,7 +60,7 @@ var formatter = function formatter(params, dataset) {
56
60
  seriesOrder: seriesOrder,
57
61
  stackingGroups: stackingGroups,
58
62
  series: defaultizeValueFormatter(completedSeries, function (v) {
59
- return v.toLocaleString();
63
+ return v == null ? void 0 : v.toLocaleString();
60
64
  })
61
65
  };
62
66
  };