@mui/x-charts 8.0.0-alpha.6 → 8.0.0-alpha.7
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/AnimatedBarElement.js +1 -0
- package/BarChart/BarChart.js +17 -7
- package/BarChart/BarLabel/BarLabel.d.ts +1 -479
- package/BarChart/BarLabel/barLabelClasses.d.ts +1 -1
- package/BarChart/legend.js +1 -0
- package/BarChart/useBarChartProps.d.ts +4 -2
- package/BarChart/useBarChartProps.js +16 -3
- package/CHANGELOG.md +127 -1
- package/ChartsLabel/ChartsLabel.d.ts +2 -3
- package/ChartsLabel/ChartsLabel.js +3 -18
- package/ChartsLabel/ChartsLabelGradient.d.ts +9 -8
- package/ChartsLabel/ChartsLabelGradient.js +21 -18
- package/ChartsLabel/ChartsLabelMark.d.ts +2 -3
- package/ChartsLabel/ChartsLabelMark.js +5 -2
- package/ChartsLabel/index.d.ts +7 -0
- package/ChartsLabel/index.js +6 -0
- package/ChartsLabel/labelClasses.d.ts +0 -1
- package/ChartsLabel/labelGradientClasses.d.ts +5 -4
- package/ChartsLabel/labelGradientClasses.js +3 -2
- package/ChartsLabel/labelMarkClasses.d.ts +3 -2
- package/ChartsLabel/labelMarkClasses.js +3 -2
- package/ChartsLabel/package.json +6 -0
- package/ChartsLegend/ChartsLegend.d.ts +18 -22
- package/ChartsLegend/ChartsLegend.js +100 -109
- package/ChartsLegend/ContinuousColorLegend.d.ts +29 -38
- package/ChartsLegend/ContinuousColorLegend.js +198 -321
- package/ChartsLegend/PiecewiseColorLegend.d.ts +27 -19
- package/ChartsLegend/PiecewiseColorLegend.js +201 -111
- package/ChartsLegend/chartsLegend.types.d.ts +17 -60
- package/ChartsLegend/chartsLegendClasses.d.ts +7 -8
- package/ChartsLegend/chartsLegendClasses.js +16 -2
- package/ChartsLegend/colorLegend.types.d.ts +13 -0
- package/ChartsLegend/colorLegend.types.js +1 -0
- package/ChartsLegend/continuousColorLegendClasses.d.ts +26 -0
- package/ChartsLegend/continuousColorLegendClasses.js +23 -0
- package/ChartsLegend/direction.d.ts +1 -0
- package/ChartsLegend/direction.js +1 -0
- package/ChartsLegend/index.d.ts +13 -3
- package/ChartsLegend/index.js +9 -3
- package/ChartsLegend/legend.types.d.ts +10 -54
- package/ChartsLegend/legendContext.types.d.ts +55 -0
- package/ChartsLegend/legendContext.types.js +1 -0
- package/ChartsLegend/onClickContextBuilder.d.ts +2 -0
- package/ChartsLegend/onClickContextBuilder.js +7 -0
- package/ChartsLegend/piecewiseColorDefaultLabelFormatter.d.ts +2 -0
- package/ChartsLegend/piecewiseColorDefaultLabelFormatter.js +9 -0
- package/ChartsLegend/piecewiseColorLegend.types.d.ts +26 -0
- package/ChartsLegend/piecewiseColorLegend.types.js +1 -0
- package/ChartsLegend/piecewiseColorLegendClasses.d.ts +28 -0
- package/ChartsLegend/piecewiseColorLegendClasses.js +23 -0
- package/ChartsLegend/useAxis.d.ts +1 -1
- package/ChartsLegend/useAxis.js +0 -1
- package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +1 -1
- package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +1 -1
- package/ChartsSurface/ChartsSurface.js +0 -1
- package/ChartsTooltip/chartsTooltipClasses.d.ts +1 -1
- package/LineChart/AnimatedArea.js +1 -0
- package/LineChart/AnimatedLine.js +1 -0
- package/LineChart/AppearingMask.js +1 -0
- package/LineChart/CircleMarkElement.js +1 -0
- package/LineChart/LineChart.js +20 -10
- package/LineChart/MarkElement.js +3 -1
- package/LineChart/legend.js +1 -0
- package/LineChart/useLineChartProps.d.ts +4 -2
- package/LineChart/useLineChartProps.js +15 -2
- package/PieChart/PieArc.js +3 -1
- package/PieChart/PieArcLabel.js +13 -9
- package/PieChart/PieArcLabelPlot.js +1 -0
- package/PieChart/PieArcPlot.js +1 -0
- package/PieChart/PieChart.js +42 -41
- package/PieChart/legend.js +1 -0
- package/ScatterChart/ScatterChart.js +21 -11
- package/ScatterChart/legend.js +1 -0
- package/ScatterChart/useScatterChartProps.d.ts +4 -2
- package/ScatterChart/useScatterChartProps.js +15 -2
- package/SparkLineChart/SparkLineChart.js +1 -4
- package/constants/index.d.ts +1 -0
- package/constants/index.js +2 -1
- package/context/CartesianProvider/defaultizeAxis.d.ts +9 -9
- package/context/ChartDataProvider/useChartDataProviderProps.d.ts +18 -18
- package/context/ChartDataProvider/useDefaultizeAxis.d.ts +9 -9
- package/context/ChartProvider/ChartProvider.types.d.ts +1 -1
- package/context/InteractionSelectors.d.ts +11 -11
- package/context/PluginProvider/SeriesFormatter.types.d.ts +1 -1
- package/context/PluginProvider/mergePlugins.d.ts +8 -8
- package/context/SizeProvider/Size.types.d.ts +1 -1
- package/context/SizeProvider/useChartContainerDimensions.d.ts +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useLegend.d.ts +13 -0
- package/{modern/ChartsLegend/utils.js → hooks/useLegend.js} +20 -1
- package/hooks/useSvgRef.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/internals/calculateMargins.d.ts +7 -0
- package/internals/calculateMargins.js +25 -0
- package/internals/components/ChartsAxesGradients/ChartsAxesGradients.d.ts +2 -1
- package/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +60 -16
- package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +6 -6
- package/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.d.ts +13 -0
- package/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.js +61 -0
- package/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +3 -0
- package/internals/components/ChartsWrapper/ChartsWrapper.d.ts +17 -0
- package/internals/components/ChartsWrapper/ChartsWrapper.js +66 -0
- package/internals/components/ChartsWrapper/index.d.ts +1 -0
- package/internals/components/ChartsWrapper/index.js +1 -0
- package/internals/consumeSlots.d.ts +48 -0
- package/internals/consumeSlots.js +101 -0
- package/internals/consumeThemeProps.d.ts +3 -7
- package/internals/consumeThemeProps.js +18 -27
- package/internals/defaultizeColor.d.ts +6 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/plugins/corePlugins/useChartId/useChartId.selectors.d.ts +1 -1
- package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +11 -11
- package/internals/plugins/models/plugin.d.ts +1 -1
- package/internals/store/useCharts.d.ts +2 -2
- package/internals/store/useCharts.types.d.ts +1 -1
- package/models/seriesType/common.d.ts +9 -0
- package/models/seriesType/pie.d.ts +9 -0
- package/modern/BarChart/AnimatedBarElement.js +1 -0
- package/modern/BarChart/BarChart.js +17 -7
- package/modern/BarChart/legend.js +1 -0
- package/modern/BarChart/useBarChartProps.js +16 -3
- package/modern/ChartsLabel/ChartsLabel.js +3 -18
- package/modern/ChartsLabel/ChartsLabelGradient.js +21 -18
- package/modern/ChartsLabel/ChartsLabelMark.js +5 -2
- package/modern/ChartsLabel/index.js +6 -0
- package/modern/ChartsLabel/labelGradientClasses.js +3 -2
- package/modern/ChartsLabel/labelMarkClasses.js +3 -2
- package/modern/ChartsLegend/ChartsLegend.js +100 -109
- package/modern/ChartsLegend/ContinuousColorLegend.js +198 -321
- package/modern/ChartsLegend/PiecewiseColorLegend.js +201 -111
- package/modern/ChartsLegend/chartsLegendClasses.js +16 -2
- package/modern/ChartsLegend/colorLegend.types.js +1 -0
- package/modern/ChartsLegend/continuousColorLegendClasses.js +23 -0
- package/modern/ChartsLegend/direction.js +1 -0
- package/modern/ChartsLegend/index.js +9 -3
- package/modern/ChartsLegend/legendContext.types.js +1 -0
- package/modern/ChartsLegend/onClickContextBuilder.js +7 -0
- package/modern/ChartsLegend/piecewiseColorDefaultLabelFormatter.js +9 -0
- package/modern/ChartsLegend/piecewiseColorLegend.types.js +1 -0
- package/modern/ChartsLegend/piecewiseColorLegendClasses.js +23 -0
- package/modern/ChartsLegend/useAxis.js +0 -1
- package/modern/ChartsSurface/ChartsSurface.js +0 -1
- package/modern/LineChart/AnimatedArea.js +1 -0
- package/modern/LineChart/AnimatedLine.js +1 -0
- package/modern/LineChart/AppearingMask.js +1 -0
- package/modern/LineChart/CircleMarkElement.js +1 -0
- package/modern/LineChart/LineChart.js +20 -10
- package/modern/LineChart/MarkElement.js +3 -1
- package/modern/LineChart/legend.js +1 -0
- package/modern/LineChart/useLineChartProps.js +15 -2
- package/modern/PieChart/PieArc.js +3 -1
- package/modern/PieChart/PieArcLabel.js +13 -9
- package/modern/PieChart/PieArcLabelPlot.js +1 -0
- package/modern/PieChart/PieArcPlot.js +1 -0
- package/modern/PieChart/PieChart.js +42 -41
- package/modern/PieChart/legend.js +1 -0
- package/modern/ScatterChart/ScatterChart.js +21 -11
- package/modern/ScatterChart/legend.js +1 -0
- package/modern/ScatterChart/useScatterChartProps.js +15 -2
- package/modern/SparkLineChart/SparkLineChart.js +1 -4
- package/modern/constants/index.js +2 -1
- package/modern/hooks/index.js +2 -1
- package/{ChartsLegend/utils.js → modern/hooks/useLegend.js} +20 -1
- package/modern/index.js +2 -1
- package/modern/internals/calculateMargins.js +25 -0
- package/modern/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +60 -16
- package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +6 -6
- package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.js +61 -0
- package/modern/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +3 -0
- package/modern/internals/components/ChartsWrapper/ChartsWrapper.js +66 -0
- package/modern/internals/components/ChartsWrapper/index.js +1 -0
- package/modern/internals/consumeSlots.js +101 -0
- package/modern/internals/consumeThemeProps.js +18 -27
- package/modern/internals/index.js +1 -0
- package/node/BarChart/AnimatedBarElement.js +1 -0
- package/node/BarChart/BarChart.js +17 -7
- package/node/BarChart/legend.js +1 -0
- package/node/BarChart/useBarChartProps.js +15 -3
- package/node/ChartsLabel/ChartsLabel.js +3 -18
- package/node/ChartsLabel/ChartsLabelGradient.js +21 -18
- package/node/ChartsLabel/ChartsLabelMark.js +5 -2
- package/node/ChartsLabel/index.js +26 -0
- package/node/ChartsLabel/labelGradientClasses.js +3 -2
- package/node/ChartsLabel/labelMarkClasses.js +3 -2
- package/node/ChartsLegend/ChartsLegend.js +99 -108
- package/node/ChartsLegend/ContinuousColorLegend.js +199 -322
- package/node/ChartsLegend/PiecewiseColorLegend.js +201 -111
- package/node/ChartsLegend/chartsLegendClasses.js +17 -3
- package/node/ChartsLegend/colorLegend.types.js +5 -0
- package/node/ChartsLegend/continuousColorLegendClasses.js +31 -0
- package/node/ChartsLegend/direction.js +5 -0
- package/node/ChartsLegend/index.js +80 -16
- package/node/ChartsLegend/legendContext.types.js +5 -0
- package/node/ChartsLegend/onClickContextBuilder.js +14 -0
- package/node/ChartsLegend/piecewiseColorDefaultLabelFormatter.js +15 -0
- package/node/ChartsLegend/piecewiseColorLegend.types.js +5 -0
- package/node/ChartsLegend/piecewiseColorLegendClasses.js +31 -0
- package/node/ChartsSurface/ChartsSurface.js +0 -1
- package/node/LineChart/AnimatedArea.js +1 -0
- package/node/LineChart/AnimatedLine.js +1 -0
- package/node/LineChart/AppearingMask.js +1 -0
- package/node/LineChart/CircleMarkElement.js +1 -0
- package/node/LineChart/LineChart.js +20 -10
- package/node/LineChart/MarkElement.js +3 -1
- package/node/LineChart/legend.js +1 -0
- package/node/LineChart/useLineChartProps.js +14 -2
- package/node/PieChart/PieArc.js +3 -1
- package/node/PieChart/PieArcLabel.js +13 -9
- package/node/PieChart/PieArcLabelPlot.js +1 -0
- package/node/PieChart/PieArcPlot.js +1 -0
- package/node/PieChart/PieChart.js +42 -41
- package/node/PieChart/legend.js +1 -0
- package/node/ScatterChart/ScatterChart.js +21 -11
- package/node/ScatterChart/legend.js +1 -0
- package/node/ScatterChart/useScatterChartProps.js +14 -2
- package/node/SparkLineChart/SparkLineChart.js +1 -4
- package/node/constants/index.js +3 -2
- package/node/hooks/index.js +13 -1
- package/node/{ChartsLegend/utils.js → hooks/useLegend.js} +19 -1
- package/node/index.js +12 -1
- package/node/internals/calculateMargins.js +33 -0
- package/node/internals/components/ChartsAxesGradients/ChartsAxesGradients.js +61 -16
- package/node/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +6 -6
- package/node/internals/components/ChartsAxesGradients/ChartsContinuousGradientObjectBound.js +69 -0
- package/node/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.js +3 -0
- package/node/internals/components/ChartsWrapper/ChartsWrapper.js +72 -0
- package/node/internals/components/ChartsWrapper/index.js +16 -0
- package/node/internals/consumeSlots.js +109 -0
- package/node/internals/consumeThemeProps.js +18 -27
- package/node/internals/index.js +12 -0
- package/package.json +4 -4
- package/ChartsLegend/ChartsLegendItem.d.ts +0 -26
- package/ChartsLegend/ChartsLegendItem.js +0 -65
- package/ChartsLegend/DefaultChartsLegend.d.ts +0 -25
- package/ChartsLegend/DefaultChartsLegend.js +0 -112
- package/ChartsLegend/LegendPerItem.d.ts +0 -65
- package/ChartsLegend/LegendPerItem.js +0 -129
- package/ChartsLegend/legendItemsPlacement.d.ts +0 -3
- package/ChartsLegend/legendItemsPlacement.js +0 -72
- package/ChartsLegend/utils.d.ts +0 -2
- package/modern/ChartsLegend/ChartsLegendItem.js +0 -65
- package/modern/ChartsLegend/DefaultChartsLegend.js +0 -112
- package/modern/ChartsLegend/LegendPerItem.js +0 -129
- package/modern/ChartsLegend/legendItemsPlacement.js +0 -72
- package/node/ChartsLegend/ChartsLegendItem.js +0 -72
- package/node/ChartsLegend/DefaultChartsLegend.js +0 -118
- package/node/ChartsLegend/LegendPerItem.js +0 -137
- package/node/ChartsLegend/legendItemsPlacement.js +0 -79
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
const _excluded = ["rotate", "dominantBaseline"];
|
|
6
|
-
import * as React from 'react';
|
|
7
|
-
import NoSsr from '@mui/material/NoSsr';
|
|
8
|
-
import { useTheme, styled } from '@mui/material/styles';
|
|
9
|
-
import { getWordsByLines } from "../internals/getWordsByLines.js";
|
|
10
|
-
import { legendItemPlacements } from "./legendItemsPlacement.js";
|
|
11
|
-
import { useDrawingArea } from "../hooks/useDrawingArea.js";
|
|
12
|
-
import { ChartsLegendItem } from "./ChartsLegendItem.js";
|
|
13
|
-
import { createElement as _createElement } from "react";
|
|
14
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
export const ChartsLegendRoot = styled('g', {
|
|
16
|
-
name: 'MuiChartsLegend',
|
|
17
|
-
slot: 'Root',
|
|
18
|
-
overridesResolver: (props, styles) => styles.root
|
|
19
|
-
})({});
|
|
20
|
-
/**
|
|
21
|
-
* Transforms number or partial padding object to a defaultized padding object.
|
|
22
|
-
*/
|
|
23
|
-
const getStandardizedPadding = padding => {
|
|
24
|
-
if (typeof padding === 'number') {
|
|
25
|
-
return {
|
|
26
|
-
left: padding,
|
|
27
|
-
right: padding,
|
|
28
|
-
top: padding,
|
|
29
|
-
bottom: padding
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
return _extends({
|
|
33
|
-
left: 0,
|
|
34
|
-
right: 0,
|
|
35
|
-
top: 0,
|
|
36
|
-
bottom: 0
|
|
37
|
-
}, padding);
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Internal component to display an array of items as a legend.
|
|
42
|
-
* Used for series legend, and threshold color legend.
|
|
43
|
-
* @ignore - Do not document
|
|
44
|
-
*/
|
|
45
|
-
export function LegendPerItem(props) {
|
|
46
|
-
const {
|
|
47
|
-
position,
|
|
48
|
-
direction,
|
|
49
|
-
itemsToDisplay,
|
|
50
|
-
classes,
|
|
51
|
-
itemMarkWidth = 20,
|
|
52
|
-
itemMarkHeight = 20,
|
|
53
|
-
markGap = 5,
|
|
54
|
-
itemGap = 10,
|
|
55
|
-
padding: paddingProps = 10,
|
|
56
|
-
labelStyle: inLabelStyle,
|
|
57
|
-
onItemClick
|
|
58
|
-
} = props;
|
|
59
|
-
const theme = useTheme();
|
|
60
|
-
const drawingArea = useDrawingArea();
|
|
61
|
-
const labelStyle = React.useMemo(() => _extends({}, theme.typography.subtitle1, {
|
|
62
|
-
color: 'inherit',
|
|
63
|
-
dominantBaseline: 'central',
|
|
64
|
-
textAnchor: 'start',
|
|
65
|
-
fill: (theme.vars || theme).palette.text.primary,
|
|
66
|
-
lineHeight: 1
|
|
67
|
-
}, inLabelStyle),
|
|
68
|
-
// To say to TS that the dominantBaseline and textAnchor are correct
|
|
69
|
-
[inLabelStyle, theme]);
|
|
70
|
-
const padding = React.useMemo(() => getStandardizedPadding(paddingProps), [paddingProps]);
|
|
71
|
-
const getItemSpace = React.useCallback((label, inStyle = {}) => {
|
|
72
|
-
const style = _objectWithoutPropertiesLoose(inStyle, _excluded);
|
|
73
|
-
const linesSize = getWordsByLines({
|
|
74
|
-
style,
|
|
75
|
-
needsComputation: true,
|
|
76
|
-
text: label
|
|
77
|
-
});
|
|
78
|
-
const innerSize = {
|
|
79
|
-
innerWidth: itemMarkWidth + markGap + Math.max(...linesSize.map(size => size.width)),
|
|
80
|
-
innerHeight: Math.max(itemMarkHeight, linesSize.length * linesSize[0].height)
|
|
81
|
-
};
|
|
82
|
-
return _extends({}, innerSize, {
|
|
83
|
-
outerWidth: innerSize.innerWidth + itemGap,
|
|
84
|
-
outerHeight: innerSize.innerHeight + itemGap
|
|
85
|
-
});
|
|
86
|
-
}, [itemGap, itemMarkHeight, itemMarkWidth, markGap]);
|
|
87
|
-
const totalWidth = drawingArea.left + drawingArea.width + drawingArea.right;
|
|
88
|
-
const totalHeight = drawingArea.top + drawingArea.height + drawingArea.bottom;
|
|
89
|
-
const availableWidth = totalWidth - padding.left - padding.right;
|
|
90
|
-
const availableHeight = totalHeight - padding.top - padding.bottom;
|
|
91
|
-
const [itemsWithPosition, legendWidth, legendHeight] = React.useMemo(() => legendItemPlacements(itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap), [itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap]);
|
|
92
|
-
const gapX = React.useMemo(() => {
|
|
93
|
-
switch (position.horizontal) {
|
|
94
|
-
case 'left':
|
|
95
|
-
return padding.left;
|
|
96
|
-
case 'right':
|
|
97
|
-
return totalWidth - padding.right - legendWidth;
|
|
98
|
-
default:
|
|
99
|
-
return (totalWidth - legendWidth) / 2;
|
|
100
|
-
}
|
|
101
|
-
}, [position.horizontal, padding.left, padding.right, totalWidth, legendWidth]);
|
|
102
|
-
const gapY = React.useMemo(() => {
|
|
103
|
-
switch (position.vertical) {
|
|
104
|
-
case 'top':
|
|
105
|
-
return padding.top;
|
|
106
|
-
case 'bottom':
|
|
107
|
-
return totalHeight - padding.bottom - legendHeight;
|
|
108
|
-
default:
|
|
109
|
-
return (totalHeight - legendHeight) / 2;
|
|
110
|
-
}
|
|
111
|
-
}, [position.vertical, padding.top, padding.bottom, totalHeight, legendHeight]);
|
|
112
|
-
return /*#__PURE__*/_jsx(NoSsr, {
|
|
113
|
-
children: /*#__PURE__*/_jsx(ChartsLegendRoot, {
|
|
114
|
-
className: classes?.root,
|
|
115
|
-
children: itemsWithPosition.map((item, i) => /*#__PURE__*/_createElement(ChartsLegendItem, _extends({}, item, {
|
|
116
|
-
key: item.id,
|
|
117
|
-
gapX: gapX,
|
|
118
|
-
gapY: gapY,
|
|
119
|
-
legendWidth: legendWidth,
|
|
120
|
-
itemMarkHeight: itemMarkHeight,
|
|
121
|
-
itemMarkWidth: itemMarkWidth,
|
|
122
|
-
markGap: markGap,
|
|
123
|
-
labelStyle: labelStyle,
|
|
124
|
-
classes: classes,
|
|
125
|
-
onClick: onItemClick ? event => onItemClick(event, i) : undefined
|
|
126
|
-
})))
|
|
127
|
-
})
|
|
128
|
-
});
|
|
129
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["label"];
|
|
4
|
-
export function legendItemPlacements(itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap) {
|
|
5
|
-
// Start at 0, 0. Will be modified later by padding and position.
|
|
6
|
-
let x = 0;
|
|
7
|
-
let y = 0;
|
|
8
|
-
|
|
9
|
-
// total values used to align legend later.
|
|
10
|
-
let totalWidthUsed = 0;
|
|
11
|
-
let totalHeightUsed = 0;
|
|
12
|
-
let rowIndex = 0;
|
|
13
|
-
const rowMaxHeight = [0];
|
|
14
|
-
const seriesWithRawPosition = itemsToDisplay.map(_ref => {
|
|
15
|
-
let {
|
|
16
|
-
label
|
|
17
|
-
} = _ref,
|
|
18
|
-
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
19
|
-
const itemSpace = getItemSpace(label, labelStyle);
|
|
20
|
-
const rep = _extends({}, other, {
|
|
21
|
-
label,
|
|
22
|
-
positionX: x,
|
|
23
|
-
positionY: y,
|
|
24
|
-
innerHeight: itemSpace.innerHeight,
|
|
25
|
-
innerWidth: itemSpace.innerWidth,
|
|
26
|
-
outerHeight: itemSpace.outerHeight,
|
|
27
|
-
outerWidth: itemSpace.outerWidth,
|
|
28
|
-
rowIndex
|
|
29
|
-
});
|
|
30
|
-
if (direction === 'row') {
|
|
31
|
-
if (x + itemSpace.innerWidth > availableWidth) {
|
|
32
|
-
// This legend item would create overflow along the x-axis, so we start a new row.
|
|
33
|
-
x = 0;
|
|
34
|
-
y += rowMaxHeight[rowIndex];
|
|
35
|
-
rowIndex += 1;
|
|
36
|
-
if (rowMaxHeight.length <= rowIndex) {
|
|
37
|
-
rowMaxHeight.push(0);
|
|
38
|
-
}
|
|
39
|
-
rep.positionX = x;
|
|
40
|
-
rep.positionY = y;
|
|
41
|
-
rep.rowIndex = rowIndex;
|
|
42
|
-
}
|
|
43
|
-
totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
|
|
44
|
-
totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
|
|
45
|
-
rowMaxHeight[rowIndex] = Math.max(rowMaxHeight[rowIndex], itemSpace.outerHeight);
|
|
46
|
-
x += itemSpace.outerWidth;
|
|
47
|
-
}
|
|
48
|
-
if (direction === 'column') {
|
|
49
|
-
if (y + itemSpace.innerHeight > availableHeight) {
|
|
50
|
-
// This legend item would create overflow along the y-axis, so we start a new column.
|
|
51
|
-
x = totalWidthUsed + itemGap;
|
|
52
|
-
y = 0;
|
|
53
|
-
rowIndex = 0;
|
|
54
|
-
rep.positionX = x;
|
|
55
|
-
rep.positionY = y;
|
|
56
|
-
rep.rowIndex = rowIndex;
|
|
57
|
-
}
|
|
58
|
-
if (rowMaxHeight.length <= rowIndex) {
|
|
59
|
-
rowMaxHeight.push(0);
|
|
60
|
-
}
|
|
61
|
-
totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
|
|
62
|
-
totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
|
|
63
|
-
rowIndex += 1;
|
|
64
|
-
y += itemSpace.outerHeight;
|
|
65
|
-
}
|
|
66
|
-
return rep;
|
|
67
|
-
});
|
|
68
|
-
return [seriesWithRawPosition.map(item => _extends({}, item, {
|
|
69
|
-
positionY: item.positionY + (direction === 'row' ? rowMaxHeight[item.rowIndex] / 2 // Get the center of the entire row
|
|
70
|
-
: item.outerHeight / 2) // Get the center of the item
|
|
71
|
-
})), totalWidthUsed, totalHeightUsed];
|
|
72
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.ChartsLegendItem = ChartsLegendItem;
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _clsx = _interopRequireDefault(require("clsx"));
|
|
12
|
-
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
13
|
-
var _ChartsText = require("../ChartsText");
|
|
14
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
-
/**
|
|
16
|
-
* @ignore - internal component.
|
|
17
|
-
*/
|
|
18
|
-
function ChartsLegendItem(props) {
|
|
19
|
-
const isRTL = (0, _RtlProvider.useRtl)();
|
|
20
|
-
const {
|
|
21
|
-
id,
|
|
22
|
-
positionY,
|
|
23
|
-
label,
|
|
24
|
-
positionX,
|
|
25
|
-
innerHeight,
|
|
26
|
-
innerWidth,
|
|
27
|
-
legendWidth,
|
|
28
|
-
color,
|
|
29
|
-
gapX,
|
|
30
|
-
gapY,
|
|
31
|
-
itemMarkHeight,
|
|
32
|
-
itemMarkWidth,
|
|
33
|
-
markGap,
|
|
34
|
-
labelStyle,
|
|
35
|
-
classes,
|
|
36
|
-
onClick
|
|
37
|
-
} = props;
|
|
38
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
|
|
39
|
-
className: (0, _clsx.default)(classes?.series, `${classes?.series}-${id}`),
|
|
40
|
-
transform: `translate(${gapX + (isRTL ? legendWidth - positionX : positionX)} ${gapY + positionY})`,
|
|
41
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
|
|
42
|
-
x: isRTL ? -(innerWidth + 2) : -2,
|
|
43
|
-
y: -itemMarkHeight / 2 - 2,
|
|
44
|
-
width: innerWidth + 4,
|
|
45
|
-
height: innerHeight + 4,
|
|
46
|
-
fill: "transparent",
|
|
47
|
-
className: classes?.itemBackground,
|
|
48
|
-
onClick: onClick,
|
|
49
|
-
style: {
|
|
50
|
-
pointerEvents: onClick ? 'all' : 'none',
|
|
51
|
-
cursor: onClick ? 'pointer' : 'unset'
|
|
52
|
-
}
|
|
53
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
|
|
54
|
-
className: classes?.mark,
|
|
55
|
-
x: isRTL ? -itemMarkWidth : 0,
|
|
56
|
-
y: -itemMarkHeight / 2,
|
|
57
|
-
width: itemMarkWidth,
|
|
58
|
-
height: itemMarkHeight,
|
|
59
|
-
fill: color,
|
|
60
|
-
style: {
|
|
61
|
-
pointerEvents: 'none'
|
|
62
|
-
}
|
|
63
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsText.ChartsText, {
|
|
64
|
-
style: (0, _extends2.default)({
|
|
65
|
-
pointerEvents: 'none'
|
|
66
|
-
}, labelStyle),
|
|
67
|
-
text: label,
|
|
68
|
-
x: (isRTL ? -1 : 1) * (itemMarkWidth + markGap),
|
|
69
|
-
y: 0
|
|
70
|
-
})]
|
|
71
|
-
});
|
|
72
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.DefaultChartsLegend = DefaultChartsLegend;
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
|
-
var React = _interopRequireWildcard(require("react"));
|
|
13
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
-
var _LegendPerItem = require("./LegendPerItem");
|
|
15
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
const _excluded = ["seriesToDisplay", "hidden", "onItemClick"];
|
|
17
|
-
const seriesContextBuilder = context => ({
|
|
18
|
-
type: 'series',
|
|
19
|
-
color: context.color,
|
|
20
|
-
label: context.label,
|
|
21
|
-
seriesId: context.seriesId,
|
|
22
|
-
itemId: context.itemId
|
|
23
|
-
});
|
|
24
|
-
function DefaultChartsLegend(props) {
|
|
25
|
-
const {
|
|
26
|
-
seriesToDisplay,
|
|
27
|
-
hidden,
|
|
28
|
-
onItemClick
|
|
29
|
-
} = props,
|
|
30
|
-
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
31
|
-
if (hidden) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LegendPerItem.LegendPerItem, (0, _extends2.default)({}, other, {
|
|
35
|
-
itemsToDisplay: seriesToDisplay,
|
|
36
|
-
onItemClick: onItemClick ? (event, i) => onItemClick(event, seriesContextBuilder(seriesToDisplay[i]), i) : undefined
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
process.env.NODE_ENV !== "production" ? DefaultChartsLegend.propTypes = {
|
|
40
|
-
// ----------------------------- Warning --------------------------------
|
|
41
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
42
|
-
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
43
|
-
// ----------------------------------------------------------------------
|
|
44
|
-
/**
|
|
45
|
-
* Override or extend the styles applied to the component.
|
|
46
|
-
*/
|
|
47
|
-
classes: _propTypes.default.object,
|
|
48
|
-
/**
|
|
49
|
-
* The direction of the legend layout.
|
|
50
|
-
* The default depends on the chart.
|
|
51
|
-
*/
|
|
52
|
-
direction: _propTypes.default.oneOf(['column', 'row']).isRequired,
|
|
53
|
-
/**
|
|
54
|
-
* Set to true to hide the legend.
|
|
55
|
-
* @default false
|
|
56
|
-
*/
|
|
57
|
-
hidden: _propTypes.default.bool,
|
|
58
|
-
/**
|
|
59
|
-
* Space between two legend items (in px).
|
|
60
|
-
* @default 10
|
|
61
|
-
*/
|
|
62
|
-
itemGap: _propTypes.default.number,
|
|
63
|
-
/**
|
|
64
|
-
* Height of the item mark (in px).
|
|
65
|
-
* @default 20
|
|
66
|
-
*/
|
|
67
|
-
itemMarkHeight: _propTypes.default.number,
|
|
68
|
-
/**
|
|
69
|
-
* Width of the item mark (in px).
|
|
70
|
-
* @default 20
|
|
71
|
-
*/
|
|
72
|
-
itemMarkWidth: _propTypes.default.number,
|
|
73
|
-
/**
|
|
74
|
-
* Style applied to legend labels.
|
|
75
|
-
* @default theme.typography.subtitle1
|
|
76
|
-
*/
|
|
77
|
-
labelStyle: _propTypes.default.object,
|
|
78
|
-
/**
|
|
79
|
-
* Space between the mark and the label (in px).
|
|
80
|
-
* @default 5
|
|
81
|
-
*/
|
|
82
|
-
markGap: _propTypes.default.number,
|
|
83
|
-
/**
|
|
84
|
-
* Callback fired when a legend item is clicked.
|
|
85
|
-
* @param {React.MouseEvent<SVGRectElement, MouseEvent>} event The click event.
|
|
86
|
-
* @param {SeriesLegendItemContext} legendItem The legend item data.
|
|
87
|
-
* @param {number} index The index of the clicked legend item.
|
|
88
|
-
*/
|
|
89
|
-
onItemClick: _propTypes.default.func,
|
|
90
|
-
/**
|
|
91
|
-
* Legend padding (in px).
|
|
92
|
-
* Can either be a single number, or an object with top, left, bottom, right properties.
|
|
93
|
-
* @default 10
|
|
94
|
-
*/
|
|
95
|
-
padding: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({
|
|
96
|
-
bottom: _propTypes.default.number,
|
|
97
|
-
left: _propTypes.default.number,
|
|
98
|
-
right: _propTypes.default.number,
|
|
99
|
-
top: _propTypes.default.number
|
|
100
|
-
})]),
|
|
101
|
-
/**
|
|
102
|
-
* The position of the legend.
|
|
103
|
-
*/
|
|
104
|
-
position: _propTypes.default.shape({
|
|
105
|
-
horizontal: _propTypes.default.oneOf(['left', 'middle', 'right']).isRequired,
|
|
106
|
-
vertical: _propTypes.default.oneOf(['bottom', 'middle', 'top']).isRequired
|
|
107
|
-
}).isRequired,
|
|
108
|
-
series: _propTypes.default.object.isRequired,
|
|
109
|
-
seriesToDisplay: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
110
|
-
color: _propTypes.default.string.isRequired,
|
|
111
|
-
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
|
|
112
|
-
itemId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
113
|
-
label: _propTypes.default.string.isRequired,
|
|
114
|
-
maxValue: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
115
|
-
minValue: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
116
|
-
seriesId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
|
|
117
|
-
})).isRequired
|
|
118
|
-
} : void 0;
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.ChartsLegendRoot = void 0;
|
|
10
|
-
exports.LegendPerItem = LegendPerItem;
|
|
11
|
-
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var React = _react;
|
|
15
|
-
var _NoSsr = _interopRequireDefault(require("@mui/material/NoSsr"));
|
|
16
|
-
var _styles = require("@mui/material/styles");
|
|
17
|
-
var _getWordsByLines = require("../internals/getWordsByLines");
|
|
18
|
-
var _legendItemsPlacement = require("./legendItemsPlacement");
|
|
19
|
-
var _useDrawingArea = require("../hooks/useDrawingArea");
|
|
20
|
-
var _ChartsLegendItem = require("./ChartsLegendItem");
|
|
21
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["rotate", "dominantBaseline"];
|
|
23
|
-
const ChartsLegendRoot = exports.ChartsLegendRoot = (0, _styles.styled)('g', {
|
|
24
|
-
name: 'MuiChartsLegend',
|
|
25
|
-
slot: 'Root',
|
|
26
|
-
overridesResolver: (props, styles) => styles.root
|
|
27
|
-
})({});
|
|
28
|
-
/**
|
|
29
|
-
* Transforms number or partial padding object to a defaultized padding object.
|
|
30
|
-
*/
|
|
31
|
-
const getStandardizedPadding = padding => {
|
|
32
|
-
if (typeof padding === 'number') {
|
|
33
|
-
return {
|
|
34
|
-
left: padding,
|
|
35
|
-
right: padding,
|
|
36
|
-
top: padding,
|
|
37
|
-
bottom: padding
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
return (0, _extends2.default)({
|
|
41
|
-
left: 0,
|
|
42
|
-
right: 0,
|
|
43
|
-
top: 0,
|
|
44
|
-
bottom: 0
|
|
45
|
-
}, padding);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Internal component to display an array of items as a legend.
|
|
50
|
-
* Used for series legend, and threshold color legend.
|
|
51
|
-
* @ignore - Do not document
|
|
52
|
-
*/
|
|
53
|
-
function LegendPerItem(props) {
|
|
54
|
-
const {
|
|
55
|
-
position,
|
|
56
|
-
direction,
|
|
57
|
-
itemsToDisplay,
|
|
58
|
-
classes,
|
|
59
|
-
itemMarkWidth = 20,
|
|
60
|
-
itemMarkHeight = 20,
|
|
61
|
-
markGap = 5,
|
|
62
|
-
itemGap = 10,
|
|
63
|
-
padding: paddingProps = 10,
|
|
64
|
-
labelStyle: inLabelStyle,
|
|
65
|
-
onItemClick
|
|
66
|
-
} = props;
|
|
67
|
-
const theme = (0, _styles.useTheme)();
|
|
68
|
-
const drawingArea = (0, _useDrawingArea.useDrawingArea)();
|
|
69
|
-
const labelStyle = React.useMemo(() => (0, _extends2.default)({}, theme.typography.subtitle1, {
|
|
70
|
-
color: 'inherit',
|
|
71
|
-
dominantBaseline: 'central',
|
|
72
|
-
textAnchor: 'start',
|
|
73
|
-
fill: (theme.vars || theme).palette.text.primary,
|
|
74
|
-
lineHeight: 1
|
|
75
|
-
}, inLabelStyle),
|
|
76
|
-
// To say to TS that the dominantBaseline and textAnchor are correct
|
|
77
|
-
[inLabelStyle, theme]);
|
|
78
|
-
const padding = React.useMemo(() => getStandardizedPadding(paddingProps), [paddingProps]);
|
|
79
|
-
const getItemSpace = React.useCallback((label, inStyle = {}) => {
|
|
80
|
-
const style = (0, _objectWithoutPropertiesLoose2.default)(inStyle, _excluded);
|
|
81
|
-
const linesSize = (0, _getWordsByLines.getWordsByLines)({
|
|
82
|
-
style,
|
|
83
|
-
needsComputation: true,
|
|
84
|
-
text: label
|
|
85
|
-
});
|
|
86
|
-
const innerSize = {
|
|
87
|
-
innerWidth: itemMarkWidth + markGap + Math.max(...linesSize.map(size => size.width)),
|
|
88
|
-
innerHeight: Math.max(itemMarkHeight, linesSize.length * linesSize[0].height)
|
|
89
|
-
};
|
|
90
|
-
return (0, _extends2.default)({}, innerSize, {
|
|
91
|
-
outerWidth: innerSize.innerWidth + itemGap,
|
|
92
|
-
outerHeight: innerSize.innerHeight + itemGap
|
|
93
|
-
});
|
|
94
|
-
}, [itemGap, itemMarkHeight, itemMarkWidth, markGap]);
|
|
95
|
-
const totalWidth = drawingArea.left + drawingArea.width + drawingArea.right;
|
|
96
|
-
const totalHeight = drawingArea.top + drawingArea.height + drawingArea.bottom;
|
|
97
|
-
const availableWidth = totalWidth - padding.left - padding.right;
|
|
98
|
-
const availableHeight = totalHeight - padding.top - padding.bottom;
|
|
99
|
-
const [itemsWithPosition, legendWidth, legendHeight] = React.useMemo(() => (0, _legendItemsPlacement.legendItemPlacements)(itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap), [itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap]);
|
|
100
|
-
const gapX = React.useMemo(() => {
|
|
101
|
-
switch (position.horizontal) {
|
|
102
|
-
case 'left':
|
|
103
|
-
return padding.left;
|
|
104
|
-
case 'right':
|
|
105
|
-
return totalWidth - padding.right - legendWidth;
|
|
106
|
-
default:
|
|
107
|
-
return (totalWidth - legendWidth) / 2;
|
|
108
|
-
}
|
|
109
|
-
}, [position.horizontal, padding.left, padding.right, totalWidth, legendWidth]);
|
|
110
|
-
const gapY = React.useMemo(() => {
|
|
111
|
-
switch (position.vertical) {
|
|
112
|
-
case 'top':
|
|
113
|
-
return padding.top;
|
|
114
|
-
case 'bottom':
|
|
115
|
-
return totalHeight - padding.bottom - legendHeight;
|
|
116
|
-
default:
|
|
117
|
-
return (totalHeight - legendHeight) / 2;
|
|
118
|
-
}
|
|
119
|
-
}, [position.vertical, padding.top, padding.bottom, totalHeight, legendHeight]);
|
|
120
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoSsr.default, {
|
|
121
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendRoot, {
|
|
122
|
-
className: classes?.root,
|
|
123
|
-
children: itemsWithPosition.map((item, i) => /*#__PURE__*/(0, _react.createElement)(_ChartsLegendItem.ChartsLegendItem, (0, _extends2.default)({}, item, {
|
|
124
|
-
key: item.id,
|
|
125
|
-
gapX: gapX,
|
|
126
|
-
gapY: gapY,
|
|
127
|
-
legendWidth: legendWidth,
|
|
128
|
-
itemMarkHeight: itemMarkHeight,
|
|
129
|
-
itemMarkWidth: itemMarkWidth,
|
|
130
|
-
markGap: markGap,
|
|
131
|
-
labelStyle: labelStyle,
|
|
132
|
-
classes: classes,
|
|
133
|
-
onClick: onItemClick ? event => onItemClick(event, i) : undefined
|
|
134
|
-
})))
|
|
135
|
-
})
|
|
136
|
-
});
|
|
137
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.legendItemPlacements = legendItemPlacements;
|
|
8
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
-
const _excluded = ["label"];
|
|
11
|
-
function legendItemPlacements(itemsToDisplay, getItemSpace, labelStyle, direction, availableWidth, availableHeight, itemGap) {
|
|
12
|
-
// Start at 0, 0. Will be modified later by padding and position.
|
|
13
|
-
let x = 0;
|
|
14
|
-
let y = 0;
|
|
15
|
-
|
|
16
|
-
// total values used to align legend later.
|
|
17
|
-
let totalWidthUsed = 0;
|
|
18
|
-
let totalHeightUsed = 0;
|
|
19
|
-
let rowIndex = 0;
|
|
20
|
-
const rowMaxHeight = [0];
|
|
21
|
-
const seriesWithRawPosition = itemsToDisplay.map(_ref => {
|
|
22
|
-
let {
|
|
23
|
-
label
|
|
24
|
-
} = _ref,
|
|
25
|
-
other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
26
|
-
const itemSpace = getItemSpace(label, labelStyle);
|
|
27
|
-
const rep = (0, _extends2.default)({}, other, {
|
|
28
|
-
label,
|
|
29
|
-
positionX: x,
|
|
30
|
-
positionY: y,
|
|
31
|
-
innerHeight: itemSpace.innerHeight,
|
|
32
|
-
innerWidth: itemSpace.innerWidth,
|
|
33
|
-
outerHeight: itemSpace.outerHeight,
|
|
34
|
-
outerWidth: itemSpace.outerWidth,
|
|
35
|
-
rowIndex
|
|
36
|
-
});
|
|
37
|
-
if (direction === 'row') {
|
|
38
|
-
if (x + itemSpace.innerWidth > availableWidth) {
|
|
39
|
-
// This legend item would create overflow along the x-axis, so we start a new row.
|
|
40
|
-
x = 0;
|
|
41
|
-
y += rowMaxHeight[rowIndex];
|
|
42
|
-
rowIndex += 1;
|
|
43
|
-
if (rowMaxHeight.length <= rowIndex) {
|
|
44
|
-
rowMaxHeight.push(0);
|
|
45
|
-
}
|
|
46
|
-
rep.positionX = x;
|
|
47
|
-
rep.positionY = y;
|
|
48
|
-
rep.rowIndex = rowIndex;
|
|
49
|
-
}
|
|
50
|
-
totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
|
|
51
|
-
totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
|
|
52
|
-
rowMaxHeight[rowIndex] = Math.max(rowMaxHeight[rowIndex], itemSpace.outerHeight);
|
|
53
|
-
x += itemSpace.outerWidth;
|
|
54
|
-
}
|
|
55
|
-
if (direction === 'column') {
|
|
56
|
-
if (y + itemSpace.innerHeight > availableHeight) {
|
|
57
|
-
// This legend item would create overflow along the y-axis, so we start a new column.
|
|
58
|
-
x = totalWidthUsed + itemGap;
|
|
59
|
-
y = 0;
|
|
60
|
-
rowIndex = 0;
|
|
61
|
-
rep.positionX = x;
|
|
62
|
-
rep.positionY = y;
|
|
63
|
-
rep.rowIndex = rowIndex;
|
|
64
|
-
}
|
|
65
|
-
if (rowMaxHeight.length <= rowIndex) {
|
|
66
|
-
rowMaxHeight.push(0);
|
|
67
|
-
}
|
|
68
|
-
totalWidthUsed = Math.max(totalWidthUsed, x + itemSpace.outerWidth);
|
|
69
|
-
totalHeightUsed = Math.max(totalHeightUsed, y + itemSpace.outerHeight);
|
|
70
|
-
rowIndex += 1;
|
|
71
|
-
y += itemSpace.outerHeight;
|
|
72
|
-
}
|
|
73
|
-
return rep;
|
|
74
|
-
});
|
|
75
|
-
return [seriesWithRawPosition.map(item => (0, _extends2.default)({}, item, {
|
|
76
|
-
positionY: item.positionY + (direction === 'row' ? rowMaxHeight[item.rowIndex] / 2 // Get the center of the entire row
|
|
77
|
-
: item.outerHeight / 2) // Get the center of the item
|
|
78
|
-
})), totalWidthUsed, totalHeightUsed];
|
|
79
|
-
}
|