@mui/x-charts 6.0.0-alpha.8 → 6.18.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 (286) hide show
  1. package/BarChart/BarChart.d.ts +19 -5
  2. package/BarChart/BarChart.js +52 -13
  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 +786 -48
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +28 -2
  13. package/ChartsAxis/axisClasses.d.ts +1 -1
  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 +44 -24
  20. package/ChartsLegend/ChartsLegend.js +192 -150
  21. package/ChartsLegend/chartsLegendClasses.js +1 -2
  22. package/ChartsLegend/utils.d.ts +1 -6
  23. package/ChartsSurface.d.ts +1 -1
  24. package/ChartsSurface.js +9 -18
  25. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  27. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  28. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  29. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  30. package/ChartsTooltip/ChartsTooltip.js +62 -18
  31. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  32. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  33. package/ChartsTooltip/tooltipClasses.js +1 -2
  34. package/ChartsTooltip/utils.js +2 -2
  35. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  36. package/ChartsXAxis/ChartsXAxis.js +161 -40
  37. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  38. package/ChartsYAxis/ChartsYAxis.js +86 -33
  39. package/LineChart/AreaElement.d.ts +12 -2
  40. package/LineChart/AreaElement.js +14 -6
  41. package/LineChart/AreaPlot.d.ts +11 -0
  42. package/LineChart/AreaPlot.js +27 -8
  43. package/LineChart/LineChart.d.ts +21 -3
  44. package/LineChart/LineChart.js +61 -14
  45. package/LineChart/LineElement.d.ts +12 -2
  46. package/LineChart/LineElement.js +14 -6
  47. package/LineChart/LineHighlightElement.d.ts +31 -0
  48. package/LineChart/LineHighlightElement.js +88 -0
  49. package/LineChart/LineHighlightPlot.d.ts +35 -0
  50. package/LineChart/LineHighlightPlot.js +110 -0
  51. package/LineChart/LinePlot.d.ts +10 -0
  52. package/LineChart/LinePlot.js +25 -12
  53. package/LineChart/MarkElement.d.ts +11 -1
  54. package/LineChart/MarkElement.js +15 -9
  55. package/LineChart/MarkPlot.d.ts +10 -0
  56. package/LineChart/MarkPlot.js +62 -15
  57. package/LineChart/formatter.js +5 -5
  58. package/LineChart/index.d.ts +2 -0
  59. package/LineChart/index.js +20 -0
  60. package/LineChart/legend.js +1 -2
  61. package/PieChart/PieArc.d.ts +12 -14
  62. package/PieChart/PieArc.js +28 -60
  63. package/PieChart/PieArcLabel.d.ts +9 -10
  64. package/PieChart/PieArcLabel.js +46 -38
  65. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  66. package/PieChart/PieArcLabelPlot.js +99 -0
  67. package/PieChart/PieArcPlot.d.ts +35 -0
  68. package/PieChart/PieArcPlot.js +92 -0
  69. package/PieChart/PieChart.d.ts +19 -5
  70. package/PieChart/PieChart.js +61 -14
  71. package/PieChart/PiePlot.d.ts +15 -9
  72. package/PieChart/PiePlot.js +77 -55
  73. package/PieChart/dataTransform/transition.d.ts +4 -0
  74. package/PieChart/dataTransform/transition.js +136 -0
  75. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  76. package/PieChart/dataTransform/useTransformData.js +67 -0
  77. package/PieChart/formatter.js +1 -2
  78. package/PieChart/legend.js +1 -2
  79. package/README.md +8 -14
  80. package/ResponsiveChartContainer/index.js +7 -8
  81. package/ScatterChart/Scatter.d.ts +10 -0
  82. package/ScatterChart/Scatter.js +12 -2
  83. package/ScatterChart/ScatterChart.d.ts +16 -3
  84. package/ScatterChart/ScatterChart.js +43 -12
  85. package/ScatterChart/ScatterPlot.d.ts +10 -0
  86. package/ScatterChart/ScatterPlot.js +12 -2
  87. package/ScatterChart/formatter.js +1 -2
  88. package/ScatterChart/legend.js +1 -2
  89. package/SparkLineChart/SparkLineChart.d.ts +13 -3
  90. package/SparkLineChart/SparkLineChart.js +34 -18
  91. package/colorPalettes/colorPalettes.js +6 -12
  92. package/constants.js +5 -8
  93. package/context/CartesianContextProvider.d.ts +5 -0
  94. package/context/CartesianContextProvider.js +31 -16
  95. package/context/DrawingProvider.d.ts +7 -0
  96. package/context/DrawingProvider.js +12 -6
  97. package/context/HighlightProvider.js +3 -4
  98. package/context/InteractionProvider.js +3 -4
  99. package/context/SeriesContextProvider.js +3 -4
  100. package/esm/BarChart/BarChart.js +49 -9
  101. package/esm/BarChart/BarElement.js +7 -4
  102. package/esm/BarChart/BarPlot.js +152 -67
  103. package/esm/BarChart/formatter.js +1 -1
  104. package/esm/ChartContainer/index.js +3 -0
  105. package/esm/ChartsAxis/ChartsAxis.js +26 -0
  106. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  107. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  108. package/esm/ChartsLegend/ChartsLegend.js +188 -142
  109. package/esm/ChartsSurface.js +4 -12
  110. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  111. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  112. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  113. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  114. package/esm/ChartsXAxis/ChartsXAxis.js +158 -37
  115. package/esm/ChartsYAxis/ChartsYAxis.js +83 -30
  116. package/esm/LineChart/AreaElement.js +10 -0
  117. package/esm/LineChart/AreaPlot.js +26 -6
  118. package/esm/LineChart/LineChart.js +58 -10
  119. package/esm/LineChart/LineElement.js +10 -0
  120. package/esm/LineChart/LineHighlightElement.js +78 -0
  121. package/esm/LineChart/LineHighlightPlot.js +103 -0
  122. package/esm/LineChart/LinePlot.js +25 -14
  123. package/esm/LineChart/MarkElement.js +12 -5
  124. package/esm/LineChart/MarkPlot.js +60 -13
  125. package/esm/LineChart/formatter.js +7 -3
  126. package/esm/LineChart/index.js +3 -1
  127. package/esm/PieChart/PieArc.js +26 -58
  128. package/esm/PieChart/PieArcLabel.js +43 -34
  129. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  130. package/esm/PieChart/PieArcPlot.js +84 -0
  131. package/esm/PieChart/PieChart.js +59 -12
  132. package/esm/PieChart/PiePlot.js +76 -57
  133. package/esm/PieChart/dataTransform/transition.js +130 -0
  134. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  135. package/esm/ResponsiveChartContainer/index.js +3 -3
  136. package/esm/ScatterChart/Scatter.js +10 -0
  137. package/esm/ScatterChart/ScatterChart.js +40 -8
  138. package/esm/ScatterChart/ScatterPlot.js +10 -0
  139. package/esm/SparkLineChart/SparkLineChart.js +32 -15
  140. package/esm/constants.js +1 -1
  141. package/esm/context/CartesianContextProvider.js +30 -14
  142. package/esm/context/DrawingProvider.js +8 -0
  143. package/esm/hooks/useChartDimensions.js +2 -0
  144. package/esm/hooks/useMounted.js +16 -0
  145. package/esm/hooks/useReducedMotion.js +27 -0
  146. package/esm/hooks/useTicks.js +15 -9
  147. package/esm/internals/components/AxisSharedComponents.js +15 -70
  148. package/esm/internals/components/ChartsText.js +77 -0
  149. package/esm/internals/domUtils.js +113 -0
  150. package/esm/internals/geometry.js +36 -0
  151. package/hooks/useAxisEvents.js +2 -2
  152. package/hooks/useChartDimensions.d.ts +2 -0
  153. package/hooks/useChartDimensions.js +5 -4
  154. package/hooks/useDrawingArea.js +2 -2
  155. package/hooks/useInteractionItemProps.js +2 -2
  156. package/hooks/useMounted.d.ts +1 -0
  157. package/hooks/useMounted.js +25 -0
  158. package/hooks/useReducedMotion.d.ts +8 -0
  159. package/hooks/useReducedMotion.js +33 -0
  160. package/hooks/useScale.d.ts +2 -2
  161. package/hooks/useScale.js +2 -2
  162. package/hooks/useTicks.d.ts +19 -11
  163. package/hooks/useTicks.js +19 -14
  164. package/index.js +1 -1
  165. package/internals/components/AxisSharedComponents.d.ts +0 -4
  166. package/internals/components/AxisSharedComponents.js +18 -78
  167. package/internals/components/ChartsText.d.ts +35 -0
  168. package/internals/components/ChartsText.js +87 -0
  169. package/internals/defaultizeColor.d.ts +8 -1
  170. package/internals/defaultizeValueFormatter.js +1 -2
  171. package/internals/domUtils.d.ts +13 -0
  172. package/internals/domUtils.js +122 -0
  173. package/internals/geometry.d.ts +9 -0
  174. package/internals/geometry.js +42 -0
  175. package/internals/stackSeries.js +2 -4
  176. package/legacy/BarChart/BarChart.js +49 -9
  177. package/legacy/BarChart/BarElement.js +6 -3
  178. package/legacy/BarChart/BarPlot.js +151 -63
  179. package/legacy/BarChart/formatter.js +1 -1
  180. package/legacy/ChartContainer/index.js +3 -0
  181. package/legacy/ChartsAxis/ChartsAxis.js +26 -0
  182. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  183. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  184. package/legacy/ChartsLegend/ChartsLegend.js +203 -140
  185. package/legacy/ChartsSurface.js +3 -12
  186. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  187. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  188. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  189. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  190. package/legacy/ChartsXAxis/ChartsXAxis.js +162 -39
  191. package/legacy/ChartsYAxis/ChartsYAxis.js +83 -30
  192. package/legacy/LineChart/AreaElement.js +10 -0
  193. package/legacy/LineChart/AreaPlot.js +31 -7
  194. package/legacy/LineChart/LineChart.js +58 -10
  195. package/legacy/LineChart/LineElement.js +10 -0
  196. package/legacy/LineChart/LineHighlightElement.js +77 -0
  197. package/legacy/LineChart/LineHighlightPlot.js +96 -0
  198. package/legacy/LineChart/LinePlot.js +29 -12
  199. package/legacy/LineChart/MarkElement.js +12 -5
  200. package/legacy/LineChart/MarkPlot.js +50 -5
  201. package/legacy/LineChart/formatter.js +7 -3
  202. package/legacy/LineChart/index.js +3 -1
  203. package/legacy/PieChart/PieArc.js +30 -62
  204. package/legacy/PieChart/PieArcLabel.js +48 -34
  205. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  206. package/legacy/PieChart/PieArcPlot.js +84 -0
  207. package/legacy/PieChart/PieChart.js +59 -12
  208. package/legacy/PieChart/PiePlot.js +76 -59
  209. package/legacy/PieChart/dataTransform/transition.js +142 -0
  210. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  211. package/legacy/ResponsiveChartContainer/index.js +3 -3
  212. package/legacy/ScatterChart/Scatter.js +10 -0
  213. package/legacy/ScatterChart/ScatterChart.js +40 -8
  214. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  215. package/legacy/SparkLineChart/SparkLineChart.js +32 -13
  216. package/legacy/constants.js +1 -1
  217. package/legacy/context/CartesianContextProvider.js +30 -14
  218. package/legacy/context/DrawingProvider.js +8 -0
  219. package/legacy/hooks/useChartDimensions.js +2 -0
  220. package/legacy/hooks/useMounted.js +21 -0
  221. package/legacy/hooks/useReducedMotion.js +27 -0
  222. package/legacy/hooks/useTicks.js +16 -9
  223. package/legacy/index.js +1 -1
  224. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  225. package/legacy/internals/components/ChartsText.js +79 -0
  226. package/legacy/internals/domUtils.js +121 -0
  227. package/legacy/internals/geometry.js +37 -0
  228. package/models/axis.d.ts +27 -9
  229. package/models/layout.d.ts +7 -6
  230. package/models/seriesType/line.d.ts +39 -1
  231. package/models/seriesType/pie.d.ts +5 -1
  232. package/modern/BarChart/BarChart.js +49 -9
  233. package/modern/BarChart/BarElement.js +7 -4
  234. package/modern/BarChart/BarPlot.js +149 -65
  235. package/modern/BarChart/formatter.js +1 -1
  236. package/modern/ChartContainer/index.js +3 -0
  237. package/modern/ChartsAxis/ChartsAxis.js +26 -0
  238. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  239. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  240. package/modern/ChartsLegend/ChartsLegend.js +188 -142
  241. package/modern/ChartsSurface.js +4 -12
  242. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  243. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  244. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  245. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  246. package/modern/ChartsXAxis/ChartsXAxis.js +158 -37
  247. package/modern/ChartsYAxis/ChartsYAxis.js +83 -30
  248. package/modern/LineChart/AreaElement.js +10 -0
  249. package/modern/LineChart/AreaPlot.js +25 -6
  250. package/modern/LineChart/LineChart.js +58 -10
  251. package/modern/LineChart/LineElement.js +10 -0
  252. package/modern/LineChart/LineHighlightElement.js +78 -0
  253. package/modern/LineChart/LineHighlightPlot.js +102 -0
  254. package/modern/LineChart/LinePlot.js +23 -10
  255. package/modern/LineChart/MarkElement.js +12 -5
  256. package/modern/LineChart/MarkPlot.js +60 -13
  257. package/modern/LineChart/formatter.js +4 -3
  258. package/modern/LineChart/index.js +3 -1
  259. package/modern/PieChart/PieArc.js +26 -57
  260. package/modern/PieChart/PieArcLabel.js +43 -34
  261. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  262. package/modern/PieChart/PieArcPlot.js +83 -0
  263. package/modern/PieChart/PieChart.js +59 -12
  264. package/modern/PieChart/PiePlot.js +76 -55
  265. package/modern/PieChart/dataTransform/transition.js +130 -0
  266. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  267. package/modern/ResponsiveChartContainer/index.js +3 -3
  268. package/modern/ScatterChart/Scatter.js +10 -0
  269. package/modern/ScatterChart/ScatterChart.js +40 -8
  270. package/modern/ScatterChart/ScatterPlot.js +10 -0
  271. package/modern/SparkLineChart/SparkLineChart.js +32 -15
  272. package/modern/constants.js +1 -1
  273. package/modern/context/CartesianContextProvider.js +29 -13
  274. package/modern/context/DrawingProvider.js +8 -0
  275. package/modern/hooks/useChartDimensions.js +2 -0
  276. package/modern/hooks/useMounted.js +16 -0
  277. package/modern/hooks/useReducedMotion.js +27 -0
  278. package/modern/hooks/useTicks.js +15 -9
  279. package/modern/index.js +1 -1
  280. package/modern/internals/components/AxisSharedComponents.js +15 -70
  281. package/modern/internals/components/ChartsText.js +77 -0
  282. package/modern/internals/domUtils.js +113 -0
  283. package/modern/internals/geometry.js +36 -0
  284. package/package.json +9 -6
  285. package/themeAugmentation/components.d.ts +1 -0
  286. 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
@@ -103,11 +118,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
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,
@@ -136,33 +155,33 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
136
155
  fill: PropTypes.string,
137
156
  label: PropTypes.string,
138
157
  labelFontSize: PropTypes.number,
158
+ labelStyle: PropTypes.object,
139
159
  position: PropTypes.oneOf(['left', 'right']),
140
160
  slotProps: PropTypes.object,
141
161
  slots: PropTypes.object,
142
162
  stroke: PropTypes.string,
143
163
  tickFontSize: PropTypes.number,
164
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
165
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
166
+ tickLabelStyle: PropTypes.object,
144
167
  tickMaxStep: PropTypes.number,
145
168
  tickMinStep: PropTypes.number,
146
169
  tickNumber: PropTypes.number,
147
170
  tickSize: PropTypes.number
148
171
  }), PropTypes.string]),
172
+ /**
173
+ * @deprecated Consider using `slotProps.legend` instead.
174
+ */
149
175
  legend: PropTypes.shape({
150
176
  classes: PropTypes.object,
151
177
  direction: PropTypes.oneOf(['column', 'row']),
152
178
  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
179
  position: PropTypes.shape({
160
180
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
161
181
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
162
182
  }),
163
183
  slotProps: PropTypes.object,
164
- slots: PropTypes.object,
165
- spacing: PropTypes.number
184
+ slots: PropTypes.object
166
185
  }),
167
186
  margin: PropTypes.shape({
168
187
  bottom: PropTypes.number,
@@ -170,6 +189,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
170
189
  right: PropTypes.number,
171
190
  top: PropTypes.number
172
191
  }),
192
+ onClick: PropTypes.func,
173
193
  /**
174
194
  * Indicate which axis to display the right of the charts.
175
195
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
@@ -183,11 +203,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
183
203
  fill: PropTypes.string,
184
204
  label: PropTypes.string,
185
205
  labelFontSize: PropTypes.number,
206
+ labelStyle: PropTypes.object,
186
207
  position: PropTypes.oneOf(['left', 'right']),
187
208
  slotProps: PropTypes.object,
188
209
  slots: PropTypes.object,
189
210
  stroke: PropTypes.string,
190
211
  tickFontSize: PropTypes.number,
212
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
213
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
214
+ tickLabelStyle: PropTypes.object,
191
215
  tickMaxStep: PropTypes.number,
192
216
  tickMinStep: PropTypes.number,
193
217
  tickNumber: PropTypes.number,
@@ -209,15 +233,19 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
209
233
  endAngle: PropTypes.number,
210
234
  faded: PropTypes.shape({
211
235
  additionalRadius: PropTypes.number,
236
+ color: PropTypes.string,
212
237
  cornerRadius: PropTypes.number,
213
238
  innerRadius: PropTypes.number,
214
- outerRadius: PropTypes.number
239
+ outerRadius: PropTypes.number,
240
+ paddingAngle: PropTypes.number
215
241
  }),
216
242
  highlighted: PropTypes.shape({
217
243
  additionalRadius: PropTypes.number,
244
+ color: PropTypes.string,
218
245
  cornerRadius: PropTypes.number,
219
246
  innerRadius: PropTypes.number,
220
- outerRadius: PropTypes.number
247
+ outerRadius: PropTypes.number,
248
+ paddingAngle: PropTypes.number
221
249
  }),
222
250
  highlightScope: PropTypes.shape({
223
251
  faded: PropTypes.oneOf(['global', 'none', 'series']),
@@ -232,6 +260,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
232
260
  type: PropTypes.oneOf(['pie']),
233
261
  valueFormatter: PropTypes.func
234
262
  })).isRequired,
263
+ /**
264
+ * If `true`, animations are skiped.
265
+ * @default false
266
+ */
267
+ skipAnimation: PropTypes.bool,
235
268
  /**
236
269
  * The props used for each component slot.
237
270
  * @default {}
@@ -244,6 +277,8 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
244
277
  axisContent: PropTypes.elementType,
245
278
  classes: PropTypes.object,
246
279
  itemContent: PropTypes.elementType,
280
+ slotProps: PropTypes.object,
281
+ slots: PropTypes.object,
247
282
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
248
283
  }),
249
284
  /**
@@ -259,11 +294,15 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
259
294
  fill: PropTypes.string,
260
295
  label: PropTypes.string,
261
296
  labelFontSize: PropTypes.number,
297
+ labelStyle: PropTypes.object,
262
298
  position: PropTypes.oneOf(['bottom', 'top']),
263
299
  slotProps: PropTypes.object,
264
300
  slots: PropTypes.object,
265
301
  stroke: PropTypes.string,
266
302
  tickFontSize: PropTypes.number,
303
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
304
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
305
+ tickLabelStyle: PropTypes.object,
267
306
  tickMaxStep: PropTypes.number,
268
307
  tickMinStep: PropTypes.number,
269
308
  tickNumber: PropTypes.number,
@@ -288,6 +327,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
288
327
  id: PropTypes.string,
289
328
  label: PropTypes.string,
290
329
  labelFontSize: PropTypes.number,
330
+ labelStyle: PropTypes.object,
291
331
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
292
332
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
293
333
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -296,6 +336,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
296
336
  slots: PropTypes.object,
297
337
  stroke: PropTypes.string,
298
338
  tickFontSize: PropTypes.number,
339
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
340
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
341
+ tickLabelStyle: PropTypes.object,
299
342
  tickMaxStep: PropTypes.number,
300
343
  tickMinStep: PropTypes.number,
301
344
  tickNumber: PropTypes.number,
@@ -314,6 +357,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
314
357
  id: PropTypes.string,
315
358
  label: PropTypes.string,
316
359
  labelFontSize: PropTypes.number,
360
+ labelStyle: PropTypes.object,
317
361
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
318
362
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
319
363
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -322,6 +366,9 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
322
366
  slots: PropTypes.object,
323
367
  stroke: PropTypes.string,
324
368
  tickFontSize: PropTypes.number,
369
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
370
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
371
+ tickLabelStyle: PropTypes.object,
325
372
  tickMaxStep: PropTypes.number,
326
373
  tickMinStep: PropTypes.number,
327
374
  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
  });
@@ -5,6 +5,16 @@ import { getValueToPositionMapper } from '../hooks/useScale';
5
5
  import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
6
6
  import { InteractionContext } from '../context/InteractionProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Demos:
10
+ *
11
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
12
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
13
+ *
14
+ * API:
15
+ *
16
+ * - [Scatter API](https://mui.com/x/api/charts/scatter/)
17
+ */
8
18
  function Scatter(props) {
9
19
  const {
10
20
  series,