@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
@@ -16,6 +16,17 @@ const defaultMargin = {
16
16
  left: 5,
17
17
  right: 100
18
18
  };
19
+
20
+ /**
21
+ * Demos:
22
+ *
23
+ * - [Pie](https://mui.com/x/react-charts/pie/)
24
+ * - [Pie demonstration](https://mui.com/x/react-charts/pie-demo/)
25
+ *
26
+ * API:
27
+ *
28
+ * - [PieChart API](https://mui.com/x/api/charts/pie-chart/)
29
+ */
19
30
  function PieChart(props) {
20
31
  const {
21
32
  xAxis,
@@ -33,6 +44,7 @@ function PieChart(props) {
33
44
  x: 'none',
34
45
  y: 'none'
35
46
  },
47
+ skipAnimation,
36
48
  legend = {
37
49
  direction: 'column',
38
50
  position: {
@@ -46,7 +58,8 @@ function PieChart(props) {
46
58
  bottomAxis = null,
47
59
  children,
48
60
  slots,
49
- slotProps
61
+ slotProps,
62
+ onClick
50
63
  } = props;
51
64
  const margin = _extends({}, defaultMargin, marginProps);
52
65
  return /*#__PURE__*/_jsxs(ResponsiveChartContainer, {
@@ -74,7 +87,9 @@ function PieChart(props) {
74
87
  slotProps: slotProps
75
88
  }), /*#__PURE__*/_jsx(PiePlot, {
76
89
  slots: slots,
77
- slotProps: slotProps
90
+ slotProps: slotProps,
91
+ onClick: onClick,
92
+ skipAnimation: skipAnimation
78
93
  }), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
79
94
  slots: slots,
80
95
  slotProps: slotProps
@@ -96,18 +111,22 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
96
111
  * @default xAxisIds[0] The id of the first provided axis
97
112
  */
98
113
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
99
- axisId: PropTypes.string.isRequired,
114
+ axisId: PropTypes.string,
100
115
  classes: PropTypes.object,
101
116
  disableLine: PropTypes.bool,
102
117
  disableTicks: PropTypes.bool,
103
118
  fill: PropTypes.string,
104
119
  label: PropTypes.string,
105
120
  labelFontSize: PropTypes.number,
121
+ labelStyle: PropTypes.object,
106
122
  position: PropTypes.oneOf(['bottom', 'top']),
107
123
  slotProps: PropTypes.object,
108
124
  slots: PropTypes.object,
109
125
  stroke: PropTypes.string,
110
126
  tickFontSize: PropTypes.number,
127
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
128
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
129
+ tickLabelStyle: PropTypes.object,
111
130
  tickMaxStep: PropTypes.number,
112
131
  tickMinStep: PropTypes.number,
113
132
  tickNumber: PropTypes.number,
@@ -119,9 +138,21 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
119
138
  * Color palette used to colorize multiple series.
120
139
  */
121
140
  colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
141
+ /**
142
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
143
+ */
122
144
  dataset: PropTypes.arrayOf(PropTypes.object),
123
145
  desc: PropTypes.string,
146
+ /**
147
+ * If `true`, the charts will not listen to the mouse move event.
148
+ * It might break interactive features, but will improve performance.
149
+ * @default false
150
+ */
124
151
  disableAxisListener: PropTypes.bool,
152
+ /**
153
+ * The height of the chart in px. If not defined, it takes the height of the parent element.
154
+ * @default undefined
155
+ */
125
156
  height: PropTypes.number,
126
157
  /**
127
158
  * Indicate which axis to display the left of the charts.
@@ -129,65 +160,76 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
129
160
  * @default yAxisIds[0] The id of the first provided axis
130
161
  */
131
162
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
132
- axisId: PropTypes.string.isRequired,
163
+ axisId: PropTypes.string,
133
164
  classes: PropTypes.object,
134
165
  disableLine: PropTypes.bool,
135
166
  disableTicks: PropTypes.bool,
136
167
  fill: PropTypes.string,
137
168
  label: PropTypes.string,
138
169
  labelFontSize: PropTypes.number,
170
+ labelStyle: PropTypes.object,
139
171
  position: PropTypes.oneOf(['left', 'right']),
140
172
  slotProps: PropTypes.object,
141
173
  slots: PropTypes.object,
142
174
  stroke: PropTypes.string,
143
175
  tickFontSize: PropTypes.number,
176
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
177
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
178
+ tickLabelStyle: PropTypes.object,
144
179
  tickMaxStep: PropTypes.number,
145
180
  tickMinStep: PropTypes.number,
146
181
  tickNumber: PropTypes.number,
147
182
  tickSize: PropTypes.number
148
183
  }), PropTypes.string]),
184
+ /**
185
+ * @deprecated Consider using `slotProps.legend` instead.
186
+ */
149
187
  legend: PropTypes.shape({
150
188
  classes: PropTypes.object,
151
189
  direction: PropTypes.oneOf(['column', 'row']),
152
190
  hidden: PropTypes.bool,
153
- itemWidth: PropTypes.number,
154
- markSize: PropTypes.number,
155
- offset: PropTypes.shape({
156
- x: PropTypes.number,
157
- y: PropTypes.number
158
- }),
159
191
  position: PropTypes.shape({
160
192
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
161
193
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
162
194
  }),
163
195
  slotProps: PropTypes.object,
164
- slots: PropTypes.object,
165
- spacing: PropTypes.number
196
+ slots: PropTypes.object
166
197
  }),
198
+ /**
199
+ * The margin between the SVG and the drawing area.
200
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
201
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
202
+ * @default object Depends on the charts type.
203
+ */
167
204
  margin: PropTypes.shape({
168
205
  bottom: PropTypes.number,
169
206
  left: PropTypes.number,
170
207
  right: PropTypes.number,
171
208
  top: PropTypes.number
172
209
  }),
210
+ onClick: PropTypes.func,
173
211
  /**
174
212
  * Indicate which axis to display the right of the charts.
175
213
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
176
214
  * @default null
177
215
  */
178
216
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
179
- axisId: PropTypes.string.isRequired,
217
+ axisId: PropTypes.string,
180
218
  classes: PropTypes.object,
181
219
  disableLine: PropTypes.bool,
182
220
  disableTicks: PropTypes.bool,
183
221
  fill: PropTypes.string,
184
222
  label: PropTypes.string,
185
223
  labelFontSize: PropTypes.number,
224
+ labelStyle: PropTypes.object,
186
225
  position: PropTypes.oneOf(['left', 'right']),
187
226
  slotProps: PropTypes.object,
188
227
  slots: PropTypes.object,
189
228
  stroke: PropTypes.string,
190
229
  tickFontSize: PropTypes.number,
230
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
231
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
232
+ tickLabelStyle: PropTypes.object,
191
233
  tickMaxStep: PropTypes.number,
192
234
  tickMinStep: PropTypes.number,
193
235
  tickNumber: PropTypes.number,
@@ -209,15 +251,19 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
209
251
  endAngle: PropTypes.number,
210
252
  faded: PropTypes.shape({
211
253
  additionalRadius: PropTypes.number,
254
+ color: PropTypes.string,
212
255
  cornerRadius: PropTypes.number,
213
256
  innerRadius: PropTypes.number,
214
- outerRadius: PropTypes.number
257
+ outerRadius: PropTypes.number,
258
+ paddingAngle: PropTypes.number
215
259
  }),
216
260
  highlighted: PropTypes.shape({
217
261
  additionalRadius: PropTypes.number,
262
+ color: PropTypes.string,
218
263
  cornerRadius: PropTypes.number,
219
264
  innerRadius: PropTypes.number,
220
- outerRadius: PropTypes.number
265
+ outerRadius: PropTypes.number,
266
+ paddingAngle: PropTypes.number
221
267
  }),
222
268
  highlightScope: PropTypes.shape({
223
269
  faded: PropTypes.oneOf(['global', 'none', 'series']),
@@ -232,6 +278,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
232
278
  type: PropTypes.oneOf(['pie']),
233
279
  valueFormatter: PropTypes.func
234
280
  })).isRequired,
281
+ /**
282
+ * If `true`, animations are skiped.
283
+ * @default false
284
+ */
285
+ skipAnimation: PropTypes.bool,
235
286
  /**
236
287
  * The props used for each component slot.
237
288
  * @default {}
@@ -244,6 +295,8 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
244
295
  axisContent: PropTypes.elementType,
245
296
  classes: PropTypes.object,
246
297
  itemContent: PropTypes.elementType,
298
+ slotProps: PropTypes.object,
299
+ slots: PropTypes.object,
247
300
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
248
301
  }),
249
302
  /**
@@ -252,18 +305,22 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
252
305
  * @default null
253
306
  */
254
307
  topAxis: PropTypes.oneOfType([PropTypes.shape({
255
- axisId: PropTypes.string.isRequired,
308
+ axisId: PropTypes.string,
256
309
  classes: PropTypes.object,
257
310
  disableLine: PropTypes.bool,
258
311
  disableTicks: PropTypes.bool,
259
312
  fill: PropTypes.string,
260
313
  label: PropTypes.string,
261
314
  labelFontSize: PropTypes.number,
315
+ labelStyle: PropTypes.object,
262
316
  position: PropTypes.oneOf(['bottom', 'top']),
263
317
  slotProps: PropTypes.object,
264
318
  slots: PropTypes.object,
265
319
  stroke: PropTypes.string,
266
320
  tickFontSize: PropTypes.number,
321
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
322
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
323
+ tickLabelStyle: PropTypes.object,
267
324
  tickMaxStep: PropTypes.number,
268
325
  tickMinStep: PropTypes.number,
269
326
  tickNumber: PropTypes.number,
@@ -275,7 +332,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
275
332
  x: PropTypes.number,
276
333
  y: PropTypes.number
277
334
  }),
335
+ /**
336
+ * The width of the chart in px. If not defined, it takes the width of the parent element.
337
+ * @default undefined
338
+ */
278
339
  width: PropTypes.number,
340
+ /**
341
+ * The configuration of the x-axes.
342
+ * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
343
+ */
279
344
  xAxis: PropTypes.arrayOf(PropTypes.shape({
280
345
  axisId: PropTypes.string,
281
346
  classes: PropTypes.object,
@@ -288,6 +353,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
288
353
  id: PropTypes.string,
289
354
  label: PropTypes.string,
290
355
  labelFontSize: PropTypes.number,
356
+ labelStyle: PropTypes.object,
291
357
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
292
358
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
293
359
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -296,12 +362,19 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
296
362
  slots: PropTypes.object,
297
363
  stroke: PropTypes.string,
298
364
  tickFontSize: PropTypes.number,
365
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
366
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
367
+ tickLabelStyle: PropTypes.object,
299
368
  tickMaxStep: PropTypes.number,
300
369
  tickMinStep: PropTypes.number,
301
370
  tickNumber: PropTypes.number,
302
371
  tickSize: PropTypes.number,
303
372
  valueFormatter: PropTypes.func
304
373
  })),
374
+ /**
375
+ * The configuration of the y-axes.
376
+ * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
377
+ */
305
378
  yAxis: PropTypes.arrayOf(PropTypes.shape({
306
379
  axisId: PropTypes.string,
307
380
  classes: PropTypes.object,
@@ -314,6 +387,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
314
387
  id: PropTypes.string,
315
388
  label: PropTypes.string,
316
389
  labelFontSize: PropTypes.number,
390
+ labelStyle: PropTypes.object,
317
391
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
318
392
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
319
393
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -322,6 +396,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
322
396
  slots: PropTypes.object,
323
397
  stroke: PropTypes.string,
324
398
  tickFontSize: PropTypes.number,
399
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
400
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
401
+ tickLabelStyle: PropTypes.object,
325
402
  tickMaxStep: PropTypes.number,
326
403
  tickMinStep: PropTypes.number,
327
404
  tickNumber: PropTypes.number,
@@ -1,33 +1,27 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
1
  import * as React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import { SeriesContext } from '../context/SeriesContextProvider';
5
- import PieArc from './PieArc';
6
- import PieArcLabel from './PieArcLabel';
7
4
  import { DrawingContext } from '../context/DrawingProvider';
8
- import { createElement as _createElement } from "react";
9
- import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { PieArcPlot } from './PieArcPlot';
6
+ import { PieArcLabelPlot } from './PieArcLabelPlot';
10
7
  import { jsx as _jsx } from "react/jsx-runtime";
11
- const RATIO = 180 / Math.PI;
12
- function getItemLabel(arcLabel, arcLabelMinAngle, item) {
13
- if (!arcLabel) {
14
- return null;
15
- }
16
- const angle = (item.endAngle - item.startAngle) * RATIO;
17
- if (angle < arcLabelMinAngle) {
18
- return null;
19
- }
20
- if (typeof arcLabel === 'string') {
21
- var _item$arcLabel;
22
- return (_item$arcLabel = item[arcLabel]) == null ? void 0 : _item$arcLabel.toString();
23
- }
24
- return arcLabel(item);
25
- }
8
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
+ /**
10
+ * Demos:
11
+ *
12
+ * - [Pie](https://mui.com/x/react-charts/pie/)
13
+ * - [Pie demonstration](https://mui.com/x/react-charts/pie-demo/)
14
+ *
15
+ * API:
16
+ *
17
+ * - [PiePlot API](https://mui.com/x/api/charts/pie-plot/)
18
+ */
26
19
  function PiePlot(props) {
27
- var _slots$pieArc, _slots$pieArcLabel;
28
20
  const {
21
+ skipAnimation,
29
22
  slots,
30
- slotProps
23
+ slotProps,
24
+ onClick
31
25
  } = props;
32
26
  const seriesData = React.useContext(SeriesContext).pie;
33
27
  const {
@@ -48,54 +42,67 @@ function PiePlot(props) {
48
42
  series,
49
43
  seriesOrder
50
44
  } = seriesData;
51
- const Arc = (_slots$pieArc = slots == null ? void 0 : slots.pieArc) != null ? _slots$pieArc : PieArc;
52
- const ArcLabel = (_slots$pieArcLabel = slots == null ? void 0 : slots.pieArcLabel) != null ? _slots$pieArcLabel : PieArcLabel;
53
- return /*#__PURE__*/_jsx("g", {
54
- children: seriesOrder.map(seriesId => {
45
+ return /*#__PURE__*/_jsxs("g", {
46
+ children: [seriesOrder.map(seriesId => {
55
47
  const {
56
48
  innerRadius,
57
49
  outerRadius,
58
50
  cornerRadius,
59
- arcLabel,
60
- arcLabelMinAngle = 0,
51
+ paddingAngle,
61
52
  data,
62
53
  cx,
63
54
  cy,
64
55
  highlighted,
65
- faded
56
+ faded,
57
+ highlightScope
58
+ } = series[seriesId];
59
+ return /*#__PURE__*/_jsx("g", {
60
+ transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
61
+ children: /*#__PURE__*/_jsx(PieArcPlot, {
62
+ innerRadius: innerRadius,
63
+ outerRadius: outerRadius != null ? outerRadius : availableRadius,
64
+ cornerRadius: cornerRadius,
65
+ paddingAngle: paddingAngle,
66
+ id: seriesId,
67
+ data: data,
68
+ skipAnimation: skipAnimation,
69
+ highlightScope: highlightScope,
70
+ highlighted: highlighted,
71
+ faded: faded,
72
+ onClick: onClick,
73
+ slots: slots,
74
+ slotProps: slotProps
75
+ })
76
+ }, seriesId);
77
+ }), seriesOrder.map(seriesId => {
78
+ const {
79
+ innerRadius,
80
+ outerRadius,
81
+ cornerRadius,
82
+ paddingAngle,
83
+ arcLabel,
84
+ arcLabelMinAngle,
85
+ data,
86
+ cx,
87
+ cy,
88
+ highlightScope
66
89
  } = series[seriesId];
67
90
  return /*#__PURE__*/_jsx("g", {
68
91
  transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
69
- children: /*#__PURE__*/_jsxs("g", {
70
- children: [data.map((item, index) => {
71
- return /*#__PURE__*/_createElement(Arc, _extends({}, item, {
72
- key: item.id,
73
- innerRadius: innerRadius,
74
- outerRadius: outerRadius != null ? outerRadius : availableRadius,
75
- cornerRadius: cornerRadius,
76
- id: seriesId,
77
- color: item.color,
78
- dataIndex: index,
79
- highlightScope: series[seriesId].highlightScope,
80
- highlighted: highlighted,
81
- faded: faded
82
- }, slotProps == null ? void 0 : slotProps.pieArc));
83
- }), data.map((item, index) => {
84
- return /*#__PURE__*/_createElement(ArcLabel, _extends({}, item, {
85
- key: item.id,
86
- innerRadius: innerRadius,
87
- outerRadius: outerRadius != null ? outerRadius : availableRadius,
88
- cornerRadius: cornerRadius,
89
- id: seriesId,
90
- color: item.color,
91
- dataIndex: index,
92
- highlightScope: series[seriesId].highlightScope,
93
- formattedArcLabel: getItemLabel(arcLabel, arcLabelMinAngle, item)
94
- }, slotProps == null ? void 0 : slotProps.pieArcLabel));
95
- })]
92
+ children: /*#__PURE__*/_jsx(PieArcLabelPlot, {
93
+ innerRadius: innerRadius,
94
+ outerRadius: outerRadius != null ? outerRadius : availableRadius,
95
+ cornerRadius: cornerRadius,
96
+ paddingAngle: paddingAngle,
97
+ id: seriesId,
98
+ data: data,
99
+ skipAnimation: skipAnimation,
100
+ arcLabel: arcLabel,
101
+ arcLabelMinAngle: arcLabelMinAngle,
102
+ highlightScope: highlightScope
96
103
  })
97
104
  }, seriesId);
98
- })
105
+ })]
99
106
  });
100
107
  }
101
108
  process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
@@ -103,6 +110,18 @@ process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
103
110
  // | These PropTypes are generated from the TypeScript type definitions |
104
111
  // | To update them edit the TypeScript types and run "yarn proptypes" |
105
112
  // ----------------------------------------------------------------------
113
+ /**
114
+ * Callback fired when a pie item is clicked.
115
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
116
+ * @param {PieItemIdentifier} pieItemIdentifier The pie item identifier.
117
+ * @param {DefaultizedPieValueType} item The pie item.
118
+ */
119
+ onClick: PropTypes.func,
120
+ /**
121
+ * If `true`, animations are skiped.
122
+ * @default false
123
+ */
124
+ skipAnimation: PropTypes.bool,
106
125
  /**
107
126
  * The props used for each component slot.
108
127
  * @default {}
@@ -0,0 +1,130 @@
1
+ export const defaultTransitionConfig = {
2
+ keys: item => item.id,
3
+ from: ({
4
+ innerRadius,
5
+ outerRadius,
6
+ cornerRadius,
7
+ startAngle,
8
+ endAngle,
9
+ paddingAngle,
10
+ color,
11
+ isFaded
12
+ }) => ({
13
+ innerRadius,
14
+ outerRadius: (innerRadius + outerRadius) / 2,
15
+ cornerRadius,
16
+ startAngle: (startAngle + endAngle) / 2,
17
+ endAngle: (startAngle + endAngle) / 2,
18
+ paddingAngle,
19
+ fill: color,
20
+ opacity: isFaded ? 0.3 : 1
21
+ }),
22
+ leave: ({
23
+ innerRadius,
24
+ startAngle,
25
+ endAngle
26
+ }) => ({
27
+ innerRadius,
28
+ outerRadius: innerRadius,
29
+ startAngle: (startAngle + endAngle) / 2,
30
+ endAngle: (startAngle + endAngle) / 2
31
+ }),
32
+ enter: ({
33
+ innerRadius,
34
+ outerRadius,
35
+ startAngle,
36
+ endAngle
37
+ }) => ({
38
+ innerRadius,
39
+ outerRadius,
40
+ startAngle,
41
+ endAngle
42
+ }),
43
+ update: ({
44
+ innerRadius,
45
+ outerRadius,
46
+ cornerRadius,
47
+ startAngle,
48
+ endAngle,
49
+ paddingAngle,
50
+ color,
51
+ isFaded
52
+ }) => ({
53
+ innerRadius,
54
+ outerRadius,
55
+ cornerRadius,
56
+ startAngle,
57
+ endAngle,
58
+ paddingAngle,
59
+ fill: color,
60
+ opacity: isFaded ? 0.3 : 1
61
+ }),
62
+ config: {
63
+ tension: 120,
64
+ friction: 14,
65
+ clamp: true
66
+ }
67
+ };
68
+ export const defaultLabelTransitionConfig = {
69
+ keys: item => item.id,
70
+ from: ({
71
+ innerRadius,
72
+ outerRadius,
73
+ cornerRadius,
74
+ startAngle,
75
+ endAngle,
76
+ paddingAngle
77
+ }) => ({
78
+ innerRadius,
79
+ outerRadius: (innerRadius + outerRadius) / 2,
80
+ cornerRadius,
81
+ startAngle: (startAngle + endAngle) / 2,
82
+ endAngle: (startAngle + endAngle) / 2,
83
+ paddingAngle,
84
+ opacity: 0
85
+ }),
86
+ leave: ({
87
+ innerRadius,
88
+ startAngle,
89
+ endAngle
90
+ }) => ({
91
+ innerRadius,
92
+ outerRadius: innerRadius,
93
+ startAngle: (startAngle + endAngle) / 2,
94
+ endAngle: (startAngle + endAngle) / 2,
95
+ opacity: 0
96
+ }),
97
+ enter: ({
98
+ innerRadius,
99
+ outerRadius,
100
+ startAngle,
101
+ endAngle
102
+ }) => ({
103
+ innerRadius,
104
+ outerRadius,
105
+ startAngle,
106
+ endAngle,
107
+ opacity: 1
108
+ }),
109
+ update: ({
110
+ innerRadius,
111
+ outerRadius,
112
+ cornerRadius,
113
+ startAngle,
114
+ endAngle,
115
+ paddingAngle
116
+ }) => ({
117
+ innerRadius,
118
+ outerRadius,
119
+ cornerRadius,
120
+ startAngle,
121
+ endAngle,
122
+ paddingAngle,
123
+ opacity: 1
124
+ }),
125
+ config: {
126
+ tension: 120,
127
+ friction: 14,
128
+ clamp: true
129
+ }
130
+ };
@@ -0,0 +1,59 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { InteractionContext } from '../../context/InteractionProvider';
4
+ import { getIsHighlighted, getIsFaded } from '../../hooks/useInteractionItemProps';
5
+ export function useTransformData(series) {
6
+ const {
7
+ id: seriesId,
8
+ highlightScope,
9
+ data,
10
+ faded,
11
+ highlighted,
12
+ paddingAngle: basePaddingAngle = 0,
13
+ innerRadius: baseInnerRadius = 0,
14
+ outerRadius: baseOuterRadius,
15
+ cornerRadius: baseCornerRadius = 0
16
+ } = series;
17
+ const {
18
+ item: highlightedItem
19
+ } = React.useContext(InteractionContext);
20
+ const getHighlightStatus = React.useCallback(dataIndex => {
21
+ const isHighlighted = getIsHighlighted(highlightedItem, {
22
+ type: 'pie',
23
+ seriesId,
24
+ dataIndex
25
+ }, highlightScope);
26
+ const isFaded = !isHighlighted && getIsFaded(highlightedItem, {
27
+ type: 'pie',
28
+ seriesId,
29
+ dataIndex
30
+ }, highlightScope);
31
+ return {
32
+ isHighlighted,
33
+ isFaded
34
+ };
35
+ }, [highlightScope, highlightedItem, seriesId]);
36
+ const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
37
+ var _attibuesOverride$pad, _attibuesOverride$inn, _attibuesOverride$out, _attibuesOverride$cor;
38
+ const {
39
+ isHighlighted,
40
+ isFaded
41
+ } = getHighlightStatus(itemIndex);
42
+ const attibuesOverride = _extends({
43
+ additionalRadius: 0
44
+ }, isFaded && faded || isHighlighted && highlighted || {});
45
+ const paddingAngle = Math.max(0, Math.PI * ((_attibuesOverride$pad = attibuesOverride.paddingAngle) != null ? _attibuesOverride$pad : basePaddingAngle) / 180);
46
+ const innerRadius = Math.max(0, (_attibuesOverride$inn = attibuesOverride.innerRadius) != null ? _attibuesOverride$inn : baseInnerRadius);
47
+ const outerRadius = Math.max(0, (_attibuesOverride$out = attibuesOverride.outerRadius) != null ? _attibuesOverride$out : baseOuterRadius + attibuesOverride.additionalRadius);
48
+ const cornerRadius = (_attibuesOverride$cor = attibuesOverride.cornerRadius) != null ? _attibuesOverride$cor : baseCornerRadius;
49
+ return _extends({}, item, attibuesOverride, {
50
+ isFaded,
51
+ isHighlighted,
52
+ paddingAngle,
53
+ innerRadius,
54
+ outerRadius,
55
+ cornerRadius
56
+ });
57
+ }), [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, data, faded, getHighlightStatus, highlighted]);
58
+ return dataWithHighlight;
59
+ }
@@ -42,7 +42,7 @@ const useChartDimensions = (inWidth, inHeight) => {
42
42
  let animationFrame;
43
43
  const observer = new ResizeObserver(() => {
44
44
  // See https://github.com/mui/mui-x/issues/8733
45
- animationFrame = window.requestAnimationFrame(() => {
45
+ animationFrame = requestAnimationFrame(() => {
46
46
  computeSize();
47
47
  });
48
48
  });
@@ -106,10 +106,10 @@ export const ResponsiveChartContainer = /*#__PURE__*/React.forwardRef(function R
106
106
  width: inWidth,
107
107
  height: inHeight
108
108
  },
109
- children: /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
109
+ children: width && height ? /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
110
110
  width: width,
111
111
  height: height,
112
112
  ref: ref
113
- }))
113
+ })) : null
114
114
  });
115
115
  });