@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.
- package/BarChart/BarChart.d.ts +6 -3
- package/BarChart/BarChart.js +7 -10
- package/BarChart/BarElement.js +2 -4
- package/BarChart/formatter.js +1 -2
- package/BarChart/legend.js +1 -2
- package/CHANGELOG.md +165 -1
- package/ChartContainer/index.js +2 -3
- package/ChartsAxis/axisClasses.js +1 -2
- package/ChartsLegend/ChartsLegend.d.ts +43 -24
- package/ChartsLegend/ChartsLegend.js +186 -148
- package/ChartsLegend/chartsLegendClasses.js +1 -2
- package/ChartsLegend/utils.d.ts +1 -6
- package/ChartsSurface.js +5 -14
- package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
- package/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
- package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
- package/ChartsTooltip/ChartsItemTooltipContent.js +16 -6
- package/ChartsTooltip/ChartsTooltip.d.ts +23 -0
- package/ChartsTooltip/ChartsTooltip.js +47 -13
- package/ChartsTooltip/ChartsTooltipTable.js +6 -11
- package/ChartsTooltip/tooltipClasses.js +1 -2
- package/ChartsXAxis/ChartsXAxis.js +48 -25
- package/ChartsYAxis/ChartsYAxis.js +47 -26
- package/LineChart/AreaElement.js +2 -4
- package/LineChart/LineChart.d.ts +6 -3
- package/LineChart/LineChart.js +11 -11
- package/LineChart/LineElement.js +2 -4
- package/LineChart/LineHighlightElement.js +1 -2
- package/LineChart/MarkElement.js +1 -2
- package/LineChart/formatter.js +1 -2
- package/LineChart/legend.js +1 -2
- package/PieChart/PieArc.d.ts +1 -0
- package/PieChart/PieArc.js +6 -4
- package/PieChart/PieArcLabel.js +1 -2
- package/PieChart/PieChart.d.ts +8 -4
- package/PieChart/PieChart.js +11 -10
- package/PieChart/PiePlot.d.ts +8 -0
- package/PieChart/PiePlot.js +21 -5
- package/PieChart/formatter.js +1 -2
- package/PieChart/legend.js +1 -2
- package/ResponsiveChartContainer/index.js +2 -3
- package/ScatterChart/ScatterChart.d.ts +6 -3
- package/ScatterChart/ScatterChart.js +7 -10
- package/ScatterChart/formatter.js +1 -2
- package/ScatterChart/legend.js +1 -2
- package/SparkLineChart/SparkLineChart.d.ts +3 -3
- package/SparkLineChart/SparkLineChart.js +7 -3
- package/colorPalettes/colorPalettes.js +6 -12
- package/constants.js +5 -8
- package/context/CartesianContextProvider.js +11 -12
- package/context/DrawingProvider.d.ts +2 -0
- package/context/DrawingProvider.js +4 -4
- package/context/HighlightProvider.js +1 -2
- package/context/InteractionProvider.js +1 -2
- package/context/SeriesContextProvider.js +1 -2
- package/esm/BarChart/BarChart.js +6 -8
- package/esm/ChartsLegend/ChartsLegend.js +184 -142
- package/esm/ChartsSurface.js +3 -11
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
- package/esm/ChartsTooltip/ChartsTooltip.js +47 -12
- package/esm/ChartsXAxis/ChartsXAxis.js +47 -24
- package/esm/ChartsYAxis/ChartsYAxis.js +46 -25
- package/esm/LineChart/LineChart.js +10 -9
- package/esm/PieChart/PieArc.js +5 -2
- package/esm/PieChart/PieChart.js +11 -10
- package/esm/PieChart/PiePlot.js +17 -2
- package/esm/ScatterChart/ScatterChart.js +6 -8
- package/esm/SparkLineChart/SparkLineChart.js +6 -1
- package/esm/constants.js +1 -1
- package/esm/context/CartesianContextProvider.js +11 -11
- package/esm/context/DrawingProvider.js +2 -0
- package/esm/hooks/useChartDimensions.js +2 -0
- package/esm/hooks/useTicks.js +5 -5
- package/esm/internals/components/AxisSharedComponents.js +15 -70
- package/esm/internals/components/ChartsText.js +71 -0
- package/esm/internals/domUtils.js +113 -0
- package/hooks/useChartDimensions.d.ts +2 -0
- package/hooks/useChartDimensions.js +3 -2
- package/hooks/useTicks.d.ts +2 -3
- package/hooks/useTicks.js +7 -8
- package/index.js +1 -1
- package/internals/components/AxisSharedComponents.d.ts +0 -4
- package/internals/components/AxisSharedComponents.js +18 -78
- package/internals/components/ChartsText.d.ts +32 -0
- package/internals/components/ChartsText.js +81 -0
- package/internals/defaultizeValueFormatter.js +1 -2
- package/internals/domUtils.d.ts +14 -0
- package/internals/domUtils.js +122 -0
- package/internals/stackSeries.js +2 -4
- package/legacy/BarChart/BarChart.js +6 -8
- package/legacy/ChartsLegend/ChartsLegend.js +196 -140
- package/legacy/ChartsSurface.js +2 -11
- package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
- package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
- package/legacy/ChartsTooltip/ChartsTooltip.js +50 -12
- package/legacy/ChartsXAxis/ChartsXAxis.js +47 -24
- package/legacy/ChartsYAxis/ChartsYAxis.js +46 -25
- package/legacy/LineChart/LineChart.js +10 -9
- package/legacy/PieChart/PieArc.js +4 -1
- package/legacy/PieChart/PieChart.js +11 -10
- package/legacy/PieChart/PiePlot.js +17 -2
- package/legacy/ScatterChart/ScatterChart.js +6 -8
- package/legacy/SparkLineChart/SparkLineChart.js +6 -1
- package/legacy/constants.js +1 -1
- package/legacy/context/CartesianContextProvider.js +11 -11
- package/legacy/context/DrawingProvider.js +2 -0
- package/legacy/hooks/useChartDimensions.js +2 -0
- package/legacy/hooks/useTicks.js +5 -5
- package/legacy/index.js +1 -1
- package/legacy/internals/components/AxisSharedComponents.js +9 -63
- package/legacy/internals/components/ChartsText.js +77 -0
- package/legacy/internals/domUtils.js +121 -0
- package/models/axis.d.ts +6 -5
- package/models/layout.d.ts +7 -6
- package/modern/BarChart/BarChart.js +6 -8
- package/modern/ChartsLegend/ChartsLegend.js +184 -142
- package/modern/ChartsSurface.js +3 -11
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +17 -8
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -6
- package/modern/ChartsTooltip/ChartsTooltip.js +46 -12
- package/modern/ChartsXAxis/ChartsXAxis.js +47 -24
- package/modern/ChartsYAxis/ChartsYAxis.js +46 -25
- package/modern/LineChart/LineChart.js +10 -9
- package/modern/PieChart/PieArc.js +5 -2
- package/modern/PieChart/PieChart.js +11 -10
- package/modern/PieChart/PiePlot.js +17 -2
- package/modern/ScatterChart/ScatterChart.js +6 -8
- package/modern/SparkLineChart/SparkLineChart.js +6 -1
- package/modern/constants.js +1 -1
- package/modern/context/CartesianContextProvider.js +11 -11
- package/modern/context/DrawingProvider.js +2 -0
- package/modern/hooks/useChartDimensions.js +2 -0
- package/modern/hooks/useTicks.js +5 -5
- package/modern/index.js +1 -1
- package/modern/internals/components/AxisSharedComponents.js +15 -70
- package/modern/internals/components/ChartsText.js +71 -0
- package/modern/internals/domUtils.js +113 -0
- 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.
|
|
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
|
-
|
|
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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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)(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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']);
|
package/ChartsLegend/utils.d.ts
CHANGED
|
@@ -5,10 +5,5 @@ export type AnchorPosition = {
|
|
|
5
5
|
horizontal: AnchorX;
|
|
6
6
|
vertical: AnchorY;
|
|
7
7
|
};
|
|
8
|
-
export type
|
|
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"
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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 {
|