@mui/x-charts 6.0.0-alpha.13 → 6.0.0-alpha.15

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 (139) hide show
  1. package/BarChart/BarChart.d.ts +6 -3
  2. package/BarChart/BarChart.js +7 -10
  3. package/BarChart/BarElement.js +2 -4
  4. package/BarChart/formatter.js +1 -2
  5. package/BarChart/legend.js +1 -2
  6. package/CHANGELOG.md +165 -1
  7. package/ChartContainer/index.js +2 -3
  8. package/ChartsAxis/axisClasses.js +1 -2
  9. package/ChartsLegend/ChartsLegend.d.ts +43 -24
  10. package/ChartsLegend/ChartsLegend.js +186 -148
  11. package/ChartsLegend/chartsLegendClasses.js +1 -2
  12. package/ChartsLegend/utils.d.ts +1 -6
  13. package/ChartsSurface.js +5 -14
  14. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  15. package/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
  16. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  17. package/ChartsTooltip/ChartsItemTooltipContent.js +16 -6
  18. package/ChartsTooltip/ChartsTooltip.d.ts +23 -0
  19. package/ChartsTooltip/ChartsTooltip.js +47 -13
  20. package/ChartsTooltip/ChartsTooltipTable.js +6 -11
  21. package/ChartsTooltip/tooltipClasses.js +1 -2
  22. package/ChartsXAxis/ChartsXAxis.js +48 -25
  23. package/ChartsYAxis/ChartsYAxis.js +47 -26
  24. package/LineChart/AreaElement.js +2 -4
  25. package/LineChart/LineChart.d.ts +6 -3
  26. package/LineChart/LineChart.js +11 -11
  27. package/LineChart/LineElement.js +2 -4
  28. package/LineChart/LineHighlightElement.js +1 -2
  29. package/LineChart/MarkElement.js +1 -2
  30. package/LineChart/formatter.js +1 -2
  31. package/LineChart/legend.js +1 -2
  32. package/PieChart/PieArc.d.ts +1 -0
  33. package/PieChart/PieArc.js +6 -4
  34. package/PieChart/PieArcLabel.js +1 -2
  35. package/PieChart/PieChart.d.ts +8 -4
  36. package/PieChart/PieChart.js +11 -10
  37. package/PieChart/PiePlot.d.ts +8 -0
  38. package/PieChart/PiePlot.js +21 -5
  39. package/PieChart/formatter.js +1 -2
  40. package/PieChart/legend.js +1 -2
  41. package/ResponsiveChartContainer/index.js +2 -3
  42. package/ScatterChart/ScatterChart.d.ts +6 -3
  43. package/ScatterChart/ScatterChart.js +7 -10
  44. package/ScatterChart/formatter.js +1 -2
  45. package/ScatterChart/legend.js +1 -2
  46. package/SparkLineChart/SparkLineChart.d.ts +3 -3
  47. package/SparkLineChart/SparkLineChart.js +7 -3
  48. package/colorPalettes/colorPalettes.js +6 -12
  49. package/constants.js +5 -8
  50. package/context/CartesianContextProvider.js +11 -12
  51. package/context/DrawingProvider.d.ts +2 -0
  52. package/context/DrawingProvider.js +4 -4
  53. package/context/HighlightProvider.js +1 -2
  54. package/context/InteractionProvider.js +1 -2
  55. package/context/SeriesContextProvider.js +1 -2
  56. package/esm/BarChart/BarChart.js +6 -8
  57. package/esm/ChartsLegend/ChartsLegend.js +184 -142
  58. package/esm/ChartsSurface.js +3 -11
  59. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
  60. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
  61. package/esm/ChartsTooltip/ChartsTooltip.js +47 -12
  62. package/esm/ChartsXAxis/ChartsXAxis.js +47 -24
  63. package/esm/ChartsYAxis/ChartsYAxis.js +46 -25
  64. package/esm/LineChart/LineChart.js +10 -9
  65. package/esm/PieChart/PieArc.js +5 -2
  66. package/esm/PieChart/PieChart.js +11 -10
  67. package/esm/PieChart/PiePlot.js +17 -2
  68. package/esm/ScatterChart/ScatterChart.js +6 -8
  69. package/esm/SparkLineChart/SparkLineChart.js +6 -1
  70. package/esm/constants.js +1 -1
  71. package/esm/context/CartesianContextProvider.js +11 -11
  72. package/esm/context/DrawingProvider.js +2 -0
  73. package/esm/hooks/useChartDimensions.js +2 -0
  74. package/esm/hooks/useTicks.js +5 -5
  75. package/esm/internals/components/AxisSharedComponents.js +15 -70
  76. package/esm/internals/components/ChartsText.js +71 -0
  77. package/esm/internals/domUtils.js +113 -0
  78. package/hooks/useChartDimensions.d.ts +2 -0
  79. package/hooks/useChartDimensions.js +3 -2
  80. package/hooks/useTicks.d.ts +2 -3
  81. package/hooks/useTicks.js +7 -8
  82. package/index.js +1 -1
  83. package/internals/components/AxisSharedComponents.d.ts +0 -4
  84. package/internals/components/AxisSharedComponents.js +18 -78
  85. package/internals/components/ChartsText.d.ts +32 -0
  86. package/internals/components/ChartsText.js +81 -0
  87. package/internals/defaultizeValueFormatter.js +1 -2
  88. package/internals/domUtils.d.ts +14 -0
  89. package/internals/domUtils.js +122 -0
  90. package/internals/stackSeries.js +2 -4
  91. package/legacy/BarChart/BarChart.js +6 -8
  92. package/legacy/ChartsLegend/ChartsLegend.js +196 -140
  93. package/legacy/ChartsSurface.js +2 -11
  94. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
  95. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
  96. package/legacy/ChartsTooltip/ChartsTooltip.js +50 -12
  97. package/legacy/ChartsXAxis/ChartsXAxis.js +47 -24
  98. package/legacy/ChartsYAxis/ChartsYAxis.js +46 -25
  99. package/legacy/LineChart/LineChart.js +10 -9
  100. package/legacy/PieChart/PieArc.js +4 -1
  101. package/legacy/PieChart/PieChart.js +11 -10
  102. package/legacy/PieChart/PiePlot.js +17 -2
  103. package/legacy/ScatterChart/ScatterChart.js +6 -8
  104. package/legacy/SparkLineChart/SparkLineChart.js +6 -1
  105. package/legacy/constants.js +1 -1
  106. package/legacy/context/CartesianContextProvider.js +11 -11
  107. package/legacy/context/DrawingProvider.js +2 -0
  108. package/legacy/hooks/useChartDimensions.js +2 -0
  109. package/legacy/hooks/useTicks.js +5 -5
  110. package/legacy/index.js +1 -1
  111. package/legacy/internals/components/AxisSharedComponents.js +9 -63
  112. package/legacy/internals/components/ChartsText.js +77 -0
  113. package/legacy/internals/domUtils.js +121 -0
  114. package/models/axis.d.ts +6 -5
  115. package/models/layout.d.ts +7 -6
  116. package/modern/BarChart/BarChart.js +6 -8
  117. package/modern/ChartsLegend/ChartsLegend.js +184 -142
  118. package/modern/ChartsSurface.js +3 -11
  119. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
  120. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
  121. package/modern/ChartsTooltip/ChartsTooltip.js +46 -12
  122. package/modern/ChartsXAxis/ChartsXAxis.js +47 -24
  123. package/modern/ChartsYAxis/ChartsYAxis.js +46 -25
  124. package/modern/LineChart/LineChart.js +10 -9
  125. package/modern/PieChart/PieArc.js +5 -2
  126. package/modern/PieChart/PieChart.js +11 -10
  127. package/modern/PieChart/PiePlot.js +17 -2
  128. package/modern/ScatterChart/ScatterChart.js +6 -8
  129. package/modern/SparkLineChart/SparkLineChart.js +6 -1
  130. package/modern/constants.js +1 -1
  131. package/modern/context/CartesianContextProvider.js +11 -11
  132. package/modern/context/DrawingProvider.js +2 -0
  133. package/modern/hooks/useChartDimensions.js +2 -0
  134. package/modern/hooks/useTicks.js +5 -5
  135. package/modern/index.js +1 -1
  136. package/modern/internals/components/AxisSharedComponents.js +15 -70
  137. package/modern/internals/components/ChartsText.js +71 -0
  138. package/modern/internals/domUtils.js +113 -0
  139. package/package.json +3 -3
@@ -5,17 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.ChartsLegend = ChartsLegend;
8
- exports.ChartsSeriesLegendGroup = exports.ChartsLegendRoot = exports.ChartsLegendMark = exports.ChartsLegendLabel = void 0;
8
+ exports.ChartsLegendRoot = void 0;
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _utils = require("@mui/base/utils");
13
+ var _NoSsr = require("@mui/base/NoSsr");
12
14
  var _utils2 = require("@mui/utils");
13
15
  var _styles = require("@mui/material/styles");
14
16
  var _DrawingProvider = require("../context/DrawingProvider");
15
17
  var _utils3 = require("./utils");
16
18
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
17
19
  var _chartsLegendClasses = require("./chartsLegendClasses");
20
+ var _ChartsText = require("../internals/components/ChartsText");
18
21
  var _jsxRuntime = require("react/jsx-runtime");
22
+ const _excluded = ["label"];
19
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
25
  const useUtilityClasses = ownerState => {
@@ -31,171 +35,207 @@ const useUtilityClasses = ownerState => {
31
35
  };
32
36
  return (0, _utils2.unstable_composeClasses)(slots, _chartsLegendClasses.getChartsLegendUtilityClass, classes);
33
37
  };
34
- function getTranslePosition({
35
- position,
36
- drawingArea
37
- }) {
38
- let xValue;
39
- switch (position.horizontal) {
40
- case 'left':
41
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left}px - var(--ChartsLegend-rootWidth))`;
42
- break;
43
- case 'middle':
44
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left + drawingArea.width / 2}px - 0.5 * var(--ChartsLegend-rootWidth))`;
45
- break;
46
- default:
47
- xValue = `calc(var(--ChartsLegend-rootOffsetX, 0px) + ${drawingArea.left + drawingArea.width}px)`;
48
- break;
49
- }
50
- let yValue;
51
- switch (position.vertical) {
52
- case 'top':
53
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top}px - var(--ChartsLegend-rootHeight))`;
54
- break;
55
- case 'middle':
56
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top + drawingArea.height / 2}px - 0.5 * var(--ChartsLegend-rootHeight))`;
57
- break;
58
- default:
59
- yValue = `calc(var(--ChartsLegend-rootOffsetY, 0px) + ${drawingArea.top + drawingArea.height}px)`;
60
- break;
61
- }
62
- return {
63
- transform: `translate(${xValue}, ${yValue})`
64
- };
65
- }
66
- const ChartsLegendRoot = (0, _styles.styled)('g', {
38
+ const ChartsLegendRoot = exports.ChartsLegendRoot = (0, _styles.styled)('g', {
67
39
  name: 'MuiChartsLegend',
68
40
  slot: 'Root',
69
41
  overridesResolver: (props, styles) => styles.root
70
- })(({
71
- ownerState
72
- }) => {
73
- const {
74
- direction,
75
- drawingArea,
76
- offsetX,
77
- offsetY,
78
- seriesNumber,
79
- position
80
- } = ownerState;
81
- return (0, _extends2.default)({
82
- '--ChartsLegend-rootOffsetX': typeof offsetX === 'number' ? `${offsetX}px` : undefined,
83
- '--ChartsLegend-rootOffsetY': typeof offsetY === 'number' ? `${offsetY}px` : undefined,
84
- '--ChartsLegend-rootWidth': direction === 'row' ? `calc(var(--ChartsLegend-itemWidth) * ${seriesNumber} + var(--ChartsLegend-rootSpacing) * ${seriesNumber - 1} )` : 'var(--ChartsLegend-itemWidth)',
85
- '--ChartsLegend-rootHeight': direction === 'row' ? 'var(--ChartsLegend-itemMarkSize)' : `calc(var(--ChartsLegend-itemMarkSize) * ${seriesNumber} + var(--ChartsLegend-rootSpacing) * ${seriesNumber - 1} )`
86
- }, getTranslePosition({
87
- position,
88
- drawingArea,
89
- offsetX,
90
- offsetY
91
- }));
92
- });
93
- exports.ChartsLegendRoot = ChartsLegendRoot;
94
- const ChartsSeriesLegendGroup = (0, _styles.styled)('g', {
95
- name: 'MuiChartsLegend',
96
- slot: 'ChartsSeriesLegendGroup',
97
- overridesResolver: (props, styles) => styles.series
98
- })(({
99
- ownerState
100
- }) => {
101
- const {
102
- direction,
103
- seriesIndex
104
- } = ownerState;
105
- if (direction === 'row') {
106
- return {
107
- transform: `translate(calc(${seriesIndex} * (var(--ChartsLegend-itemWidth) + var(--ChartsLegend-rootSpacing))), 0)`
108
- };
109
- }
110
- return {
111
- transform: `translate(0, calc(${seriesIndex} * (var(--ChartsLegend-itemMarkSize) + var(--ChartsLegend-rootSpacing))))`
112
- };
113
- });
114
- exports.ChartsSeriesLegendGroup = ChartsSeriesLegendGroup;
115
- const ChartsLegendMark = (0, _styles.styled)('rect', {
116
- name: 'MuiChartsLegend',
117
- slot: 'Mark',
118
- overridesResolver: (props, styles) => styles.mark
119
- })(({
120
- ownerState
121
- }) => ({
122
- x: 0,
123
- y: 0,
124
- width: 'var(--ChartsLegend-itemMarkSize)',
125
- height: 'var(--ChartsLegend-itemMarkSize)',
126
- fill: ownerState.color
127
- }));
128
- exports.ChartsLegendMark = ChartsLegendMark;
129
- const ChartsLegendLabel = (0, _styles.styled)('text', {
130
- name: 'MuiChartsLegend',
131
- slot: 'Label',
132
- overridesResolver: (props, styles) => styles.label
133
- })(({
134
- theme
135
- }) => (0, _extends2.default)({}, theme.typography.body1, {
136
- color: 'inherit',
137
- transform: `translate(
138
- calc(var(--ChartsLegend-itemMarkSize) + var(--ChartsLegend-labelSpacing)),
139
- calc(0.5 * var(--ChartsLegend-itemMarkSize))
140
- )`,
141
- fill: (theme.vars || theme).palette.text.primary,
142
- dominantBaseline: 'central'
143
- }));
144
- exports.ChartsLegendLabel = ChartsLegendLabel;
42
+ })({});
145
43
  const defaultProps = {
146
44
  position: {
147
45
  horizontal: 'middle',
148
46
  vertical: 'top'
149
47
  },
150
- direction: 'row',
151
- markSize: 20,
152
- itemWidth: 100,
153
- spacing: 2
48
+ direction: 'row'
49
+ };
50
+ /**
51
+ * Transforms number or partial padding object to a defaultized padding object.
52
+ */
53
+ const getStandardizedPadding = padding => {
54
+ if (typeof padding === 'number') {
55
+ return {
56
+ left: padding,
57
+ right: padding,
58
+ top: padding,
59
+ bottom: padding
60
+ };
61
+ }
62
+ return (0, _extends2.default)({
63
+ left: 0,
64
+ right: 0,
65
+ top: 0,
66
+ bottom: 0
67
+ }, padding);
154
68
  };
155
69
  function DefaultChartsLegend(props) {
156
70
  const {
157
71
  hidden,
158
72
  position,
159
73
  direction,
160
- offset,
161
- series,
162
74
  seriesToDisplay,
163
75
  drawingArea,
164
- classes
76
+ classes,
77
+ itemMarkWidth = 20,
78
+ itemMarkHeight = 20,
79
+ markGap = 5,
80
+ itemGap = 10,
81
+ padding: paddingProps = 10,
82
+ labelStyle: inLabelStyle
165
83
  } = props;
84
+ const theme = (0, _styles.useTheme)();
85
+ const labelStyle = React.useMemo(() => (0, _extends2.default)({}, theme.typography.subtitle1, {
86
+ color: 'inherit',
87
+ fill: (theme.vars || theme).palette.text.primary,
88
+ lineHeight: 1
89
+ }, inLabelStyle), [inLabelStyle, theme]);
90
+ const padding = React.useMemo(() => getStandardizedPadding(paddingProps), [paddingProps]);
91
+ const getItemSpace = React.useCallback((label, style) => {
92
+ const linesSize = (0, _ChartsText.getWordsByLines)({
93
+ style,
94
+ needsComputation: true,
95
+ text: label
96
+ });
97
+ const innerSize = {
98
+ innerWidth: itemMarkWidth + markGap + Math.max(...linesSize.map(size => size.width)),
99
+ innerHeight: Math.max(itemMarkHeight, linesSize.length * linesSize[0].height)
100
+ };
101
+ return (0, _extends2.default)({}, innerSize, {
102
+ outerWidth: innerSize.innerWidth + itemGap,
103
+ outerHeight: innerSize.innerHeight + itemGap
104
+ });
105
+ }, [itemGap, itemMarkHeight, itemMarkWidth, markGap]);
106
+ const totalWidth = drawingArea.left + drawingArea.width + drawingArea.right;
107
+ const totalHeight = drawingArea.top + drawingArea.height + drawingArea.bottom;
108
+ const availableWidth = totalWidth - padding.left - padding.right;
109
+ const availableHeight = totalHeight - padding.top - padding.bottom;
110
+ const seriesWithPosition = React.useMemo(() => {
111
+ // Start at 0, 0. Will be modified later by padding and position.
112
+ let x = 0;
113
+ let y = 0;
114
+
115
+ // total values used to align legend later.
116
+ let totalWidthUsed = 0;
117
+ let totalHeightUsed = 0;
118
+ let rowIndex = 0;
119
+ const rowMaxHeight = [0];
120
+ const seriesWithRawPosition = seriesToDisplay.map(_ref => {
121
+ let {
122
+ label
123
+ } = _ref,
124
+ other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
125
+ const itemSpace = getItemSpace(label, labelStyle);
126
+ const rep = (0, _extends2.default)({}, other, {
127
+ label,
128
+ positionX: x,
129
+ positionY: y,
130
+ innerHeight: itemSpace.innerHeight,
131
+ innerWidth: itemSpace.innerWidth,
132
+ outerHeight: itemSpace.outerHeight,
133
+ outerWidth: itemSpace.outerWidth,
134
+ rowIndex
135
+ });
136
+ if (direction === 'row') {
137
+ if (x + itemSpace.innerWidth > availableWidth) {
138
+ // This legend item would create overflow along the x-axis, so we start a new row.
139
+ x = 0;
140
+ y += rowMaxHeight[rowIndex];
141
+ rowIndex += 1;
142
+ if (rowMaxHeight.length <= rowIndex) {
143
+ rowMaxHeight.push(0);
144
+ }
145
+ rep.positionX = x;
146
+ rep.positionY = y;
147
+ rep.rowIndex = rowIndex;
148
+ }
149
+ totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
150
+ totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
151
+ rowMaxHeight[rowIndex] = Math.max(rowMaxHeight[rowIndex], itemSpace.outerHeight);
152
+ x += itemSpace.outerWidth;
153
+ }
154
+ if (direction === 'column') {
155
+ if (y + itemSpace.innerHeight > availableHeight) {
156
+ // This legend item would create overflow along the y-axis, so we start a new column.
157
+ x = totalWidthUsed + itemGap;
158
+ y = 0;
159
+ rowIndex = 0;
160
+ rep.positionX = x;
161
+ rep.positionY = y;
162
+ rep.rowIndex = rowIndex;
163
+ }
164
+ if (rowMaxHeight.length <= rowIndex) {
165
+ rowMaxHeight.push(0);
166
+ }
167
+ totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
168
+ totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
169
+ rowIndex += 1;
170
+ y += itemSpace.outerHeight;
171
+ }
172
+ return rep;
173
+ });
174
+
175
+ // Move the legend according to padding and position
176
+ let gapX = 0;
177
+ let gapY = 0;
178
+ switch (position.horizontal) {
179
+ case 'left':
180
+ gapX = padding.left;
181
+ break;
182
+ case 'right':
183
+ gapX = totalWidth - padding.right - totalWidthUsed;
184
+ break;
185
+ default:
186
+ gapX = (totalWidth - totalWidthUsed) / 2;
187
+ break;
188
+ }
189
+ switch (position.vertical) {
190
+ case 'top':
191
+ gapY = padding.top;
192
+ break;
193
+ case 'bottom':
194
+ gapY = totalHeight - padding.bottom - totalHeightUsed;
195
+ break;
196
+ default:
197
+ gapY = (totalHeight - totalHeightUsed) / 2;
198
+ break;
199
+ }
200
+ return seriesWithRawPosition.map(item => (0, _extends2.default)({}, item, {
201
+ // Add the gap due to the position
202
+ positionX: item.positionX + gapX,
203
+ // Add the gap due to the position
204
+ positionY: item.positionY + gapY + (direction === 'row' ? rowMaxHeight[item.rowIndex] / 2 // Get the center of the entire row
205
+ : item.outerHeight / 2) // Get the center of the item
206
+ }));
207
+ }, [seriesToDisplay, position.horizontal, position.vertical, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap, padding.left, padding.right, padding.top, padding.bottom, totalWidth, totalHeight]);
166
208
  if (hidden) {
167
209
  return null;
168
210
  }
169
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendRoot, {
170
- ownerState: {
171
- direction,
172
- offsetX: offset?.x,
173
- offsetY: offset?.y,
174
- seriesNumber: seriesToDisplay.length,
175
- position,
176
- drawingArea
177
- },
178
- className: classes.root,
179
- children: seriesToDisplay.map(({
180
- id,
181
- label,
182
- color
183
- }, seriesIndex) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(ChartsSeriesLegendGroup, {
184
- ownerState: (0, _extends2.default)({
185
- direction,
186
- seriesIndex
187
- }, series),
188
- className: classes.series,
189
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendMark, {
190
- ownerState: {
191
- color
192
- },
193
- className: classes.mark
194
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendLabel, {
195
- className: classes.label,
196
- children: label
197
- })]
198
- }, id))
211
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoSsr.NoSsr, {
212
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendRoot, {
213
+ className: classes.root,
214
+ children: seriesWithPosition.map(({
215
+ id,
216
+ label,
217
+ color,
218
+ positionX,
219
+ positionY
220
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
221
+ className: classes.series,
222
+ transform: `translate(${positionX} ${positionY})`,
223
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
224
+ className: classes.mark,
225
+ y: -itemMarkHeight / 2,
226
+ width: itemMarkWidth,
227
+ height: itemMarkHeight,
228
+ fill: color
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsText.ChartsText, {
230
+ style: labelStyle,
231
+ dominantBaseline: "central",
232
+ textAnchor: "start",
233
+ text: label,
234
+ x: itemMarkWidth + markGap,
235
+ y: 0
236
+ })]
237
+ }, id))
238
+ })
199
239
  });
200
240
  }
201
241
  function ChartsLegend(inProps) {
@@ -206,7 +246,6 @@ function ChartsLegend(inProps) {
206
246
  const {
207
247
  position,
208
248
  direction,
209
- offset,
210
249
  hidden,
211
250
  slots,
212
251
  slotProps
@@ -225,7 +264,6 @@ function ChartsLegend(inProps) {
225
264
  additionalProps: {
226
265
  position,
227
266
  direction,
228
- offset,
229
267
  classes,
230
268
  drawingArea,
231
269
  series,
@@ -9,5 +9,4 @@ var _utils = require("@mui/utils");
9
9
  function getChartsLegendUtilityClass(slot) {
10
10
  return (0, _utils.unstable_generateUtilityClass)('MuiChartsLegend', slot);
11
11
  }
12
- const legendClasses = (0, _utils.unstable_generateUtilityClasses)('MuiChartsLegend', ['root', 'series', 'mark', 'label', 'column', 'row']);
13
- exports.legendClasses = legendClasses;
12
+ const legendClasses = exports.legendClasses = (0, _utils.unstable_generateUtilityClasses)('MuiChartsLegend', ['root', 'series', 'mark', 'label', 'column', 'row']);
@@ -5,10 +5,5 @@ export type AnchorPosition = {
5
5
  horizontal: AnchorX;
6
6
  vertical: AnchorY;
7
7
  };
8
- export type SizingParams = {
9
- direction?: 'row' | 'column';
10
- markSize?: number;
11
- itemWidth?: number;
12
- spacing?: number;
13
- };
8
+ export type Direction = 'row' | 'column';
14
9
  export declare function getSeriesToDisplay(series: FormattedSeries): import("../models/seriesType/config").LegendParams[];
package/ChartsSurface.js CHANGED
@@ -11,21 +11,20 @@ var _styles = require("@mui/material/styles");
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _useAxisEvents = require("./hooks/useAxisEvents");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
- const _excluded = ["children", "width", "height", "viewBox", "disableAxisListener", "className", "sx"];
14
+ const _excluded = ["children", "width", "height", "viewBox", "disableAxisListener", "className"];
15
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
  const ChartChartsSurfaceStyles = (0, _styles.styled)('svg', {
18
18
  name: 'MuiChartsSurface',
19
19
  slot: 'Root'
20
20
  })(() => ({}));
21
- const ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurface(props, ref) {
21
+ const ChartsSurface = exports.ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurface(props, ref) {
22
22
  const {
23
23
  children,
24
24
  width,
25
25
  height,
26
26
  viewBox,
27
- disableAxisListener = false,
28
- sx
27
+ disableAxisListener = false
29
28
  } = props,
30
29
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
31
30
  const svgView = (0, _extends2.default)({
@@ -39,14 +38,7 @@ const ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurface(props
39
38
  width: width,
40
39
  height: height,
41
40
  viewBox: `${svgView.x} ${svgView.y} ${svgView.width} ${svgView.height}`,
42
- ref: ref,
43
- sx: [{
44
- '--ChartsLegend-itemWidth': '100px',
45
- '--ChartsLegend-itemMarkSize': '20px',
46
- '--ChartsLegend-rootSpacing': '5px',
47
- '--ChartsLegend-labelSpacing': '5px',
48
- '--ChartsLegend-rootOffsetY': '-20px'
49
- }, ...(Array.isArray(sx) ? sx : [sx])]
41
+ ref: ref
50
42
  }, other, {
51
43
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
52
44
  children: props.title
@@ -54,5 +46,4 @@ const ChartsSurface = /*#__PURE__*/React.forwardRef(function ChartsSurface(props
54
46
  children: props.desc
55
47
  }), children]
56
48
  }));
57
- });
58
- exports.ChartsSurface = ChartsSurface;
49
+ });
@@ -35,6 +35,7 @@ export declare function DefaultChartsAxisContent(props: ChartsAxisContentProps):
35
35
  export declare function ChartsAxisTooltipContent(props: {
36
36
  axisData: AxisInteractionData;
37
37
  content?: React.ElementType<ChartsAxisContentProps>;
38
+ contentProps?: Partial<ChartsAxisContentProps>;
38
39
  sx?: SxProps<Theme>;
39
40
  classes: ChartsAxisContentProps['classes'];
40
41
  }): React.JSX.Element;
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ChartsAxisTooltipContent = ChartsAxisTooltipContent;
8
8
  exports.DefaultChartsAxisContent = DefaultChartsAxisContent;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var React = _interopRequireWildcard(require("react"));
10
11
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
12
+ var _utils = require("@mui/base/utils");
11
13
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
12
14
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
13
15
  var _ChartsTooltipTable = require("./ChartsTooltipTable");
@@ -75,6 +77,7 @@ function DefaultChartsAxisContent(props) {
75
77
  function ChartsAxisTooltipContent(props) {
76
78
  const {
77
79
  content,
80
+ contentProps,
78
81
  axisData,
79
82
  sx,
80
83
  classes
@@ -107,13 +110,19 @@ function ChartsAxisTooltipContent(props) {
107
110
  return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID];
108
111
  }, [USED_AXIS_ID, isXaxis, xAxis, yAxis]);
109
112
  const Content = content ?? DefaultChartsAxisContent;
110
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Content, {
111
- axisData: axisData,
112
- series: relevantSeries,
113
- axis: relevantAxis,
114
- dataIndex: dataIndex,
115
- axisValue: axisValue,
116
- sx: sx,
117
- classes: classes
113
+ const chartTooltipContentProps = (0, _utils.useSlotProps)({
114
+ elementType: Content,
115
+ externalSlotProps: contentProps,
116
+ additionalProps: {
117
+ axisData,
118
+ series: relevantSeries,
119
+ axis: relevantAxis,
120
+ dataIndex,
121
+ axisValue,
122
+ sx,
123
+ classes
124
+ },
125
+ ownerState: {}
118
126
  });
127
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Content, (0, _extends2.default)({}, chartTooltipContentProps));
119
128
  }
@@ -3,7 +3,7 @@ import { SxProps, Theme } from '@mui/material/styles';
3
3
  import { ItemInteractionData } from '../context/InteractionProvider';
4
4
  import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config';
5
5
  import { ChartsTooltipClasses } from './tooltipClasses';
6
- export type ChartsItemContentProps<T extends ChartSeriesType> = {
6
+ export type ChartsItemContentProps<T extends ChartSeriesType = ChartSeriesType> = {
7
7
  /**
8
8
  * The data used to identify the triggered item.
9
9
  */
@@ -18,10 +18,11 @@ export type ChartsItemContentProps<T extends ChartSeriesType> = {
18
18
  classes: ChartsTooltipClasses;
19
19
  sx?: SxProps<Theme>;
20
20
  };
21
- export declare function DefaultChartsItemContent<T extends ChartSeriesType>(props: ChartsItemContentProps<T>): React.JSX.Element | null;
21
+ export declare function DefaultChartsItemContent<T extends ChartSeriesType = ChartSeriesType>(props: ChartsItemContentProps<T>): React.JSX.Element | null;
22
22
  export declare function ChartsItemTooltipContent<T extends ChartSeriesType>(props: {
23
23
  itemData: ItemInteractionData<T>;
24
24
  content?: React.ElementType<ChartsItemContentProps<T>>;
25
+ contentProps?: Partial<ChartsItemContentProps<T>>;
25
26
  sx?: SxProps<Theme>;
26
27
  classes: ChartsItemContentProps<T>['classes'];
27
28
  }): React.JSX.Element;
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.ChartsItemTooltipContent = ChartsItemTooltipContent;
7
8
  exports.DefaultChartsItemContent = DefaultChartsItemContent;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _utils = require("@mui/base/utils");
9
12
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
10
13
  var _ChartsTooltipTable = require("./ChartsTooltipTable");
11
14
  var _jsxRuntime = require("react/jsx-runtime");
@@ -65,14 +68,21 @@ function ChartsItemTooltipContent(props) {
65
68
  content,
66
69
  itemData,
67
70
  sx,
68
- classes
71
+ classes,
72
+ contentProps
69
73
  } = props;
70
74
  const series = React.useContext(_SeriesContextProvider.SeriesContext)[itemData.type].series[itemData.seriesId];
71
75
  const Content = content ?? DefaultChartsItemContent;
72
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Content, {
73
- itemData: itemData,
74
- series: series,
75
- sx: sx,
76
- classes: classes
76
+ const chartTooltipContentProps = (0, _utils.useSlotProps)({
77
+ elementType: Content,
78
+ externalSlotProps: contentProps,
79
+ additionalProps: {
80
+ itemData,
81
+ series,
82
+ sx,
83
+ classes
84
+ },
85
+ ownerState: {}
77
86
  });
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Content, (0, _extends2.default)({}, chartTooltipContentProps));
78
88
  }
@@ -1,8 +1,19 @@
1
1
  import * as React from 'react';
2
+ import { PopperProps } from '@mui/base/Popper';
2
3
  import { TriggerOptions } from './utils';
3
4
  import { ChartsItemContentProps } from './ChartsItemTooltipContent';
4
5
  import { ChartsAxisContentProps } from './ChartsAxisTooltipContent';
5
6
  import { ChartsTooltipClasses } from './tooltipClasses';
7
+ export interface ChartsTooltipSlotsComponent {
8
+ popper?: React.ElementType<PopperProps>;
9
+ axisContent?: React.ElementType<ChartsAxisContentProps>;
10
+ itemContent?: React.ElementType<ChartsItemContentProps>;
11
+ }
12
+ export interface ChartsTooltipSlotComponentProps {
13
+ popper?: Partial<PopperProps>;
14
+ axisContent?: Partial<ChartsAxisContentProps>;
15
+ itemContent?: Partial<ChartsItemContentProps>;
16
+ }
6
17
  export type ChartsTooltipProps = {
7
18
  /**
8
19
  * Select the kind of tooltip to display
@@ -14,16 +25,28 @@ export type ChartsTooltipProps = {
14
25
  trigger?: TriggerOptions;
15
26
  /**
16
27
  * Component to override the tooltip content when triger is set to 'item'.
28
+ * @deprecated Use slots.itemContent instead
17
29
  */
18
30
  itemContent?: React.ElementType<ChartsItemContentProps<any>>;
19
31
  /**
20
32
  * Component to override the tooltip content when triger is set to 'axis'.
33
+ * @deprecated Use slots.axisContent instead
21
34
  */
22
35
  axisContent?: React.ElementType<ChartsAxisContentProps>;
23
36
  /**
24
37
  * Override or extend the styles applied to the component.
25
38
  */
26
39
  classes?: Partial<ChartsTooltipClasses>;
40
+ /**
41
+ * Overridable component slots.
42
+ * @default {}
43
+ */
44
+ slots?: ChartsTooltipSlotsComponent;
45
+ /**
46
+ * The props used for each component slot.
47
+ * @default {}
48
+ */
49
+ slotProps?: ChartsTooltipSlotComponentProps;
27
50
  };
28
51
  declare function ChartsTooltip(props: ChartsTooltipProps): React.JSX.Element | null;
29
52
  declare namespace ChartsTooltip {