@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
@@ -11,7 +11,8 @@ const getAxisId = propsValue => {
11
11
  return null;
12
12
  }
13
13
  if (typeof propsValue === 'object') {
14
- return propsValue.axisId;
14
+ var _propsValue$axisId;
15
+ return (_propsValue$axisId = propsValue.axisId) != null ? _propsValue$axisId : null;
15
16
  }
16
17
  return propsValue;
17
18
  };
@@ -24,6 +25,16 @@ const mergeProps = (axisConfig, slots, slotProps) => {
24
25
  slotProps
25
26
  };
26
27
  };
28
+
29
+ /**
30
+ * Demos:
31
+ *
32
+ * - [Axis](https://mui.com/x/react-charts/axis/)
33
+ *
34
+ * API:
35
+ *
36
+ * - [ChartsAxis API](https://mui.com/x/api/charts/charts-axis/)
37
+ */
27
38
  function ChartsAxis(props) {
28
39
  const {
29
40
  topAxis,
@@ -90,18 +101,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
90
101
  * @default xAxisIds[0] The id of the first provided axis
91
102
  */
92
103
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
93
- axisId: PropTypes.string.isRequired,
104
+ axisId: PropTypes.string,
94
105
  classes: PropTypes.object,
95
106
  disableLine: PropTypes.bool,
96
107
  disableTicks: PropTypes.bool,
97
108
  fill: PropTypes.string,
98
109
  label: PropTypes.string,
99
110
  labelFontSize: PropTypes.number,
111
+ labelStyle: PropTypes.object,
100
112
  position: PropTypes.oneOf(['bottom', 'top']),
101
113
  slotProps: PropTypes.object,
102
114
  slots: PropTypes.object,
103
115
  stroke: PropTypes.string,
104
116
  tickFontSize: PropTypes.number,
117
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
118
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
119
+ tickLabelStyle: PropTypes.object,
105
120
  tickMaxStep: PropTypes.number,
106
121
  tickMinStep: PropTypes.number,
107
122
  tickNumber: PropTypes.number,
@@ -113,18 +128,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
113
128
  * @default yAxisIds[0] The id of the first provided axis
114
129
  */
115
130
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
116
- axisId: PropTypes.string.isRequired,
131
+ axisId: PropTypes.string,
117
132
  classes: PropTypes.object,
118
133
  disableLine: PropTypes.bool,
119
134
  disableTicks: PropTypes.bool,
120
135
  fill: PropTypes.string,
121
136
  label: PropTypes.string,
122
137
  labelFontSize: PropTypes.number,
138
+ labelStyle: PropTypes.object,
123
139
  position: PropTypes.oneOf(['left', 'right']),
124
140
  slotProps: PropTypes.object,
125
141
  slots: PropTypes.object,
126
142
  stroke: PropTypes.string,
127
143
  tickFontSize: PropTypes.number,
144
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
145
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
146
+ tickLabelStyle: PropTypes.object,
128
147
  tickMaxStep: PropTypes.number,
129
148
  tickMinStep: PropTypes.number,
130
149
  tickNumber: PropTypes.number,
@@ -136,18 +155,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
136
155
  * @default null
137
156
  */
138
157
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
139
- axisId: PropTypes.string.isRequired,
158
+ axisId: PropTypes.string,
140
159
  classes: PropTypes.object,
141
160
  disableLine: PropTypes.bool,
142
161
  disableTicks: PropTypes.bool,
143
162
  fill: PropTypes.string,
144
163
  label: PropTypes.string,
145
164
  labelFontSize: PropTypes.number,
165
+ labelStyle: PropTypes.object,
146
166
  position: PropTypes.oneOf(['left', 'right']),
147
167
  slotProps: PropTypes.object,
148
168
  slots: PropTypes.object,
149
169
  stroke: PropTypes.string,
150
170
  tickFontSize: PropTypes.number,
171
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
172
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
173
+ tickLabelStyle: PropTypes.object,
151
174
  tickMaxStep: PropTypes.number,
152
175
  tickMinStep: PropTypes.number,
153
176
  tickNumber: PropTypes.number,
@@ -169,18 +192,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
169
192
  * @default null
170
193
  */
171
194
  topAxis: PropTypes.oneOfType([PropTypes.shape({
172
- axisId: PropTypes.string.isRequired,
195
+ axisId: PropTypes.string,
173
196
  classes: PropTypes.object,
174
197
  disableLine: PropTypes.bool,
175
198
  disableTicks: PropTypes.bool,
176
199
  fill: PropTypes.string,
177
200
  label: PropTypes.string,
178
201
  labelFontSize: PropTypes.number,
202
+ labelStyle: PropTypes.object,
179
203
  position: PropTypes.oneOf(['bottom', 'top']),
180
204
  slotProps: PropTypes.object,
181
205
  slots: PropTypes.object,
182
206
  stroke: PropTypes.string,
183
207
  tickFontSize: PropTypes.number,
208
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
209
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
210
+ tickLabelStyle: PropTypes.object,
184
211
  tickMaxStep: PropTypes.number,
185
212
  tickMinStep: PropTypes.number,
186
213
  tickNumber: PropTypes.number,
@@ -1,11 +1,51 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import PropTypes from 'prop-types';
4
+ import composeClasses from '@mui/utils/composeClasses';
5
+ import generateUtilityClass from '@mui/utils/generateUtilityClass';
6
+ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
7
+ import { styled } from '@mui/material/styles';
3
8
  import { InteractionContext } from '../context/InteractionProvider';
4
9
  import { CartesianContext } from '../context/CartesianContextProvider';
5
10
  import { getValueToPositionMapper } from '../hooks/useScale';
6
11
  import { isBandScale } from '../internals/isBandScale';
7
12
  import { jsx as _jsx } from "react/jsx-runtime";
8
13
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
+ export function getAxisHighlightUtilityClass(slot) {
15
+ return generateUtilityClass('MuiChartsAxisHighlight', slot);
16
+ }
17
+ export const chartsAxisHighlightClasses = generateUtilityClasses('MuiChartsAxisHighlight', ['root']);
18
+ const useUtilityClasses = () => {
19
+ const slots = {
20
+ root: ['root']
21
+ };
22
+ return composeClasses(slots, getAxisHighlightUtilityClass);
23
+ };
24
+ export const ChartsAxisHighlightPath = styled('path', {
25
+ name: 'MuiChartsAxisHighlight',
26
+ slot: 'Root',
27
+ overridesResolver: (_, styles) => styles.root
28
+ })(({
29
+ ownerState,
30
+ theme
31
+ }) => _extends({
32
+ pointerEvents: 'none'
33
+ }, ownerState.axisHighlight === 'band' && {
34
+ fill: theme.palette.mode === 'light' ? 'gray' : 'white',
35
+ fillOpacity: 0.1
36
+ }, ownerState.axisHighlight === 'line' && {
37
+ strokeDasharray: '5 2',
38
+ stroke: theme.palette.mode === 'light' ? '#000000' : '#ffffff'
39
+ }));
40
+ /**
41
+ * Demos:
42
+ *
43
+ * - [Custom components](https://mui.com/x/react-charts/components/)
44
+ *
45
+ * API:
46
+ *
47
+ * - [ChartsAxisHighlight API](https://mui.com/x/api/charts/charts-axis-highlight/)
48
+ */
9
49
  function ChartsAxisHighlight(props) {
10
50
  const {
11
51
  x: xAxisHighlight,
@@ -17,6 +57,7 @@ function ChartsAxisHighlight(props) {
17
57
  yAxisIds,
18
58
  yAxis
19
59
  } = React.useContext(CartesianContext);
60
+ const classes = useUtilityClasses();
20
61
  const USED_X_AXIS_ID = xAxisIds[0];
21
62
  const USED_Y_AXIS_ID = yAxisIds[0];
22
63
  const xScale = xAxis[USED_X_AXIS_ID].scale;
@@ -27,33 +68,29 @@ function ChartsAxisHighlight(props) {
27
68
  const getXPosition = getValueToPositionMapper(xScale);
28
69
  const getYPosition = getValueToPositionMapper(yScale);
29
70
  return /*#__PURE__*/_jsxs(React.Fragment, {
30
- children: [xAxisHighlight === 'band' && axis.x !== null && isBandScale(xScale) && /*#__PURE__*/_jsx("path", {
71
+ children: [xAxisHighlight === 'band' && axis.x !== null && isBandScale(xScale) && /*#__PURE__*/_jsx(ChartsAxisHighlightPath, {
31
72
  d: `M ${xScale(axis.x.value) - (xScale.step() - xScale.bandwidth()) / 2} ${yScale.range()[0]} l ${xScale.step()} 0 l 0 ${yScale.range()[1] - yScale.range()[0]} l ${-xScale.step()} 0 Z`,
32
- fill: "gray",
33
- fillOpacity: 0.1,
34
- style: {
35
- pointerEvents: 'none'
73
+ className: classes.root,
74
+ ownerState: {
75
+ axisHighlight: 'band'
36
76
  }
37
- }), yAxisHighlight === 'band' && axis.y !== null && isBandScale(yScale) && /*#__PURE__*/_jsx("path", {
77
+ }), yAxisHighlight === 'band' && axis.y !== null && isBandScale(yScale) && /*#__PURE__*/_jsx(ChartsAxisHighlightPath, {
38
78
  d: `M ${xScale.range()[0]} ${yScale(axis.y.value) - (yScale.step() - yScale.bandwidth()) / 2} l 0 ${yScale.step()} l ${xScale.range()[1] - xScale.range()[0]} 0 l 0 ${-yScale.step()} Z`,
39
- fill: "gray",
40
- fillOpacity: 0.1,
41
- style: {
42
- pointerEvents: 'none'
79
+ className: classes.root,
80
+ ownerState: {
81
+ axisHighlight: 'band'
43
82
  }
44
- }), xAxisHighlight === 'line' && axis.x !== null && /*#__PURE__*/_jsx("path", {
83
+ }), xAxisHighlight === 'line' && axis.x !== null && /*#__PURE__*/_jsx(ChartsAxisHighlightPath, {
45
84
  d: `M ${getXPosition(axis.x.value)} ${yScale.range()[0]} L ${getXPosition(axis.x.value)} ${yScale.range()[1]}`,
46
- stroke: "black",
47
- strokeDasharray: "5 2",
48
- style: {
49
- pointerEvents: 'none'
85
+ className: classes.root,
86
+ ownerState: {
87
+ axisHighlight: 'line'
50
88
  }
51
- }), yAxisHighlight === 'line' && axis.y !== null && /*#__PURE__*/_jsx("path", {
89
+ }), yAxisHighlight === 'line' && axis.y !== null && /*#__PURE__*/_jsx(ChartsAxisHighlightPath, {
52
90
  d: `M ${xScale.range()[0]} ${getYPosition(axis.y.value)} L ${xScale.range()[1]} ${getYPosition(axis.y.value)}`,
53
- stroke: "black",
54
- strokeDasharray: "5 2",
55
- style: {
56
- pointerEvents: 'none'
91
+ className: classes.root,
92
+ ownerState: {
93
+ axisHighlight: 'line'
57
94
  }
58
95
  })]
59
96
  });
@@ -3,6 +3,11 @@ import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { DrawingContext } from '../context/DrawingProvider';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
+ /**
7
+ * API:
8
+ *
9
+ * - [ChartsClipPath API](https://mui.com/x/api/charts/charts-clip-path/)
10
+ */
6
11
  function ChartsClipPath(props) {
7
12
  const {
8
13
  id,
@@ -1,12 +1,17 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
1
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["rotate", "dominantBaseline"],
4
+ _excluded2 = ["label"];
2
5
  import * as React from 'react';
3
6
  import { useSlotProps } from '@mui/base/utils';
7
+ import { NoSsr } from '@mui/base/NoSsr';
4
8
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
5
9
  import { useThemeProps, useTheme, styled } from '@mui/material/styles';
6
10
  import { DrawingContext } from '../context/DrawingProvider';
7
11
  import { getSeriesToDisplay } from './utils';
8
12
  import { SeriesContext } from '../context/SeriesContextProvider';
9
- import { getChartsLegendUtilityClass } from './chartsLegendClasses';
13
+ import { getLegendUtilityClass } from './chartsLegendClasses';
14
+ import { ChartsText, getWordsByLines } from '../internals/components/ChartsText';
10
15
  import { jsx as _jsx } from "react/jsx-runtime";
11
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
17
  const useUtilityClasses = ownerState => {
@@ -20,169 +25,212 @@ const useUtilityClasses = ownerState => {
20
25
  label: ['label'],
21
26
  series: ['series']
22
27
  };
23
- return composeClasses(slots, getChartsLegendUtilityClass, classes);
28
+ return composeClasses(slots, getLegendUtilityClass, classes);
24
29
  };
25
- function getTranslePosition({
26
- position,
27
- drawingArea
28
- }) {
29
- let xValue;
30
- switch (position.horizontal) {
31
- case 'left':
32
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left}px - var(--ChartsLegend-rootWidth))`;
33
- break;
34
- case 'middle':
35
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left + drawingArea.width / 2}px - 0.5 * var(--ChartsLegend-rootWidth))`;
36
- break;
37
- default:
38
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left + drawingArea.width}px)`;
39
- break;
40
- }
41
- let yValue;
42
- switch (position.vertical) {
43
- case 'top':
44
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top}px - var(--ChartsLegend-rootHeight))`;
45
- break;
46
- case 'middle':
47
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top + drawingArea.height / 2}px - 0.5 * var(--ChartsLegend-rootHeight))`;
48
- break;
49
- default:
50
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top + drawingArea.height}px)`;
51
- break;
52
- }
53
- return {
54
- transform: `translate(${xValue}, ${yValue})`
55
- };
56
- }
57
30
  export const ChartsLegendRoot = styled('g', {
58
31
  name: 'MuiChartsLegend',
59
32
  slot: 'Root',
60
33
  overridesResolver: (props, styles) => styles.root
61
- })(({
62
- ownerState
63
- }) => {
64
- const {
65
- direction,
66
- drawingArea,
67
- offsetX,
68
- offsetY,
69
- seriesNumber,
70
- position
71
- } = ownerState;
72
- return _extends({
73
- '--ChartsLegend-rootOffsetX': typeof offsetX === 'number' ? `${offsetX}px` : undefined,
74
- '--ChartsLegend-rootOffsetY': typeof offsetY === 'number' ? `${offsetY}px` : undefined,
75
- '--ChartsLegend-rootWidth': direction === 'row' ? `calc(var(--ChartsLegend-itemWidth) * ${seriesNumber} + var(--ChartsLegend-rootSpacing) * ${seriesNumber - 1} )` : 'var(--ChartsLegend-itemWidth)',
76
- '--ChartsLegend-rootHeight': direction === 'row' ? 'var(--ChartsLegend-itemMarkSize)' : `calc(var(--ChartsLegend-itemMarkSize) * ${seriesNumber} + var(--ChartsLegend-rootSpacing) * ${seriesNumber - 1} )`
77
- }, getTranslePosition({
78
- position,
79
- drawingArea,
80
- offsetX,
81
- offsetY
82
- }));
83
- });
84
- export const ChartsSeriesLegendGroup = styled('g', {
85
- name: 'MuiChartsLegend',
86
- slot: 'ChartsSeriesLegendGroup',
87
- overridesResolver: (props, styles) => styles.series
88
- })(({
89
- ownerState
90
- }) => {
91
- const {
92
- direction,
93
- seriesIndex
94
- } = ownerState;
95
- if (direction === 'row') {
96
- return {
97
- transform: `translate(calc(${seriesIndex} * (var(--ChartsLegend-itemWidth) + var(--ChartsLegend-rootSpacing))), 0)`
98
- };
99
- }
100
- return {
101
- transform: `translate(0, calc(${seriesIndex} * (var(--ChartsLegend-itemMarkSize) + var(--ChartsLegend-rootSpacing))))`
102
- };
103
- });
104
- export const ChartsLegendMark = styled('rect', {
105
- name: 'MuiChartsLegend',
106
- slot: 'Mark',
107
- overridesResolver: (props, styles) => styles.mark
108
- })(({
109
- ownerState
110
- }) => ({
111
- x: 0,
112
- y: 0,
113
- width: 'var(--ChartsLegend-itemMarkSize)',
114
- height: 'var(--ChartsLegend-itemMarkSize)',
115
- fill: ownerState.color
116
- }));
117
- export const ChartsLegendLabel = styled('text', {
118
- name: 'MuiChartsLegend',
119
- slot: 'Label',
120
- overridesResolver: (props, styles) => styles.label
121
- })(({
122
- theme
123
- }) => _extends({}, theme.typography.body1, {
124
- color: 'inherit',
125
- transform: `translate(
126
- calc(var(--ChartsLegend-itemMarkSize) + var(--ChartsLegend-labelSpacing)),
127
- calc(0.5 * var(--ChartsLegend-itemMarkSize))
128
- )`,
129
- fill: theme.palette.text.primary,
130
- dominantBaseline: 'central'
131
- }));
34
+ })({});
132
35
  const defaultProps = {
133
36
  position: {
134
37
  horizontal: 'middle',
135
38
  vertical: 'top'
136
39
  },
137
- direction: 'row',
138
- markSize: 20,
139
- itemWidth: 100,
140
- spacing: 2
40
+ direction: 'row'
41
+ };
42
+ /**
43
+ * Transforms number or partial padding object to a defaultized padding object.
44
+ */
45
+ const getStandardizedPadding = padding => {
46
+ if (typeof padding === 'number') {
47
+ return {
48
+ left: padding,
49
+ right: padding,
50
+ top: padding,
51
+ bottom: padding
52
+ };
53
+ }
54
+ return _extends({
55
+ left: 0,
56
+ right: 0,
57
+ top: 0,
58
+ bottom: 0
59
+ }, padding);
141
60
  };
142
61
  function DefaultChartsLegend(props) {
143
62
  const {
144
63
  hidden,
145
64
  position,
146
65
  direction,
147
- offset,
148
- series,
149
66
  seriesToDisplay,
150
67
  drawingArea,
151
- classes
68
+ classes,
69
+ itemMarkWidth = 20,
70
+ itemMarkHeight = 20,
71
+ markGap = 5,
72
+ itemGap = 10,
73
+ padding: paddingProps = 10,
74
+ labelStyle: inLabelStyle
152
75
  } = props;
76
+ const theme = useTheme();
77
+ const labelStyle = React.useMemo(() => _extends({}, theme.typography.subtitle1, {
78
+ color: 'inherit',
79
+ dominantBaseline: 'central',
80
+ textAnchor: 'start',
81
+ fill: (theme.vars || theme).palette.text.primary,
82
+ lineHeight: 1
83
+ }, inLabelStyle),
84
+ // To say to TS that the dominantBaseline and textAnchor are correct
85
+ [inLabelStyle, theme]);
86
+ const padding = React.useMemo(() => getStandardizedPadding(paddingProps), [paddingProps]);
87
+ const getItemSpace = React.useCallback((label, inStyle = {}) => {
88
+ const style = _objectWithoutPropertiesLoose(inStyle, _excluded);
89
+ const linesSize = getWordsByLines({
90
+ style,
91
+ needsComputation: true,
92
+ text: label
93
+ });
94
+ const innerSize = {
95
+ innerWidth: itemMarkWidth + markGap + Math.max(...linesSize.map(size => size.width)),
96
+ innerHeight: Math.max(itemMarkHeight, linesSize.length * linesSize[0].height)
97
+ };
98
+ return _extends({}, innerSize, {
99
+ outerWidth: innerSize.innerWidth + itemGap,
100
+ outerHeight: innerSize.innerHeight + itemGap
101
+ });
102
+ }, [itemGap, itemMarkHeight, itemMarkWidth, markGap]);
103
+ const totalWidth = drawingArea.left + drawingArea.width + drawingArea.right;
104
+ const totalHeight = drawingArea.top + drawingArea.height + drawingArea.bottom;
105
+ const availableWidth = totalWidth - padding.left - padding.right;
106
+ const availableHeight = totalHeight - padding.top - padding.bottom;
107
+ const seriesWithPosition = React.useMemo(() => {
108
+ // Start at 0, 0. Will be modified later by padding and position.
109
+ let x = 0;
110
+ let y = 0;
111
+
112
+ // total values used to align legend later.
113
+ let totalWidthUsed = 0;
114
+ let totalHeightUsed = 0;
115
+ let rowIndex = 0;
116
+ const rowMaxHeight = [0];
117
+ const seriesWithRawPosition = seriesToDisplay.map(_ref => {
118
+ let {
119
+ label
120
+ } = _ref,
121
+ other = _objectWithoutPropertiesLoose(_ref, _excluded2);
122
+ const itemSpace = getItemSpace(label, labelStyle);
123
+ const rep = _extends({}, other, {
124
+ label,
125
+ positionX: x,
126
+ positionY: y,
127
+ innerHeight: itemSpace.innerHeight,
128
+ innerWidth: itemSpace.innerWidth,
129
+ outerHeight: itemSpace.outerHeight,
130
+ outerWidth: itemSpace.outerWidth,
131
+ rowIndex
132
+ });
133
+ if (direction === 'row') {
134
+ if (x + itemSpace.innerWidth > availableWidth) {
135
+ // This legend item would create overflow along the x-axis, so we start a new row.
136
+ x = 0;
137
+ y += rowMaxHeight[rowIndex];
138
+ rowIndex += 1;
139
+ if (rowMaxHeight.length <= rowIndex) {
140
+ rowMaxHeight.push(0);
141
+ }
142
+ rep.positionX = x;
143
+ rep.positionY = y;
144
+ rep.rowIndex = rowIndex;
145
+ }
146
+ totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
147
+ totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
148
+ rowMaxHeight[rowIndex] = Math.max(rowMaxHeight[rowIndex], itemSpace.outerHeight);
149
+ x += itemSpace.outerWidth;
150
+ }
151
+ if (direction === 'column') {
152
+ if (y + itemSpace.innerHeight > availableHeight) {
153
+ // This legend item would create overflow along the y-axis, so we start a new column.
154
+ x = totalWidthUsed + itemGap;
155
+ y = 0;
156
+ rowIndex = 0;
157
+ rep.positionX = x;
158
+ rep.positionY = y;
159
+ rep.rowIndex = rowIndex;
160
+ }
161
+ if (rowMaxHeight.length <= rowIndex) {
162
+ rowMaxHeight.push(0);
163
+ }
164
+ totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
165
+ totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
166
+ rowIndex += 1;
167
+ y += itemSpace.outerHeight;
168
+ }
169
+ return rep;
170
+ });
171
+
172
+ // Move the legend according to padding and position
173
+ let gapX = 0;
174
+ let gapY = 0;
175
+ switch (position.horizontal) {
176
+ case 'left':
177
+ gapX = padding.left;
178
+ break;
179
+ case 'right':
180
+ gapX = totalWidth - padding.right - totalWidthUsed;
181
+ break;
182
+ default:
183
+ gapX = (totalWidth - totalWidthUsed) / 2;
184
+ break;
185
+ }
186
+ switch (position.vertical) {
187
+ case 'top':
188
+ gapY = padding.top;
189
+ break;
190
+ case 'bottom':
191
+ gapY = totalHeight - padding.bottom - totalHeightUsed;
192
+ break;
193
+ default:
194
+ gapY = (totalHeight - totalHeightUsed) / 2;
195
+ break;
196
+ }
197
+ return seriesWithRawPosition.map(item => _extends({}, item, {
198
+ // Add the gap due to the position
199
+ positionX: item.positionX + gapX,
200
+ // Add the gap due to the position
201
+ positionY: item.positionY + gapY + (direction === 'row' ? rowMaxHeight[item.rowIndex] / 2 // Get the center of the entire row
202
+ : item.outerHeight / 2) // Get the center of the item
203
+ }));
204
+ }, [seriesToDisplay, position.horizontal, position.vertical, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap, padding.left, padding.right, padding.top, padding.bottom, totalWidth, totalHeight]);
153
205
  if (hidden) {
154
206
  return null;
155
207
  }
156
- return /*#__PURE__*/_jsx(ChartsLegendRoot, {
157
- ownerState: {
158
- direction,
159
- offsetX: offset == null ? void 0 : offset.x,
160
- offsetY: offset == null ? void 0 : offset.y,
161
- seriesNumber: seriesToDisplay.length,
162
- position,
163
- drawingArea
164
- },
165
- className: classes.root,
166
- children: seriesToDisplay.map(({
167
- id,
168
- label,
169
- color
170
- }, seriesIndex) => /*#__PURE__*/_jsxs(ChartsSeriesLegendGroup, {
171
- ownerState: _extends({
172
- direction,
173
- seriesIndex
174
- }, series),
175
- className: classes.series,
176
- children: [/*#__PURE__*/_jsx(ChartsLegendMark, {
177
- ownerState: {
178
- color
179
- },
180
- className: classes.mark
181
- }), /*#__PURE__*/_jsx(ChartsLegendLabel, {
182
- className: classes.label,
183
- children: label
184
- })]
185
- }, id))
208
+ return /*#__PURE__*/_jsx(NoSsr, {
209
+ children: /*#__PURE__*/_jsx(ChartsLegendRoot, {
210
+ className: classes.root,
211
+ children: seriesWithPosition.map(({
212
+ id,
213
+ label,
214
+ color,
215
+ positionX,
216
+ positionY
217
+ }) => /*#__PURE__*/_jsxs("g", {
218
+ className: classes.series,
219
+ transform: `translate(${positionX} ${positionY})`,
220
+ children: [/*#__PURE__*/_jsx("rect", {
221
+ className: classes.mark,
222
+ y: -itemMarkHeight / 2,
223
+ width: itemMarkWidth,
224
+ height: itemMarkHeight,
225
+ fill: color
226
+ }), /*#__PURE__*/_jsx(ChartsText, {
227
+ style: labelStyle,
228
+ text: label,
229
+ x: itemMarkWidth + markGap,
230
+ y: 0
231
+ })]
232
+ }, id))
233
+ })
186
234
  });
187
235
  }
188
236
  export function ChartsLegend(inProps) {
@@ -194,7 +242,6 @@ export function ChartsLegend(inProps) {
194
242
  const {
195
243
  position,
196
244
  direction,
197
- offset,
198
245
  hidden,
199
246
  slots,
200
247
  slotProps
@@ -213,7 +260,6 @@ export function ChartsLegend(inProps) {
213
260
  additionalProps: {
214
261
  position,
215
262
  direction,
216
- offset,
217
263
  classes,
218
264
  drawingArea,
219
265
  series,
@@ -1,5 +1,5 @@
1
1
  import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
- export function getChartsLegendUtilityClass(slot) {
2
+ export function getLegendUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiChartsLegend', slot);
4
4
  }
5
5
  export const legendClasses = generateUtilityClasses('MuiChartsLegend', ['root', 'series', 'mark', 'label', 'column', 'row']);