@mui/x-charts 8.8.0 → 8.9.2
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 +3 -2
- package/BarChart/BarChart.js +95 -2
- package/BarChart/BarClipPath.d.ts +17 -12
- package/BarChart/BarClipPath.js +70 -57
- package/BarChart/BarPlot.js +4 -0
- package/BarChart/barClasses.d.ts +1 -1
- package/BarChart/seriesConfig/extremums.js +2 -3
- package/BarChart/seriesConfig/seriesProcessor.js +5 -3
- package/BarChart/useBarChartProps.d.ts +1 -1
- package/BarChart/useBarPlotData.js +32 -5
- package/CHANGELOG.md +225 -24
- package/ChartContainer/ChartContainer.js +141 -0
- package/ChartsLabel/ChartsLabelMark.d.ts +2 -1
- package/ChartsLabel/index.d.ts +1 -0
- package/ChartsLabel/index.js +18 -0
- package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
- package/ChartsLegend/piecewiseColorLegendClasses.d.ts +1 -1
- package/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.d.ts +13 -4
- package/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.js +33 -7
- package/LineChart/LineChart.d.ts +3 -2
- package/LineChart/LineChart.js +95 -2
- package/LineChart/seriesConfig/extremums.js +2 -3
- package/LineChart/useLineChartProps.d.ts +1 -1
- package/PieChart/PieArcLabelPlot.js +3 -0
- package/PieChart/PieArcPlot.js +3 -0
- package/PieChart/PieChart.d.ts +3 -2
- package/PieChart/PieChart.js +2 -2
- package/PieChart/pieClasses.d.ts +1 -1
- package/RadarChart/RadarAxisHighlight/RadarAxisHighlight.js +3 -5
- package/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.d.ts +2 -13
- package/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.js +8 -45
- package/RadarChart/RadarChart.d.ts +3 -2
- package/RadarChart/RadarChart.js +24 -3
- package/RadarChart/RadarDataProvider/RadarDataProvider.d.ts +3 -2
- package/RadarChart/RadarMetricLabels/useRadarMetricData.js +4 -2
- package/RadarChart/RadarSeriesPlot/RadarSeriesArea.js +19 -3
- package/RadarChart/RadarSeriesPlot/RadarSeriesMarks.js +20 -4
- package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.js +38 -4
- package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.types.d.ts +32 -3
- package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.d.ts +8 -0
- package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.js +38 -0
- package/RadarChart/RadarSeriesPlot/useRadarSeriesData.d.ts +2 -2
- package/RadarChart/index.d.ts +1 -1
- package/RadarChart/useRadarChartProps.d.ts +4 -1
- package/RadarChart/useRadarChartProps.js +15 -3
- package/ScatterChart/ScatterChart.d.ts +3 -2
- package/ScatterChart/ScatterChart.js +95 -2
- package/ScatterChart/seriesConfig/extremums.js +50 -23
- package/ScatterChart/useScatterChartProps.d.ts +1 -1
- package/SparkLineChart/SparkLineChart.js +93 -0
- package/esm/BarChart/BarChart.d.ts +3 -2
- package/esm/BarChart/BarChart.js +95 -2
- package/esm/BarChart/BarClipPath.d.ts +17 -12
- package/esm/BarChart/BarClipPath.js +69 -55
- package/esm/BarChart/BarPlot.js +4 -0
- package/esm/BarChart/barClasses.d.ts +1 -1
- package/esm/BarChart/seriesConfig/extremums.js +2 -3
- package/esm/BarChart/seriesConfig/seriesProcessor.js +5 -3
- package/esm/BarChart/useBarChartProps.d.ts +1 -1
- package/esm/BarChart/useBarPlotData.js +32 -5
- package/esm/ChartContainer/ChartContainer.js +141 -0
- package/esm/ChartsLabel/ChartsLabelMark.d.ts +2 -1
- package/esm/ChartsLabel/index.d.ts +1 -0
- package/esm/ChartsLabel/index.js +1 -0
- package/esm/ChartsLegend/chartsLegendClasses.d.ts +1 -1
- package/esm/ChartsLegend/piecewiseColorLegendClasses.d.ts +1 -1
- package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.d.ts +13 -4
- package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.js +31 -6
- package/esm/LineChart/LineChart.d.ts +3 -2
- package/esm/LineChart/LineChart.js +95 -2
- package/esm/LineChart/seriesConfig/extremums.js +2 -3
- package/esm/LineChart/useLineChartProps.d.ts +1 -1
- package/esm/PieChart/PieArcLabelPlot.js +3 -0
- package/esm/PieChart/PieArcPlot.js +3 -0
- package/esm/PieChart/PieChart.d.ts +3 -2
- package/esm/PieChart/PieChart.js +2 -2
- package/esm/PieChart/pieClasses.d.ts +1 -1
- package/esm/RadarChart/RadarAxisHighlight/RadarAxisHighlight.js +3 -5
- package/esm/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.d.ts +2 -13
- package/esm/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.js +8 -45
- package/esm/RadarChart/RadarChart.d.ts +3 -2
- package/esm/RadarChart/RadarChart.js +24 -3
- package/esm/RadarChart/RadarDataProvider/RadarDataProvider.d.ts +3 -2
- package/esm/RadarChart/RadarMetricLabels/useRadarMetricData.js +4 -2
- package/esm/RadarChart/RadarSeriesPlot/RadarSeriesArea.js +19 -3
- package/esm/RadarChart/RadarSeriesPlot/RadarSeriesMarks.js +20 -4
- package/esm/RadarChart/RadarSeriesPlot/RadarSeriesPlot.js +38 -4
- package/esm/RadarChart/RadarSeriesPlot/RadarSeriesPlot.types.d.ts +32 -3
- package/esm/RadarChart/RadarSeriesPlot/useRadarRotationIndex.d.ts +8 -0
- package/esm/RadarChart/RadarSeriesPlot/useRadarRotationIndex.js +32 -0
- package/esm/RadarChart/RadarSeriesPlot/useRadarSeriesData.d.ts +2 -2
- package/esm/RadarChart/index.d.ts +1 -1
- package/esm/RadarChart/useRadarChartProps.d.ts +4 -1
- package/esm/RadarChart/useRadarChartProps.js +15 -3
- package/esm/ScatterChart/ScatterChart.d.ts +3 -2
- package/esm/ScatterChart/ScatterChart.js +95 -2
- package/esm/ScatterChart/seriesConfig/extremums.js +50 -23
- package/esm/ScatterChart/useScatterChartProps.d.ts +1 -1
- package/esm/SparkLineChart/SparkLineChart.js +93 -0
- package/esm/hooks/useTicks.d.ts +6 -1
- package/esm/hooks/useTicks.js +94 -58
- package/esm/index.d.ts +2 -1
- package/esm/index.js +6 -2
- package/esm/internals/findMinMax.d.ts +1 -0
- package/esm/internals/findMinMax.js +13 -0
- package/esm/internals/getScale.js +3 -0
- package/esm/internals/index.d.ts +1 -1
- package/esm/internals/index.js +1 -1
- package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +4 -1
- package/esm/internals/plugins/featurePlugins/useChartHighlight/createIsFaded.d.ts +1 -1
- package/esm/internals/plugins/featurePlugins/useChartHighlight/createIsFaded.js +19 -11
- package/esm/internals/plugins/featurePlugins/useChartHighlight/createIsHighlighted.d.ts +1 -1
- package/esm/internals/plugins/featurePlugins/useChartHighlight/createIsHighlighted.js +19 -11
- package/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +10 -4
- package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js +4 -4
- package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +44 -1
- package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +8 -1
- package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.js +17 -12
- package/esm/internals/symlogScale.d.ts +2 -0
- package/esm/internals/symlogScale.js +94 -0
- package/esm/models/axis.d.ts +47 -5
- package/esm/models/axis.js +3 -0
- package/esm/models/seriesType/bar.d.ts +11 -1
- package/esm/models/seriesType/common.d.ts +9 -3
- package/esm/models/seriesType/line.d.ts +3 -1
- package/esm/models/seriesType/scatter.d.ts +4 -1
- package/esm/tests/web-components.js +49 -0
- package/hooks/useTicks.d.ts +6 -1
- package/hooks/useTicks.js +95 -58
- package/index.d.ts +2 -1
- package/index.js +13 -1
- package/internals/findMinMax.d.ts +1 -0
- package/internals/findMinMax.js +19 -0
- package/internals/getScale.js +3 -0
- package/internals/index.d.ts +1 -1
- package/internals/index.js +12 -12
- package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +3 -0
- package/internals/plugins/featurePlugins/useChartHighlight/createIsFaded.d.ts +1 -1
- package/internals/plugins/featurePlugins/useChartHighlight/createIsFaded.js +20 -13
- package/internals/plugins/featurePlugins/useChartHighlight/createIsHighlighted.d.ts +1 -1
- package/internals/plugins/featurePlugins/useChartHighlight/createIsHighlighted.js +20 -13
- package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +10 -4
- package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js +4 -4
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +44 -1
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +8 -1
- package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.js +17 -12
- package/internals/symlogScale.d.ts +2 -0
- package/internals/symlogScale.js +100 -0
- package/models/axis.d.ts +47 -5
- package/models/axis.js +4 -0
- package/models/seriesType/bar.d.ts +11 -1
- package/models/seriesType/common.d.ts +9 -3
- package/models/seriesType/line.d.ts +3 -1
- package/models/seriesType/scatter.d.ts +4 -1
- package/package.json +6 -7
- package/tests/web-components.js +55 -0
- package/BarChart/getRadius.d.ts +0 -20
- package/BarChart/getRadius.js +0 -37
- package/esm/BarChart/getRadius.d.ts +0 -20
- package/esm/BarChart/getRadius.js +0 -30
- /package/{esm/internals/components/ChartsWrapper → ChartsWrapper}/index.d.ts +0 -0
- /package/{internals/components/ChartsWrapper → ChartsWrapper}/index.js +0 -0
- /package/{internals/components → esm}/ChartsWrapper/index.d.ts +0 -0
- /package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/index.js +0 -0
|
@@ -16,7 +16,7 @@ var _useRadarSeriesData = require("./useRadarSeriesData");
|
|
|
16
16
|
var _useItemHighlightedGetter = require("../../hooks/useItemHighlightedGetter");
|
|
17
17
|
var _radarSeriesPlotClasses = require("./radarSeriesPlotClasses");
|
|
18
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
const _excluded = ["seriesId"];
|
|
19
|
+
const _excluded = ["seriesId", "onItemClick"];
|
|
20
20
|
function getCircleProps(params) {
|
|
21
21
|
const {
|
|
22
22
|
isHighlighted,
|
|
@@ -40,12 +40,14 @@ function getCircleProps(params) {
|
|
|
40
40
|
fill: color,
|
|
41
41
|
stroke: color,
|
|
42
42
|
opacity: fillArea && isItemFaded ? 0.5 : 1,
|
|
43
|
-
pointerEvents: 'none',
|
|
44
43
|
className: (0, _clsx.clsx)(classes.mark, isItemHighlighted && classes.highlighted || isItemFaded && classes.faded)
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
46
|
function RadarSeriesMarks(props) {
|
|
48
|
-
const
|
|
47
|
+
const {
|
|
48
|
+
onItemClick
|
|
49
|
+
} = props,
|
|
50
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
49
51
|
const seriesCoordinates = (0, _useRadarSeriesData.useRadarSeriesData)(props.seriesId);
|
|
50
52
|
const classes = (0, _radarSeriesPlotClasses.useUtilityClasses)(props.classes);
|
|
51
53
|
const {
|
|
@@ -72,7 +74,15 @@ function RadarSeriesMarks(props) {
|
|
|
72
74
|
isFaded,
|
|
73
75
|
isHighlighted,
|
|
74
76
|
classes
|
|
75
|
-
}),
|
|
77
|
+
}), {
|
|
78
|
+
pointerEvents: onItemClick ? undefined : 'none',
|
|
79
|
+
onClick: event => onItemClick?.(event, {
|
|
80
|
+
type: 'radar',
|
|
81
|
+
seriesId: id,
|
|
82
|
+
dataIndex: index
|
|
83
|
+
}),
|
|
84
|
+
cursor: onItemClick ? 'pointer' : 'unset'
|
|
85
|
+
}, other), index))
|
|
76
86
|
}, id);
|
|
77
87
|
})
|
|
78
88
|
});
|
|
@@ -86,6 +96,12 @@ process.env.NODE_ENV !== "production" ? RadarSeriesMarks.propTypes = {
|
|
|
86
96
|
* Override or extend the styles applied to the component.
|
|
87
97
|
*/
|
|
88
98
|
classes: _propTypes.default.object,
|
|
99
|
+
/**
|
|
100
|
+
* Callback fired when a mark is clicked.
|
|
101
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
102
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
103
|
+
*/
|
|
104
|
+
onItemClick: _propTypes.default.func,
|
|
89
105
|
/**
|
|
90
106
|
* The id of the series to display.
|
|
91
107
|
* If undefined all series are displayed.
|
|
@@ -15,15 +15,23 @@ var _useItemHighlightedGetter = require("../../hooks/useItemHighlightedGetter");
|
|
|
15
15
|
var _radarSeriesPlotClasses = require("./radarSeriesPlotClasses");
|
|
16
16
|
var _RadarSeriesArea = require("./RadarSeriesArea");
|
|
17
17
|
var _RadarSeriesMarks = require("./RadarSeriesMarks");
|
|
18
|
+
var _useRadarRotationIndex = require("./useRadarRotationIndex");
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
20
|
function RadarSeriesPlot(props) {
|
|
20
|
-
const
|
|
21
|
+
const {
|
|
22
|
+
seriesId: inSeriesId,
|
|
23
|
+
classes: inClasses,
|
|
24
|
+
onAreaClick,
|
|
25
|
+
onMarkClick
|
|
26
|
+
} = props;
|
|
27
|
+
const seriesCoordinates = (0, _useRadarSeriesData.useRadarSeriesData)(inSeriesId);
|
|
28
|
+
const getRotationIndex = (0, _useRadarRotationIndex.useRadarRotationIndex)();
|
|
21
29
|
const interactionProps = (0, _useInteractionItemProps.useInteractionAllItemProps)(seriesCoordinates);
|
|
22
30
|
const {
|
|
23
31
|
isFaded,
|
|
24
32
|
isHighlighted
|
|
25
33
|
} = (0, _useItemHighlightedGetter.useItemHighlightedGetter)();
|
|
26
|
-
const classes = (0, _radarSeriesPlotClasses.useUtilityClasses)(
|
|
34
|
+
const classes = (0, _radarSeriesPlotClasses.useUtilityClasses)(inClasses);
|
|
27
35
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
|
|
28
36
|
className: classes.root,
|
|
29
37
|
children: seriesCoordinates?.map(({
|
|
@@ -42,7 +50,14 @@ function RadarSeriesPlot(props) {
|
|
|
42
50
|
isFaded,
|
|
43
51
|
isHighlighted,
|
|
44
52
|
classes
|
|
45
|
-
}),
|
|
53
|
+
}), {
|
|
54
|
+
onClick: event => onAreaClick?.(event, {
|
|
55
|
+
type: 'radar',
|
|
56
|
+
seriesId,
|
|
57
|
+
dataIndex: getRotationIndex(event)
|
|
58
|
+
}),
|
|
59
|
+
cursor: onAreaClick ? 'pointer' : 'unset'
|
|
60
|
+
}, interactionProps[seriesIndex]), seriesId), !hideMark && points.map((point, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("circle", (0, _extends2.default)({}, (0, _RadarSeriesMarks.getCircleProps)({
|
|
46
61
|
seriesId,
|
|
47
62
|
point,
|
|
48
63
|
color,
|
|
@@ -50,7 +65,14 @@ function RadarSeriesPlot(props) {
|
|
|
50
65
|
isFaded,
|
|
51
66
|
isHighlighted,
|
|
52
67
|
classes
|
|
53
|
-
})
|
|
68
|
+
}), {
|
|
69
|
+
onClick: event => onMarkClick?.(event, {
|
|
70
|
+
type: 'radar',
|
|
71
|
+
seriesId,
|
|
72
|
+
dataIndex: index
|
|
73
|
+
}),
|
|
74
|
+
cursor: onMarkClick ? 'pointer' : 'unset'
|
|
75
|
+
}), index))]
|
|
54
76
|
}, seriesId);
|
|
55
77
|
})
|
|
56
78
|
});
|
|
@@ -64,6 +86,18 @@ process.env.NODE_ENV !== "production" ? RadarSeriesPlot.propTypes = {
|
|
|
64
86
|
* Override or extend the styles applied to the component.
|
|
65
87
|
*/
|
|
66
88
|
classes: _propTypes.default.object,
|
|
89
|
+
/**
|
|
90
|
+
* Callback fired when an area is clicked.
|
|
91
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
92
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
93
|
+
*/
|
|
94
|
+
onAreaClick: _propTypes.default.func,
|
|
95
|
+
/**
|
|
96
|
+
* Callback fired when a mark is clicked.
|
|
97
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
98
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
99
|
+
*/
|
|
100
|
+
onMarkClick: _propTypes.default.func,
|
|
67
101
|
/**
|
|
68
102
|
* The id of the series to display.
|
|
69
103
|
* If undefined all series are displayed.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { RadarSeriesPlotClasses } from "./radarSeriesPlotClasses.js";
|
|
3
|
+
import { RadarItemIdentifier } from "../../models/seriesType/radar.js";
|
|
3
4
|
interface CommonRadarSeriesPlotProps {
|
|
4
5
|
/**
|
|
5
6
|
* The id of the series to display.
|
|
@@ -11,7 +12,35 @@ interface CommonRadarSeriesPlotProps {
|
|
|
11
12
|
*/
|
|
12
13
|
classes?: Partial<RadarSeriesPlotClasses>;
|
|
13
14
|
}
|
|
14
|
-
export interface RadarSeriesPlotProps extends CommonRadarSeriesPlotProps {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export interface RadarSeriesPlotProps extends CommonRadarSeriesPlotProps {
|
|
16
|
+
/**
|
|
17
|
+
* Callback fired when an area is clicked.
|
|
18
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
19
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
20
|
+
*/
|
|
21
|
+
onAreaClick?: RadarSeriesAreaProps['onItemClick'];
|
|
22
|
+
/**
|
|
23
|
+
* Callback fired when a mark is clicked.
|
|
24
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
25
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
26
|
+
*/
|
|
27
|
+
onMarkClick?: RadarSeriesMarksProps['onItemClick'];
|
|
28
|
+
}
|
|
29
|
+
type RadarClickIdentifier = Required<RadarItemIdentifier>;
|
|
30
|
+
export interface RadarSeriesMarksProps extends CommonRadarSeriesPlotProps, React.SVGAttributes<SVGCircleElement> {
|
|
31
|
+
/**
|
|
32
|
+
* Callback fired when a mark is clicked.
|
|
33
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
34
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
35
|
+
*/
|
|
36
|
+
onItemClick?: (event: React.MouseEvent<SVGElement, MouseEvent>, radarItemIdentifier: RadarClickIdentifier) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface RadarSeriesAreaProps extends CommonRadarSeriesPlotProps, React.SVGAttributes<SVGPathElement> {
|
|
39
|
+
/**
|
|
40
|
+
* Callback fired when an area is clicked.
|
|
41
|
+
* @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
|
|
42
|
+
* @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
|
|
43
|
+
*/
|
|
44
|
+
onItemClick?: (event: React.MouseEvent<SVGElement, MouseEvent>, radarItemIdentifier: RadarClickIdentifier) => void;
|
|
45
|
+
}
|
|
17
46
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This hook provides a function that from pointer event returns the rotation index.
|
|
3
|
+
* @return {(event: { clientX: number; clientY: number }) => number | null} rotationIndexGetter Returns the rotation data index.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useRadarRotationIndex(): (event: {
|
|
6
|
+
clientX: number;
|
|
7
|
+
clientY: number;
|
|
8
|
+
}) => number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useRadarRotationIndex = useRadarRotationIndex;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _useChartPolarAxis = require("../../internals/plugins/featurePlugins/useChartPolarAxis");
|
|
10
|
+
var _getSVGPoint = require("../../internals/getSVGPoint");
|
|
11
|
+
var _coordinateTransformation = require("../../internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation");
|
|
12
|
+
var _useSelector = require("../../internals/store/useSelector");
|
|
13
|
+
var _getAxisIndex = require("../../internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex");
|
|
14
|
+
var _useStore = require("../../internals/store/useStore");
|
|
15
|
+
var _useSvgRef = require("../../hooks/useSvgRef");
|
|
16
|
+
var _useAxis = require("../../hooks/useAxis");
|
|
17
|
+
/**
|
|
18
|
+
* This hook provides a function that from pointer event returns the rotation index.
|
|
19
|
+
* @return {(event: { clientX: number; clientY: number }) => number | null} rotationIndexGetter Returns the rotation data index.
|
|
20
|
+
*/
|
|
21
|
+
function useRadarRotationIndex() {
|
|
22
|
+
const svgRef = (0, _useSvgRef.useSvgRef)();
|
|
23
|
+
const store = (0, _useStore.useStore)();
|
|
24
|
+
const rotationAxis = (0, _useAxis.useRotationAxis)();
|
|
25
|
+
const center = (0, _useSelector.useSelector)(store, _useChartPolarAxis.selectorChartPolarCenter);
|
|
26
|
+
const rotationIndexGetter = React.useCallback(function rotationIndexGetter(event) {
|
|
27
|
+
const element = svgRef.current;
|
|
28
|
+
if (!element || !rotationAxis) {
|
|
29
|
+
// Should never append
|
|
30
|
+
throw new Error(`MUI X Charts: The ${!element ? 'SVG' : 'rotation axis'} was not found to compute radar dataIndex.`);
|
|
31
|
+
}
|
|
32
|
+
const svgPoint = (0, _getSVGPoint.getSVGPoint)(element, event);
|
|
33
|
+
const rotation = (0, _coordinateTransformation.generateSvg2rotation)(center)(svgPoint.x, svgPoint.y);
|
|
34
|
+
const rotationIndex = (0, _getAxisIndex.getAxisIndex)(rotationAxis, rotation);
|
|
35
|
+
return rotationIndex;
|
|
36
|
+
}, [center, rotationAxis, svgRef]);
|
|
37
|
+
return rotationIndexGetter;
|
|
38
|
+
}
|
|
@@ -17,8 +17,8 @@ export declare function useRadarSeriesData(querySeriesId?: SeriesId): {
|
|
|
17
17
|
}[];
|
|
18
18
|
type: "radar";
|
|
19
19
|
label?: string | ((location: "tooltip" | "legend") => string) | undefined;
|
|
20
|
-
highlightScope?:
|
|
21
|
-
labelMarkType?:
|
|
20
|
+
highlightScope?: import("../../index.js").HighlightScope | undefined;
|
|
21
|
+
labelMarkType?: import("../../internals/index.js").ChartsLabelMarkType | undefined;
|
|
22
22
|
hideMark?: boolean | undefined;
|
|
23
23
|
fillArea?: boolean | undefined;
|
|
24
24
|
data: number[];
|
package/RadarChart/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { RadarChart } from "./RadarChart.js";
|
|
|
3
3
|
export { RadarDataProvider as Unstable_RadarDataProvider } from "./RadarDataProvider/index.js";
|
|
4
4
|
export { RadarDataProvider } from "./RadarDataProvider/index.js";
|
|
5
5
|
export type { RadarChartProps, RadarChartSlots, RadarChartSlotProps } from "./RadarChart.js";
|
|
6
|
-
export type { RadarDataProviderProps } from "./RadarDataProvider/index.js";
|
|
6
|
+
export type { RadarDataProviderProps, RadarSeries } from "./RadarDataProvider/index.js";
|
|
7
7
|
export * from "./RadarGrid/index.js";
|
|
8
8
|
export * from "./RadarAxisHighlight/index.js";
|
|
9
9
|
export * from "./RadarMetricLabels/index.js";
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { RadarChartProps } from "./RadarChart.js";
|
|
2
2
|
import { ChartsOverlayProps } from "../ChartsOverlay/index.js";
|
|
3
3
|
import { ChartsLegendSlotExtension } from "../ChartsLegend/index.js";
|
|
4
|
-
import type { ChartsWrapperProps } from "../
|
|
4
|
+
import type { ChartsWrapperProps } from "../ChartsWrapper/index.js";
|
|
5
5
|
import { RadarDataProviderProps } from "./RadarDataProvider/RadarDataProvider.js";
|
|
6
6
|
import { ChartsSurfaceProps } from "../ChartsSurface/index.js";
|
|
7
7
|
import { RadarGridProps } from "./RadarGrid/index.js";
|
|
8
8
|
import { RadarChartPluginsSignatures } from "./RadarChart.plugins.js";
|
|
9
|
+
import { RadarSeriesAreaProps, RadarSeriesMarksProps } from "./RadarSeriesPlot/index.js";
|
|
9
10
|
/**
|
|
10
11
|
* A helper function that extracts RadarChartProps from the input props
|
|
11
12
|
* and returns an object with props for the children components of RadarChart.
|
|
@@ -19,6 +20,8 @@ export declare const useRadarChartProps: (props: RadarChartProps) => {
|
|
|
19
20
|
chartsSurfaceProps: ChartsSurfaceProps;
|
|
20
21
|
radarDataProviderProps: RadarDataProviderProps<RadarChartPluginsSignatures>;
|
|
21
22
|
radarGrid: RadarGridProps;
|
|
23
|
+
radarSeriesAreaProps: RadarSeriesAreaProps;
|
|
24
|
+
radarSeriesMarksProps: RadarSeriesMarksProps;
|
|
22
25
|
overlayProps: ChartsOverlayProps;
|
|
23
26
|
legendProps: ChartsLegendSlotExtension;
|
|
24
27
|
children: import("react").ReactNode;
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.useRadarChartProps = void 0;
|
|
9
9
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
-
const _excluded = ["apiRef", "series", "radar", "width", "height", "margin", "colors", "sx", "children", "slots", "slotProps", "skipAnimation", "loading", "highlightedItem", "onHighlightChange", "hideLegend", "divisions", "shape", "stripeColor", "highlight", "showToolbar"];
|
|
10
|
+
const _excluded = ["apiRef", "series", "radar", "width", "height", "margin", "colors", "sx", "children", "slots", "slotProps", "skipAnimation", "loading", "highlightedItem", "onHighlightChange", "hideLegend", "divisions", "shape", "stripeColor", "highlight", "showToolbar", "onAxisClick", "onAreaClick", "onMarkClick"];
|
|
11
11
|
/**
|
|
12
12
|
* A helper function that extracts RadarChartProps from the input props
|
|
13
13
|
* and returns an object with props for the children components of RadarChart.
|
|
@@ -35,7 +35,10 @@ const useRadarChartProps = props => {
|
|
|
35
35
|
divisions,
|
|
36
36
|
shape,
|
|
37
37
|
stripeColor,
|
|
38
|
-
highlight = 'axis'
|
|
38
|
+
highlight = 'axis',
|
|
39
|
+
onAxisClick,
|
|
40
|
+
onAreaClick,
|
|
41
|
+
onMarkClick
|
|
39
42
|
} = props,
|
|
40
43
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
41
44
|
const radarDataProviderProps = {
|
|
@@ -49,7 +52,8 @@ const useRadarChartProps = props => {
|
|
|
49
52
|
colors,
|
|
50
53
|
highlightedItem,
|
|
51
54
|
onHighlightChange,
|
|
52
|
-
skipAnimation
|
|
55
|
+
skipAnimation,
|
|
56
|
+
onAxisClick
|
|
53
57
|
};
|
|
54
58
|
const overlayProps = {
|
|
55
59
|
slots,
|
|
@@ -68,6 +72,12 @@ const useRadarChartProps = props => {
|
|
|
68
72
|
shape,
|
|
69
73
|
stripeColor
|
|
70
74
|
};
|
|
75
|
+
const radarSeriesAreaProps = {
|
|
76
|
+
onItemClick: onAreaClick
|
|
77
|
+
};
|
|
78
|
+
const radarSeriesMarksProps = {
|
|
79
|
+
onItemClick: onMarkClick
|
|
80
|
+
};
|
|
71
81
|
const chartsSurfaceProps = other;
|
|
72
82
|
return {
|
|
73
83
|
highlight,
|
|
@@ -75,6 +85,8 @@ const useRadarChartProps = props => {
|
|
|
75
85
|
chartsSurfaceProps,
|
|
76
86
|
radarDataProviderProps,
|
|
77
87
|
radarGrid,
|
|
88
|
+
radarSeriesAreaProps,
|
|
89
|
+
radarSeriesMarksProps,
|
|
78
90
|
overlayProps,
|
|
79
91
|
legendProps,
|
|
80
92
|
children
|
|
@@ -16,12 +16,13 @@ import { UseChartVoronoiSignature } from "../internals/plugins/featurePlugins/us
|
|
|
16
16
|
import { ScatterChartPluginsSignatures } from "./ScatterChart.plugins.js";
|
|
17
17
|
export interface ScatterChartSlots extends ChartsAxisSlots, ScatterPlotSlots, ChartsLegendSlots, ChartsOverlaySlots, ChartsTooltipSlots, ChartsToolbarSlots, Partial<ChartsSlots> {}
|
|
18
18
|
export interface ScatterChartSlotProps extends ChartsAxisSlotProps, ScatterPlotSlotProps, ChartsLegendSlotProps, ChartsOverlaySlotProps, ChartsTooltipSlotProps, ChartsToolbarSlotProps, Partial<ChartsSlotProps> {}
|
|
19
|
+
export type ScatterSeries = MakeOptional<ScatterSeriesType, 'type'>;
|
|
19
20
|
export interface ScatterChartProps extends Omit<ChartContainerProps<'scatter', ScatterChartPluginsSignatures>, 'series' | 'plugins' | 'onItemClick' | 'experimentalFeatures' | 'highlightedAxis' | 'onHighlightedAxisChange'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'> {
|
|
20
21
|
/**
|
|
21
22
|
* The series to display in the scatter chart.
|
|
22
|
-
* An array of [[
|
|
23
|
+
* An array of [[ScatterSeries]] objects.
|
|
23
24
|
*/
|
|
24
|
-
series: Readonly<
|
|
25
|
+
series: Readonly<ScatterSeries[]>;
|
|
25
26
|
/**
|
|
26
27
|
* The configuration of axes highlight.
|
|
27
28
|
* @see See {@link https://mui.com/x/react-charts/highlighting/ highlighting docs} for more details.
|
|
@@ -22,7 +22,7 @@ var _useScatterChartProps = require("./useScatterChartProps");
|
|
|
22
22
|
var _useChartContainerProps = require("../ChartContainer/useChartContainerProps");
|
|
23
23
|
var _ChartDataProvider = require("../ChartDataProvider");
|
|
24
24
|
var _ChartsSurface = require("../ChartsSurface");
|
|
25
|
-
var _ChartsWrapper = require("../
|
|
25
|
+
var _ChartsWrapper = require("../ChartsWrapper");
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
27
|
/**
|
|
28
28
|
* Demos:
|
|
@@ -180,7 +180,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
180
180
|
onItemClick: _propTypes.default.func,
|
|
181
181
|
/**
|
|
182
182
|
* The series to display in the scatter chart.
|
|
183
|
-
* An array of [[
|
|
183
|
+
* An array of [[ScatterSeries]] objects.
|
|
184
184
|
*/
|
|
185
185
|
series: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
|
|
186
186
|
/**
|
|
@@ -370,6 +370,53 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
370
370
|
tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
371
371
|
tickSize: _propTypes.default.number,
|
|
372
372
|
valueFormatter: _propTypes.default.func
|
|
373
|
+
}), _propTypes.default.shape({
|
|
374
|
+
axis: _propTypes.default.oneOf(['x']),
|
|
375
|
+
classes: _propTypes.default.object,
|
|
376
|
+
colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
377
|
+
color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
|
|
378
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
379
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
380
|
+
type: _propTypes.default.oneOf(['continuous']).isRequired
|
|
381
|
+
}), _propTypes.default.shape({
|
|
382
|
+
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
383
|
+
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
384
|
+
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
385
|
+
})]),
|
|
386
|
+
constant: _propTypes.default.number,
|
|
387
|
+
data: _propTypes.default.array,
|
|
388
|
+
dataKey: _propTypes.default.string,
|
|
389
|
+
disableLine: _propTypes.default.bool,
|
|
390
|
+
disableTicks: _propTypes.default.bool,
|
|
391
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
392
|
+
fill: _propTypes.default.string,
|
|
393
|
+
height: _propTypes.default.number,
|
|
394
|
+
hideTooltip: _propTypes.default.bool,
|
|
395
|
+
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
396
|
+
ignoreTooltip: _propTypes.default.bool,
|
|
397
|
+
label: _propTypes.default.string,
|
|
398
|
+
labelStyle: _propTypes.default.object,
|
|
399
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
400
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
401
|
+
offset: _propTypes.default.number,
|
|
402
|
+
position: _propTypes.default.oneOf(['bottom', 'none', 'top']),
|
|
403
|
+
reverse: _propTypes.default.bool,
|
|
404
|
+
scaleType: _propTypes.default.oneOf(['symlog']),
|
|
405
|
+
slotProps: _propTypes.default.object,
|
|
406
|
+
slots: _propTypes.default.object,
|
|
407
|
+
stroke: _propTypes.default.string,
|
|
408
|
+
sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
|
|
409
|
+
tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
|
|
410
|
+
tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
|
|
411
|
+
tickLabelMinGap: _propTypes.default.number,
|
|
412
|
+
tickLabelPlacement: _propTypes.default.oneOf(['middle', 'tick']),
|
|
413
|
+
tickLabelStyle: _propTypes.default.object,
|
|
414
|
+
tickMaxStep: _propTypes.default.number,
|
|
415
|
+
tickMinStep: _propTypes.default.number,
|
|
416
|
+
tickNumber: _propTypes.default.number,
|
|
417
|
+
tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
418
|
+
tickSize: _propTypes.default.number,
|
|
419
|
+
valueFormatter: _propTypes.default.func
|
|
373
420
|
}), _propTypes.default.shape({
|
|
374
421
|
axis: _propTypes.default.oneOf(['x']),
|
|
375
422
|
classes: _propTypes.default.object,
|
|
@@ -753,6 +800,52 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
753
800
|
tickSize: _propTypes.default.number,
|
|
754
801
|
valueFormatter: _propTypes.default.func,
|
|
755
802
|
width: _propTypes.default.number
|
|
803
|
+
}), _propTypes.default.shape({
|
|
804
|
+
axis: _propTypes.default.oneOf(['y']),
|
|
805
|
+
classes: _propTypes.default.object,
|
|
806
|
+
colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
807
|
+
color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
|
|
808
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
809
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
810
|
+
type: _propTypes.default.oneOf(['continuous']).isRequired
|
|
811
|
+
}), _propTypes.default.shape({
|
|
812
|
+
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
813
|
+
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
814
|
+
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
815
|
+
})]),
|
|
816
|
+
constant: _propTypes.default.number,
|
|
817
|
+
data: _propTypes.default.array,
|
|
818
|
+
dataKey: _propTypes.default.string,
|
|
819
|
+
disableLine: _propTypes.default.bool,
|
|
820
|
+
disableTicks: _propTypes.default.bool,
|
|
821
|
+
domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
|
|
822
|
+
fill: _propTypes.default.string,
|
|
823
|
+
hideTooltip: _propTypes.default.bool,
|
|
824
|
+
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
825
|
+
ignoreTooltip: _propTypes.default.bool,
|
|
826
|
+
label: _propTypes.default.string,
|
|
827
|
+
labelStyle: _propTypes.default.object,
|
|
828
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
829
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
830
|
+
offset: _propTypes.default.number,
|
|
831
|
+
position: _propTypes.default.oneOf(['left', 'none', 'right']),
|
|
832
|
+
reverse: _propTypes.default.bool,
|
|
833
|
+
scaleType: _propTypes.default.oneOf(['symlog']),
|
|
834
|
+
slotProps: _propTypes.default.object,
|
|
835
|
+
slots: _propTypes.default.object,
|
|
836
|
+
stroke: _propTypes.default.string,
|
|
837
|
+
sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
|
|
838
|
+
tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
|
|
839
|
+
tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
|
|
840
|
+
tickLabelPlacement: _propTypes.default.oneOf(['middle', 'tick']),
|
|
841
|
+
tickLabelStyle: _propTypes.default.object,
|
|
842
|
+
tickMaxStep: _propTypes.default.number,
|
|
843
|
+
tickMinStep: _propTypes.default.number,
|
|
844
|
+
tickNumber: _propTypes.default.number,
|
|
845
|
+
tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
846
|
+
tickSize: _propTypes.default.number,
|
|
847
|
+
valueFormatter: _propTypes.default.func,
|
|
848
|
+
width: _propTypes.default.number
|
|
756
849
|
}), _propTypes.default.shape({
|
|
757
850
|
axis: _propTypes.default.oneOf(['y']),
|
|
758
851
|
classes: _propTypes.default.object,
|
|
@@ -4,9 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getExtremumY = exports.getExtremumX = void 0;
|
|
7
|
-
const mergeMinMax = (acc, val) => {
|
|
8
|
-
return [val[0] === null ? acc[0] : Math.min(acc[0], val[0]), val[1] === null ? acc[1] : Math.max(acc[1], val[1])];
|
|
9
|
-
};
|
|
10
7
|
const getExtremumX = params => {
|
|
11
8
|
const {
|
|
12
9
|
series,
|
|
@@ -14,24 +11,39 @@ const getExtremumX = params => {
|
|
|
14
11
|
isDefaultAxis,
|
|
15
12
|
getFilters
|
|
16
13
|
} = params;
|
|
17
|
-
|
|
14
|
+
let min = Infinity;
|
|
15
|
+
let max = -Infinity;
|
|
16
|
+
for (const seriesId in series) {
|
|
17
|
+
if (!Object.hasOwn(series, seriesId)) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
18
20
|
const axisId = series[seriesId].xAxisId;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
21
24
|
const filter = getFilters?.({
|
|
22
25
|
currentAxisId: axis.id,
|
|
23
26
|
isDefaultAxis,
|
|
24
27
|
seriesXAxisId: series[seriesId].xAxisId,
|
|
25
28
|
seriesYAxisId: series[seriesId].yAxisId
|
|
26
29
|
});
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const seriesData = series[seriesId].data ?? [];
|
|
31
|
+
for (let i = 0; i < seriesData.length; i += 1) {
|
|
32
|
+
const d = seriesData[i];
|
|
33
|
+
if (filter && !filter(d, i)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (d.x !== null) {
|
|
37
|
+
if (d.x < min) {
|
|
38
|
+
min = d.x;
|
|
39
|
+
}
|
|
40
|
+
if (d.x > max) {
|
|
41
|
+
max = d.x;
|
|
42
|
+
}
|
|
30
43
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}, [Infinity, -Infinity]);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return [min, max];
|
|
35
47
|
};
|
|
36
48
|
exports.getExtremumX = getExtremumX;
|
|
37
49
|
const getExtremumY = params => {
|
|
@@ -41,23 +53,38 @@ const getExtremumY = params => {
|
|
|
41
53
|
isDefaultAxis,
|
|
42
54
|
getFilters
|
|
43
55
|
} = params;
|
|
44
|
-
|
|
56
|
+
let min = Infinity;
|
|
57
|
+
let max = -Infinity;
|
|
58
|
+
for (const seriesId in series) {
|
|
59
|
+
if (!Object.hasOwn(series, seriesId)) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
45
62
|
const axisId = series[seriesId].yAxisId;
|
|
46
|
-
|
|
47
|
-
|
|
63
|
+
if (!(axisId === axis.id || axisId === undefined && isDefaultAxis)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
48
66
|
const filter = getFilters?.({
|
|
49
67
|
currentAxisId: axis.id,
|
|
50
68
|
isDefaultAxis,
|
|
51
69
|
seriesXAxisId: series[seriesId].xAxisId,
|
|
52
70
|
seriesYAxisId: series[seriesId].yAxisId
|
|
53
71
|
});
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
72
|
+
const seriesData = series[seriesId].data ?? [];
|
|
73
|
+
for (let i = 0; i < seriesData.length; i += 1) {
|
|
74
|
+
const d = seriesData[i];
|
|
75
|
+
if (filter && !filter(d, i)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (d.y !== null) {
|
|
79
|
+
if (d.y < min) {
|
|
80
|
+
min = d.y;
|
|
81
|
+
}
|
|
82
|
+
if (d.y > max) {
|
|
83
|
+
max = d.y;
|
|
84
|
+
}
|
|
57
85
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}, [Infinity, -Infinity]);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return [min, max];
|
|
62
89
|
};
|
|
63
90
|
exports.getExtremumY = getExtremumY;
|
|
@@ -7,7 +7,7 @@ import { ChartsOverlayProps } from "../ChartsOverlay/index.js";
|
|
|
7
7
|
import { ChartContainerProps } from "../ChartContainer/index.js";
|
|
8
8
|
import type { ScatterChartProps } from "./ScatterChart.js";
|
|
9
9
|
import type { ScatterPlotProps } from "./ScatterPlot.js";
|
|
10
|
-
import type { ChartsWrapperProps } from "../
|
|
10
|
+
import type { ChartsWrapperProps } from "../ChartsWrapper/index.js";
|
|
11
11
|
import { ScatterChartPluginsSignatures } from "./ScatterChart.plugins.js";
|
|
12
12
|
/**
|
|
13
13
|
* A helper function that extracts ScatterChartProps from the input props
|