@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,7 @@ const getAxisId = propsValue => {
11
11
  return null;
12
12
  }
13
13
  if (typeof propsValue === 'object') {
14
- return propsValue.axisId;
14
+ return propsValue.axisId ?? null;
15
15
  }
16
16
  return propsValue;
17
17
  };
@@ -24,6 +24,16 @@ const mergeProps = (axisConfig, slots, slotProps) => {
24
24
  slotProps
25
25
  };
26
26
  };
27
+
28
+ /**
29
+ * Demos:
30
+ *
31
+ * - [Axis](https://mui.com/x/react-charts/axis/)
32
+ *
33
+ * API:
34
+ *
35
+ * - [ChartsAxis API](https://mui.com/x/api/charts/charts-axis/)
36
+ */
27
37
  function ChartsAxis(props) {
28
38
  const {
29
39
  topAxis,
@@ -90,18 +100,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
90
100
  * @default xAxisIds[0] The id of the first provided axis
91
101
  */
92
102
  bottomAxis: PropTypes.oneOfType([PropTypes.shape({
93
- axisId: PropTypes.string.isRequired,
103
+ axisId: PropTypes.string,
94
104
  classes: PropTypes.object,
95
105
  disableLine: PropTypes.bool,
96
106
  disableTicks: PropTypes.bool,
97
107
  fill: PropTypes.string,
98
108
  label: PropTypes.string,
99
109
  labelFontSize: PropTypes.number,
110
+ labelStyle: PropTypes.object,
100
111
  position: PropTypes.oneOf(['bottom', 'top']),
101
112
  slotProps: PropTypes.object,
102
113
  slots: PropTypes.object,
103
114
  stroke: PropTypes.string,
104
115
  tickFontSize: PropTypes.number,
116
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
117
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
118
+ tickLabelStyle: PropTypes.object,
105
119
  tickMaxStep: PropTypes.number,
106
120
  tickMinStep: PropTypes.number,
107
121
  tickNumber: PropTypes.number,
@@ -113,18 +127,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
113
127
  * @default yAxisIds[0] The id of the first provided axis
114
128
  */
115
129
  leftAxis: PropTypes.oneOfType([PropTypes.shape({
116
- axisId: PropTypes.string.isRequired,
130
+ axisId: PropTypes.string,
117
131
  classes: PropTypes.object,
118
132
  disableLine: PropTypes.bool,
119
133
  disableTicks: PropTypes.bool,
120
134
  fill: PropTypes.string,
121
135
  label: PropTypes.string,
122
136
  labelFontSize: PropTypes.number,
137
+ labelStyle: PropTypes.object,
123
138
  position: PropTypes.oneOf(['left', 'right']),
124
139
  slotProps: PropTypes.object,
125
140
  slots: PropTypes.object,
126
141
  stroke: PropTypes.string,
127
142
  tickFontSize: PropTypes.number,
143
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
144
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
145
+ tickLabelStyle: PropTypes.object,
128
146
  tickMaxStep: PropTypes.number,
129
147
  tickMinStep: PropTypes.number,
130
148
  tickNumber: PropTypes.number,
@@ -136,18 +154,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
136
154
  * @default null
137
155
  */
138
156
  rightAxis: PropTypes.oneOfType([PropTypes.shape({
139
- axisId: PropTypes.string.isRequired,
157
+ axisId: PropTypes.string,
140
158
  classes: PropTypes.object,
141
159
  disableLine: PropTypes.bool,
142
160
  disableTicks: PropTypes.bool,
143
161
  fill: PropTypes.string,
144
162
  label: PropTypes.string,
145
163
  labelFontSize: PropTypes.number,
164
+ labelStyle: PropTypes.object,
146
165
  position: PropTypes.oneOf(['left', 'right']),
147
166
  slotProps: PropTypes.object,
148
167
  slots: PropTypes.object,
149
168
  stroke: PropTypes.string,
150
169
  tickFontSize: PropTypes.number,
170
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
171
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
172
+ tickLabelStyle: PropTypes.object,
151
173
  tickMaxStep: PropTypes.number,
152
174
  tickMinStep: PropTypes.number,
153
175
  tickNumber: PropTypes.number,
@@ -169,18 +191,22 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
169
191
  * @default null
170
192
  */
171
193
  topAxis: PropTypes.oneOfType([PropTypes.shape({
172
- axisId: PropTypes.string.isRequired,
194
+ axisId: PropTypes.string,
173
195
  classes: PropTypes.object,
174
196
  disableLine: PropTypes.bool,
175
197
  disableTicks: PropTypes.bool,
176
198
  fill: PropTypes.string,
177
199
  label: PropTypes.string,
178
200
  labelFontSize: PropTypes.number,
201
+ labelStyle: PropTypes.object,
179
202
  position: PropTypes.oneOf(['bottom', 'top']),
180
203
  slotProps: PropTypes.object,
181
204
  slots: PropTypes.object,
182
205
  stroke: PropTypes.string,
183
206
  tickFontSize: PropTypes.number,
207
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
208
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
209
+ tickLabelStyle: PropTypes.object,
184
210
  tickMaxStep: PropTypes.number,
185
211
  tickMinStep: PropTypes.number,
186
212
  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?.x,
160
- offsetY: 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) {
@@ -193,7 +241,6 @@ export function ChartsLegend(inProps) {
193
241
  const {
194
242
  position,
195
243
  direction,
196
- offset,
197
244
  hidden,
198
245
  slots,
199
246
  slotProps
@@ -212,7 +259,6 @@ export function ChartsLegend(inProps) {
212
259
  additionalProps: {
213
260
  position,
214
261
  direction,
215
- offset,
216
262
  classes,
217
263
  drawingArea,
218
264
  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']);