@mui/x-charts 7.2.0 → 7.3.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 (269) hide show
  1. package/BarChart/BarChart.d.ts +1 -0
  2. package/BarChart/BarChart.js +40 -99
  3. package/BarChart/BarElement.d.ts +63 -62
  4. package/BarChart/BarElement.js +1 -2
  5. package/BarChart/BarPlot.js +14 -7
  6. package/BarChart/getColor.d.ts +3 -0
  7. package/BarChart/getColor.js +33 -0
  8. package/CHANGELOG.md +204 -2
  9. package/ChartContainer/ChartContainer.js +38 -5
  10. package/ChartsAxis/ChartsAxis.js +11 -103
  11. package/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  12. package/ChartsClipPath/ChartsClipPath.js +3 -3
  13. package/ChartsGrid/ChartsGrid.js +1 -1
  14. package/ChartsLegend/ChartsLegend.js +3 -3
  15. package/ChartsLegend/DefaultChartsLegend.js +1 -1
  16. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
  17. package/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
  18. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  19. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  20. package/ChartsSurface.js +1 -1
  21. package/ChartsText/ChartsText.js +1 -1
  22. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +4 -1
  23. package/ChartsTooltip/ChartsAxisTooltipContent.js +21 -3
  24. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +6 -0
  25. package/ChartsTooltip/ChartsItemTooltipContent.js +32 -2
  26. package/ChartsTooltip/ChartsTooltip.js +1 -1
  27. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -7
  28. package/ChartsTooltip/ChartsTooltipTable.js +8 -9
  29. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -7
  30. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +15 -8
  31. package/ChartsTooltip/utils.d.ts +5 -1
  32. package/ChartsTooltip/utils.js +1 -1
  33. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +7 -7
  34. package/ChartsXAxis/ChartsXAxis.js +3 -3
  35. package/ChartsYAxis/ChartsYAxis.js +3 -3
  36. package/Gauge/Gauge.js +1 -1
  37. package/Gauge/GaugeContainer.js +1 -1
  38. package/Gauge/GaugeProvider.js +6 -6
  39. package/Gauge/GaugeReferenceArc.js +1 -1
  40. package/Gauge/GaugeValueArc.js +1 -1
  41. package/Gauge/GaugeValueText.js +1 -1
  42. package/LineChart/AnimatedArea.d.ts +63 -62
  43. package/LineChart/AnimatedArea.js +7 -6
  44. package/LineChart/AnimatedLine.d.ts +63 -62
  45. package/LineChart/AnimatedLine.js +8 -6
  46. package/LineChart/AreaElement.d.ts +1 -0
  47. package/LineChart/AreaElement.js +5 -2
  48. package/LineChart/AreaPlot.js +8 -2
  49. package/LineChart/LineChart.d.ts +1 -0
  50. package/LineChart/LineChart.js +40 -99
  51. package/LineChart/LineElement.d.ts +1 -0
  52. package/LineChart/LineElement.js +5 -2
  53. package/LineChart/LineHighlightElement.js +1 -1
  54. package/LineChart/LineHighlightPlot.js +5 -2
  55. package/LineChart/LinePlot.js +8 -2
  56. package/LineChart/MarkElement.js +1 -1
  57. package/LineChart/MarkPlot.js +6 -6
  58. package/LineChart/getColor.d.ts +3 -0
  59. package/LineChart/getColor.js +31 -0
  60. package/PieChart/PieArc.d.ts +1 -0
  61. package/PieChart/PieArc.js +1 -1
  62. package/PieChart/PieArcLabel.d.ts +1 -0
  63. package/PieChart/PieArcLabel.js +1 -1
  64. package/PieChart/PieArcLabelPlot.js +1 -1
  65. package/PieChart/PieArcPlot.js +1 -1
  66. package/PieChart/PieChart.d.ts +1 -0
  67. package/PieChart/PieChart.js +40 -99
  68. package/PieChart/PiePlot.js +27 -7
  69. package/PieChart/dataTransform/transition.d.ts +1 -0
  70. package/PieChart/dataTransform/useTransformData.js +1 -1
  71. package/PieChart/formatter.js +4 -2
  72. package/PieChart/getColor.d.ts +2 -0
  73. package/PieChart/getColor.js +11 -0
  74. package/PieChart/getPieCoordinates.d.ts +7 -0
  75. package/PieChart/getPieCoordinates.js +25 -0
  76. package/PieChart/index.d.ts +1 -0
  77. package/PieChart/index.js +11 -0
  78. package/ResponsiveChartContainer/ResponsiveChartContainer.js +35 -3
  79. package/ResponsiveChartContainer/useChartContainerDimensions.js +1 -1
  80. package/ScatterChart/Scatter.d.ts +1 -0
  81. package/ScatterChart/Scatter.js +7 -4
  82. package/ScatterChart/ScatterChart.d.ts +3 -1
  83. package/ScatterChart/ScatterChart.js +95 -126
  84. package/ScatterChart/ScatterPlot.js +11 -1
  85. package/ScatterChart/getColor.d.ts +4 -0
  86. package/ScatterChart/getColor.js +48 -0
  87. package/SparkLineChart/SparkLineChart.js +16 -1
  88. package/context/CartesianContextProvider.d.ts +4 -3
  89. package/context/CartesianContextProvider.js +24 -9
  90. package/context/DrawingProvider.js +1 -1
  91. package/context/HighlightProvider.js +1 -1
  92. package/context/InteractionProvider.js +1 -1
  93. package/context/SeriesContextProvider.js +1 -1
  94. package/context/ZAxisContextProvider.d.ts +33 -0
  95. package/context/ZAxisContextProvider.js +98 -0
  96. package/context/index.d.ts +2 -0
  97. package/context/index.js +8 -1
  98. package/esm/BarChart/BarChart.js +40 -100
  99. package/esm/BarChart/BarElement.js +0 -1
  100. package/esm/BarChart/BarPlot.js +15 -7
  101. package/esm/BarChart/getColor.js +27 -0
  102. package/esm/ChartContainer/ChartContainer.js +38 -5
  103. package/esm/ChartsAxis/ChartsAxis.js +11 -104
  104. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -2
  105. package/esm/ChartsClipPath/ChartsClipPath.js +2 -2
  106. package/esm/ChartsGrid/ChartsGrid.js +1 -2
  107. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  108. package/esm/ChartsLegend/DefaultChartsLegend.js +1 -2
  109. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -2
  110. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -2
  111. package/esm/ChartsSurface.js +1 -2
  112. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +20 -2
  113. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +31 -1
  114. package/esm/ChartsTooltip/ChartsTooltipTable.js +8 -8
  115. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -8
  116. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +15 -9
  117. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  118. package/esm/ChartsXAxis/ChartsXAxis.js +3 -4
  119. package/esm/ChartsYAxis/ChartsYAxis.js +3 -4
  120. package/esm/Gauge/Gauge.js +1 -2
  121. package/esm/Gauge/GaugeProvider.js +5 -5
  122. package/esm/LineChart/AnimatedArea.js +7 -7
  123. package/esm/LineChart/AnimatedLine.js +8 -7
  124. package/esm/LineChart/AreaElement.js +4 -1
  125. package/esm/LineChart/AreaPlot.js +7 -1
  126. package/esm/LineChart/LineChart.js +40 -100
  127. package/esm/LineChart/LineElement.js +4 -1
  128. package/esm/LineChart/LineHighlightPlot.js +4 -1
  129. package/esm/LineChart/LinePlot.js +7 -1
  130. package/esm/LineChart/MarkPlot.js +5 -5
  131. package/esm/LineChart/getColor.js +25 -0
  132. package/esm/PieChart/PieChart.js +40 -100
  133. package/esm/PieChart/PiePlot.js +27 -8
  134. package/esm/PieChart/formatter.js +4 -2
  135. package/esm/PieChart/getColor.js +5 -0
  136. package/esm/PieChart/getPieCoordinates.js +19 -0
  137. package/esm/PieChart/index.js +2 -1
  138. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +34 -2
  139. package/esm/ScatterChart/Scatter.js +6 -3
  140. package/esm/ScatterChart/ScatterChart.js +95 -127
  141. package/esm/ScatterChart/ScatterPlot.js +10 -0
  142. package/esm/ScatterChart/getColor.js +42 -0
  143. package/esm/SparkLineChart/SparkLineChart.js +16 -2
  144. package/esm/context/CartesianContextProvider.js +23 -8
  145. package/esm/context/ZAxisContextProvider.js +89 -0
  146. package/esm/context/index.js +1 -1
  147. package/esm/hooks/index.js +4 -1
  148. package/esm/hooks/useAxisEvents.js +7 -6
  149. package/esm/hooks/useChartId.js +8 -0
  150. package/esm/hooks/useSeries.js +64 -0
  151. package/esm/hooks/useSvgRef.js +9 -0
  152. package/esm/internals/colorGetter.js +22 -0
  153. package/esm/internals/colorScale.js +16 -0
  154. package/esm/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +95 -0
  155. package/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  156. package/esm/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +40 -0
  157. package/esm/internals/components/ChartsAxesGradients/index.js +1 -0
  158. package/esm/models/colorMapping.js +1 -0
  159. package/esm/models/seriesType/index.js +6 -1
  160. package/esm/models/z-axis.js +1 -0
  161. package/hooks/index.d.ts +3 -0
  162. package/hooks/index.js +65 -1
  163. package/hooks/useAxisEvents.js +8 -7
  164. package/hooks/useChartDimensions.js +1 -1
  165. package/hooks/useChartId.d.ts +1 -0
  166. package/hooks/useChartId.js +16 -0
  167. package/hooks/useDrawingArea.js +1 -1
  168. package/hooks/useInteractionItemProps.js +1 -1
  169. package/hooks/useMounted.js +1 -1
  170. package/hooks/useScale.js +1 -1
  171. package/hooks/useSeries.d.ts +45 -0
  172. package/hooks/useSeries.js +75 -0
  173. package/hooks/useSvgRef.d.ts +2 -0
  174. package/hooks/useSvgRef.js +17 -0
  175. package/hooks/useTicks.js +1 -1
  176. package/index.js +1 -1
  177. package/internals/colorGetter.d.ts +7 -0
  178. package/internals/colorGetter.js +29 -0
  179. package/internals/colorScale.d.ts +5 -0
  180. package/internals/colorScale.js +24 -0
  181. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.d.ts +3 -0
  182. package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +105 -0
  183. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.d.ts +13 -0
  184. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +63 -0
  185. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.d.ts +12 -0
  186. package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +48 -0
  187. package/internals/components/ChartsAxesGradients/index.d.ts +1 -0
  188. package/internals/components/ChartsAxesGradients/index.js +16 -0
  189. package/internals/defaultizeColor.d.ts +5 -4
  190. package/internals/defaultizeValueFormatter.d.ts +5 -5
  191. package/internals/getScale.d.ts +2 -2
  192. package/internals/useAnimatedPath.d.ts +1 -0
  193. package/internals/useAnimatedPath.js +1 -1
  194. package/models/axis.d.ts +44 -4
  195. package/models/colorMapping.d.ts +46 -0
  196. package/models/colorMapping.js +5 -0
  197. package/models/index.d.ts +1 -1
  198. package/models/seriesType/common.d.ts +10 -2
  199. package/models/seriesType/index.d.ts +2 -0
  200. package/models/seriesType/index.js +17 -1
  201. package/models/seriesType/pie.d.ts +5 -0
  202. package/models/seriesType/scatter.d.ts +5 -0
  203. package/models/z-axis.d.ts +14 -0
  204. package/models/z-axis.js +5 -0
  205. package/modern/BarChart/BarChart.js +40 -100
  206. package/modern/BarChart/BarElement.js +0 -1
  207. package/modern/BarChart/BarPlot.js +15 -7
  208. package/modern/BarChart/getColor.js +27 -0
  209. package/modern/ChartContainer/ChartContainer.js +38 -5
  210. package/modern/ChartsAxis/ChartsAxis.js +11 -104
  211. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -2
  212. package/modern/ChartsClipPath/ChartsClipPath.js +2 -2
  213. package/modern/ChartsGrid/ChartsGrid.js +1 -2
  214. package/modern/ChartsLegend/ChartsLegend.js +2 -2
  215. package/modern/ChartsLegend/DefaultChartsLegend.js +1 -2
  216. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -2
  217. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -2
  218. package/modern/ChartsSurface.js +1 -2
  219. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +20 -2
  220. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +31 -1
  221. package/modern/ChartsTooltip/ChartsTooltipTable.js +8 -8
  222. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -8
  223. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +15 -9
  224. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +6 -6
  225. package/modern/ChartsXAxis/ChartsXAxis.js +3 -4
  226. package/modern/ChartsYAxis/ChartsYAxis.js +3 -4
  227. package/modern/Gauge/Gauge.js +1 -2
  228. package/modern/Gauge/GaugeProvider.js +5 -5
  229. package/modern/LineChart/AnimatedArea.js +7 -7
  230. package/modern/LineChart/AnimatedLine.js +8 -7
  231. package/modern/LineChart/AreaElement.js +4 -1
  232. package/modern/LineChart/AreaPlot.js +7 -1
  233. package/modern/LineChart/LineChart.js +40 -100
  234. package/modern/LineChart/LineElement.js +4 -1
  235. package/modern/LineChart/LineHighlightPlot.js +4 -1
  236. package/modern/LineChart/LinePlot.js +7 -1
  237. package/modern/LineChart/MarkPlot.js +5 -5
  238. package/modern/LineChart/getColor.js +25 -0
  239. package/modern/PieChart/PieChart.js +40 -100
  240. package/modern/PieChart/PiePlot.js +27 -8
  241. package/modern/PieChart/formatter.js +4 -2
  242. package/modern/PieChart/getColor.js +5 -0
  243. package/modern/PieChart/getPieCoordinates.js +19 -0
  244. package/modern/PieChart/index.js +2 -1
  245. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +34 -2
  246. package/modern/ScatterChart/Scatter.js +6 -3
  247. package/modern/ScatterChart/ScatterChart.js +95 -127
  248. package/modern/ScatterChart/ScatterPlot.js +10 -0
  249. package/modern/ScatterChart/getColor.js +42 -0
  250. package/modern/SparkLineChart/SparkLineChart.js +16 -2
  251. package/modern/context/CartesianContextProvider.js +23 -8
  252. package/modern/context/ZAxisContextProvider.js +89 -0
  253. package/modern/context/index.js +1 -1
  254. package/modern/hooks/index.js +4 -1
  255. package/modern/hooks/useAxisEvents.js +7 -6
  256. package/modern/hooks/useChartId.js +8 -0
  257. package/modern/hooks/useSeries.js +64 -0
  258. package/modern/hooks/useSvgRef.js +9 -0
  259. package/modern/index.js +1 -1
  260. package/modern/internals/colorGetter.js +22 -0
  261. package/modern/internals/colorScale.js +16 -0
  262. package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +95 -0
  263. package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +55 -0
  264. package/modern/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +40 -0
  265. package/modern/internals/components/ChartsAxesGradients/index.js +1 -0
  266. package/modern/models/colorMapping.js +1 -0
  267. package/modern/models/seriesType/index.js +6 -1
  268. package/modern/models/z-axis.js +1 -0
  269. package/package.json +3 -5
@@ -15,8 +15,7 @@ import { ChartsClipPath } from '../ChartsClipPath';
15
15
  import { LineHighlightPlot } from './LineHighlightPlot';
16
16
  import { ChartsGrid } from '../ChartsGrid';
17
17
  import { ChartsOnAxisClickHandler } from '../ChartsOnAxisClickHandler';
18
- import { jsx as _jsx } from "react/jsx-runtime";
19
- import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
19
  /**
21
20
  * Demos:
22
21
  *
@@ -144,30 +143,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
144
143
  * Can be a string (the id of the axis) or an object `ChartsXAxisProps`.
145
144
  * @default xAxisIds[0] The id of the first provided axis
146
145
  */
147
- bottomAxis: PropTypes.oneOfType([PropTypes.shape({
148
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
149
- classes: PropTypes.object,
150
- disableLine: PropTypes.bool,
151
- disableTicks: PropTypes.bool,
152
- fill: PropTypes.string,
153
- label: PropTypes.string,
154
- labelFontSize: PropTypes.number,
155
- labelStyle: PropTypes.object,
156
- position: PropTypes.oneOf(['bottom', 'top']),
157
- slotProps: PropTypes.object,
158
- slots: PropTypes.object,
159
- stroke: PropTypes.string,
160
- tickFontSize: PropTypes.number,
161
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
162
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
163
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
164
- tickLabelStyle: PropTypes.object,
165
- tickMaxStep: PropTypes.number,
166
- tickMinStep: PropTypes.number,
167
- tickNumber: PropTypes.number,
168
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
169
- tickSize: PropTypes.number
170
- }), PropTypes.string]),
146
+ bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
171
147
  children: PropTypes.node,
172
148
  className: PropTypes.string,
173
149
  /**
@@ -206,30 +182,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
206
182
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
207
183
  * @default yAxisIds[0] The id of the first provided axis
208
184
  */
209
- leftAxis: PropTypes.oneOfType([PropTypes.shape({
210
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
211
- classes: PropTypes.object,
212
- disableLine: PropTypes.bool,
213
- disableTicks: PropTypes.bool,
214
- fill: PropTypes.string,
215
- label: PropTypes.string,
216
- labelFontSize: PropTypes.number,
217
- labelStyle: PropTypes.object,
218
- position: PropTypes.oneOf(['left', 'right']),
219
- slotProps: PropTypes.object,
220
- slots: PropTypes.object,
221
- stroke: PropTypes.string,
222
- tickFontSize: PropTypes.number,
223
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
224
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
225
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
226
- tickLabelStyle: PropTypes.object,
227
- tickMaxStep: PropTypes.number,
228
- tickMinStep: PropTypes.number,
229
- tickNumber: PropTypes.number,
230
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
231
- tickSize: PropTypes.number
232
- }), PropTypes.string]),
185
+ leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
233
186
  /**
234
187
  * @deprecated Consider using `slotProps.legend` instead.
235
188
  */
@@ -280,32 +233,10 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
280
233
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
281
234
  * @default null
282
235
  */
283
- rightAxis: PropTypes.oneOfType([PropTypes.shape({
284
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
285
- classes: PropTypes.object,
286
- disableLine: PropTypes.bool,
287
- disableTicks: PropTypes.bool,
288
- fill: PropTypes.string,
289
- label: PropTypes.string,
290
- labelFontSize: PropTypes.number,
291
- labelStyle: PropTypes.object,
292
- position: PropTypes.oneOf(['left', 'right']),
293
- slotProps: PropTypes.object,
294
- slots: PropTypes.object,
295
- stroke: PropTypes.string,
296
- tickFontSize: PropTypes.number,
297
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
298
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
299
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
300
- tickLabelStyle: PropTypes.object,
301
- tickMaxStep: PropTypes.number,
302
- tickMinStep: PropTypes.number,
303
- tickNumber: PropTypes.number,
304
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
305
- tickSize: PropTypes.number
306
- }), PropTypes.string]),
236
+ rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
307
237
  /**
308
238
  * The series to display in the line chart.
239
+ * An array of [[LineSeriesType]] objects.
309
240
  */
310
241
  series: PropTypes.arrayOf(PropTypes.object).isRequired,
311
242
  /**
@@ -343,30 +274,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
343
274
  * Can be a string (the id of the axis) or an object `ChartsXAxisProps`.
344
275
  * @default null
345
276
  */
346
- topAxis: PropTypes.oneOfType([PropTypes.shape({
347
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
348
- classes: PropTypes.object,
349
- disableLine: PropTypes.bool,
350
- disableTicks: PropTypes.bool,
351
- fill: PropTypes.string,
352
- label: PropTypes.string,
353
- labelFontSize: PropTypes.number,
354
- labelStyle: PropTypes.object,
355
- position: PropTypes.oneOf(['bottom', 'top']),
356
- slotProps: PropTypes.object,
357
- slots: PropTypes.object,
358
- stroke: PropTypes.string,
359
- tickFontSize: PropTypes.number,
360
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
361
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
362
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
363
- tickLabelStyle: PropTypes.object,
364
- tickMaxStep: PropTypes.number,
365
- tickMinStep: PropTypes.number,
366
- tickNumber: PropTypes.number,
367
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
368
- tickSize: PropTypes.number
369
- }), PropTypes.string]),
277
+ topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
370
278
  viewBox: PropTypes.shape({
371
279
  height: PropTypes.number,
372
280
  width: PropTypes.number,
@@ -379,11 +287,27 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
379
287
  width: PropTypes.number,
380
288
  /**
381
289
  * The configuration of the x-axes.
382
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
290
+ * If not provided, a default axis config is used.
291
+ * An array of [[AxisConfig]] objects.
383
292
  */
384
293
  xAxis: PropTypes.arrayOf(PropTypes.shape({
385
294
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
386
295
  classes: PropTypes.object,
296
+ colorMap: PropTypes.oneOfType([PropTypes.shape({
297
+ color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
298
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
299
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
300
+ type: PropTypes.oneOf(['continuous']).isRequired
301
+ }), PropTypes.shape({
302
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
303
+ thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
304
+ type: PropTypes.oneOf(['piecewise']).isRequired
305
+ }), PropTypes.shape({
306
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
307
+ type: PropTypes.oneOf(['ordinal']).isRequired,
308
+ unknownColor: PropTypes.string,
309
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
310
+ })]),
387
311
  data: PropTypes.array,
388
312
  dataKey: PropTypes.string,
389
313
  disableLine: PropTypes.bool,
@@ -416,11 +340,27 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
416
340
  })),
417
341
  /**
418
342
  * The configuration of the y-axes.
419
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
343
+ * If not provided, a default axis config is used.
344
+ * An array of [[AxisConfig]] objects.
420
345
  */
421
346
  yAxis: PropTypes.arrayOf(PropTypes.shape({
422
347
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
423
348
  classes: PropTypes.object,
349
+ colorMap: PropTypes.oneOfType([PropTypes.shape({
350
+ color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
351
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
352
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
353
+ type: PropTypes.oneOf(['continuous']).isRequired
354
+ }), PropTypes.shape({
355
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
356
+ thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
357
+ type: PropTypes.oneOf(['piecewise']).isRequired
358
+ }), PropTypes.shape({
359
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
360
+ type: PropTypes.oneOf(['ordinal']).isRequired,
361
+ unknownColor: PropTypes.string,
362
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
363
+ })]),
424
364
  data: PropTypes.array,
425
365
  dataKey: PropTypes.string,
426
366
  disableLine: PropTypes.bool,
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["id", "classes", "color", "highlightScope", "slots", "slotProps", "onClick"];
3
+ const _excluded = ["id", "classes", "color", "gradientId", "highlightScope", "slots", "slotProps", "onClick"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import composeClasses from '@mui/utils/composeClasses';
@@ -42,6 +42,7 @@ function LineElement(props) {
42
42
  id,
43
43
  classes: innerClasses,
44
44
  color,
45
+ gradientId,
45
46
  highlightScope,
46
47
  slots,
47
48
  slotProps,
@@ -64,6 +65,7 @@ function LineElement(props) {
64
65
  id,
65
66
  classes: innerClasses,
66
67
  color,
68
+ gradientId,
67
69
  isFaded,
68
70
  isHighlighted
69
71
  };
@@ -92,6 +94,7 @@ process.env.NODE_ENV !== "production" ? LineElement.propTypes = {
92
94
  classes: PropTypes.object,
93
95
  color: PropTypes.string.isRequired,
94
96
  d: PropTypes.string.isRequired,
97
+ gradientId: PropTypes.string,
95
98
  highlightScope: PropTypes.shape({
96
99
  faded: PropTypes.oneOf(['global', 'none', 'series']),
97
100
  highlighted: PropTypes.oneOf(['item', 'none', 'series'])
@@ -9,6 +9,7 @@ import { LineHighlightElement } from './LineHighlightElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
10
  import { InteractionContext } from '../context/InteractionProvider';
11
11
  import { DEFAULT_X_AXIS_KEY } from '../constants';
12
+ import getColor from './getColor';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  /**
14
15
  * Demos:
@@ -74,9 +75,11 @@ function LineHighlightPlot(props) {
74
75
  }
75
76
  const x = xScale(xData[highlightedIndex]);
76
77
  const y = yScale(stackedData[highlightedIndex][1]); // This should not be undefined since y should not be a band scale
78
+
79
+ const colorGetter = getColor(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]);
77
80
  return /*#__PURE__*/_jsx(Element, _extends({
78
81
  id: seriesId,
79
- color: series[seriesId].color,
82
+ color: colorGetter(highlightedIndex),
80
83
  x: x,
81
84
  y: y
82
85
  }, slotProps?.lineHighlight), `${seriesId}`);
@@ -10,6 +10,7 @@ import { LineElement } from './LineElement';
10
10
  import { getValueToPositionMapper } from '../hooks/useScale';
11
11
  import getCurveFactory from '../internals/getCurve';
12
12
  import { DEFAULT_X_AXIS_KEY } from '../constants';
13
+ import { useChartGradient } from '../internals/components/ChartsAxesGradients';
13
14
  import { jsx as _jsx } from "react/jsx-runtime";
14
15
  const useAggregatedData = () => {
15
16
  const seriesData = React.useContext(SeriesContext).line;
@@ -43,6 +44,7 @@ const useAggregatedData = () => {
43
44
  const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
44
45
  const yScale = yAxis[yAxisKey].scale;
45
46
  const xData = xAxis[xAxisKey].data;
47
+ const gradientUsed = yAxis[yAxisKey].colorScale && [yAxisKey, 'y'] || xAxis[xAxisKey].colorScale && [xAxisKey, 'x'] || undefined;
46
48
  if (process.env.NODE_ENV !== 'production') {
47
49
  if (xData === undefined) {
48
50
  throw new Error(`MUI X Charts: ${xAxisKey === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} should have data property to be able to display a line plot.`);
@@ -59,6 +61,7 @@ const useAggregatedData = () => {
59
61
  const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
60
62
  const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || '';
61
63
  return _extends({}, series[seriesId], {
64
+ gradientUsed,
62
65
  d,
63
66
  seriesId
64
67
  });
@@ -84,18 +87,21 @@ function LinePlot(props) {
84
87
  onItemClick
85
88
  } = props,
86
89
  other = _objectWithoutPropertiesLoose(props, _excluded);
90
+ const getGradientId = useChartGradient();
87
91
  const completedData = useAggregatedData();
88
92
  return /*#__PURE__*/_jsx("g", _extends({}, other, {
89
93
  children: completedData.map(({
90
94
  d,
91
95
  seriesId,
92
96
  color,
93
- highlightScope
97
+ highlightScope,
98
+ gradientUsed
94
99
  }) => {
95
100
  return /*#__PURE__*/_jsx(LineElement, {
96
101
  id: seriesId,
97
102
  d: d,
98
103
  color: color,
104
+ gradientId: gradientUsed && getGradientId(...gradientUsed),
99
105
  highlightScope: highlightScope,
100
106
  skipAnimation: skipAnimation,
101
107
  slots: slots,
@@ -7,9 +7,10 @@ import { SeriesContext } from '../context/SeriesContextProvider';
7
7
  import { CartesianContext } from '../context/CartesianContextProvider';
8
8
  import { MarkElement } from './MarkElement';
9
9
  import { getValueToPositionMapper } from '../hooks/useScale';
10
+ import { useChartId } from '../hooks/useChartId';
10
11
  import { DEFAULT_X_AXIS_KEY } from '../constants';
11
- import { DrawingContext } from '../context/DrawingProvider';
12
12
  import { cleanId } from '../internals/utils';
13
+ import getColor from './getColor';
13
14
  import { jsx as _jsx } from "react/jsx-runtime";
14
15
  /**
15
16
  * Demos:
@@ -31,9 +32,7 @@ function MarkPlot(props) {
31
32
  other = _objectWithoutPropertiesLoose(props, _excluded);
32
33
  const seriesData = React.useContext(SeriesContext).line;
33
34
  const axisData = React.useContext(CartesianContext);
34
- const {
35
- chartId
36
- } = React.useContext(DrawingContext);
35
+ const chartId = useChartId();
37
36
  const Mark = slots?.mark ?? MarkElement;
38
37
  if (seriesData === undefined) {
39
38
  return null;
@@ -87,6 +86,7 @@ function MarkPlot(props) {
87
86
  }
88
87
  const clipId = cleanId(`${chartId}-${seriesId}-line-clip`); // We assume that if displaying line mark, the line will also be rendered
89
88
 
89
+ const colorGetter = getColor(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]);
90
90
  return /*#__PURE__*/_jsx("g", {
91
91
  clipPath: `url(#${clipId})`,
92
92
  children: xData?.map((x, index) => {
@@ -135,7 +135,7 @@ function MarkPlot(props) {
135
135
  id: seriesId,
136
136
  dataIndex: index,
137
137
  shape: "circle",
138
- color: series[seriesId].color,
138
+ color: colorGetter(index),
139
139
  x: x,
140
140
  y: y // Don't know why TS doesn't get from the filter that y can't be null
141
141
  ,
@@ -0,0 +1,25 @@
1
+ export default function getColor(series, xAxis, yAxis) {
2
+ const yColorScale = yAxis.colorScale;
3
+ const xColorScale = xAxis.colorScale;
4
+ if (yColorScale) {
5
+ return dataIndex => {
6
+ const value = series.data[dataIndex];
7
+ const color = value === null ? series.color : yColorScale(value);
8
+ if (color === null) {
9
+ return series.color;
10
+ }
11
+ return color;
12
+ };
13
+ }
14
+ if (xColorScale) {
15
+ return dataIndex => {
16
+ const value = xAxis.data?.[dataIndex];
17
+ const color = value === null ? series.color : xColorScale(value);
18
+ if (color === null) {
19
+ return series.color;
20
+ }
21
+ return color;
22
+ };
23
+ }
24
+ return () => series.color;
25
+ }
@@ -9,8 +9,7 @@ import { ChartsLegend } from '../ChartsLegend';
9
9
  import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
10
10
  import { PiePlot } from './PiePlot';
11
11
  import { useIsRTL } from '../internals/useIsRTL';
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
13
  const defaultMargin = {
15
14
  top: 5,
16
15
  bottom: 5,
@@ -124,30 +123,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
124
123
  * Can be a string (the id of the axis) or an object `ChartsXAxisProps`.
125
124
  * @default null
126
125
  */
127
- bottomAxis: PropTypes.oneOfType([PropTypes.shape({
128
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
129
- classes: PropTypes.object,
130
- disableLine: PropTypes.bool,
131
- disableTicks: PropTypes.bool,
132
- fill: PropTypes.string,
133
- label: PropTypes.string,
134
- labelFontSize: PropTypes.number,
135
- labelStyle: PropTypes.object,
136
- position: PropTypes.oneOf(['bottom', 'top']),
137
- slotProps: PropTypes.object,
138
- slots: PropTypes.object,
139
- stroke: PropTypes.string,
140
- tickFontSize: PropTypes.number,
141
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
142
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
143
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
144
- tickLabelStyle: PropTypes.object,
145
- tickMaxStep: PropTypes.number,
146
- tickMinStep: PropTypes.number,
147
- tickNumber: PropTypes.number,
148
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
149
- tickSize: PropTypes.number
150
- }), PropTypes.string]),
126
+ bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
151
127
  children: PropTypes.node,
152
128
  className: PropTypes.string,
153
129
  /**
@@ -175,30 +151,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
175
151
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
176
152
  * @default null
177
153
  */
178
- leftAxis: PropTypes.oneOfType([PropTypes.shape({
179
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
180
- classes: PropTypes.object,
181
- disableLine: PropTypes.bool,
182
- disableTicks: PropTypes.bool,
183
- fill: PropTypes.string,
184
- label: PropTypes.string,
185
- labelFontSize: PropTypes.number,
186
- labelStyle: PropTypes.object,
187
- position: PropTypes.oneOf(['left', 'right']),
188
- slotProps: PropTypes.object,
189
- slots: PropTypes.object,
190
- stroke: PropTypes.string,
191
- tickFontSize: PropTypes.number,
192
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
193
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
194
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
195
- tickLabelStyle: PropTypes.object,
196
- tickMaxStep: PropTypes.number,
197
- tickMinStep: PropTypes.number,
198
- tickNumber: PropTypes.number,
199
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
200
- tickSize: PropTypes.number
201
- }), PropTypes.string]),
154
+ leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
202
155
  /**
203
156
  * The props of the legend.
204
157
  * @default { direction: 'column', position: { vertical: 'middle', horizontal: 'right' } }
@@ -236,32 +189,10 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
236
189
  * Can be a string (the id of the axis) or an object `ChartsYAxisProps`.
237
190
  * @default null
238
191
  */
239
- rightAxis: PropTypes.oneOfType([PropTypes.shape({
240
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
241
- classes: PropTypes.object,
242
- disableLine: PropTypes.bool,
243
- disableTicks: PropTypes.bool,
244
- fill: PropTypes.string,
245
- label: PropTypes.string,
246
- labelFontSize: PropTypes.number,
247
- labelStyle: PropTypes.object,
248
- position: PropTypes.oneOf(['left', 'right']),
249
- slotProps: PropTypes.object,
250
- slots: PropTypes.object,
251
- stroke: PropTypes.string,
252
- tickFontSize: PropTypes.number,
253
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
254
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
255
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
256
- tickLabelStyle: PropTypes.object,
257
- tickMaxStep: PropTypes.number,
258
- tickMinStep: PropTypes.number,
259
- tickNumber: PropTypes.number,
260
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
261
- tickSize: PropTypes.number
262
- }), PropTypes.string]),
192
+ rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
263
193
  /**
264
194
  * The series to display in the pie chart.
195
+ * An array of [[PieSeriesType]] objects.
265
196
  */
266
197
  series: PropTypes.arrayOf(PropTypes.object).isRequired,
267
198
  /**
@@ -299,30 +230,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
299
230
  * Can be a string (the id of the axis) or an object `ChartsXAxisProps`.
300
231
  * @default null
301
232
  */
302
- topAxis: PropTypes.oneOfType([PropTypes.shape({
303
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
304
- classes: PropTypes.object,
305
- disableLine: PropTypes.bool,
306
- disableTicks: PropTypes.bool,
307
- fill: PropTypes.string,
308
- label: PropTypes.string,
309
- labelFontSize: PropTypes.number,
310
- labelStyle: PropTypes.object,
311
- position: PropTypes.oneOf(['bottom', 'top']),
312
- slotProps: PropTypes.object,
313
- slots: PropTypes.object,
314
- stroke: PropTypes.string,
315
- tickFontSize: PropTypes.number,
316
- tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
317
- tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
318
- tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
319
- tickLabelStyle: PropTypes.object,
320
- tickMaxStep: PropTypes.number,
321
- tickMinStep: PropTypes.number,
322
- tickNumber: PropTypes.number,
323
- tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
324
- tickSize: PropTypes.number
325
- }), PropTypes.string]),
233
+ topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
326
234
  viewBox: PropTypes.shape({
327
235
  height: PropTypes.number,
328
236
  width: PropTypes.number,
@@ -335,11 +243,27 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
335
243
  width: PropTypes.number,
336
244
  /**
337
245
  * The configuration of the x-axes.
338
- * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
246
+ * If not provided, a default axis config is used.
247
+ * An array of [[AxisConfig]] objects.
339
248
  */
340
249
  xAxis: PropTypes.arrayOf(PropTypes.shape({
341
250
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
342
251
  classes: PropTypes.object,
252
+ colorMap: PropTypes.oneOfType([PropTypes.shape({
253
+ color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
254
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
255
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
256
+ type: PropTypes.oneOf(['continuous']).isRequired
257
+ }), PropTypes.shape({
258
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
259
+ thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
260
+ type: PropTypes.oneOf(['piecewise']).isRequired
261
+ }), PropTypes.shape({
262
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
263
+ type: PropTypes.oneOf(['ordinal']).isRequired,
264
+ unknownColor: PropTypes.string,
265
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
266
+ })]),
343
267
  data: PropTypes.array,
344
268
  dataKey: PropTypes.string,
345
269
  disableLine: PropTypes.bool,
@@ -372,11 +296,27 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
372
296
  })),
373
297
  /**
374
298
  * The configuration of the y-axes.
375
- * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
299
+ * If not provided, a default axis config is used.
300
+ * An array of [[AxisConfig]] objects.
376
301
  */
377
302
  yAxis: PropTypes.arrayOf(PropTypes.shape({
378
303
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
379
304
  classes: PropTypes.object,
305
+ colorMap: PropTypes.oneOfType([PropTypes.shape({
306
+ color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
307
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
308
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
309
+ type: PropTypes.oneOf(['continuous']).isRequired
310
+ }), PropTypes.shape({
311
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
312
+ thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
313
+ type: PropTypes.oneOf(['piecewise']).isRequired
314
+ }), PropTypes.shape({
315
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
316
+ type: PropTypes.oneOf(['ordinal']).isRequired,
317
+ unknownColor: PropTypes.string,
318
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
319
+ })]),
380
320
  data: PropTypes.array,
381
321
  dataKey: PropTypes.string,
382
322
  disableLine: PropTypes.bool,
@@ -5,8 +5,8 @@ import { DrawingContext } from '../context/DrawingProvider';
5
5
  import { PieArcPlot } from './PieArcPlot';
6
6
  import { PieArcLabelPlot } from './PieArcLabelPlot';
7
7
  import { getPercentageValue } from '../internals/utils';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ import { getPieCoordinates } from './getPieCoordinates';
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  /**
11
11
  * Demos:
12
12
  *
@@ -34,7 +34,6 @@ function PiePlot(props) {
34
34
  if (seriesData === undefined) {
35
35
  return null;
36
36
  }
37
- const availableRadius = Math.min(width, height) / 2;
38
37
  const {
39
38
  series,
40
39
  seriesOrder
@@ -53,10 +52,19 @@ function PiePlot(props) {
53
52
  faded,
54
53
  highlightScope
55
54
  } = series[seriesId];
55
+ const {
56
+ cx,
57
+ cy,
58
+ availableRadius
59
+ } = getPieCoordinates({
60
+ cx: cxParam,
61
+ cy: cyParam
62
+ }, {
63
+ width,
64
+ height
65
+ });
56
66
  const outerRadius = getPercentageValue(outerRadiusParam ?? availableRadius, availableRadius);
57
67
  const innerRadius = getPercentageValue(innerRadiusParam ?? 0, availableRadius);
58
- const cx = getPercentageValue(cxParam ?? '50%', width);
59
- const cy = getPercentageValue(cyParam ?? '50%', height);
60
68
  return /*#__PURE__*/_jsx("g", {
61
69
  transform: `translate(${left + cx}, ${top + cy})`,
62
70
  children: /*#__PURE__*/_jsx(PieArcPlot, {
@@ -89,11 +97,20 @@ function PiePlot(props) {
89
97
  cy: cyParam,
90
98
  highlightScope
91
99
  } = series[seriesId];
100
+ const {
101
+ cx,
102
+ cy,
103
+ availableRadius
104
+ } = getPieCoordinates({
105
+ cx: cxParam,
106
+ cy: cyParam
107
+ }, {
108
+ width,
109
+ height
110
+ });
92
111
  const outerRadius = getPercentageValue(outerRadiusParam ?? availableRadius, availableRadius);
93
112
  const innerRadius = getPercentageValue(innerRadiusParam ?? 0, availableRadius);
94
113
  const arcLabelRadius = arcLabelRadiusParam === undefined ? (outerRadius + innerRadius) / 2 : getPercentageValue(arcLabelRadiusParam, availableRadius);
95
- const cx = getPercentageValue(cxParam ?? '50%', width);
96
- const cy = getPercentageValue(cyParam ?? '50%', height);
97
114
  return /*#__PURE__*/_jsx("g", {
98
115
  transform: `translate(${left + cx}, ${top + cy})`,
99
116
  children: /*#__PURE__*/_jsx(PieArcLabelPlot, {
@@ -107,7 +124,9 @@ function PiePlot(props) {
107
124
  skipAnimation: skipAnimation,
108
125
  arcLabel: arcLabel,
109
126
  arcLabelMinAngle: arcLabelMinAngle,
110
- highlightScope: highlightScope
127
+ highlightScope: highlightScope,
128
+ slots: slots,
129
+ slotProps: slotProps
111
130
  })
112
131
  }, seriesId);
113
132
  })]
@@ -28,8 +28,10 @@ const formatter = params => {
28
28
  }, series[seriesId], {
29
29
  data: series[seriesId].data.map((item, index) => _extends({}, item, {
30
30
  id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`
31
- }, arcs[index])).map(item => _extends({}, item, {
32
- formattedValue: series[seriesId].valueFormatter?.(item) ?? item.value.toLocaleString()
31
+ }, arcs[index])).map((item, index) => _extends({}, item, {
32
+ formattedValue: series[seriesId].valueFormatter?.(item, {
33
+ dataIndex: index
34
+ }) ?? item.value.toLocaleString()
33
35
  }))
34
36
  });
35
37
  });
@@ -0,0 +1,5 @@
1
+ export default function getColor(series) {
2
+ return dataIndex => {
3
+ return series.data[dataIndex].color;
4
+ };
5
+ }
@@ -0,0 +1,19 @@
1
+ import { getPercentageValue } from '../internals/utils';
2
+ export function getPieCoordinates(series, drawing) {
3
+ const {
4
+ height,
5
+ width
6
+ } = drawing;
7
+ const {
8
+ cx: cxParam,
9
+ cy: cyParam
10
+ } = series;
11
+ const availableRadius = Math.min(width, height) / 2;
12
+ const cx = getPercentageValue(cxParam ?? '50%', width);
13
+ const cy = getPercentageValue(cyParam ?? '50%', height);
14
+ return {
15
+ cx,
16
+ cy,
17
+ availableRadius
18
+ };
19
+ }