@mui/x-charts 7.6.0 → 7.6.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 +1 -1
- package/BarChart/BarChart.js +2 -2
- package/BarChart/BarPlot.js +2 -2
- package/BarChart/formatter.js +2 -2
- package/BarChart/getColor.d.ts +1 -1
- package/BarChart/getColor.js +4 -4
- package/BarChart/plugin.d.ts +2 -0
- package/BarChart/plugin.js +17 -0
- package/CHANGELOG.md +91 -0
- package/ChartContainer/ChartContainer.d.ts +14 -2
- package/ChartContainer/ChartContainer.js +13 -2
- package/ChartContainer/defaultPlugins.d.ts +2 -0
- package/ChartContainer/defaultPlugins.js +11 -0
- package/ChartContainer/usePluginsMerge.d.ts +10 -0
- package/ChartContainer/usePluginsMerge.js +39 -0
- package/ChartsLegend/ChartsLegend.js +2 -2
- package/ChartsLegend/utils.js +4 -1
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
- package/ChartsTooltip/ChartsAxisTooltipContent.js +4 -4
- package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
- package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +2 -1
- package/ChartsTooltip/utils.d.ts +1 -7
- package/ChartsTooltip/utils.js +2 -10
- package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
- package/ChartsXAxis/ChartsXAxis.js +17 -19
- package/ChartsYAxis/ChartsYAxis.js +17 -19
- package/LineChart/AreaPlot.js +2 -2
- package/LineChart/LineChart.d.ts +1 -1
- package/LineChart/LineChart.js +2 -2
- package/LineChart/LineHighlightPlot.js +2 -2
- package/LineChart/LinePlot.js +2 -2
- package/LineChart/MarkPlot.js +2 -2
- package/LineChart/formatter.js +2 -2
- package/LineChart/getColor.d.ts +1 -1
- package/LineChart/getColor.js +2 -2
- package/LineChart/plugin.d.ts +2 -0
- package/LineChart/plugin.js +17 -0
- package/PieChart/PieChart.d.ts +1 -1
- package/PieChart/PieChart.js +2 -2
- package/PieChart/PiePlot.js +2 -2
- package/PieChart/plugin.d.ts +2 -0
- package/PieChart/plugin.js +14 -0
- package/ResponsiveChartContainer/ResponsiveChartContainer.js +7 -2
- package/ScatterChart/ScatterChart.d.ts +1 -1
- package/ScatterChart/ScatterChart.js +2 -2
- package/ScatterChart/ScatterPlot.js +2 -2
- package/ScatterChart/formatter.js +2 -3
- package/ScatterChart/getColor.d.ts +1 -1
- package/ScatterChart/getColor.js +2 -2
- package/ScatterChart/plugin.d.ts +2 -0
- package/ScatterChart/plugin.js +17 -0
- package/SparkLineChart/SparkLineChart.d.ts +3 -3
- package/SparkLineChart/SparkLineChart.js +1 -1
- package/context/CartesianContextProvider.d.ts +13 -10
- package/context/CartesianContextProvider.js +2 -2
- package/context/DrawingProvider.d.ts +3 -1
- package/context/DrawingProvider.js +9 -2
- package/context/HighlightedProvider/HighlightedContext.d.ts +2 -1
- package/context/HighlightedProvider/HighlightedContext.js +8 -5
- package/context/HighlightedProvider/HighlightedProvider.js +15 -12
- package/context/HighlightedProvider/useHighlighted.js +6 -3
- package/context/HighlightedProvider/useItemHighlighted.js +2 -8
- package/context/SeriesContextProvider.d.ts +16 -5
- package/context/SeriesContextProvider.js +14 -17
- package/context/context.types.d.ts +4 -0
- package/context/context.types.js +5 -0
- package/esm/BarChart/BarChart.js +2 -2
- package/esm/BarChart/BarPlot.js +2 -2
- package/esm/BarChart/formatter.js +1 -1
- package/esm/BarChart/getColor.js +4 -4
- package/esm/BarChart/plugin.js +10 -0
- package/esm/ChartContainer/ChartContainer.js +13 -2
- package/esm/ChartContainer/defaultPlugins.js +5 -0
- package/esm/ChartContainer/usePluginsMerge.js +31 -0
- package/esm/ChartsLegend/ChartsLegend.js +2 -2
- package/esm/ChartsLegend/utils.js +4 -1
- package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +3 -3
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
- package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +2 -1
- package/esm/ChartsTooltip/utils.js +2 -8
- package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
- package/esm/ChartsXAxis/ChartsXAxis.js +17 -19
- package/esm/ChartsYAxis/ChartsYAxis.js +17 -19
- package/esm/LineChart/AreaPlot.js +2 -2
- package/esm/LineChart/LineChart.js +2 -2
- package/esm/LineChart/LineHighlightPlot.js +2 -2
- package/esm/LineChart/LinePlot.js +2 -2
- package/esm/LineChart/MarkPlot.js +2 -2
- package/esm/LineChart/formatter.js +1 -1
- package/esm/LineChart/getColor.js +2 -2
- package/esm/LineChart/plugin.js +10 -0
- package/esm/PieChart/PieChart.js +2 -2
- package/esm/PieChart/PiePlot.js +2 -2
- package/esm/PieChart/plugin.js +7 -0
- package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +7 -2
- package/esm/ScatterChart/ScatterChart.js +2 -2
- package/esm/ScatterChart/ScatterPlot.js +2 -2
- package/esm/ScatterChart/formatter.js +1 -1
- package/esm/ScatterChart/getColor.js +2 -2
- package/esm/ScatterChart/plugin.js +10 -0
- package/esm/SparkLineChart/SparkLineChart.js +1 -1
- package/esm/context/CartesianContextProvider.js +2 -2
- package/esm/context/DrawingProvider.js +9 -2
- package/esm/context/HighlightedProvider/HighlightedContext.js +8 -5
- package/esm/context/HighlightedProvider/HighlightedProvider.js +15 -12
- package/esm/context/HighlightedProvider/useHighlighted.js +6 -3
- package/esm/context/HighlightedProvider/useItemHighlighted.js +2 -6
- package/esm/context/SeriesContextProvider.js +14 -17
- package/esm/context/context.types.js +1 -0
- package/esm/hooks/useInteractionItemProps.js +2 -2
- package/esm/hooks/useSeries.js +6 -3
- package/esm/hooks/useSvgRef.js +6 -3
- package/esm/internals/configInit.js +20 -0
- package/esm/internals/defaultizeValueFormatter.js +2 -3
- package/esm/internals/index.js +1 -0
- package/esm/internals/isCartesian.js +7 -0
- package/esm/models/index.js +1 -0
- package/esm/models/plugin.js +1 -0
- package/esm/models/seriesType/index.js +6 -0
- package/hooks/useInteractionItemProps.js +1 -1
- package/hooks/useSeries.d.ts +6 -11
- package/hooks/useSeries.js +6 -3
- package/hooks/useSvgRef.js +6 -3
- package/hooks/useTicks.d.ts +4 -2
- package/index.js +1 -1
- package/internals/configInit.d.ts +9 -0
- package/internals/configInit.js +26 -0
- package/internals/defaultizeValueFormatter.d.ts +1 -2
- package/internals/defaultizeValueFormatter.js +2 -3
- package/internals/index.d.ts +1 -0
- package/internals/index.js +16 -0
- package/internals/isCartesian.d.ts +7 -0
- package/internals/isCartesian.js +14 -0
- package/internals/package.json +6 -0
- package/models/axis.d.ts +3 -3
- package/models/index.d.ts +1 -0
- package/models/index.js +11 -0
- package/models/plugin.d.ts +16 -0
- package/models/plugin.js +5 -0
- package/models/seriesType/config.d.ts +30 -5
- package/models/seriesType/index.d.ts +8 -11
- package/models/seriesType/index.js +6 -0
- package/modern/BarChart/BarChart.js +2 -2
- package/modern/BarChart/BarPlot.js +2 -2
- package/modern/BarChart/formatter.js +1 -1
- package/modern/BarChart/getColor.js +4 -4
- package/modern/BarChart/plugin.js +10 -0
- package/modern/ChartContainer/ChartContainer.js +13 -2
- package/modern/ChartContainer/defaultPlugins.js +5 -0
- package/modern/ChartContainer/usePluginsMerge.js +31 -0
- package/modern/ChartsLegend/ChartsLegend.js +2 -2
- package/modern/ChartsLegend/utils.js +4 -1
- package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +4 -4
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +3 -3
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
- package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +2 -1
- package/modern/ChartsTooltip/utils.js +2 -8
- package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +2 -2
- package/modern/ChartsXAxis/ChartsXAxis.js +17 -19
- package/modern/ChartsYAxis/ChartsYAxis.js +17 -19
- package/modern/LineChart/AreaPlot.js +2 -2
- package/modern/LineChart/LineChart.js +2 -2
- package/modern/LineChart/LineHighlightPlot.js +2 -2
- package/modern/LineChart/LinePlot.js +2 -2
- package/modern/LineChart/MarkPlot.js +2 -2
- package/modern/LineChart/formatter.js +1 -1
- package/modern/LineChart/getColor.js +2 -2
- package/modern/LineChart/plugin.js +10 -0
- package/modern/PieChart/PieChart.js +2 -2
- package/modern/PieChart/PiePlot.js +2 -2
- package/modern/PieChart/plugin.js +7 -0
- package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +7 -2
- package/modern/ScatterChart/ScatterChart.js +2 -2
- package/modern/ScatterChart/ScatterPlot.js +2 -2
- package/modern/ScatterChart/formatter.js +1 -1
- package/modern/ScatterChart/getColor.js +2 -2
- package/modern/ScatterChart/plugin.js +10 -0
- package/modern/SparkLineChart/SparkLineChart.js +1 -1
- package/modern/context/CartesianContextProvider.js +2 -2
- package/modern/context/DrawingProvider.js +9 -2
- package/modern/context/HighlightedProvider/HighlightedContext.js +8 -5
- package/modern/context/HighlightedProvider/HighlightedProvider.js +15 -12
- package/modern/context/HighlightedProvider/useHighlighted.js +6 -3
- package/modern/context/HighlightedProvider/useItemHighlighted.js +2 -6
- package/modern/context/SeriesContextProvider.js +14 -17
- package/modern/context/context.types.js +1 -0
- package/modern/hooks/useInteractionItemProps.js +2 -2
- package/modern/hooks/useSeries.js +6 -3
- package/modern/hooks/useSvgRef.js +6 -3
- package/modern/index.js +1 -1
- package/modern/internals/configInit.js +20 -0
- package/modern/internals/defaultizeValueFormatter.js +2 -3
- package/modern/internals/index.js +1 -0
- package/modern/internals/isCartesian.js +7 -0
- package/modern/models/index.js +1 -0
- package/modern/models/plugin.js +1 -0
- package/modern/models/seriesType/index.js +6 -0
- package/package.json +1 -1
|
@@ -99,6 +99,11 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
99
99
|
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
100
100
|
*/
|
|
101
101
|
onHighlightChange: PropTypes.func,
|
|
102
|
+
/**
|
|
103
|
+
* An array of plugins defining how to preprocess data.
|
|
104
|
+
* If not provided, the container supports line, bar, scatter and pie charts.
|
|
105
|
+
*/
|
|
106
|
+
plugins: PropTypes.arrayOf(PropTypes.object),
|
|
102
107
|
/**
|
|
103
108
|
* The array of series to display.
|
|
104
109
|
* Each type of series has its own specificity.
|
|
@@ -152,7 +157,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
152
157
|
labelStyle: PropTypes.object,
|
|
153
158
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
154
159
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
155
|
-
position: PropTypes.oneOf(['bottom', '
|
|
160
|
+
position: PropTypes.oneOf(['bottom', 'top']),
|
|
156
161
|
reverse: PropTypes.bool,
|
|
157
162
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
158
163
|
slotProps: PropTypes.object,
|
|
@@ -205,7 +210,7 @@ process.env.NODE_ENV !== "production" ? ResponsiveChartContainer.propTypes = {
|
|
|
205
210
|
labelStyle: PropTypes.object,
|
|
206
211
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
207
212
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
208
|
-
position: PropTypes.oneOf(['
|
|
213
|
+
position: PropTypes.oneOf(['left', 'right']),
|
|
209
214
|
reverse: PropTypes.bool,
|
|
210
215
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
211
216
|
slotProps: PropTypes.object,
|
|
@@ -302,7 +302,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
302
302
|
labelStyle: PropTypes.object,
|
|
303
303
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
304
304
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
305
|
-
position: PropTypes.oneOf(['bottom', '
|
|
305
|
+
position: PropTypes.oneOf(['bottom', 'top']),
|
|
306
306
|
reverse: PropTypes.bool,
|
|
307
307
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
308
308
|
slotProps: PropTypes.object,
|
|
@@ -355,7 +355,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
355
355
|
labelStyle: PropTypes.object,
|
|
356
356
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
357
357
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
358
|
-
position: PropTypes.oneOf(['
|
|
358
|
+
position: PropTypes.oneOf(['left', 'right']),
|
|
359
359
|
reverse: PropTypes.bool,
|
|
360
360
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
361
361
|
slotProps: PropTypes.object,
|
|
@@ -2,10 +2,10 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { Scatter } from './Scatter';
|
|
5
|
-
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
6
5
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
7
6
|
import getColor from './getColor';
|
|
8
7
|
import { ZAxisContext } from '../context/ZAxisContextProvider';
|
|
8
|
+
import { useScatterSeries } from '../hooks/useSeries';
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
/**
|
|
11
11
|
* Demos:
|
|
@@ -23,7 +23,7 @@ function ScatterPlot(props) {
|
|
|
23
23
|
slotProps,
|
|
24
24
|
onItemClick
|
|
25
25
|
} = props;
|
|
26
|
-
const seriesData =
|
|
26
|
+
const seriesData = useScatterSeries();
|
|
27
27
|
const axisData = React.useContext(CartesianContext);
|
|
28
28
|
const {
|
|
29
29
|
zAxis,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default function getColor(series, xAxis, yAxis, zAxis) {
|
|
2
2
|
const zColorScale = zAxis?.colorScale;
|
|
3
|
-
const yColorScale = yAxis
|
|
4
|
-
const xColorScale = xAxis
|
|
3
|
+
const yColorScale = yAxis?.colorScale;
|
|
4
|
+
const xColorScale = xAxis?.colorScale;
|
|
5
5
|
if (zColorScale) {
|
|
6
6
|
return dataIndex => {
|
|
7
7
|
if (zAxis?.data?.[dataIndex] !== undefined) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getExtremumX, getExtremumY } from './extremums';
|
|
2
|
+
import formatter from './formatter';
|
|
3
|
+
import getColor from './getColor';
|
|
4
|
+
export const plugin = {
|
|
5
|
+
seriesType: 'scatter',
|
|
6
|
+
seriesFormatter: formatter,
|
|
7
|
+
colorProcessor: getColor,
|
|
8
|
+
xExtremumGetter: getExtremumX,
|
|
9
|
+
yExtremumGetter: getExtremumY
|
|
10
|
+
};
|
|
@@ -265,7 +265,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
265
265
|
labelStyle: PropTypes.object,
|
|
266
266
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
267
267
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
268
|
-
position: PropTypes.oneOf(['bottom', '
|
|
268
|
+
position: PropTypes.oneOf(['bottom', 'top']),
|
|
269
269
|
reverse: PropTypes.bool,
|
|
270
270
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
271
271
|
slotProps: PropTypes.object,
|
|
@@ -6,11 +6,11 @@ import { getExtremumX as getScatterExtremumX, getExtremumY as getScatterExtremum
|
|
|
6
6
|
import { getExtremumX as getLineExtremumX, getExtremumY as getLineExtremumY } from '../LineChart/extremums';
|
|
7
7
|
import { isBandScaleConfig, isPointScaleConfig } from '../models/axis';
|
|
8
8
|
import { getScale } from '../internals/getScale';
|
|
9
|
-
import { SeriesContext } from './SeriesContextProvider';
|
|
10
9
|
import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
|
|
11
10
|
import { getTickNumber } from '../hooks/useTicks';
|
|
12
11
|
import { useDrawingArea } from '../hooks/useDrawingArea';
|
|
13
12
|
import { getColorScale, getOrdinalColorScale } from '../internals/colorScale';
|
|
13
|
+
import { useSeries } from '../hooks/useSeries';
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
|
|
16
16
|
const DEFAULT_BAR_GAP_RATIO = 0.1;
|
|
@@ -42,7 +42,7 @@ function CartesianContextProvider(props) {
|
|
|
42
42
|
dataset,
|
|
43
43
|
children
|
|
44
44
|
} = props;
|
|
45
|
-
const formattedSeries =
|
|
45
|
+
const formattedSeries = useSeries();
|
|
46
46
|
const drawingArea = useDrawingArea();
|
|
47
47
|
const xAxis = React.useMemo(() => inXAxis?.map(axisConfig => {
|
|
48
48
|
const dataKey = axisConfig.dataKey;
|
|
@@ -20,7 +20,10 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
20
20
|
DrawingContext.displayName = 'DrawingContext';
|
|
21
21
|
}
|
|
22
22
|
export const SvgContext = /*#__PURE__*/React.createContext({
|
|
23
|
-
|
|
23
|
+
isInitialized: false,
|
|
24
|
+
data: {
|
|
25
|
+
current: null
|
|
26
|
+
}
|
|
24
27
|
});
|
|
25
28
|
if (process.env.NODE_ENV !== 'production') {
|
|
26
29
|
SvgContext.displayName = 'SvgContext';
|
|
@@ -38,8 +41,12 @@ export function DrawingProvider(props) {
|
|
|
38
41
|
const value = React.useMemo(() => _extends({
|
|
39
42
|
chartId: chartId ?? ''
|
|
40
43
|
}, drawingArea), [chartId, drawingArea]);
|
|
44
|
+
const refValue = React.useMemo(() => ({
|
|
45
|
+
isInitialized: true,
|
|
46
|
+
data: svgRef
|
|
47
|
+
}), [svgRef]);
|
|
41
48
|
return /*#__PURE__*/_jsx(SvgContext.Provider, {
|
|
42
|
-
value:
|
|
49
|
+
value: refValue,
|
|
43
50
|
children: /*#__PURE__*/_jsx(DrawingContext.Provider, {
|
|
44
51
|
value: value,
|
|
45
52
|
children: children
|
|
@@ -18,11 +18,14 @@ import * as React from 'react';
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
export const HighlightedContext = /*#__PURE__*/React.createContext({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
isInitialized: false,
|
|
22
|
+
data: {
|
|
23
|
+
highlightedItem: null,
|
|
24
|
+
setHighlighted: () => {},
|
|
25
|
+
clearHighlighted: () => {},
|
|
26
|
+
isHighlighted: () => false,
|
|
27
|
+
isFaded: () => false
|
|
28
|
+
}
|
|
26
29
|
});
|
|
27
30
|
if (process.env.NODE_ENV !== 'production') {
|
|
28
31
|
HighlightedContext.displayName = 'HighlightedContext';
|
|
@@ -47,18 +47,21 @@ function HighlightedProvider({
|
|
|
47
47
|
const highlightScope = highlightedItem && highlightedItem.seriesId ? seriesById.get(highlightedItem.seriesId) ?? undefined : undefined;
|
|
48
48
|
const providerValue = React.useMemo(() => {
|
|
49
49
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
isInitialized: true,
|
|
51
|
+
data: {
|
|
52
|
+
highlightScope,
|
|
53
|
+
highlightedItem,
|
|
54
|
+
setHighlighted: itemData => {
|
|
55
|
+
setHighlightedItem(itemData);
|
|
56
|
+
onHighlightChange?.(itemData);
|
|
57
|
+
},
|
|
58
|
+
clearHighlighted: () => {
|
|
59
|
+
setHighlightedItem(null);
|
|
60
|
+
onHighlightChange?.(null);
|
|
61
|
+
},
|
|
62
|
+
isHighlighted: createIsHighlighted(highlightScope, highlightedItem),
|
|
63
|
+
isFaded: createIsFaded(highlightScope, highlightedItem)
|
|
64
|
+
}
|
|
62
65
|
};
|
|
63
66
|
}, [highlightedItem, highlightScope, setHighlightedItem, onHighlightChange]);
|
|
64
67
|
return /*#__PURE__*/_jsx(HighlightedContext.Provider, {
|
|
@@ -9,9 +9,12 @@ import { HighlightedContext } from './HighlightedContext';
|
|
|
9
9
|
* @returns {HighlightedState} the state of the chart
|
|
10
10
|
*/
|
|
11
11
|
export function useHighlighted() {
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const {
|
|
13
|
+
isInitialized,
|
|
14
|
+
data
|
|
15
|
+
} = React.useContext(HighlightedContext);
|
|
16
|
+
if (!isInitialized) {
|
|
14
17
|
throw new Error(['MUI X: Could not find the highlighted ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
|
|
15
18
|
}
|
|
16
|
-
return
|
|
19
|
+
return data;
|
|
17
20
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { HighlightedContext } from './HighlightedContext';
|
|
1
|
+
import { useHighlighted } from './useHighlighted';
|
|
3
2
|
/**
|
|
4
3
|
* A hook to check the highlighted state of the item.
|
|
5
4
|
* This function already calculates that an item is not faded if it is highlighted.
|
|
@@ -10,10 +9,7 @@ import { HighlightedContext } from './HighlightedContext';
|
|
|
10
9
|
* @returns {ItemHighlightedState} the state of the item
|
|
11
10
|
*/
|
|
12
11
|
export function useItemHighlighted(item) {
|
|
13
|
-
const highlighted =
|
|
14
|
-
if (highlighted === undefined) {
|
|
15
|
-
throw new Error(['MUI X: Could not find the highlighted ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
|
|
16
|
-
}
|
|
12
|
+
const highlighted = useHighlighted();
|
|
17
13
|
if (!item) {
|
|
18
14
|
return {
|
|
19
15
|
isHighlighted: false,
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useTheme } from '@mui/material/styles';
|
|
4
|
-
import barSeriesFormatter from '../BarChart/formatter';
|
|
5
|
-
import scatterSeriesFormatter from '../ScatterChart/formatter';
|
|
6
|
-
import lineSeriesFormatter from '../LineChart/formatter';
|
|
7
|
-
import pieSeriesFormatter from '../PieChart/formatter';
|
|
8
4
|
import { defaultizeColor } from '../internals/defaultizeColor';
|
|
9
5
|
import { blueberryTwilightPalette } from '../colorPalettes';
|
|
10
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
export const SeriesContext = /*#__PURE__*/React.createContext({
|
|
7
|
+
export const SeriesContext = /*#__PURE__*/React.createContext({
|
|
8
|
+
isInitialized: false,
|
|
9
|
+
data: {}
|
|
10
|
+
});
|
|
12
11
|
if (process.env.NODE_ENV !== 'production') {
|
|
13
12
|
SeriesContext.displayName = 'SeriesContext';
|
|
14
13
|
}
|
|
15
|
-
const seriesTypeFormatter = {
|
|
16
|
-
bar: barSeriesFormatter,
|
|
17
|
-
scatter: scatterSeriesFormatter,
|
|
18
|
-
line: lineSeriesFormatter,
|
|
19
|
-
pie: pieSeriesFormatter
|
|
20
|
-
};
|
|
21
|
-
|
|
22
14
|
/**
|
|
23
15
|
* This methods is the interface between what the developer is providing and what components receives
|
|
24
16
|
* To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified
|
|
@@ -27,7 +19,7 @@ const seriesTypeFormatter = {
|
|
|
27
19
|
* @param colors The color palette used to defaultize series colors
|
|
28
20
|
* @returns An object structuring all the series by type.
|
|
29
21
|
*/
|
|
30
|
-
const
|
|
22
|
+
const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
|
|
31
23
|
// Group series by type
|
|
32
24
|
const seriesGroups = {};
|
|
33
25
|
series.forEach((seriesData, seriesIndex) => {
|
|
@@ -51,9 +43,10 @@ const formatSeries = (series, colors, dataset) => {
|
|
|
51
43
|
});
|
|
52
44
|
const formattedSeries = {};
|
|
53
45
|
// Apply formatter on a type group
|
|
54
|
-
Object.keys(
|
|
55
|
-
|
|
56
|
-
|
|
46
|
+
Object.keys(seriesFormatters).forEach(type => {
|
|
47
|
+
const group = seriesGroups[type];
|
|
48
|
+
if (group !== undefined) {
|
|
49
|
+
formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type];
|
|
57
50
|
}
|
|
58
51
|
});
|
|
59
52
|
return formattedSeries;
|
|
@@ -63,10 +56,14 @@ function SeriesContextProvider(props) {
|
|
|
63
56
|
series,
|
|
64
57
|
dataset,
|
|
65
58
|
colors = blueberryTwilightPalette,
|
|
59
|
+
seriesFormatters,
|
|
66
60
|
children
|
|
67
61
|
} = props;
|
|
68
62
|
const theme = useTheme();
|
|
69
|
-
const formattedSeries = React.useMemo(() =>
|
|
63
|
+
const formattedSeries = React.useMemo(() => ({
|
|
64
|
+
isInitialized: true,
|
|
65
|
+
data: preprocessSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, seriesFormatters, dataset)
|
|
66
|
+
}), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
|
|
70
67
|
return /*#__PURE__*/_jsx(SeriesContext.Provider, {
|
|
71
68
|
value: formattedSeries,
|
|
72
69
|
children: children
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
3
|
-
import {
|
|
3
|
+
import { useHighlighted } from '../context';
|
|
4
4
|
export const useInteractionItemProps = skip => {
|
|
5
5
|
const {
|
|
6
6
|
dispatch: dispatchInteraction
|
|
@@ -8,7 +8,7 @@ export const useInteractionItemProps = skip => {
|
|
|
8
8
|
const {
|
|
9
9
|
setHighlighted,
|
|
10
10
|
clearHighlighted
|
|
11
|
-
} =
|
|
11
|
+
} = useHighlighted();
|
|
12
12
|
if (skip) {
|
|
13
13
|
return () => ({});
|
|
14
14
|
}
|
|
@@ -8,11 +8,14 @@ import { SeriesContext } from '../context/SeriesContextProvider';
|
|
|
8
8
|
* @returns FormattedSeries series
|
|
9
9
|
*/
|
|
10
10
|
export function useSeries() {
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
const {
|
|
12
|
+
isInitialized,
|
|
13
|
+
data
|
|
14
|
+
} = React.useContext(SeriesContext);
|
|
15
|
+
if (!isInitialized) {
|
|
13
16
|
throw new Error(['MUI X: Could not find the series ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
|
|
14
17
|
}
|
|
15
|
-
return
|
|
18
|
+
return data;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
/**
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SvgContext } from '../context/DrawingProvider';
|
|
3
3
|
export function useSvgRef() {
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const {
|
|
5
|
+
isInitialized,
|
|
6
|
+
data
|
|
7
|
+
} = React.useContext(SvgContext);
|
|
8
|
+
if (!isInitialized) {
|
|
6
9
|
throw new Error(['MUI X: Could not find the svg ref context.', 'It looks like you rendered your component outside of a ChartsContainer parent component.'].join('\n'));
|
|
7
10
|
}
|
|
8
|
-
return
|
|
11
|
+
return data;
|
|
9
12
|
}
|
package/modern/index.js
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let instance;
|
|
2
|
+
class CartesianSeriesTypes {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.types = new Set();
|
|
5
|
+
if (instance) {
|
|
6
|
+
throw new Error('You can only create one instance!');
|
|
7
|
+
}
|
|
8
|
+
instance = this.types;
|
|
9
|
+
}
|
|
10
|
+
addType(value) {
|
|
11
|
+
this.types.add(value);
|
|
12
|
+
}
|
|
13
|
+
getTypes() {
|
|
14
|
+
return this.types;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export const cartesianSeriesTypes = new CartesianSeriesTypes();
|
|
18
|
+
cartesianSeriesTypes.addType('bar');
|
|
19
|
+
cartesianSeriesTypes.addType('line');
|
|
20
|
+
cartesianSeriesTypes.addType('scatter');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
function defaultizeValueFormatter(series, defaultValueFormatter) {
|
|
2
|
+
export function defaultizeValueFormatter(series, defaultValueFormatter) {
|
|
3
3
|
const defaultizedSeries = {};
|
|
4
4
|
Object.keys(series).forEach(seriesId => {
|
|
5
5
|
defaultizedSeries[seriesId] = _extends({}, series[seriesId], {
|
|
@@ -7,5 +7,4 @@ function defaultizeValueFormatter(series, defaultValueFormatter) {
|
|
|
7
7
|
});
|
|
8
8
|
});
|
|
9
9
|
return defaultizedSeries;
|
|
10
|
-
}
|
|
11
|
-
export default defaultizeValueFormatter;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './configInit';
|
package/modern/models/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
// Series definition
|
|
2
|
+
|
|
3
|
+
// item identifier
|
|
4
|
+
|
|
1
5
|
export * from './line';
|
|
2
6
|
export * from './bar';
|
|
3
7
|
export * from './scatter';
|
|
4
8
|
export * from './pie';
|
|
9
|
+
// Helpers
|
|
10
|
+
|
|
5
11
|
export function isDefaultizedBarSeries(series) {
|
|
6
12
|
return series.type === 'bar';
|
|
7
13
|
}
|