@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
@@ -15,6 +15,16 @@ import { ChartsClipPath } from '../ChartsClipPath';
15
15
  import { LineHighlightPlot } from './LineHighlightPlot';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ /**
19
+ * Demos:
20
+ *
21
+ * - [Lines](https://mui.com/x/react-charts/lines/)
22
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
23
+ *
24
+ * API:
25
+ *
26
+ * - [LineChart API](https://mui.com/x/api/charts/line-chart/)
27
+ */
18
28
  const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
19
29
  const {
20
30
  xAxis,
@@ -88,7 +98,10 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
88
98
  }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
89
99
  slots: slots,
90
100
  slotProps: slotProps
91
- })), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip)), /*#__PURE__*/_jsx(ChartsClipPath, {
101
+ })), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
102
+ slots: slots,
103
+ slotProps: slotProps
104
+ })), /*#__PURE__*/_jsx(ChartsClipPath, {
92
105
  id: clipPathId
93
106
  }), children]
94
107
  });
@@ -98,6 +111,13 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
98
111
  // | These PropTypes are generated from the TypeScript type definitions |
99
112
  // | To update them edit the TypeScript types and run "yarn proptypes" |
100
113
  // ----------------------------------------------------------------------
114
+ /**
115
+ * Object `{ x, y }` that defines how the charts highlight the mouse position along the x- and y-axes.
116
+ * The two properties accept the following values:
117
+ * - 'none': display nothing.
118
+ * - 'line': display a line at the current mouse position.
119
+ * - 'band': display a band at the current mouse position. Only available with band scale.
120
+ */
101
121
  axisHighlight: PropTypes.shape({
102
122
  x: PropTypes.oneOf(['band', 'line', 'none']),
103
123
  y: PropTypes.oneOf(['band', 'line', 'none'])
@@ -108,18 +128,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
108
128
  * @default xAxisIds[0] The id of the first provided axis
109
129
  */
110
130
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
111
- axisId: PropTypes.string.isRequired,
131
+ axisId: PropTypes.string,
112
132
  classes: PropTypes.object,
113
133
  disableLine: PropTypes.bool,
114
134
  disableTicks: PropTypes.bool,
115
135
  fill: PropTypes.string,
116
136
  label: PropTypes.string,
117
137
  labelFontSize: PropTypes.number,
138
+ labelStyle: PropTypes.object,
118
139
  position: PropTypes.oneOf(['bottom', 'top']),
119
140
  slotProps: PropTypes.object,
120
141
  slots: PropTypes.object,
121
142
  stroke: PropTypes.string,
122
143
  tickFontSize: PropTypes.number,
144
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
145
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
146
+ tickLabelStyle: PropTypes.object,
123
147
  tickMaxStep: PropTypes.number,
124
148
  tickMinStep: PropTypes.number,
125
149
  tickNumber: PropTypes.number,
@@ -131,13 +155,25 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
131
155
  * Color palette used to colorize multiple series.
132
156
  */
133
157
  colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
158
+ /**
159
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
160
+ */
134
161
  dataset: PropTypes.arrayOf(PropTypes.object),
135
162
  desc: PropTypes.string,
163
+ /**
164
+ * If `true`, the charts will not listen to the mouse move event.
165
+ * It might break interactive features, but will improve performance.
166
+ * @default false
167
+ */
136
168
  disableAxisListener: PropTypes.bool,
137
169
  /**
138
170
  * If `true`, render the line highlight item.
139
171
  */
140
172
  disableLineItemHighlight: PropTypes.bool,
173
+ /**
174
+ * The height of the chart in px. If not defined, it takes the height of the parent element.
175
+ * @default undefined
176
+ */
141
177
  height: PropTypes.number,
142
178
  /**
143
179
  * Indicate which axis to display the left of the charts.
@@ -145,41 +181,47 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
145
181
  * @default yAxisIds[0] The id of the first provided axis
146
182
  */
147
183
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
148
- axisId: PropTypes.string.isRequired,
184
+ axisId: PropTypes.string,
149
185
  classes: PropTypes.object,
150
186
  disableLine: PropTypes.bool,
151
187
  disableTicks: PropTypes.bool,
152
188
  fill: PropTypes.string,
153
189
  label: PropTypes.string,
154
190
  labelFontSize: PropTypes.number,
191
+ labelStyle: PropTypes.object,
155
192
  position: PropTypes.oneOf(['left', 'right']),
156
193
  slotProps: PropTypes.object,
157
194
  slots: PropTypes.object,
158
195
  stroke: PropTypes.string,
159
196
  tickFontSize: PropTypes.number,
197
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
198
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
199
+ tickLabelStyle: PropTypes.object,
160
200
  tickMaxStep: PropTypes.number,
161
201
  tickMinStep: PropTypes.number,
162
202
  tickNumber: PropTypes.number,
163
203
  tickSize: PropTypes.number
164
204
  }), PropTypes.string]),
205
+ /**
206
+ * @deprecated Consider using `slotProps.legend` instead.
207
+ */
165
208
  legend: PropTypes.shape({
166
209
  classes: PropTypes.object,
167
210
  direction: PropTypes.oneOf(['column', 'row']),
168
211
  hidden: PropTypes.bool,
169
- itemWidth: PropTypes.number,
170
- markSize: PropTypes.number,
171
- offset: PropTypes.shape({
172
- x: PropTypes.number,
173
- y: PropTypes.number
174
- }),
175
212
  position: PropTypes.shape({
176
213
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
177
214
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
178
215
  }),
179
216
  slotProps: PropTypes.object,
180
- slots: PropTypes.object,
181
- spacing: PropTypes.number
217
+ slots: PropTypes.object
182
218
  }),
219
+ /**
220
+ * The margin between the SVG and the drawing area.
221
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
222
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
223
+ * @default object Depends on the charts type.
224
+ */
183
225
  margin: PropTypes.shape({
184
226
  bottom: PropTypes.number,
185
227
  left: PropTypes.number,
@@ -192,18 +234,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
192
234
  * @default null
193
235
  */
194
236
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
195
- axisId: PropTypes.string.isRequired,
237
+ axisId: PropTypes.string,
196
238
  classes: PropTypes.object,
197
239
  disableLine: PropTypes.bool,
198
240
  disableTicks: PropTypes.bool,
199
241
  fill: PropTypes.string,
200
242
  label: PropTypes.string,
201
243
  labelFontSize: PropTypes.number,
244
+ labelStyle: PropTypes.object,
202
245
  position: PropTypes.oneOf(['left', 'right']),
203
246
  slotProps: PropTypes.object,
204
247
  slots: PropTypes.object,
205
248
  stroke: PropTypes.string,
206
249
  tickFontSize: PropTypes.number,
250
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
251
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
252
+ tickLabelStyle: PropTypes.object,
207
253
  tickMaxStep: PropTypes.number,
208
254
  tickMinStep: PropTypes.number,
209
255
  tickNumber: PropTypes.number,
@@ -212,6 +258,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
212
258
  series: PropTypes.arrayOf(PropTypes.shape({
213
259
  area: PropTypes.bool,
214
260
  color: PropTypes.string,
261
+ connectNulls: PropTypes.bool,
215
262
  curve: PropTypes.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
216
263
  data: PropTypes.arrayOf(PropTypes.number),
217
264
  dataKey: PropTypes.string,
@@ -247,6 +294,8 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
247
294
  axisContent: PropTypes.elementType,
248
295
  classes: PropTypes.object,
249
296
  itemContent: PropTypes.elementType,
297
+ slotProps: PropTypes.object,
298
+ slots: PropTypes.object,
250
299
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
251
300
  }),
252
301
  /**
@@ -255,18 +304,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
255
304
  * @default null
256
305
  */
257
306
  topAxis: PropTypes.oneOfType([PropTypes.shape({
258
- axisId: PropTypes.string.isRequired,
307
+ axisId: PropTypes.string,
259
308
  classes: PropTypes.object,
260
309
  disableLine: PropTypes.bool,
261
310
  disableTicks: PropTypes.bool,
262
311
  fill: PropTypes.string,
263
312
  label: PropTypes.string,
264
313
  labelFontSize: PropTypes.number,
314
+ labelStyle: PropTypes.object,
265
315
  position: PropTypes.oneOf(['bottom', 'top']),
266
316
  slotProps: PropTypes.object,
267
317
  slots: PropTypes.object,
268
318
  stroke: PropTypes.string,
269
319
  tickFontSize: PropTypes.number,
320
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
321
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
322
+ tickLabelStyle: PropTypes.object,
270
323
  tickMaxStep: PropTypes.number,
271
324
  tickMinStep: PropTypes.number,
272
325
  tickNumber: PropTypes.number,
@@ -278,7 +331,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
278
331
  x: PropTypes.number,
279
332
  y: PropTypes.number
280
333
  }),
334
+ /**
335
+ * The width of the chart in px. If not defined, it takes the width of the parent element.
336
+ * @default undefined
337
+ */
281
338
  width: PropTypes.number,
339
+ /**
340
+ * The configuration of the x-axes.
341
+ * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
342
+ */
282
343
  xAxis: PropTypes.arrayOf(PropTypes.shape({
283
344
  axisId: PropTypes.string,
284
345
  classes: PropTypes.object,
@@ -291,6 +352,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
291
352
  id: PropTypes.string,
292
353
  label: PropTypes.string,
293
354
  labelFontSize: PropTypes.number,
355
+ labelStyle: PropTypes.object,
294
356
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
295
357
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
296
358
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -299,12 +361,19 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
299
361
  slots: PropTypes.object,
300
362
  stroke: PropTypes.string,
301
363
  tickFontSize: PropTypes.number,
364
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
365
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
366
+ tickLabelStyle: PropTypes.object,
302
367
  tickMaxStep: PropTypes.number,
303
368
  tickMinStep: PropTypes.number,
304
369
  tickNumber: PropTypes.number,
305
370
  tickSize: PropTypes.number,
306
371
  valueFormatter: PropTypes.func
307
372
  })),
373
+ /**
374
+ * The configuration of the y-axes.
375
+ * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
376
+ */
308
377
  yAxis: PropTypes.arrayOf(PropTypes.shape({
309
378
  axisId: PropTypes.string,
310
379
  classes: PropTypes.object,
@@ -317,6 +386,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
317
386
  id: PropTypes.string,
318
387
  label: PropTypes.string,
319
388
  labelFontSize: PropTypes.number,
389
+ labelStyle: PropTypes.object,
320
390
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
321
391
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
322
392
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -325,6 +395,9 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
325
395
  slots: PropTypes.object,
326
396
  stroke: PropTypes.string,
327
397
  tickFontSize: PropTypes.number,
398
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
399
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
400
+ tickLabelStyle: PropTypes.object,
328
401
  tickMaxStep: PropTypes.number,
329
402
  tickMinStep: PropTypes.number,
330
403
  tickNumber: PropTypes.number,
@@ -57,6 +57,16 @@ LineElementPath.propTypes = {
57
57
  }).isRequired,
58
58
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
59
59
  };
60
+ /**
61
+ * Demos:
62
+ *
63
+ * - [Lines](https://mui.com/x/react-charts/lines/)
64
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
65
+ *
66
+ * API:
67
+ *
68
+ * - [LineElement API](https://mui.com/x/api/charts/line-element/)
69
+ */
60
70
  function LineElement(props) {
61
71
  const {
62
72
  id,
@@ -33,6 +33,16 @@ const HighlightElement = styled('circle', {
33
33
  transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
34
34
  fill: ownerState.color
35
35
  }));
36
+ /**
37
+ * Demos:
38
+ *
39
+ * - [Lines](https://mui.com/x/react-charts/lines/)
40
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
41
+ *
42
+ * API:
43
+ *
44
+ * - [LineHighlightElement API](https://mui.com/x/api/charts/line-highlight-element/)
45
+ */
36
46
  function LineHighlightElement(props) {
37
47
  const {
38
48
  x,
@@ -9,6 +9,16 @@ import { LineHighlightElement } from './LineHighlightElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import { InteractionContext } from '../context/InteractionProvider';
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
+ /**
13
+ * Demos:
14
+ *
15
+ * - [Lines](https://mui.com/x/react-charts/lines/)
16
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
17
+ *
18
+ * API:
19
+ *
20
+ * - [LineHighlightPlot API](https://mui.com/x/api/charts/line-highlight-plot/)
21
+ */
12
22
  function LineHighlightPlot(props) {
13
23
  const {
14
24
  slots,
@@ -49,9 +59,10 @@ function LineHighlightPlot(props) {
49
59
  xAxisKey = defaultXAxisId,
50
60
  yAxisKey = defaultYAxisId,
51
61
  stackedData,
62
+ data,
52
63
  disableHighlight
53
64
  } = series[seriesId];
54
- if (disableHighlight) {
65
+ if (disableHighlight || data[highlightedIndex] == null) {
55
66
  return null;
56
67
  }
57
68
  const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
@@ -61,7 +72,7 @@ function LineHighlightPlot(props) {
61
72
  throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot.`);
62
73
  }
63
74
  const x = xScale(xData[highlightedIndex]);
64
- const y = yScale(stackedData[highlightedIndex][1]);
75
+ const y = yScale(stackedData[highlightedIndex][1]); // This should not be undefined since y should not be a band scale
65
76
  return /*#__PURE__*/_jsx(Element, _extends({
66
77
  id: seriesId,
67
78
  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
  const {
15
25
  slots,
@@ -41,25 +51,28 @@ function LinePlot(props) {
41
51
  const {
42
52
  xAxisKey = defaultXAxisId,
43
53
  yAxisKey = defaultYAxisId,
44
- stackedData
54
+ stackedData,
55
+ data,
56
+ connectNulls
45
57
  } = series[seriesId];
46
58
  const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
47
59
  const yScale = yAxis[yAxisKey].scale;
48
60
  const xData = xAxis[xAxisKey].data;
49
- if (xData === undefined) {
50
- throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
51
- }
52
- const linePath = d3Line().x(d => xScale(d.x)).y(d => yScale(d.y[1]));
53
61
  if (process.env.NODE_ENV !== 'production') {
54
- if (xData.length !== stackedData.length) {
55
- throw new Error(`MUI: data length of the x axis (${xData.length} items) does not match length of series (${stackedData.length} items)`);
62
+ if (xData === undefined) {
63
+ throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
64
+ }
65
+ if (xData.length < stackedData.length) {
66
+ throw new Error(`MUI: data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items)`);
56
67
  }
57
68
  }
69
+ const linePath = d3Line().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y(d => yScale(d.y[1]));
58
70
  const curve = getCurveFactory(series[seriesId].curve);
59
- const d3Data = xData?.map((x, index) => ({
71
+ const formattedData = xData?.map((x, index) => ({
60
72
  x,
61
- y: stackedData[index] ?? [0, 0]
62
- }));
73
+ y: stackedData[index]
74
+ })) ?? [];
75
+ const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
63
76
  return /*#__PURE__*/_jsx(LineElement, {
64
77
  id: seriesId,
65
78
  d: linePath.curve(curve)(d3Data) || undefined,
@@ -38,7 +38,7 @@ const MarkElementPath = styled('path', {
38
38
  }) => ({
39
39
  transform: `translate(${ownerState.x}px, ${ownerState.y}px)`,
40
40
  transformOrigin: `${ownerState.x}px ${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
  }));
@@ -59,6 +59,16 @@ MarkElementPath.propTypes = {
59
59
  }).isRequired,
60
60
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
61
61
  };
62
+ /**
63
+ * Demos:
64
+ *
65
+ * - [Lines](https://mui.com/x/react-charts/lines/)
66
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
67
+ *
68
+ * API:
69
+ *
70
+ * - [MarkElement API](https://mui.com/x/api/charts/mark-element/)
71
+ */
62
72
  function MarkElement(props) {
63
73
  const {
64
74
  x,
@@ -8,6 +8,16 @@ import { CartesianContext } from '../context/CartesianContextProvider';
8
8
  import { MarkElement } from './MarkElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
+ /**
12
+ * Demos:
13
+ *
14
+ * - [Lines](https://mui.com/x/react-charts/lines/)
15
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
16
+ *
17
+ * API:
18
+ *
19
+ * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
20
+ */
11
21
  function MarkPlot(props) {
12
22
  const {
13
23
  slots,
@@ -41,6 +51,7 @@ function MarkPlot(props) {
41
51
  xAxisKey = defaultXAxisId,
42
52
  yAxisKey = defaultYAxisId,
43
53
  stackedData,
54
+ data,
44
55
  showMark = true
45
56
  } = series[seriesId];
46
57
  if (showMark === false) {
@@ -67,36 +78,57 @@ function MarkPlot(props) {
67
78
  throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
68
79
  }
69
80
  return xData?.map((x, index) => {
70
- const y = stackedData[index][1];
81
+ const value = data[index] == null ? null : stackedData[index][1];
71
82
  return {
72
83
  x: xScale(x),
73
- y: yScale(y),
84
+ y: value === null ? null : yScale(value),
74
85
  position: x,
75
- value: y,
86
+ value,
76
87
  index
77
88
  };
78
- }).filter(isInRange).map(({
89
+ }).filter(({
79
90
  x,
80
91
  y,
81
92
  index,
82
93
  position,
83
94
  value
84
95
  }) => {
85
- return showMark === true || showMark({
96
+ if (value === null || y === null) {
97
+ // Remove missing data point
98
+ return false;
99
+ }
100
+ if (!isInRange({
101
+ x,
102
+ y
103
+ })) {
104
+ // Remove out of range
105
+ return false;
106
+ }
107
+ if (showMark === true) {
108
+ return true;
109
+ }
110
+ return showMark({
86
111
  x,
87
112
  y,
88
113
  index,
89
114
  position,
90
115
  value
91
- }) ? /*#__PURE__*/_jsx(Mark, _extends({
116
+ });
117
+ }).map(({
118
+ x,
119
+ y,
120
+ index
121
+ }) => {
122
+ return /*#__PURE__*/_jsx(Mark, _extends({
92
123
  id: seriesId,
93
124
  dataIndex: index,
94
125
  shape: "circle",
95
126
  color: series[seriesId].color,
96
127
  x: x,
97
- y: y,
128
+ y: y // Don't knwo why TS don't get from the filter that y can't be null
129
+ ,
98
130
  highlightScope: series[seriesId].highlightScope
99
- }, slotProps?.mark), `${seriesId}-${index}`) : null;
131
+ }, slotProps?.mark), `${seriesId}-${index}`);
100
132
  });
101
133
  });
102
134
  })
@@ -24,7 +24,7 @@ const formatter = (params, dataset) => {
24
24
  d3Dataset[index][id] = value;
25
25
  }
26
26
  });
27
- } else if (dataset === undefined) {
27
+ } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
28
28
  throw new Error([`MUI: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
29
29
  }
30
30
  });
@@ -40,7 +40,8 @@ const formatter = (params, dataset) => {
40
40
  // Use dataKey if needed and available
41
41
  const dataKey = series[id].dataKey;
42
42
  return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
43
- })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
43
+ })).value((d, key) => d[key] ?? 0) // defaultize null value to 0
44
+ .order(stackingOrder).offset(stackingOffset)(d3Dataset);
44
45
  ids.forEach((id, index) => {
45
46
  const dataKey = series[id].dataKey;
46
47
  completedSeries[id] = _extends({}, series[id], {
@@ -52,7 +53,7 @@ const formatter = (params, dataset) => {
52
53
  return {
53
54
  seriesOrder,
54
55
  stackingGroups,
55
- series: defaultizeValueFormatter(completedSeries, v => v.toLocaleString())
56
+ series: defaultizeValueFormatter(completedSeries, v => v?.toLocaleString())
56
57
  };
57
58
  };
58
59
  export default formatter;
@@ -1,15 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "innerRadius", "outerRadius", "cornerRadius", "highlighted", "faded"];
3
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "onClick", "isFaded", "isHighlighted", "startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "cornerRadius"];
4
4
  import * as React from 'react';
5
5
  import { arc as d3Arc } from 'd3-shape';
6
- import PropTypes from 'prop-types';
6
+ import { animated, to } from '@react-spring/web';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import generateUtilityClass from '@mui/utils/generateUtilityClass';
9
9
  import { styled } from '@mui/material/styles';
10
10
  import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
11
- import { InteractionContext } from '../context/InteractionProvider';
12
- import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
11
+ import { useInteractionItemProps } from '../hooks/useInteractionItemProps';
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
14
13
  export function getPieArcUtilityClass(slot) {
15
14
  return generateUtilityClass('MuiPieArc', slot);
@@ -27,19 +26,16 @@ const useUtilityClasses = ownerState => {
27
26
  };
28
27
  return composeClasses(slots, getPieArcUtilityClass, classes);
29
28
  };
30
- const PieArcRoot = styled('path', {
29
+ const PieArcRoot = styled(animated.path, {
31
30
  name: 'MuiPieArc',
32
31
  slot: 'Root',
33
32
  overridesResolver: (_, styles) => styles.arc
34
33
  })(({
35
- ownerState,
36
34
  theme
37
35
  }) => ({
38
- stroke: theme.palette.background.paper,
36
+ stroke: (theme.vars || theme).palette.background.paper,
39
37
  strokeWidth: 1,
40
- strokeLinejoin: 'round',
41
- fill: ownerState.color,
42
- opacity: ownerState.isFaded ? 0.3 : 1
38
+ strokeLinejoin: 'round'
43
39
  }));
44
40
  export default function PieArc(props) {
45
41
  const {
@@ -48,29 +44,17 @@ export default function PieArc(props) {
48
44
  classes: innerClasses,
49
45
  color,
50
46
  highlightScope,
51
- innerRadius: baseInnerRadius = 0,
52
- outerRadius: baseOuterRadius,
53
- cornerRadius: baseCornerRadius = 0,
54
- highlighted,
55
- faded = {
56
- additionalRadius: -5
57
- }
47
+ onClick,
48
+ isFaded,
49
+ isHighlighted,
50
+ startAngle,
51
+ endAngle,
52
+ paddingAngle,
53
+ innerRadius,
54
+ outerRadius,
55
+ cornerRadius
58
56
  } = props,
59
57
  other = _objectWithoutPropertiesLoose(props, _excluded);
60
- const getInteractionItemProps = useInteractionItemProps(highlightScope);
61
- const {
62
- item
63
- } = React.useContext(InteractionContext);
64
- const isHighlighted = getIsHighlighted(item, {
65
- type: 'pie',
66
- seriesId: id,
67
- dataIndex
68
- }, highlightScope);
69
- const isFaded = !isHighlighted && getIsFaded(item, {
70
- type: 'pie',
71
- seriesId: id,
72
- dataIndex
73
- }, highlightScope);
74
58
  const ownerState = {
75
59
  id,
76
60
  dataIndex,
@@ -80,37 +64,22 @@ export default function PieArc(props) {
80
64
  isHighlighted
81
65
  };
82
66
  const classes = useUtilityClasses(ownerState);
83
- const attibuesOverride = _extends({
84
- additionalRadius: 0
85
- }, isFaded && faded || isHighlighted && highlighted || {});
86
- const innerRadius = Math.max(0, attibuesOverride.innerRadius ?? baseInnerRadius);
87
- const outerRadius = Math.max(0, attibuesOverride.outerRadius ?? baseOuterRadius + attibuesOverride.additionalRadius);
88
- const cornerRadius = attibuesOverride.cornerRadius ?? baseCornerRadius;
67
+ const getInteractionItemProps = useInteractionItemProps(highlightScope);
89
68
  return /*#__PURE__*/_jsx(PieArcRoot, _extends({
90
- d: d3Arc().cornerRadius(cornerRadius)(_extends({}, other, {
91
- innerRadius,
92
- outerRadius
69
+ d: to([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], (sA, eA, pA, iR, oR, cR) => d3Arc().cornerRadius(cR)({
70
+ padAngle: pA,
71
+ startAngle: sA,
72
+ endAngle: eA,
73
+ innerRadius: iR,
74
+ outerRadius: oR
93
75
  })),
76
+ onClick: onClick,
77
+ cursor: onClick ? 'pointer' : 'unset',
94
78
  ownerState: ownerState,
95
79
  className: classes.root
96
- }, getInteractionItemProps({
80
+ }, other, getInteractionItemProps({
97
81
  type: 'pie',
98
82
  seriesId: id,
99
83
  dataIndex
100
84
  })));
101
- }
102
- process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
103
- // ----------------------------- Warning --------------------------------
104
- // | These PropTypes are generated from the TypeScript type definitions |
105
- // | To update them edit the TypeScript types and run "yarn proptypes" |
106
- // ----------------------------------------------------------------------
107
- classes: PropTypes.object,
108
- cornerRadius: PropTypes.number,
109
- dataIndex: PropTypes.number.isRequired,
110
- highlightScope: PropTypes.shape({
111
- faded: PropTypes.oneOf(['global', 'none', 'series']),
112
- highlighted: PropTypes.oneOf(['item', 'none', 'series'])
113
- }),
114
- innerRadius: PropTypes.number,
115
- outerRadius: PropTypes.number.isRequired
116
- } : void 0;
85
+ }