@mui/x-charts 6.0.0-alpha.8 → 6.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/BarChart/BarChart.d.ts +19 -5
  2. package/BarChart/BarChart.js +52 -13
  3. package/BarChart/BarElement.d.ts +1319 -4
  4. package/BarChart/BarElement.js +10 -10
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +2 -3
  8. package/BarChart/legend.js +1 -2
  9. package/CHANGELOG.md +786 -48
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +28 -2
  13. package/ChartsAxis/axisClasses.d.ts +1 -1
  14. package/ChartsAxis/axisClasses.js +1 -2
  15. package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
  16. package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
  17. package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
  18. package/ChartsClipPath/ChartsClipPath.js +7 -2
  19. package/ChartsLegend/ChartsLegend.d.ts +44 -24
  20. package/ChartsLegend/ChartsLegend.js +192 -150
  21. package/ChartsLegend/chartsLegendClasses.js +1 -2
  22. package/ChartsLegend/utils.d.ts +1 -6
  23. package/ChartsSurface.d.ts +1 -1
  24. package/ChartsSurface.js +9 -18
  25. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  27. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  28. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  29. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  30. package/ChartsTooltip/ChartsTooltip.js +62 -18
  31. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  32. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  33. package/ChartsTooltip/tooltipClasses.js +1 -2
  34. package/ChartsTooltip/utils.js +2 -2
  35. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  36. package/ChartsXAxis/ChartsXAxis.js +161 -40
  37. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  38. package/ChartsYAxis/ChartsYAxis.js +86 -33
  39. package/LineChart/AreaElement.d.ts +12 -2
  40. package/LineChart/AreaElement.js +14 -6
  41. package/LineChart/AreaPlot.d.ts +11 -0
  42. package/LineChart/AreaPlot.js +27 -8
  43. package/LineChart/LineChart.d.ts +21 -3
  44. package/LineChart/LineChart.js +61 -14
  45. package/LineChart/LineElement.d.ts +12 -2
  46. package/LineChart/LineElement.js +14 -6
  47. package/LineChart/LineHighlightElement.d.ts +31 -0
  48. package/LineChart/LineHighlightElement.js +88 -0
  49. package/LineChart/LineHighlightPlot.d.ts +35 -0
  50. package/LineChart/LineHighlightPlot.js +110 -0
  51. package/LineChart/LinePlot.d.ts +10 -0
  52. package/LineChart/LinePlot.js +25 -12
  53. package/LineChart/MarkElement.d.ts +11 -1
  54. package/LineChart/MarkElement.js +15 -9
  55. package/LineChart/MarkPlot.d.ts +10 -0
  56. package/LineChart/MarkPlot.js +62 -15
  57. package/LineChart/formatter.js +5 -5
  58. package/LineChart/index.d.ts +2 -0
  59. package/LineChart/index.js +20 -0
  60. package/LineChart/legend.js +1 -2
  61. package/PieChart/PieArc.d.ts +12 -14
  62. package/PieChart/PieArc.js +28 -60
  63. package/PieChart/PieArcLabel.d.ts +9 -10
  64. package/PieChart/PieArcLabel.js +46 -38
  65. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  66. package/PieChart/PieArcLabelPlot.js +99 -0
  67. package/PieChart/PieArcPlot.d.ts +35 -0
  68. package/PieChart/PieArcPlot.js +92 -0
  69. package/PieChart/PieChart.d.ts +19 -5
  70. package/PieChart/PieChart.js +61 -14
  71. package/PieChart/PiePlot.d.ts +15 -9
  72. package/PieChart/PiePlot.js +77 -55
  73. package/PieChart/dataTransform/transition.d.ts +4 -0
  74. package/PieChart/dataTransform/transition.js +136 -0
  75. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  76. package/PieChart/dataTransform/useTransformData.js +67 -0
  77. package/PieChart/formatter.js +1 -2
  78. package/PieChart/legend.js +1 -2
  79. package/README.md +8 -14
  80. package/ResponsiveChartContainer/index.js +7 -8
  81. package/ScatterChart/Scatter.d.ts +10 -0
  82. package/ScatterChart/Scatter.js +12 -2
  83. package/ScatterChart/ScatterChart.d.ts +16 -3
  84. package/ScatterChart/ScatterChart.js +43 -12
  85. package/ScatterChart/ScatterPlot.d.ts +10 -0
  86. package/ScatterChart/ScatterPlot.js +12 -2
  87. package/ScatterChart/formatter.js +1 -2
  88. package/ScatterChart/legend.js +1 -2
  89. package/SparkLineChart/SparkLineChart.d.ts +13 -3
  90. package/SparkLineChart/SparkLineChart.js +34 -18
  91. package/colorPalettes/colorPalettes.js +6 -12
  92. package/constants.js +5 -8
  93. package/context/CartesianContextProvider.d.ts +5 -0
  94. package/context/CartesianContextProvider.js +31 -16
  95. package/context/DrawingProvider.d.ts +7 -0
  96. package/context/DrawingProvider.js +12 -6
  97. package/context/HighlightProvider.js +3 -4
  98. package/context/InteractionProvider.js +3 -4
  99. package/context/SeriesContextProvider.js +3 -4
  100. package/esm/BarChart/BarChart.js +49 -9
  101. package/esm/BarChart/BarElement.js +7 -4
  102. package/esm/BarChart/BarPlot.js +152 -67
  103. package/esm/BarChart/formatter.js +1 -1
  104. package/esm/ChartContainer/index.js +3 -0
  105. package/esm/ChartsAxis/ChartsAxis.js +26 -0
  106. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  107. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  108. package/esm/ChartsLegend/ChartsLegend.js +188 -142
  109. package/esm/ChartsSurface.js +4 -12
  110. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  111. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  112. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  113. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  114. package/esm/ChartsXAxis/ChartsXAxis.js +158 -37
  115. package/esm/ChartsYAxis/ChartsYAxis.js +83 -30
  116. package/esm/LineChart/AreaElement.js +10 -0
  117. package/esm/LineChart/AreaPlot.js +26 -6
  118. package/esm/LineChart/LineChart.js +58 -10
  119. package/esm/LineChart/LineElement.js +10 -0
  120. package/esm/LineChart/LineHighlightElement.js +78 -0
  121. package/esm/LineChart/LineHighlightPlot.js +103 -0
  122. package/esm/LineChart/LinePlot.js +25 -14
  123. package/esm/LineChart/MarkElement.js +12 -5
  124. package/esm/LineChart/MarkPlot.js +60 -13
  125. package/esm/LineChart/formatter.js +7 -3
  126. package/esm/LineChart/index.js +3 -1
  127. package/esm/PieChart/PieArc.js +26 -58
  128. package/esm/PieChart/PieArcLabel.js +43 -34
  129. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  130. package/esm/PieChart/PieArcPlot.js +84 -0
  131. package/esm/PieChart/PieChart.js +59 -12
  132. package/esm/PieChart/PiePlot.js +76 -57
  133. package/esm/PieChart/dataTransform/transition.js +130 -0
  134. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  135. package/esm/ResponsiveChartContainer/index.js +3 -3
  136. package/esm/ScatterChart/Scatter.js +10 -0
  137. package/esm/ScatterChart/ScatterChart.js +40 -8
  138. package/esm/ScatterChart/ScatterPlot.js +10 -0
  139. package/esm/SparkLineChart/SparkLineChart.js +32 -15
  140. package/esm/constants.js +1 -1
  141. package/esm/context/CartesianContextProvider.js +30 -14
  142. package/esm/context/DrawingProvider.js +8 -0
  143. package/esm/hooks/useChartDimensions.js +2 -0
  144. package/esm/hooks/useMounted.js +16 -0
  145. package/esm/hooks/useReducedMotion.js +27 -0
  146. package/esm/hooks/useTicks.js +15 -9
  147. package/esm/internals/components/AxisSharedComponents.js +15 -70
  148. package/esm/internals/components/ChartsText.js +77 -0
  149. package/esm/internals/domUtils.js +113 -0
  150. package/esm/internals/geometry.js +36 -0
  151. package/hooks/useAxisEvents.js +2 -2
  152. package/hooks/useChartDimensions.d.ts +2 -0
  153. package/hooks/useChartDimensions.js +5 -4
  154. package/hooks/useDrawingArea.js +2 -2
  155. package/hooks/useInteractionItemProps.js +2 -2
  156. package/hooks/useMounted.d.ts +1 -0
  157. package/hooks/useMounted.js +25 -0
  158. package/hooks/useReducedMotion.d.ts +8 -0
  159. package/hooks/useReducedMotion.js +33 -0
  160. package/hooks/useScale.d.ts +2 -2
  161. package/hooks/useScale.js +2 -2
  162. package/hooks/useTicks.d.ts +19 -11
  163. package/hooks/useTicks.js +19 -14
  164. package/index.js +1 -1
  165. package/internals/components/AxisSharedComponents.d.ts +0 -4
  166. package/internals/components/AxisSharedComponents.js +18 -78
  167. package/internals/components/ChartsText.d.ts +35 -0
  168. package/internals/components/ChartsText.js +87 -0
  169. package/internals/defaultizeColor.d.ts +8 -1
  170. package/internals/defaultizeValueFormatter.js +1 -2
  171. package/internals/domUtils.d.ts +13 -0
  172. package/internals/domUtils.js +122 -0
  173. package/internals/geometry.d.ts +9 -0
  174. package/internals/geometry.js +42 -0
  175. package/internals/stackSeries.js +2 -4
  176. package/legacy/BarChart/BarChart.js +49 -9
  177. package/legacy/BarChart/BarElement.js +6 -3
  178. package/legacy/BarChart/BarPlot.js +151 -63
  179. package/legacy/BarChart/formatter.js +1 -1
  180. package/legacy/ChartContainer/index.js +3 -0
  181. package/legacy/ChartsAxis/ChartsAxis.js +26 -0
  182. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  183. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  184. package/legacy/ChartsLegend/ChartsLegend.js +203 -140
  185. package/legacy/ChartsSurface.js +3 -12
  186. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  187. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  188. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  189. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  190. package/legacy/ChartsXAxis/ChartsXAxis.js +162 -39
  191. package/legacy/ChartsYAxis/ChartsYAxis.js +83 -30
  192. package/legacy/LineChart/AreaElement.js +10 -0
  193. package/legacy/LineChart/AreaPlot.js +31 -7
  194. package/legacy/LineChart/LineChart.js +58 -10
  195. package/legacy/LineChart/LineElement.js +10 -0
  196. package/legacy/LineChart/LineHighlightElement.js +77 -0
  197. package/legacy/LineChart/LineHighlightPlot.js +96 -0
  198. package/legacy/LineChart/LinePlot.js +29 -12
  199. package/legacy/LineChart/MarkElement.js +12 -5
  200. package/legacy/LineChart/MarkPlot.js +50 -5
  201. package/legacy/LineChart/formatter.js +7 -3
  202. package/legacy/LineChart/index.js +3 -1
  203. package/legacy/PieChart/PieArc.js +30 -62
  204. package/legacy/PieChart/PieArcLabel.js +48 -34
  205. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  206. package/legacy/PieChart/PieArcPlot.js +84 -0
  207. package/legacy/PieChart/PieChart.js +59 -12
  208. package/legacy/PieChart/PiePlot.js +76 -59
  209. package/legacy/PieChart/dataTransform/transition.js +142 -0
  210. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  211. package/legacy/ResponsiveChartContainer/index.js +3 -3
  212. package/legacy/ScatterChart/Scatter.js +10 -0
  213. package/legacy/ScatterChart/ScatterChart.js +40 -8
  214. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  215. package/legacy/SparkLineChart/SparkLineChart.js +32 -13
  216. package/legacy/constants.js +1 -1
  217. package/legacy/context/CartesianContextProvider.js +30 -14
  218. package/legacy/context/DrawingProvider.js +8 -0
  219. package/legacy/hooks/useChartDimensions.js +2 -0
  220. package/legacy/hooks/useMounted.js +21 -0
  221. package/legacy/hooks/useReducedMotion.js +27 -0
  222. package/legacy/hooks/useTicks.js +16 -9
  223. package/legacy/index.js +1 -1
  224. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  225. package/legacy/internals/components/ChartsText.js +79 -0
  226. package/legacy/internals/domUtils.js +121 -0
  227. package/legacy/internals/geometry.js +37 -0
  228. package/models/axis.d.ts +27 -9
  229. package/models/layout.d.ts +7 -6
  230. package/models/seriesType/line.d.ts +39 -1
  231. package/models/seriesType/pie.d.ts +5 -1
  232. package/modern/BarChart/BarChart.js +49 -9
  233. package/modern/BarChart/BarElement.js +7 -4
  234. package/modern/BarChart/BarPlot.js +149 -65
  235. package/modern/BarChart/formatter.js +1 -1
  236. package/modern/ChartContainer/index.js +3 -0
  237. package/modern/ChartsAxis/ChartsAxis.js +26 -0
  238. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  239. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  240. package/modern/ChartsLegend/ChartsLegend.js +188 -142
  241. package/modern/ChartsSurface.js +4 -12
  242. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  243. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  244. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  245. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  246. package/modern/ChartsXAxis/ChartsXAxis.js +158 -37
  247. package/modern/ChartsYAxis/ChartsYAxis.js +83 -30
  248. package/modern/LineChart/AreaElement.js +10 -0
  249. package/modern/LineChart/AreaPlot.js +25 -6
  250. package/modern/LineChart/LineChart.js +58 -10
  251. package/modern/LineChart/LineElement.js +10 -0
  252. package/modern/LineChart/LineHighlightElement.js +78 -0
  253. package/modern/LineChart/LineHighlightPlot.js +102 -0
  254. package/modern/LineChart/LinePlot.js +23 -10
  255. package/modern/LineChart/MarkElement.js +12 -5
  256. package/modern/LineChart/MarkPlot.js +60 -13
  257. package/modern/LineChart/formatter.js +4 -3
  258. package/modern/LineChart/index.js +3 -1
  259. package/modern/PieChart/PieArc.js +26 -57
  260. package/modern/PieChart/PieArcLabel.js +43 -34
  261. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  262. package/modern/PieChart/PieArcPlot.js +83 -0
  263. package/modern/PieChart/PieChart.js +59 -12
  264. package/modern/PieChart/PiePlot.js +76 -55
  265. package/modern/PieChart/dataTransform/transition.js +130 -0
  266. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  267. package/modern/ResponsiveChartContainer/index.js +3 -3
  268. package/modern/ScatterChart/Scatter.js +10 -0
  269. package/modern/ScatterChart/ScatterChart.js +40 -8
  270. package/modern/ScatterChart/ScatterPlot.js +10 -0
  271. package/modern/SparkLineChart/SparkLineChart.js +32 -15
  272. package/modern/constants.js +1 -1
  273. package/modern/context/CartesianContextProvider.js +29 -13
  274. package/modern/context/DrawingProvider.js +8 -0
  275. package/modern/hooks/useChartDimensions.js +2 -0
  276. package/modern/hooks/useMounted.js +16 -0
  277. package/modern/hooks/useReducedMotion.js +27 -0
  278. package/modern/hooks/useTicks.js +15 -9
  279. package/modern/index.js +1 -1
  280. package/modern/internals/components/AxisSharedComponents.js +15 -70
  281. package/modern/internals/components/ChartsText.js +77 -0
  282. package/modern/internals/domUtils.js +113 -0
  283. package/modern/internals/geometry.js +36 -0
  284. package/package.json +9 -6
  285. package/themeAugmentation/components.d.ts +1 -0
  286. package/themeAugmentation/overrides.d.ts +2 -0
@@ -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
13
  import { getChartsLegendUtilityClass } 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 => {
@@ -22,167 +27,210 @@ const useUtilityClasses = ownerState => {
22
27
  };
23
28
  return composeClasses(slots, getChartsLegendUtilityClass, 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,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["children", "width", "height", "viewBox", "disableAxisListener", "className", "sx"];
4
- import { styled } from '@mui/system';
3
+ const _excluded = ["children", "width", "height", "viewBox", "disableAxisListener", "className"];
4
+ import { styled } from '@mui/material/styles';
5
5
  import * as React from 'react';
6
6
  import { useAxisEvents } from './hooks/useAxisEvents';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -16,8 +16,7 @@ export const ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurfac
16
16
  width,
17
17
  height,
18
18
  viewBox,
19
- disableAxisListener = false,
20
- sx
19
+ disableAxisListener = false
21
20
  } = props,
22
21
  other = _objectWithoutPropertiesLoose(props, _excluded);
23
22
  const svgView = _extends({
@@ -31,14 +30,7 @@ export const ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurfac
31
30
  width: width,
32
31
  height: height,
33
32
  viewBox: `${svgView.x} ${svgView.y} ${svgView.width} ${svgView.height}`,
34
- ref: ref,
35
- sx: [{
36
- '--ChartsLegend-itemWidth': '100px',
37
- '--ChartsLegend-itemMarkSize': '20px',
38
- '--ChartsLegend-rootSpacing': '5px',
39
- '--ChartsLegend-labelSpacing': '5px',
40
- '--ChartsLegend-rootOffsetY': '-20px'
41
- }, ...(Array.isArray(sx) ? sx : [sx])]
33
+ ref: ref
42
34
  }, other, {
43
35
  children: [/*#__PURE__*/_jsx("title", {
44
36
  children: props.title
@@ -1,5 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import Typography from '@mui/material/Typography';
4
+ import { useSlotProps } from '@mui/base/utils';
3
5
  import { SeriesContext } from '../context/SeriesContextProvider';
4
6
  import { CartesianContext } from '../context/CartesianContextProvider';
5
7
  import { ChartsTooltipCell, ChartsTooltipPaper, ChartsTooltipTable, ChartsTooltipMark, ChartsTooltipRow } from './ChartsTooltipTable';
@@ -20,7 +22,6 @@ export function DefaultChartsAxisContent(props) {
20
22
  const axisFormatter = axis.valueFormatter ?? (v => v.toLocaleString());
21
23
  return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
22
24
  sx: sx,
23
- variant: "outlined",
24
25
  className: classes.root,
25
26
  children: /*#__PURE__*/_jsxs(ChartsTooltipTable, {
26
27
  children: [axisValue != null && !axis.hideTooltip && /*#__PURE__*/_jsx("thead", {
@@ -39,27 +40,33 @@ export function DefaultChartsAxisContent(props) {
39
40
  label,
40
41
  valueFormatter,
41
42
  data
42
- }) => /*#__PURE__*/_jsxs(ChartsTooltipRow, {
43
- children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
44
- className: classes.markCell,
45
- children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
46
- ownerState: {
47
- color
48
- },
49
- boxShadow: 1
50
- })
51
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
52
- className: classes.labelCell,
53
- children: label ? /*#__PURE__*/_jsx(Typography, {
54
- children: label
55
- }) : null
56
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
57
- className: classes.valueCell,
58
- children: /*#__PURE__*/_jsx(Typography, {
59
- children: valueFormatter(data[dataIndex])
60
- })
61
- })]
62
- }, id))
43
+ }) => {
44
+ const formattedValue = valueFormatter(data[dataIndex]);
45
+ if (formattedValue == null) {
46
+ return null;
47
+ }
48
+ return /*#__PURE__*/_jsxs(ChartsTooltipRow, {
49
+ children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
50
+ className: classes.markCell,
51
+ children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
52
+ ownerState: {
53
+ color
54
+ },
55
+ boxShadow: 1
56
+ })
57
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
58
+ className: classes.labelCell,
59
+ children: label ? /*#__PURE__*/_jsx(Typography, {
60
+ children: label
61
+ }) : null
62
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
63
+ className: classes.valueCell,
64
+ children: /*#__PURE__*/_jsx(Typography, {
65
+ children: formattedValue
66
+ })
67
+ })]
68
+ }, id);
69
+ })
63
70
  })]
64
71
  })
65
72
  });
@@ -67,6 +74,7 @@ export function DefaultChartsAxisContent(props) {
67
74
  export function ChartsAxisTooltipContent(props) {
68
75
  const {
69
76
  content,
77
+ contentProps,
70
78
  axisData,
71
79
  sx,
72
80
  classes
@@ -99,13 +107,19 @@ export function ChartsAxisTooltipContent(props) {
99
107
  return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID];
100
108
  }, [USED_AXIS_ID, isXaxis, xAxis, yAxis]);
101
109
  const Content = content ?? DefaultChartsAxisContent;
102
- return /*#__PURE__*/_jsx(Content, {
103
- axisData: axisData,
104
- series: relevantSeries,
105
- axis: relevantAxis,
106
- dataIndex: dataIndex,
107
- axisValue: axisValue,
108
- sx: sx,
109
- classes: classes
110
+ const chartTooltipContentProps = useSlotProps({
111
+ elementType: Content,
112
+ externalSlotProps: contentProps,
113
+ additionalProps: {
114
+ axisData,
115
+ series: relevantSeries,
116
+ axis: relevantAxis,
117
+ dataIndex,
118
+ axisValue,
119
+ sx,
120
+ classes
121
+ },
122
+ ownerState: {}
110
123
  });
124
+ return /*#__PURE__*/_jsx(Content, _extends({}, chartTooltipContentProps));
111
125
  }
@@ -1,4 +1,6 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
3
+ import { useSlotProps } from '@mui/base/utils';
2
4
  import { SeriesContext } from '../context/SeriesContextProvider';
3
5
  import { ChartsTooltipTable, ChartsTooltipCell, ChartsTooltipMark, ChartsTooltipPaper, ChartsTooltipRow } from './ChartsTooltipTable';
4
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -29,7 +31,6 @@ export function DefaultChartsItemContent(props) {
29
31
  const formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
30
32
  return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
31
33
  sx: sx,
32
- variant: "outlined",
33
34
  className: classes.root,
34
35
  children: /*#__PURE__*/_jsx(ChartsTooltipTable, {
35
36
  children: /*#__PURE__*/_jsx("tbody", {
@@ -58,14 +59,21 @@ export function ChartsItemTooltipContent(props) {
58
59
  content,
59
60
  itemData,
60
61
  sx,
61
- classes
62
+ classes,
63
+ contentProps
62
64
  } = props;
63
65
  const series = React.useContext(SeriesContext)[itemData.type].series[itemData.seriesId];
64
66
  const Content = content ?? DefaultChartsItemContent;
65
- return /*#__PURE__*/_jsx(Content, {
66
- itemData: itemData,
67
- series: series,
68
- sx: sx,
69
- classes: classes
67
+ const chartTooltipContentProps = useSlotProps({
68
+ elementType: Content,
69
+ externalSlotProps: contentProps,
70
+ additionalProps: {
71
+ itemData,
72
+ series,
73
+ sx,
74
+ classes
75
+ },
76
+ ownerState: {}
70
77
  });
78
+ return /*#__PURE__*/_jsx(Content, _extends({}, chartTooltipContentProps));
71
79
  }