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