@mui/x-charts 7.15.0 → 7.17.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 (516) hide show
  1. package/BarChart/BarChart.js +26 -12
  2. package/BarChart/BarClipPath.js +1 -1
  3. package/BarChart/BarElement.js +4 -2
  4. package/BarChart/BarLabel/BarLabel.js +3 -1
  5. package/BarChart/BarLabel/BarLabelItem.js +4 -4
  6. package/BarChart/BarLabel/BarLabelPlot.js +1 -1
  7. package/BarChart/BarLabel/index.js +2 -2
  8. package/BarChart/BarPlot.js +10 -8
  9. package/BarChart/checkScaleErrors.js +2 -2
  10. package/BarChart/formatter.js +2 -2
  11. package/BarChart/index.js +4 -4
  12. package/BarChart/legend.js +4 -3
  13. package/BarChart/plugin.js +3 -3
  14. package/BarChart/useBarChartProps.js +3 -1
  15. package/CHANGELOG.md +185 -1
  16. package/ChartContainer/ChartContainer.js +11 -9
  17. package/ChartContainer/index.js +1 -1
  18. package/ChartContainer/useChartContainerProps.js +4 -2
  19. package/ChartContainer/useDefaultizeAxis.js +3 -1
  20. package/ChartsAxis/ChartsAxis.js +5 -3
  21. package/ChartsAxis/index.js +2 -2
  22. package/ChartsAxisHighlight/ChartsAxisHighlight.js +6 -4
  23. package/ChartsAxisHighlight/index.js +1 -1
  24. package/ChartsClipPath/ChartsClipPath.js +3 -1
  25. package/ChartsClipPath/index.js +1 -1
  26. package/ChartsGrid/ChartsGrid.js +20 -66
  27. package/ChartsGrid/ChartsHorizontalGrid.d.ts +14 -0
  28. package/ChartsGrid/ChartsHorizontalGrid.js +36 -0
  29. package/ChartsGrid/ChartsVerticalGrid.d.ts +14 -0
  30. package/ChartsGrid/ChartsVerticalGrid.js +36 -0
  31. package/ChartsGrid/index.js +2 -2
  32. package/ChartsGrid/styledCommonents.d.ts +2 -0
  33. package/ChartsGrid/styledCommonents.js +22 -0
  34. package/ChartsLegend/ChartsLegend.d.ts +4 -13
  35. package/ChartsLegend/ChartsLegend.js +70 -26
  36. package/ChartsLegend/ChartsLegendItem.d.ts +26 -0
  37. package/ChartsLegend/ChartsLegendItem.js +65 -0
  38. package/ChartsLegend/ContinuousColorLegend.js +9 -7
  39. package/ChartsLegend/DefaultChartsLegend.d.ts +15 -2
  40. package/ChartsLegend/DefaultChartsLegend.js +31 -5
  41. package/ChartsLegend/LegendPerItem.d.ts +10 -6
  42. package/ChartsLegend/LegendPerItem.js +22 -35
  43. package/ChartsLegend/PiecewiseColorLegend.d.ts +9 -1
  44. package/ChartsLegend/PiecewiseColorLegend.js +31 -15
  45. package/ChartsLegend/chartsLegend.types.d.ts +39 -1
  46. package/ChartsLegend/chartsLegendClasses.d.ts +2 -0
  47. package/ChartsLegend/chartsLegendClasses.js +1 -1
  48. package/ChartsLegend/index.js +6 -6
  49. package/ChartsLegend/useAxis.js +4 -2
  50. package/ChartsLegend/utils.js +4 -4
  51. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +7 -5
  52. package/ChartsOnAxisClickHandler/index.js +1 -1
  53. package/ChartsOverlay/ChartsLoadingOverlay.js +3 -1
  54. package/ChartsOverlay/ChartsNoDataOverlay.js +3 -1
  55. package/ChartsOverlay/ChartsOverlay.js +5 -3
  56. package/ChartsOverlay/index.js +3 -3
  57. package/ChartsReferenceLine/ChartsReferenceLine.js +4 -2
  58. package/ChartsReferenceLine/ChartsXReferenceLine.js +7 -5
  59. package/ChartsReferenceLine/ChartsYReferenceLine.js +7 -5
  60. package/ChartsReferenceLine/common.js +1 -1
  61. package/ChartsReferenceLine/index.js +2 -2
  62. package/ChartsSurface/ChartsSurface.js +3 -1
  63. package/ChartsSurface/index.js +1 -1
  64. package/ChartsText/ChartsText.js +3 -1
  65. package/ChartsText/index.js +1 -1
  66. package/ChartsTooltip/ChartsAxisTooltipContent.js +6 -6
  67. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +1 -1
  68. package/ChartsTooltip/ChartsItemTooltipContent.js +5 -5
  69. package/ChartsTooltip/ChartsTooltip.d.ts +2 -2
  70. package/ChartsTooltip/ChartsTooltip.js +15 -11
  71. package/ChartsTooltip/ChartsTooltipTable.js +10 -5
  72. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  73. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +5 -3
  74. package/ChartsTooltip/chartsTooltipClasses.d.ts +2 -0
  75. package/ChartsTooltip/chartsTooltipClasses.js +1 -1
  76. package/ChartsTooltip/index.js +7 -7
  77. package/ChartsTooltip/utils.js +1 -1
  78. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +9 -7
  79. package/ChartsVoronoiHandler/index.js +1 -1
  80. package/ChartsXAxis/ChartsXAxis.js +20 -13
  81. package/ChartsXAxis/index.js +1 -1
  82. package/ChartsYAxis/ChartsYAxis.js +17 -10
  83. package/ChartsYAxis/index.js +1 -1
  84. package/Gauge/Gauge.js +7 -5
  85. package/Gauge/GaugeContainer.js +6 -4
  86. package/Gauge/GaugeProvider.js +3 -3
  87. package/Gauge/GaugeReferenceArc.js +3 -1
  88. package/Gauge/GaugeValueArc.js +3 -1
  89. package/Gauge/GaugeValueText.js +4 -2
  90. package/Gauge/index.js +7 -7
  91. package/LineChart/AnimatedArea.js +33 -14
  92. package/LineChart/AnimatedLine.js +34 -15
  93. package/LineChart/AreaElement.js +5 -3
  94. package/LineChart/AreaPlot.js +85 -78
  95. package/LineChart/CircleMarkElement.d.ts +34 -0
  96. package/LineChart/CircleMarkElement.js +107 -0
  97. package/LineChart/LineChart.d.ts +4 -0
  98. package/LineChart/LineChart.js +33 -15
  99. package/LineChart/LineElement.js +5 -3
  100. package/LineChart/LineHighlightElement.js +2 -0
  101. package/LineChart/LineHighlightPlot.js +10 -8
  102. package/LineChart/LinePlot.js +67 -60
  103. package/LineChart/MarkElement.d.ts +1 -19
  104. package/LineChart/MarkElement.js +7 -23
  105. package/LineChart/MarkPlot.d.ts +6 -0
  106. package/LineChart/MarkPlot.js +22 -12
  107. package/LineChart/formatter.js +2 -2
  108. package/LineChart/index.d.ts +2 -0
  109. package/LineChart/index.js +12 -11
  110. package/LineChart/legend.js +4 -3
  111. package/LineChart/markElementClasses.d.ts +20 -0
  112. package/LineChart/markElementClasses.js +19 -0
  113. package/LineChart/plugin.js +3 -3
  114. package/LineChart/useLineChartProps.js +8 -4
  115. package/PieChart/PieArc.js +3 -1
  116. package/PieChart/PieArcLabel.js +2 -0
  117. package/PieChart/PieArcLabelPlot.js +6 -4
  118. package/PieChart/PieArcPlot.js +6 -4
  119. package/PieChart/PieChart.js +22 -8
  120. package/PieChart/PiePlot.js +8 -6
  121. package/PieChart/dataTransform/useTransformData.js +3 -1
  122. package/PieChart/formatter.js +1 -1
  123. package/PieChart/getPieCoordinates.js +1 -1
  124. package/PieChart/index.js +7 -7
  125. package/PieChart/legend.js +4 -2
  126. package/PieChart/plugin.js +2 -2
  127. package/ResponsiveChartContainer/ResponsiveChartContainer.js +5 -3
  128. package/ResponsiveChartContainer/index.js +1 -1
  129. package/ResponsiveChartContainer/useChartContainerDimensions.js +3 -1
  130. package/ResponsiveChartContainer/useResponsiveChartContainerProps.js +3 -1
  131. package/ScatterChart/Scatter.js +7 -5
  132. package/ScatterChart/ScatterChart.js +26 -12
  133. package/ScatterChart/ScatterPlot.js +7 -5
  134. package/ScatterChart/formatter.js +1 -1
  135. package/ScatterChart/index.js +3 -3
  136. package/ScatterChart/legend.js +4 -3
  137. package/ScatterChart/plugin.js +3 -3
  138. package/ScatterChart/useScatterChartProps.js +2 -0
  139. package/SparkLineChart/SparkLineChart.js +8 -6
  140. package/SparkLineChart/index.js +1 -1
  141. package/colorPalettes/index.js +1 -1
  142. package/context/CartesianProvider/CartesianProvider.js +8 -6
  143. package/context/CartesianProvider/computeValue.js +6 -6
  144. package/context/CartesianProvider/defaultizeAxis.js +1 -1
  145. package/context/CartesianProvider/index.js +5 -5
  146. package/context/CartesianProvider/useCartesianContext.js +3 -1
  147. package/context/DrawingProvider.js +3 -1
  148. package/context/HighlightedProvider/HighlightedProvider.js +6 -4
  149. package/context/HighlightedProvider/index.js +4 -4
  150. package/context/HighlightedProvider/useHighlighted.js +3 -1
  151. package/context/HighlightedProvider/useItemHighlighted.js +3 -1
  152. package/context/InteractionProvider.js +2 -0
  153. package/context/PluginProvider/PluginProvider.js +4 -2
  154. package/context/PluginProvider/index.js +10 -10
  155. package/context/PluginProvider/mergePlugins.js +4 -4
  156. package/context/PluginProvider/useColorProcessor.js +3 -1
  157. package/context/PluginProvider/useSeriesFormatter.js +3 -1
  158. package/context/PluginProvider/useXExtremumGetter.js +1 -1
  159. package/context/PluginProvider/useYExtremumGetter.js +1 -1
  160. package/context/SeriesProvider/SeriesProvider.js +6 -4
  161. package/context/SeriesProvider/index.js +4 -4
  162. package/context/SeriesProvider/processSeries.js +1 -1
  163. package/context/ZAxisContextProvider.js +3 -1
  164. package/context/index.js +2 -2
  165. package/hooks/index.js +7 -7
  166. package/hooks/useAxis.js +3 -1
  167. package/hooks/useAxisEvents.js +8 -6
  168. package/hooks/useChartDimensions.js +3 -1
  169. package/hooks/useChartId.js +3 -1
  170. package/hooks/useColorScale.js +4 -2
  171. package/hooks/useDrawingArea.js +3 -1
  172. package/hooks/useInteractionItemProps.js +4 -2
  173. package/hooks/useMounted.js +2 -0
  174. package/hooks/useReducedMotion.js +15 -12
  175. package/hooks/useScale.js +4 -2
  176. package/hooks/useSeries.js +3 -1
  177. package/hooks/useSvgRef.js +3 -1
  178. package/hooks/useTicks.js +4 -2
  179. package/index.js +27 -27
  180. package/internals/components/AxisSharedComponents.js +1 -1
  181. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +5 -5
  182. package/internals/components/ChartsAxesGradients/index.js +1 -1
  183. package/internals/getWordsByLines.js +1 -1
  184. package/internals/index.js +31 -31
  185. package/internals/isCartesian.js +1 -1
  186. package/internals/useStringInterpolator.d.ts +1 -0
  187. package/{modern/internals/useAnimatedPath.js → internals/useStringInterpolator.js} +2 -15
  188. package/models/index.d.ts +1 -0
  189. package/models/index.js +5 -3
  190. package/models/seriesType/index.js +4 -4
  191. package/modern/BarChart/BarChart.js +26 -12
  192. package/modern/BarChart/BarClipPath.js +1 -1
  193. package/modern/BarChart/BarElement.js +4 -2
  194. package/modern/BarChart/BarLabel/BarLabel.js +3 -1
  195. package/modern/BarChart/BarLabel/BarLabelItem.js +4 -4
  196. package/modern/BarChart/BarLabel/BarLabelPlot.js +1 -1
  197. package/modern/BarChart/BarLabel/index.js +2 -2
  198. package/modern/BarChart/BarPlot.js +10 -8
  199. package/modern/BarChart/checkScaleErrors.js +2 -2
  200. package/modern/BarChart/formatter.js +2 -2
  201. package/modern/BarChart/index.js +4 -4
  202. package/modern/BarChart/legend.js +4 -3
  203. package/modern/BarChart/plugin.js +3 -3
  204. package/modern/BarChart/useBarChartProps.js +3 -1
  205. package/modern/ChartContainer/ChartContainer.js +11 -9
  206. package/modern/ChartContainer/index.js +1 -1
  207. package/modern/ChartContainer/useChartContainerProps.js +4 -2
  208. package/modern/ChartContainer/useDefaultizeAxis.js +3 -1
  209. package/modern/ChartsAxis/ChartsAxis.js +5 -3
  210. package/modern/ChartsAxis/index.js +2 -2
  211. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +6 -4
  212. package/modern/ChartsAxisHighlight/index.js +1 -1
  213. package/modern/ChartsClipPath/ChartsClipPath.js +3 -1
  214. package/modern/ChartsClipPath/index.js +1 -1
  215. package/modern/ChartsGrid/ChartsGrid.js +20 -66
  216. package/modern/ChartsGrid/ChartsHorizontalGrid.js +36 -0
  217. package/modern/ChartsGrid/ChartsVerticalGrid.js +36 -0
  218. package/modern/ChartsGrid/index.js +2 -2
  219. package/modern/ChartsGrid/styledCommonents.js +22 -0
  220. package/modern/ChartsLegend/ChartsLegend.js +70 -26
  221. package/modern/ChartsLegend/ChartsLegendItem.js +65 -0
  222. package/modern/ChartsLegend/ContinuousColorLegend.js +9 -7
  223. package/modern/ChartsLegend/DefaultChartsLegend.js +31 -5
  224. package/modern/ChartsLegend/LegendPerItem.js +22 -35
  225. package/modern/ChartsLegend/PiecewiseColorLegend.js +31 -15
  226. package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
  227. package/modern/ChartsLegend/index.js +6 -6
  228. package/modern/ChartsLegend/useAxis.js +4 -2
  229. package/modern/ChartsLegend/utils.js +4 -4
  230. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +7 -5
  231. package/modern/ChartsOnAxisClickHandler/index.js +1 -1
  232. package/modern/ChartsOverlay/ChartsLoadingOverlay.js +3 -1
  233. package/modern/ChartsOverlay/ChartsNoDataOverlay.js +3 -1
  234. package/modern/ChartsOverlay/ChartsOverlay.js +5 -3
  235. package/modern/ChartsOverlay/index.js +3 -3
  236. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +4 -2
  237. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +7 -5
  238. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +7 -5
  239. package/modern/ChartsReferenceLine/common.js +1 -1
  240. package/modern/ChartsReferenceLine/index.js +2 -2
  241. package/modern/ChartsSurface/ChartsSurface.js +3 -1
  242. package/modern/ChartsSurface/index.js +1 -1
  243. package/modern/ChartsText/ChartsText.js +3 -1
  244. package/modern/ChartsText/index.js +1 -1
  245. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +6 -6
  246. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +5 -5
  247. package/modern/ChartsTooltip/ChartsTooltip.js +15 -11
  248. package/modern/ChartsTooltip/ChartsTooltipTable.js +10 -5
  249. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  250. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +5 -3
  251. package/modern/ChartsTooltip/chartsTooltipClasses.js +1 -1
  252. package/modern/ChartsTooltip/index.js +7 -7
  253. package/modern/ChartsTooltip/utils.js +1 -1
  254. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +9 -7
  255. package/modern/ChartsVoronoiHandler/index.js +1 -1
  256. package/modern/ChartsXAxis/ChartsXAxis.js +20 -13
  257. package/modern/ChartsXAxis/index.js +1 -1
  258. package/modern/ChartsYAxis/ChartsYAxis.js +17 -10
  259. package/modern/ChartsYAxis/index.js +1 -1
  260. package/modern/Gauge/Gauge.js +7 -5
  261. package/modern/Gauge/GaugeContainer.js +6 -4
  262. package/modern/Gauge/GaugeProvider.js +3 -3
  263. package/modern/Gauge/GaugeReferenceArc.js +3 -1
  264. package/modern/Gauge/GaugeValueArc.js +3 -1
  265. package/modern/Gauge/GaugeValueText.js +4 -2
  266. package/modern/Gauge/index.js +7 -7
  267. package/modern/LineChart/AnimatedArea.js +33 -14
  268. package/modern/LineChart/AnimatedLine.js +34 -15
  269. package/modern/LineChart/AreaElement.js +5 -3
  270. package/modern/LineChart/AreaPlot.js +85 -78
  271. package/modern/LineChart/CircleMarkElement.js +107 -0
  272. package/modern/LineChart/LineChart.js +33 -15
  273. package/modern/LineChart/LineElement.js +5 -3
  274. package/modern/LineChart/LineHighlightElement.js +2 -0
  275. package/modern/LineChart/LineHighlightPlot.js +10 -8
  276. package/modern/LineChart/LinePlot.js +67 -60
  277. package/modern/LineChart/MarkElement.js +7 -23
  278. package/modern/LineChart/MarkPlot.js +22 -12
  279. package/modern/LineChart/formatter.js +2 -2
  280. package/modern/LineChart/index.js +12 -11
  281. package/modern/LineChart/legend.js +4 -3
  282. package/modern/LineChart/markElementClasses.js +19 -0
  283. package/modern/LineChart/plugin.js +3 -3
  284. package/modern/LineChart/useLineChartProps.js +8 -4
  285. package/modern/PieChart/PieArc.js +3 -1
  286. package/modern/PieChart/PieArcLabel.js +2 -0
  287. package/modern/PieChart/PieArcLabelPlot.js +6 -4
  288. package/modern/PieChart/PieArcPlot.js +6 -4
  289. package/modern/PieChart/PieChart.js +22 -8
  290. package/modern/PieChart/PiePlot.js +8 -6
  291. package/modern/PieChart/dataTransform/useTransformData.js +3 -1
  292. package/modern/PieChart/formatter.js +1 -1
  293. package/modern/PieChart/getPieCoordinates.js +1 -1
  294. package/modern/PieChart/index.js +7 -7
  295. package/modern/PieChart/legend.js +4 -2
  296. package/modern/PieChart/plugin.js +2 -2
  297. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +5 -3
  298. package/modern/ResponsiveChartContainer/index.js +1 -1
  299. package/modern/ResponsiveChartContainer/useChartContainerDimensions.js +3 -1
  300. package/modern/ResponsiveChartContainer/useResponsiveChartContainerProps.js +3 -1
  301. package/modern/ScatterChart/Scatter.js +7 -5
  302. package/modern/ScatterChart/ScatterChart.js +26 -12
  303. package/modern/ScatterChart/ScatterPlot.js +7 -5
  304. package/modern/ScatterChart/formatter.js +1 -1
  305. package/modern/ScatterChart/index.js +3 -3
  306. package/modern/ScatterChart/legend.js +4 -3
  307. package/modern/ScatterChart/plugin.js +3 -3
  308. package/modern/ScatterChart/useScatterChartProps.js +2 -0
  309. package/modern/SparkLineChart/SparkLineChart.js +8 -6
  310. package/modern/SparkLineChart/index.js +1 -1
  311. package/modern/colorPalettes/index.js +1 -1
  312. package/modern/context/CartesianProvider/CartesianProvider.js +8 -6
  313. package/modern/context/CartesianProvider/computeValue.js +6 -6
  314. package/modern/context/CartesianProvider/defaultizeAxis.js +1 -1
  315. package/modern/context/CartesianProvider/index.js +5 -5
  316. package/modern/context/CartesianProvider/useCartesianContext.js +3 -1
  317. package/modern/context/DrawingProvider.js +3 -1
  318. package/modern/context/HighlightedProvider/HighlightedProvider.js +6 -4
  319. package/modern/context/HighlightedProvider/index.js +4 -4
  320. package/modern/context/HighlightedProvider/useHighlighted.js +3 -1
  321. package/modern/context/HighlightedProvider/useItemHighlighted.js +3 -1
  322. package/modern/context/InteractionProvider.js +2 -0
  323. package/modern/context/PluginProvider/PluginProvider.js +4 -2
  324. package/modern/context/PluginProvider/index.js +10 -10
  325. package/modern/context/PluginProvider/mergePlugins.js +4 -4
  326. package/modern/context/PluginProvider/useColorProcessor.js +3 -1
  327. package/modern/context/PluginProvider/useSeriesFormatter.js +3 -1
  328. package/modern/context/PluginProvider/useXExtremumGetter.js +1 -1
  329. package/modern/context/PluginProvider/useYExtremumGetter.js +1 -1
  330. package/modern/context/SeriesProvider/SeriesProvider.js +6 -4
  331. package/modern/context/SeriesProvider/index.js +4 -4
  332. package/modern/context/SeriesProvider/processSeries.js +1 -1
  333. package/modern/context/ZAxisContextProvider.js +3 -1
  334. package/modern/context/index.js +2 -2
  335. package/modern/hooks/index.js +7 -7
  336. package/modern/hooks/useAxis.js +3 -1
  337. package/modern/hooks/useAxisEvents.js +8 -6
  338. package/modern/hooks/useChartDimensions.js +3 -1
  339. package/modern/hooks/useChartId.js +3 -1
  340. package/modern/hooks/useColorScale.js +4 -2
  341. package/modern/hooks/useDrawingArea.js +3 -1
  342. package/modern/hooks/useInteractionItemProps.js +4 -2
  343. package/modern/hooks/useMounted.js +2 -0
  344. package/modern/hooks/useReducedMotion.js +15 -12
  345. package/modern/hooks/useScale.js +4 -2
  346. package/modern/hooks/useSeries.js +3 -1
  347. package/modern/hooks/useSvgRef.js +3 -1
  348. package/modern/hooks/useTicks.js +4 -2
  349. package/modern/index.js +27 -27
  350. package/modern/internals/components/AxisSharedComponents.js +1 -1
  351. package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +5 -5
  352. package/modern/internals/components/ChartsAxesGradients/index.js +1 -1
  353. package/modern/internals/getWordsByLines.js +1 -1
  354. package/modern/internals/index.js +31 -31
  355. package/modern/internals/isCartesian.js +1 -1
  356. package/{internals/useAnimatedPath.js → modern/internals/useStringInterpolator.js} +2 -15
  357. package/modern/models/index.js +5 -3
  358. package/modern/models/seriesType/index.js +4 -4
  359. package/modern/themeAugmentation/index.js +0 -3
  360. package/node/BarChart/BarChart.js +16 -4
  361. package/node/BarChart/BarClipPath.js +2 -3
  362. package/node/BarChart/BarElement.js +3 -3
  363. package/node/BarChart/BarLabel/BarLabel.js +3 -3
  364. package/node/BarChart/BarLabel/BarLabelItem.js +2 -3
  365. package/node/BarChart/BarLabel/BarLabelPlot.js +2 -3
  366. package/node/BarChart/BarLabel/barLabelClasses.js +1 -1
  367. package/node/BarChart/BarPlot.js +3 -3
  368. package/node/BarChart/formatter.js +1 -1
  369. package/node/BarChart/legend.js +3 -2
  370. package/node/BarChart/plugin.js +1 -1
  371. package/node/BarChart/useBarChartProps.js +2 -1
  372. package/node/ChartContainer/ChartContainer.js +3 -3
  373. package/node/ChartContainer/useChartContainerProps.js +3 -3
  374. package/node/ChartContainer/useDefaultizeAxis.js +3 -3
  375. package/node/ChartsAxis/ChartsAxis.js +3 -3
  376. package/node/ChartsAxisHighlight/ChartsAxisHighlight.js +3 -3
  377. package/node/ChartsClipPath/ChartsClipPath.js +3 -3
  378. package/node/ChartsGrid/ChartsGrid.js +18 -66
  379. package/node/ChartsGrid/ChartsHorizontalGrid.js +43 -0
  380. package/node/ChartsGrid/ChartsVerticalGrid.js +43 -0
  381. package/node/ChartsGrid/chartsGridClasses.js +1 -1
  382. package/node/ChartsGrid/styledCommonents.js +28 -0
  383. package/node/ChartsLegend/ChartsLegend.js +66 -24
  384. package/node/ChartsLegend/ChartsLegendItem.js +72 -0
  385. package/node/ChartsLegend/ContinuousColorLegend.js +3 -3
  386. package/node/ChartsLegend/DefaultChartsLegend.js +31 -7
  387. package/node/ChartsLegend/LegendPerItem.js +20 -35
  388. package/node/ChartsLegend/PiecewiseColorLegend.js +29 -15
  389. package/node/ChartsLegend/chartsLegendClasses.js +1 -1
  390. package/node/ChartsLegend/legendItemsPlacement.js +1 -1
  391. package/node/ChartsLegend/useAxis.js +2 -2
  392. package/node/ChartsLegend/utils.js +1 -1
  393. package/node/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
  394. package/node/ChartsOverlay/ChartsLoadingOverlay.js +3 -3
  395. package/node/ChartsOverlay/ChartsNoDataOverlay.js +3 -3
  396. package/node/ChartsOverlay/ChartsOverlay.js +3 -3
  397. package/node/ChartsReferenceLine/ChartsReferenceLine.js +3 -3
  398. package/node/ChartsReferenceLine/ChartsXReferenceLine.js +4 -4
  399. package/node/ChartsReferenceLine/ChartsYReferenceLine.js +4 -4
  400. package/node/ChartsReferenceLine/chartsReferenceLineClasses.js +1 -1
  401. package/node/ChartsReferenceLine/common.js +1 -1
  402. package/node/ChartsSurface/ChartsSurface.js +3 -3
  403. package/node/ChartsText/ChartsText.js +3 -3
  404. package/node/ChartsTooltip/ChartsAxisTooltipContent.js +2 -3
  405. package/node/ChartsTooltip/ChartsItemTooltipContent.js +2 -3
  406. package/node/ChartsTooltip/ChartsTooltip.js +11 -9
  407. package/node/ChartsTooltip/ChartsTooltipTable.js +9 -4
  408. package/node/ChartsTooltip/DefaultChartsAxisTooltipContent.js +4 -4
  409. package/node/ChartsTooltip/DefaultChartsItemTooltipContent.js +4 -4
  410. package/node/ChartsTooltip/chartsTooltipClasses.js +1 -1
  411. package/node/ChartsTooltip/utils.js +2 -3
  412. package/node/ChartsVoronoiHandler/ChartsVoronoiHandler.js +3 -3
  413. package/node/ChartsXAxis/ChartsXAxis.js +9 -4
  414. package/node/ChartsYAxis/ChartsYAxis.js +9 -4
  415. package/node/Gauge/Gauge.js +3 -3
  416. package/node/Gauge/GaugeContainer.js +3 -3
  417. package/node/Gauge/GaugeProvider.js +1 -2
  418. package/node/Gauge/GaugeReferenceArc.js +3 -3
  419. package/node/Gauge/GaugeValueArc.js +3 -3
  420. package/node/Gauge/GaugeValueText.js +3 -3
  421. package/node/Gauge/gaugeClasses.js +1 -1
  422. package/node/LineChart/AnimatedArea.js +31 -14
  423. package/node/LineChart/AnimatedLine.js +31 -14
  424. package/node/LineChart/AreaElement.js +3 -3
  425. package/node/LineChart/AreaPlot.js +79 -74
  426. package/node/LineChart/CircleMarkElement.js +113 -0
  427. package/node/LineChart/LineChart.js +20 -4
  428. package/node/LineChart/LineElement.js +3 -3
  429. package/node/LineChart/LineHighlightElement.js +3 -3
  430. package/node/LineChart/LineHighlightPlot.js +3 -3
  431. package/node/LineChart/LinePlot.js +61 -56
  432. package/node/LineChart/MarkElement.js +5 -25
  433. package/node/LineChart/MarkPlot.js +14 -6
  434. package/node/LineChart/formatter.js +1 -1
  435. package/node/LineChart/index.js +29 -1
  436. package/node/LineChart/legend.js +3 -2
  437. package/node/LineChart/markElementClasses.js +28 -0
  438. package/node/LineChart/plugin.js +1 -1
  439. package/node/LineChart/useLineChartProps.js +7 -4
  440. package/node/PieChart/PieArc.js +3 -3
  441. package/node/PieChart/PieArcLabel.js +3 -3
  442. package/node/PieChart/PieArcLabelPlot.js +3 -3
  443. package/node/PieChart/PieArcPlot.js +3 -3
  444. package/node/PieChart/PieChart.js +15 -3
  445. package/node/PieChart/PiePlot.js +3 -3
  446. package/node/PieChart/dataTransform/useTransformData.js +3 -3
  447. package/node/PieChart/formatter.js +1 -1
  448. package/node/PieChart/legend.js +3 -1
  449. package/node/PieChart/plugin.js +1 -1
  450. package/node/ResponsiveChartContainer/ResponsiveChartContainer.js +3 -3
  451. package/node/ResponsiveChartContainer/useChartContainerDimensions.js +4 -4
  452. package/node/ResponsiveChartContainer/useResponsiveChartContainerProps.js +2 -1
  453. package/node/ScatterChart/Scatter.js +3 -3
  454. package/node/ScatterChart/ScatterChart.js +16 -4
  455. package/node/ScatterChart/ScatterPlot.js +3 -3
  456. package/node/ScatterChart/legend.js +3 -2
  457. package/node/ScatterChart/plugin.js +1 -1
  458. package/node/ScatterChart/useScatterChartProps.js +2 -1
  459. package/node/SparkLineChart/SparkLineChart.js +3 -3
  460. package/node/context/CartesianProvider/CartesianContext.js +1 -2
  461. package/node/context/CartesianProvider/CartesianProvider.js +2 -2
  462. package/node/context/CartesianProvider/computeValue.js +1 -1
  463. package/node/context/CartesianProvider/defaultizeAxis.js +1 -1
  464. package/node/context/CartesianProvider/useCartesianContext.js +2 -2
  465. package/node/context/DrawingProvider.js +3 -3
  466. package/node/context/HighlightedProvider/HighlightedContext.js +1 -2
  467. package/node/context/HighlightedProvider/HighlightedProvider.js +3 -3
  468. package/node/context/HighlightedProvider/useHighlighted.js +2 -2
  469. package/node/context/HighlightedProvider/useItemHighlighted.js +1 -0
  470. package/node/context/InteractionProvider.js +3 -3
  471. package/node/context/PluginProvider/PluginContext.js +1 -2
  472. package/node/context/PluginProvider/PluginProvider.js +2 -2
  473. package/node/context/PluginProvider/useColorProcessor.js +2 -2
  474. package/node/context/PluginProvider/useSeriesFormatter.js +2 -2
  475. package/node/context/PluginProvider/useXExtremumGetter.js +1 -2
  476. package/node/context/PluginProvider/useYExtremumGetter.js +1 -2
  477. package/node/context/SeriesProvider/SeriesContext.js +1 -2
  478. package/node/context/SeriesProvider/SeriesProvider.js +2 -2
  479. package/node/context/SeriesProvider/processSeries.js +1 -1
  480. package/node/context/ZAxisContextProvider.js +3 -3
  481. package/node/hooks/useAxis.js +1 -0
  482. package/node/hooks/useAxisEvents.js +2 -2
  483. package/node/hooks/useChartDimensions.js +3 -3
  484. package/node/hooks/useChartId.js +2 -2
  485. package/node/hooks/useColorScale.js +2 -2
  486. package/node/hooks/useDrawingArea.js +2 -2
  487. package/node/hooks/useInteractionItemProps.js +2 -2
  488. package/node/hooks/useMounted.js +3 -3
  489. package/node/hooks/useReducedMotion.js +15 -12
  490. package/node/hooks/useScale.js +1 -0
  491. package/node/hooks/useSeries.js +2 -2
  492. package/node/hooks/useSvgRef.js +2 -2
  493. package/node/hooks/useTicks.js +2 -2
  494. package/node/index.js +1 -1
  495. package/node/internals/components/AxisSharedComponents.js +1 -1
  496. package/node/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +2 -3
  497. package/node/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +1 -2
  498. package/node/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +1 -2
  499. package/node/internals/defaultizeColor.js +1 -1
  500. package/node/internals/defaultizeValueFormatter.js +1 -1
  501. package/node/internals/domUtils.js +1 -1
  502. package/node/internals/getWordsByLines.js +1 -1
  503. package/node/internals/useStringInterpolator.js +28 -0
  504. package/node/tests/firePointerEvent.js +1 -1
  505. package/node/themeAugmentation/index.js +1 -38
  506. package/package.json +4 -3
  507. package/themeAugmentation/components.d.ts +2 -0
  508. package/themeAugmentation/index.d.ts +3 -3
  509. package/themeAugmentation/index.js +0 -3
  510. package/themeAugmentation/overrides.d.ts +6 -4
  511. package/internals/useAnimatedPath.d.ts +0 -1
  512. package/internals/warning.d.ts +0 -2
  513. package/internals/warning.js +0 -21
  514. package/modern/internals/warning.js +0 -21
  515. package/node/internals/useAnimatedPath.js +0 -42
  516. package/node/internals/warning.js +0 -28
@@ -1,94 +1,101 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["slots", "slotProps", "onItemClick", "skipAnimation"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
8
  import { area as d3Area } from '@mui/x-charts-vendor/d3-shape';
7
- import { useCartesianContext } from '../context/CartesianProvider';
8
- import { AreaElement } from './AreaElement';
9
- import { getValueToPositionMapper } from '../hooks/useScale';
10
- import getCurveFactory from '../internals/getCurve';
11
- import { DEFAULT_X_AXIS_KEY } from '../constants';
12
- import { useChartGradient } from '../internals/components/ChartsAxesGradients';
13
- import { useLineSeries } from '../hooks/useSeries';
9
+ import { useCartesianContext } from "../context/CartesianProvider/index.js";
10
+ import { AreaElement } from "./AreaElement.js";
11
+ import { getValueToPositionMapper } from "../hooks/useScale.js";
12
+ import getCurveFactory from "../internals/getCurve.js";
13
+ import { DEFAULT_X_AXIS_KEY } from "../constants/index.js";
14
+ import { useChartGradient } from "../internals/components/ChartsAxesGradients/index.js";
15
+ import { useLineSeries } from "../hooks/useSeries.js";
14
16
  import { jsx as _jsx } from "react/jsx-runtime";
15
17
  const useAggregatedData = () => {
16
18
  const seriesData = useLineSeries();
17
19
  const axisData = useCartesianContext();
18
- if (seriesData === undefined) {
19
- return [];
20
- }
21
- const {
22
- series,
23
- stackingGroups
24
- } = seriesData;
25
- const {
26
- xAxis,
27
- yAxis,
28
- xAxisIds,
29
- yAxisIds
30
- } = axisData;
31
- const defaultXAxisId = xAxisIds[0];
32
- const defaultYAxisId = yAxisIds[0];
33
- return stackingGroups.flatMap(({
34
- ids: groupIds
35
- }) => {
36
- return [...groupIds].reverse() // Revert stacked area for a more pleasant animation
37
- .map(seriesId => {
38
- const {
39
- xAxisId: xAxisIdProp,
40
- yAxisId: yAxisIdProp,
41
- xAxisKey = defaultXAxisId,
42
- yAxisKey = defaultYAxisId,
43
- stackedData,
44
- data,
45
- connectNulls,
46
- baseline
47
- } = series[seriesId];
48
- const xAxisId = xAxisIdProp ?? xAxisKey;
49
- const yAxisId = yAxisIdProp ?? yAxisKey;
50
- const xScale = getValueToPositionMapper(xAxis[xAxisId].scale);
51
- const yScale = yAxis[yAxisId].scale;
52
- const xData = xAxis[xAxisId].data;
53
- const gradientUsed = yAxis[yAxisId].colorScale && [yAxisId, 'y'] || xAxis[xAxisId].colorScale && [xAxisId, 'x'] || undefined;
54
- if (process.env.NODE_ENV !== 'production') {
55
- if (xData === undefined) {
56
- throw new Error(`MUI X: ${xAxisId === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisId}"`} should have data property to be able to display a line plot.`);
57
- }
58
- if (xData.length < stackedData.length) {
59
- throw new Error(`MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
60
- }
61
- }
62
- const areaPath = d3Area().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y0(d => {
63
- if (typeof baseline === 'number') {
64
- return yScale(baseline);
65
- }
66
- if (baseline === 'max') {
67
- return yScale.range()[1];
68
- }
69
- if (baseline === 'min') {
70
- return yScale.range()[0];
71
- }
72
- const value = d.y && yScale(d.y[0]);
73
- if (Number.isNaN(value)) {
74
- return yScale.range()[0];
20
+
21
+ // This memo prevents odd line chart behavior when hydrating.
22
+ const allData = React.useMemo(() => {
23
+ if (seriesData === undefined) {
24
+ return [];
25
+ }
26
+ const {
27
+ series,
28
+ stackingGroups
29
+ } = seriesData;
30
+ const {
31
+ xAxis,
32
+ yAxis,
33
+ xAxisIds,
34
+ yAxisIds
35
+ } = axisData;
36
+ const defaultXAxisId = xAxisIds[0];
37
+ const defaultYAxisId = yAxisIds[0];
38
+ return stackingGroups.flatMap(({
39
+ ids: groupIds
40
+ }) => {
41
+ return [...groupIds].reverse() // Revert stacked area for a more pleasant animation
42
+ .map(seriesId => {
43
+ const {
44
+ xAxisId: xAxisIdProp,
45
+ yAxisId: yAxisIdProp,
46
+ xAxisKey = defaultXAxisId,
47
+ yAxisKey = defaultYAxisId,
48
+ stackedData,
49
+ data,
50
+ connectNulls,
51
+ baseline
52
+ } = series[seriesId];
53
+ const xAxisId = xAxisIdProp ?? xAxisKey;
54
+ const yAxisId = yAxisIdProp ?? yAxisKey;
55
+ const xScale = getValueToPositionMapper(xAxis[xAxisId].scale);
56
+ const yScale = yAxis[yAxisId].scale;
57
+ const xData = xAxis[xAxisId].data;
58
+ const gradientUsed = yAxis[yAxisId].colorScale && [yAxisId, 'y'] || xAxis[xAxisId].colorScale && [xAxisId, 'x'] || undefined;
59
+ if (process.env.NODE_ENV !== 'production') {
60
+ if (xData === undefined) {
61
+ throw new Error(`MUI X: ${xAxisId === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisId}"`} should have data property to be able to display a line plot.`);
62
+ }
63
+ if (xData.length < stackedData.length) {
64
+ throw new Error(`MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
65
+ }
75
66
  }
76
- return value;
77
- }).y1(d => d.y && yScale(d.y[1]));
78
- const curve = getCurveFactory(series[seriesId].curve);
79
- const formattedData = xData?.map((x, index) => ({
80
- x,
81
- y: stackedData[index]
82
- })) ?? [];
83
- const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
84
- const d = areaPath.curve(curve)(d3Data) || '';
85
- return _extends({}, series[seriesId], {
86
- gradientUsed,
87
- d,
88
- seriesId
67
+ const areaPath = d3Area().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y0(d => {
68
+ if (typeof baseline === 'number') {
69
+ return yScale(baseline);
70
+ }
71
+ if (baseline === 'max') {
72
+ return yScale.range()[1];
73
+ }
74
+ if (baseline === 'min') {
75
+ return yScale.range()[0];
76
+ }
77
+ const value = d.y && yScale(d.y[0]);
78
+ if (Number.isNaN(value)) {
79
+ return yScale.range()[0];
80
+ }
81
+ return value;
82
+ }).y1(d => d.y && yScale(d.y[1]));
83
+ const curve = getCurveFactory(series[seriesId].curve);
84
+ const formattedData = xData?.map((x, index) => ({
85
+ x,
86
+ y: stackedData[index]
87
+ })) ?? [];
88
+ const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
89
+ const d = areaPath.curve(curve)(d3Data) || '';
90
+ return _extends({}, series[seriesId], {
91
+ gradientUsed,
92
+ d,
93
+ seriesId
94
+ });
89
95
  });
90
96
  });
91
- });
97
+ }, [seriesData, axisData]);
98
+ return allData;
92
99
  };
93
100
 
94
101
  /**
@@ -0,0 +1,107 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
+ const _excluded = ["x", "y", "id", "classes", "color", "dataIndex", "onClick", "skipAnimation", "shape"];
6
+ import * as React from 'react';
7
+ import PropTypes from 'prop-types';
8
+ import { useTheme } from '@mui/material/styles';
9
+ import { warnOnce } from '@mui/x-internals/warning';
10
+ import { animated, useSpring } from '@react-spring/web';
11
+ import { InteractionContext } from "../context/InteractionProvider.js";
12
+ import { useInteractionItemProps } from "../hooks/useInteractionItemProps.js";
13
+ import { useItemHighlighted } from "../context/index.js";
14
+ import { useUtilityClasses } from "./markElementClasses.js";
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ /**
17
+ * The line mark element that only render circle for performance improvement.
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
+ * - [CircleMarkElement API](https://mui.com/x/api/charts/circle-mark-element/)
27
+ */
28
+ function CircleMarkElement(props) {
29
+ const {
30
+ x,
31
+ y,
32
+ id,
33
+ classes: innerClasses,
34
+ color,
35
+ dataIndex,
36
+ onClick,
37
+ skipAnimation,
38
+ shape
39
+ } = props,
40
+ other = _objectWithoutPropertiesLoose(props, _excluded);
41
+ if (shape !== 'circle') {
42
+ warnOnce([`MUI X: The mark element of your line chart have shape "${shape}" which is not supported when using \`experimentalRendering=true\`.`, 'Only "circle" are supported with `experimentalRendering`.'].join('\n'), 'error');
43
+ }
44
+ const theme = useTheme();
45
+ const getInteractionItemProps = useInteractionItemProps();
46
+ const {
47
+ isFaded,
48
+ isHighlighted
49
+ } = useItemHighlighted({
50
+ seriesId: id
51
+ });
52
+ const {
53
+ axis
54
+ } = React.useContext(InteractionContext);
55
+ const position = useSpring({
56
+ to: {
57
+ x,
58
+ y
59
+ },
60
+ immediate: skipAnimation
61
+ });
62
+ const ownerState = {
63
+ id,
64
+ classes: innerClasses,
65
+ isHighlighted: axis.x?.index === dataIndex || isHighlighted,
66
+ isFaded,
67
+ color
68
+ };
69
+ const classes = useUtilityClasses(ownerState);
70
+ return /*#__PURE__*/_jsx(animated.circle, _extends({}, other, {
71
+ cx: position.x,
72
+ cy: position.y,
73
+ r: 5,
74
+ fill: (theme.vars || theme).palette.background.paper,
75
+ stroke: color,
76
+ strokeWidth: 2,
77
+ className: classes.root,
78
+ onClick: onClick,
79
+ cursor: onClick ? 'pointer' : 'unset'
80
+ }, getInteractionItemProps({
81
+ type: 'line',
82
+ seriesId: id,
83
+ dataIndex
84
+ })));
85
+ }
86
+ process.env.NODE_ENV !== "production" ? CircleMarkElement.propTypes = {
87
+ // ----------------------------- Warning --------------------------------
88
+ // | These PropTypes are generated from the TypeScript type definitions |
89
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
90
+ // ----------------------------------------------------------------------
91
+ classes: PropTypes.object,
92
+ /**
93
+ * The index to the element in the series' data array.
94
+ */
95
+ dataIndex: PropTypes.number.isRequired,
96
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
97
+ /**
98
+ * The shape of the marker.
99
+ */
100
+ shape: PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']).isRequired,
101
+ /**
102
+ * If `true`, animations are skipped.
103
+ * @default false
104
+ */
105
+ skipAnimation: PropTypes.bool
106
+ } : void 0;
107
+ export { CircleMarkElement };
@@ -1,21 +1,23 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
4
6
  import { useThemeProps } from '@mui/material/styles';
5
- import { AreaPlot } from './AreaPlot';
6
- import { LinePlot } from './LinePlot';
7
- import { ResponsiveChartContainer } from '../ResponsiveChartContainer';
8
- import { MarkPlot } from './MarkPlot';
9
- import { ChartsAxis } from '../ChartsAxis/ChartsAxis';
10
- import { ChartsTooltip } from '../ChartsTooltip';
11
- import { ChartsLegend } from '../ChartsLegend';
12
- import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
13
- import { ChartsClipPath } from '../ChartsClipPath';
14
- import { LineHighlightPlot } from './LineHighlightPlot';
15
- import { ChartsGrid } from '../ChartsGrid';
16
- import { ChartsOnAxisClickHandler } from '../ChartsOnAxisClickHandler';
17
- import { ChartsOverlay } from '../ChartsOverlay';
18
- import { useLineChartProps } from './useLineChartProps';
7
+ import { AreaPlot } from "./AreaPlot.js";
8
+ import { LinePlot } from "./LinePlot.js";
9
+ import { ResponsiveChartContainer } from "../ResponsiveChartContainer/index.js";
10
+ import { MarkPlot } from "./MarkPlot.js";
11
+ import { ChartsAxis } from "../ChartsAxis/ChartsAxis.js";
12
+ import { ChartsTooltip } from "../ChartsTooltip/index.js";
13
+ import { ChartsLegend } from "../ChartsLegend/index.js";
14
+ import { ChartsAxisHighlight } from "../ChartsAxisHighlight/index.js";
15
+ import { ChartsClipPath } from "../ChartsClipPath/index.js";
16
+ import { LineHighlightPlot } from "./LineHighlightPlot.js";
17
+ import { ChartsGrid } from "../ChartsGrid/index.js";
18
+ import { ChartsOnAxisClickHandler } from "../ChartsOnAxisClickHandler/index.js";
19
+ import { ChartsOverlay } from "../ChartsOverlay/index.js";
20
+ import { useLineChartProps } from "./useLineChartProps.js";
19
21
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
22
  /**
21
23
  * Demos:
@@ -52,7 +54,7 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(inProps, ref)
52
54
  return /*#__PURE__*/_jsxs(ResponsiveChartContainer, _extends({
53
55
  ref: ref
54
56
  }, chartContainerProps, {
55
- children: [props.onAxisClick && /*#__PURE__*/_jsx(ChartsOnAxisClickHandler, _extends({}, axisClickHandlerProps)), props.grid && /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
57
+ children: [props.onAxisClick && /*#__PURE__*/_jsx(ChartsOnAxisClickHandler, _extends({}, axisClickHandlerProps)), /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
56
58
  children: [/*#__PURE__*/_jsx(AreaPlot, _extends({}, areaPlotProps)), /*#__PURE__*/_jsx(LinePlot, _extends({}, linePlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps))]
57
59
  })), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx("g", {
58
60
  "data-drawing-container": true,
@@ -102,6 +104,10 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
102
104
  * If `true`, render the line highlight item.
103
105
  */
104
106
  disableLineItemHighlight: PropTypes.bool,
107
+ /**
108
+ * If `true` marks will render `<circle />` instead of `<path />` and drop theme override for faster rendering.
109
+ */
110
+ experimentalMarkRendering: PropTypes.bool,
105
111
  /**
106
112
  * Option to display a cartesian grid in the background.
107
113
  */
@@ -133,6 +139,18 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
133
139
  classes: PropTypes.object,
134
140
  direction: PropTypes.oneOf(['column', 'row']),
135
141
  hidden: PropTypes.bool,
142
+ itemGap: PropTypes.number,
143
+ itemMarkHeight: PropTypes.number,
144
+ itemMarkWidth: PropTypes.number,
145
+ labelStyle: PropTypes.object,
146
+ markGap: PropTypes.number,
147
+ onItemClick: PropTypes.func,
148
+ padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
149
+ bottom: PropTypes.number,
150
+ left: PropTypes.number,
151
+ right: PropTypes.number,
152
+ top: PropTypes.number
153
+ })]),
136
154
  position: PropTypes.shape({
137
155
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
138
156
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["id", "classes", "color", "gradientId", "slots", "slotProps", "onClick"];
@@ -7,9 +9,9 @@ import composeClasses from '@mui/utils/composeClasses';
7
9
  import useSlotProps from '@mui/utils/useSlotProps';
8
10
  import generateUtilityClass from '@mui/utils/generateUtilityClass';
9
11
  import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
10
- import { useInteractionItemProps } from '../hooks/useInteractionItemProps';
11
- import { AnimatedLine } from './AnimatedLine';
12
- import { useItemHighlighted } from '../context';
12
+ import { useInteractionItemProps } from "../hooks/useInteractionItemProps.js";
13
+ import { AnimatedLine } from "./AnimatedLine.js";
14
+ import { useItemHighlighted } from "../context/index.js";
13
15
  import { jsx as _jsx } from "react/jsx-runtime";
14
16
  export function getLineElementUtilityClass(slot) {
15
17
  return generateUtilityClass('MuiLineElement', slot);
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["x", "y", "id", "classes", "color"];
@@ -1,16 +1,18 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["slots", "slotProps"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
- import { useCartesianContext } from '../context/CartesianProvider';
7
- import { LineHighlightElement } from './LineHighlightElement';
8
- import { getValueToPositionMapper } from '../hooks/useScale';
9
- import { InteractionContext } from '../context/InteractionProvider';
10
- import { DEFAULT_X_AXIS_KEY } from '../constants';
11
- import getColor from './getColor';
12
- import { useLineSeries } from '../hooks/useSeries';
13
- import { useDrawingArea } from '../hooks/useDrawingArea';
8
+ import { useCartesianContext } from "../context/CartesianProvider/index.js";
9
+ import { LineHighlightElement } from "./LineHighlightElement.js";
10
+ import { getValueToPositionMapper } from "../hooks/useScale.js";
11
+ import { InteractionContext } from "../context/InteractionProvider.js";
12
+ import { DEFAULT_X_AXIS_KEY } from "../constants/index.js";
13
+ import getColor from "./getColor.js";
14
+ import { useLineSeries } from "../hooks/useSeries.js";
15
+ import { useDrawingArea } from "../hooks/useDrawingArea.js";
14
16
  import { jsx as _jsx } from "react/jsx-runtime";
15
17
  /**
16
18
  * Demos:
@@ -1,76 +1,83 @@
1
+ 'use client';
2
+
1
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
4
  import _extends from "@babel/runtime/helpers/esm/extends";
3
5
  const _excluded = ["slots", "slotProps", "skipAnimation", "onItemClick"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
8
  import { line as d3Line } from '@mui/x-charts-vendor/d3-shape';
7
- import { useCartesianContext } from '../context/CartesianProvider';
8
- import { LineElement } from './LineElement';
9
- import { getValueToPositionMapper } from '../hooks/useScale';
10
- import getCurveFactory from '../internals/getCurve';
11
- import { DEFAULT_X_AXIS_KEY } from '../constants';
12
- import { useChartGradient } from '../internals/components/ChartsAxesGradients';
13
- import { useLineSeries } from '../hooks/useSeries';
9
+ import { useCartesianContext } from "../context/CartesianProvider/index.js";
10
+ import { LineElement } from "./LineElement.js";
11
+ import { getValueToPositionMapper } from "../hooks/useScale.js";
12
+ import getCurveFactory from "../internals/getCurve.js";
13
+ import { DEFAULT_X_AXIS_KEY } from "../constants/index.js";
14
+ import { useChartGradient } from "../internals/components/ChartsAxesGradients/index.js";
15
+ import { useLineSeries } from "../hooks/useSeries.js";
14
16
  import { jsx as _jsx } from "react/jsx-runtime";
15
17
  const useAggregatedData = () => {
16
18
  const seriesData = useLineSeries();
17
19
  const axisData = useCartesianContext();
18
- if (seriesData === undefined) {
19
- return [];
20
- }
21
- const {
22
- series,
23
- stackingGroups
24
- } = seriesData;
25
- const {
26
- xAxis,
27
- yAxis,
28
- xAxisIds,
29
- yAxisIds
30
- } = axisData;
31
- const defaultXAxisId = xAxisIds[0];
32
- const defaultYAxisId = yAxisIds[0];
33
- return stackingGroups.flatMap(({
34
- ids: groupIds
35
- }) => {
36
- return groupIds.flatMap(seriesId => {
37
- const {
38
- xAxisId: xAxisIdProp,
39
- yAxisId: yAxisIdProp,
40
- xAxisKey = defaultXAxisId,
41
- yAxisKey = defaultYAxisId,
42
- stackedData,
43
- data,
44
- connectNulls
45
- } = series[seriesId];
46
- const xAxisId = xAxisIdProp ?? xAxisKey;
47
- const yAxisId = yAxisIdProp ?? yAxisKey;
48
- const xScale = getValueToPositionMapper(xAxis[xAxisId].scale);
49
- const yScale = yAxis[yAxisId].scale;
50
- const xData = xAxis[xAxisId].data;
51
- const gradientUsed = yAxis[yAxisId].colorScale && [yAxisId, 'y'] || xAxis[xAxisId].colorScale && [xAxisId, 'x'] || undefined;
52
- if (process.env.NODE_ENV !== 'production') {
53
- if (xData === undefined) {
54
- throw new Error(`MUI X: ${xAxisId === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisId}"`} should have data property to be able to display a line plot.`);
55
- }
56
- if (xData.length < stackedData.length) {
57
- throw new Error(`MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
20
+
21
+ // This memo prevents odd line chart behavior when hydrating.
22
+ const allData = React.useMemo(() => {
23
+ if (seriesData === undefined) {
24
+ return [];
25
+ }
26
+ const {
27
+ series,
28
+ stackingGroups
29
+ } = seriesData;
30
+ const {
31
+ xAxis,
32
+ yAxis,
33
+ xAxisIds,
34
+ yAxisIds
35
+ } = axisData;
36
+ const defaultXAxisId = xAxisIds[0];
37
+ const defaultYAxisId = yAxisIds[0];
38
+ return stackingGroups.flatMap(({
39
+ ids: groupIds
40
+ }) => {
41
+ return groupIds.flatMap(seriesId => {
42
+ const {
43
+ xAxisId: xAxisIdProp,
44
+ yAxisId: yAxisIdProp,
45
+ xAxisKey = defaultXAxisId,
46
+ yAxisKey = defaultYAxisId,
47
+ stackedData,
48
+ data,
49
+ connectNulls
50
+ } = series[seriesId];
51
+ const xAxisId = xAxisIdProp ?? xAxisKey;
52
+ const yAxisId = yAxisIdProp ?? yAxisKey;
53
+ const xScale = getValueToPositionMapper(xAxis[xAxisId].scale);
54
+ const yScale = yAxis[yAxisId].scale;
55
+ const xData = xAxis[xAxisId].data;
56
+ const gradientUsed = yAxis[yAxisId].colorScale && [yAxisId, 'y'] || xAxis[xAxisId].colorScale && [xAxisId, 'x'] || undefined;
57
+ if (process.env.NODE_ENV !== 'production') {
58
+ if (xData === undefined) {
59
+ throw new Error(`MUI X: ${xAxisId === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisId}"`} should have data property to be able to display a line plot.`);
60
+ }
61
+ if (xData.length < stackedData.length) {
62
+ throw new Error(`MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
63
+ }
58
64
  }
59
- }
60
- const linePath = d3Line().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y(d => yScale(d.y[1]));
61
- const formattedData = xData?.map((x, index) => ({
62
- x,
63
- y: stackedData[index]
64
- })) ?? [];
65
- const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
66
- const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || '';
67
- return _extends({}, series[seriesId], {
68
- gradientUsed,
69
- d,
70
- seriesId
65
+ const linePath = d3Line().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y(d => yScale(d.y[1]));
66
+ const formattedData = xData?.map((x, index) => ({
67
+ x,
68
+ y: stackedData[index]
69
+ })) ?? [];
70
+ const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
71
+ const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || '';
72
+ return _extends({}, series[seriesId], {
73
+ gradientUsed,
74
+ d,
75
+ seriesId
76
+ });
71
77
  });
72
78
  });
73
- });
79
+ }, [seriesData, axisData]);
80
+ return allData;
74
81
  };
75
82
 
76
83
  /**
@@ -1,35 +1,19 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
5
  const _excluded = ["x", "y", "id", "classes", "color", "shape", "dataIndex", "onClick", "skipAnimation"];
4
6
  import * as React from 'react';
5
7
  import PropTypes from 'prop-types';
6
- import composeClasses from '@mui/utils/composeClasses';
7
- import generateUtilityClass from '@mui/utils/generateUtilityClass';
8
8
  import { styled } from '@mui/material/styles';
9
- import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
10
9
  import { symbol as d3Symbol, symbolsFill as d3SymbolsFill } from '@mui/x-charts-vendor/d3-shape';
11
10
  import { animated, to, useSpring } from '@react-spring/web';
12
- import { getSymbol } from '../internals/getSymbol';
13
- import { InteractionContext } from '../context/InteractionProvider';
14
- import { useInteractionItemProps } from '../hooks/useInteractionItemProps';
15
- import { useItemHighlighted } from '../context';
11
+ import { getSymbol } from "../internals/getSymbol.js";
12
+ import { InteractionContext } from "../context/InteractionProvider.js";
13
+ import { useInteractionItemProps } from "../hooks/useInteractionItemProps.js";
14
+ import { useItemHighlighted } from "../context/index.js";
15
+ import { useUtilityClasses } from "./markElementClasses.js";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
- export function getMarkElementUtilityClass(slot) {
18
- return generateUtilityClass('MuiMarkElement', slot);
19
- }
20
- export const markElementClasses = generateUtilityClasses('MuiMarkElement', ['root', 'highlighted', 'faded']);
21
- const useUtilityClasses = ownerState => {
22
- const {
23
- classes,
24
- id,
25
- isFaded,
26
- isHighlighted
27
- } = ownerState;
28
- const slots = {
29
- root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded']
30
- };
31
- return composeClasses(slots, getMarkElementUtilityClass, classes);
32
- };
33
17
  const MarkElementPath = styled(animated.path, {
34
18
  name: 'MuiMarkElement',
35
19
  slot: 'Root',