@mui/x-charts 7.6.1 → 7.7.0
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 +147 -0
- package/ChartContainer/ChartContainer.d.ts +15 -3
- package/ChartContainer/ChartContainer.js +70 -22
- 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/ChartsOverlay/index.d.ts +1 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
- package/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
- package/ChartsText/ChartsText.js +1 -3
- package/ChartsTooltip/ChartsAxisTooltipContent.js +9 -15
- package/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
- package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
- package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -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 +2 -2
- package/LineChart/LineChart.js +3 -3
- 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 +2 -2
- package/PieChart/PieChart.js +3 -3
- package/PieChart/PiePlot.js +2 -2
- package/PieChart/plugin.d.ts +2 -0
- package/PieChart/plugin.js +14 -0
- package/ResponsiveChartContainer/ResizableContainer.d.ts +10 -0
- package/ResponsiveChartContainer/ResizableContainer.js +32 -0
- package/ResponsiveChartContainer/ResponsiveChartContainer.js +32 -24
- package/ScatterChart/ScatterChart.d.ts +2 -2
- package/ScatterChart/ScatterChart.js +3 -3
- 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 +9 -4
- package/SparkLineChart/SparkLineChart.js +58 -2
- package/context/CartesianContextProvider.d.ts +21 -10
- package/context/CartesianContextProvider.js +7 -20
- package/context/ColorProvider.d.ts +12 -0
- package/context/ColorProvider.js +25 -0
- 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 +71 -23
- 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/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
- package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
- package/esm/ChartsText/ChartsText.js +1 -3
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -14
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
- package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
- package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -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 +3 -3
- 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 +3 -3
- package/esm/PieChart/PiePlot.js +2 -2
- package/esm/PieChart/plugin.js +7 -0
- package/esm/ResponsiveChartContainer/ResizableContainer.js +26 -0
- package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +31 -23
- package/esm/ScatterChart/ScatterChart.js +3 -3
- 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 +58 -2
- package/esm/context/CartesianContextProvider.js +7 -20
- package/esm/context/ColorProvider.js +16 -0
- 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/index.js +1 -0
- package/esm/hooks/useColor.js +9 -0
- package/esm/hooks/useColorScale.js +27 -0
- package/esm/hooks/useInteractionItemProps.js +2 -2
- package/esm/hooks/useReducedMotion.js +7 -0
- 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 +27 -0
- package/esm/internals/isCartesian.js +7 -0
- package/esm/internals/warning.js +13 -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/index.d.ts +1 -0
- package/hooks/index.js +12 -0
- package/hooks/useColor.d.ts +4 -0
- package/hooks/useColor.js +17 -0
- package/hooks/useColorScale.d.ts +4 -0
- package/hooks/useColorScale.js +37 -0
- package/hooks/useInteractionItemProps.js +1 -1
- package/hooks/useReducedMotion.js +7 -0
- 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/defaultizeColor.d.ts +8 -8
- package/internals/defaultizeValueFormatter.d.ts +1 -2
- package/internals/defaultizeValueFormatter.js +2 -3
- package/internals/index.d.ts +17 -0
- package/internals/index.js +203 -0
- package/internals/isCartesian.d.ts +7 -0
- package/internals/isCartesian.js +14 -0
- package/internals/package.json +6 -0
- package/internals/warning.d.ts +1 -0
- package/internals/warning.js +19 -0
- package/models/axis.d.ts +4 -5
- 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 +71 -23
- 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/ChartsReferenceLine/ChartsXReferenceLine.js +3 -5
- package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +3 -5
- package/modern/ChartsText/ChartsText.js +1 -3
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -14
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +8 -18
- package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -4
- package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -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 +3 -3
- 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 +3 -3
- package/modern/PieChart/PiePlot.js +2 -2
- package/modern/PieChart/plugin.js +7 -0
- package/modern/ResponsiveChartContainer/ResizableContainer.js +26 -0
- package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +31 -23
- package/modern/ScatterChart/ScatterChart.js +3 -3
- 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 +58 -2
- package/modern/context/CartesianContextProvider.js +7 -20
- package/modern/context/ColorProvider.js +16 -0
- 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/index.js +1 -0
- package/modern/hooks/useColor.js +9 -0
- package/modern/hooks/useColorScale.js +27 -0
- package/modern/hooks/useInteractionItemProps.js +2 -2
- package/modern/hooks/useReducedMotion.js +7 -0
- 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 +27 -0
- package/modern/internals/isCartesian.js +7 -0
- package/modern/internals/warning.js +13 -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 +2 -2
- package/themeAugmentation/components.d.ts +12 -12
- package/esm/internals/colorGetter.js +0 -22
- package/internals/colorGetter.d.ts +0 -7
- package/internals/colorGetter.js +0 -29
- package/modern/internals/colorGetter.js +0 -22
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ColorContext = void 0;
|
|
7
|
+
exports.ColorProvider = ColorProvider;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
const ColorContext = exports.ColorContext = /*#__PURE__*/React.createContext({});
|
|
13
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
14
|
+
ColorContext.displayName = 'ColorContext';
|
|
15
|
+
}
|
|
16
|
+
function ColorProvider(props) {
|
|
17
|
+
const {
|
|
18
|
+
colorProcessors,
|
|
19
|
+
children
|
|
20
|
+
} = props;
|
|
21
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ColorContext.Provider, {
|
|
22
|
+
value: colorProcessors,
|
|
23
|
+
children: children
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { LayoutConfig } from '../models/layout';
|
|
3
|
+
import { Initializable } from './context.types';
|
|
3
4
|
export interface DrawingProviderProps extends LayoutConfig {
|
|
4
5
|
children: React.ReactNode;
|
|
5
6
|
svgRef: React.RefObject<SVGSVGElement>;
|
|
@@ -39,5 +40,6 @@ export declare const DrawingContext: React.Context<DrawingArea & {
|
|
|
39
40
|
*/
|
|
40
41
|
chartId: string;
|
|
41
42
|
}>;
|
|
42
|
-
export
|
|
43
|
+
export type SvgContextState = React.RefObject<SVGSVGElement>;
|
|
44
|
+
export declare const SvgContext: React.Context<Initializable<SvgContextState>>;
|
|
43
45
|
export declare function DrawingProvider(props: DrawingProviderProps): React.JSX.Element;
|
|
@@ -31,7 +31,10 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
31
31
|
DrawingContext.displayName = 'DrawingContext';
|
|
32
32
|
}
|
|
33
33
|
const SvgContext = exports.SvgContext = /*#__PURE__*/React.createContext({
|
|
34
|
-
|
|
34
|
+
isInitialized: false,
|
|
35
|
+
data: {
|
|
36
|
+
current: null
|
|
37
|
+
}
|
|
35
38
|
});
|
|
36
39
|
if (process.env.NODE_ENV !== 'production') {
|
|
37
40
|
SvgContext.displayName = 'SvgContext';
|
|
@@ -49,8 +52,12 @@ function DrawingProvider(props) {
|
|
|
49
52
|
const value = React.useMemo(() => (0, _extends2.default)({
|
|
50
53
|
chartId: chartId ?? ''
|
|
51
54
|
}, drawingArea), [chartId, drawingArea]);
|
|
55
|
+
const refValue = React.useMemo(() => ({
|
|
56
|
+
isInitialized: true,
|
|
57
|
+
data: svgRef
|
|
58
|
+
}), [svgRef]);
|
|
52
59
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SvgContext.Provider, {
|
|
53
|
-
value:
|
|
60
|
+
value: refValue,
|
|
54
61
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DrawingContext.Provider, {
|
|
55
62
|
value: value,
|
|
56
63
|
children: children
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SeriesId } from '../../models/seriesType/common';
|
|
3
|
+
import { Initializable } from '../context.types';
|
|
3
4
|
/**
|
|
4
5
|
* The data of the highlighted item.
|
|
5
6
|
* To highlight an item, you need to provide the series id and the item id.
|
|
@@ -62,4 +63,4 @@ export type HighlightedState = {
|
|
|
62
63
|
isHighlighted: (input: HighlightItemData) => boolean;
|
|
63
64
|
isFaded: (input: HighlightItemData) => boolean;
|
|
64
65
|
};
|
|
65
|
-
export declare const HighlightedContext: React.Context<HighlightedState
|
|
66
|
+
export declare const HighlightedContext: React.Context<Initializable<HighlightedState>>;
|
|
@@ -25,11 +25,14 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
const HighlightedContext = exports.HighlightedContext = /*#__PURE__*/React.createContext({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
isInitialized: false,
|
|
29
|
+
data: {
|
|
30
|
+
highlightedItem: null,
|
|
31
|
+
setHighlighted: () => {},
|
|
32
|
+
clearHighlighted: () => {},
|
|
33
|
+
isHighlighted: () => false,
|
|
34
|
+
isFaded: () => false
|
|
35
|
+
}
|
|
33
36
|
});
|
|
34
37
|
if (process.env.NODE_ENV !== 'production') {
|
|
35
38
|
HighlightedContext.displayName = 'HighlightedContext';
|
|
@@ -56,18 +56,21 @@ function HighlightedProvider({
|
|
|
56
56
|
const highlightScope = highlightedItem && highlightedItem.seriesId ? seriesById.get(highlightedItem.seriesId) ?? undefined : undefined;
|
|
57
57
|
const providerValue = React.useMemo(() => {
|
|
58
58
|
return {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
59
|
+
isInitialized: true,
|
|
60
|
+
data: {
|
|
61
|
+
highlightScope,
|
|
62
|
+
highlightedItem,
|
|
63
|
+
setHighlighted: itemData => {
|
|
64
|
+
setHighlightedItem(itemData);
|
|
65
|
+
onHighlightChange?.(itemData);
|
|
66
|
+
},
|
|
67
|
+
clearHighlighted: () => {
|
|
68
|
+
setHighlightedItem(null);
|
|
69
|
+
onHighlightChange?.(null);
|
|
70
|
+
},
|
|
71
|
+
isHighlighted: (0, _createIsHighlighted.createIsHighlighted)(highlightScope, highlightedItem),
|
|
72
|
+
isFaded: (0, _createIsFaded.createIsFaded)(highlightScope, highlightedItem)
|
|
73
|
+
}
|
|
71
74
|
};
|
|
72
75
|
}, [highlightedItem, highlightScope, setHighlightedItem, onHighlightChange]);
|
|
73
76
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HighlightedContext.HighlightedContext.Provider, {
|
|
@@ -16,9 +16,12 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
16
16
|
* @returns {HighlightedState} the state of the chart
|
|
17
17
|
*/
|
|
18
18
|
function useHighlighted() {
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
const {
|
|
20
|
+
isInitialized,
|
|
21
|
+
data
|
|
22
|
+
} = React.useContext(_HighlightedContext.HighlightedContext);
|
|
23
|
+
if (!isInitialized) {
|
|
21
24
|
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'));
|
|
22
25
|
}
|
|
23
|
-
return
|
|
26
|
+
return data;
|
|
24
27
|
}
|
|
@@ -4,10 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useItemHighlighted = useItemHighlighted;
|
|
7
|
-
var
|
|
8
|
-
var _HighlightedContext = require("./HighlightedContext");
|
|
9
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
10
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
7
|
+
var _useHighlighted = require("./useHighlighted");
|
|
11
8
|
/**
|
|
12
9
|
* A hook to check the highlighted state of the item.
|
|
13
10
|
* This function already calculates that an item is not faded if it is highlighted.
|
|
@@ -18,10 +15,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
18
15
|
* @returns {ItemHighlightedState} the state of the item
|
|
19
16
|
*/
|
|
20
17
|
function useItemHighlighted(item) {
|
|
21
|
-
const highlighted =
|
|
22
|
-
if (highlighted === undefined) {
|
|
23
|
-
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'));
|
|
24
|
-
}
|
|
18
|
+
const highlighted = (0, _useHighlighted.useHighlighted)();
|
|
25
19
|
if (!item) {
|
|
26
20
|
return {
|
|
27
21
|
isHighlighted: false,
|
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AllSeriesType } from '../models/seriesType';
|
|
3
|
-
import { ChartSeriesType, DatasetType, FormatterResult } from '../models/seriesType/config';
|
|
3
|
+
import { ChartSeriesType, DatasetType, FormatterParams, FormatterResult } from '../models/seriesType/config';
|
|
4
4
|
import { ChartsColorPalette } from '../colorPalettes';
|
|
5
|
-
|
|
5
|
+
import { Initializable } from './context.types';
|
|
6
|
+
export type SeriesFormatterType<T extends ChartSeriesType> = (series: AllSeriesType<T>[], colors: string[], dataset?: DatasetType) => {
|
|
7
|
+
[type in T]?: FormatterResult<type>;
|
|
8
|
+
};
|
|
9
|
+
export type SeriesContextProviderProps<T extends ChartSeriesType = ChartSeriesType> = {
|
|
6
10
|
dataset?: DatasetType;
|
|
7
11
|
/**
|
|
8
12
|
* The array of series to display.
|
|
9
13
|
* Each type of series has its own specificity.
|
|
10
14
|
* Please refer to the appropriate docs page to learn more about it.
|
|
11
15
|
*/
|
|
12
|
-
series: AllSeriesType[];
|
|
16
|
+
series: AllSeriesType<T>[];
|
|
13
17
|
/**
|
|
14
18
|
* Color palette used to colorize multiple series.
|
|
15
19
|
* @default blueberryTwilightPalette
|
|
16
20
|
*/
|
|
17
21
|
colors?: ChartsColorPalette;
|
|
22
|
+
/**
|
|
23
|
+
* Preprocessors for each series types.
|
|
24
|
+
*/
|
|
25
|
+
seriesFormatters: SeriesFormatterConfig<T>;
|
|
18
26
|
children: React.ReactNode;
|
|
19
27
|
};
|
|
20
28
|
export type FormattedSeries = {
|
|
21
29
|
[type in ChartSeriesType]?: FormatterResult<type>;
|
|
22
30
|
};
|
|
23
|
-
export declare const SeriesContext: React.Context<FormattedSeries
|
|
24
|
-
|
|
31
|
+
export declare const SeriesContext: React.Context<Initializable<FormattedSeries>>;
|
|
32
|
+
export type SeriesFormatterConfig<T extends ChartSeriesType = ChartSeriesType> = {
|
|
33
|
+
[K in T]?: (series: FormatterParams<K>, dataset?: DatasetType) => any;
|
|
34
|
+
};
|
|
35
|
+
declare function SeriesContextProvider<T extends ChartSeriesType>(props: SeriesContextProviderProps<T>): React.JSX.Element;
|
|
25
36
|
export { SeriesContextProvider };
|
|
@@ -9,26 +9,18 @@ exports.SeriesContextProvider = SeriesContextProvider;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _styles = require("@mui/material/styles");
|
|
12
|
-
var _formatter = _interopRequireDefault(require("../BarChart/formatter"));
|
|
13
|
-
var _formatter2 = _interopRequireDefault(require("../ScatterChart/formatter"));
|
|
14
|
-
var _formatter3 = _interopRequireDefault(require("../LineChart/formatter"));
|
|
15
|
-
var _formatter4 = _interopRequireDefault(require("../PieChart/formatter"));
|
|
16
12
|
var _defaultizeColor = require("../internals/defaultizeColor");
|
|
17
13
|
var _colorPalettes = require("../colorPalettes");
|
|
18
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
|
-
const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({
|
|
17
|
+
const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({
|
|
18
|
+
isInitialized: false,
|
|
19
|
+
data: {}
|
|
20
|
+
});
|
|
22
21
|
if (process.env.NODE_ENV !== 'production') {
|
|
23
22
|
SeriesContext.displayName = 'SeriesContext';
|
|
24
23
|
}
|
|
25
|
-
const seriesTypeFormatter = {
|
|
26
|
-
bar: _formatter.default,
|
|
27
|
-
scatter: _formatter2.default,
|
|
28
|
-
line: _formatter3.default,
|
|
29
|
-
pie: _formatter4.default
|
|
30
|
-
};
|
|
31
|
-
|
|
32
24
|
/**
|
|
33
25
|
* This methods is the interface between what the developer is providing and what components receives
|
|
34
26
|
* To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified
|
|
@@ -37,7 +29,7 @@ const seriesTypeFormatter = {
|
|
|
37
29
|
* @param colors The color palette used to defaultize series colors
|
|
38
30
|
* @returns An object structuring all the series by type.
|
|
39
31
|
*/
|
|
40
|
-
const
|
|
32
|
+
const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
|
|
41
33
|
// Group series by type
|
|
42
34
|
const seriesGroups = {};
|
|
43
35
|
series.forEach((seriesData, seriesIndex) => {
|
|
@@ -61,9 +53,10 @@ const formatSeries = (series, colors, dataset) => {
|
|
|
61
53
|
});
|
|
62
54
|
const formattedSeries = {};
|
|
63
55
|
// Apply formatter on a type group
|
|
64
|
-
Object.keys(
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
Object.keys(seriesFormatters).forEach(type => {
|
|
57
|
+
const group = seriesGroups[type];
|
|
58
|
+
if (group !== undefined) {
|
|
59
|
+
formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type];
|
|
67
60
|
}
|
|
68
61
|
});
|
|
69
62
|
return formattedSeries;
|
|
@@ -73,10 +66,14 @@ function SeriesContextProvider(props) {
|
|
|
73
66
|
series,
|
|
74
67
|
dataset,
|
|
75
68
|
colors = _colorPalettes.blueberryTwilightPalette,
|
|
69
|
+
seriesFormatters,
|
|
76
70
|
children
|
|
77
71
|
} = props;
|
|
78
72
|
const theme = (0, _styles.useTheme)();
|
|
79
|
-
const formattedSeries = React.useMemo(() =>
|
|
73
|
+
const formattedSeries = React.useMemo(() => ({
|
|
74
|
+
isInitialized: true,
|
|
75
|
+
data: preprocessSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, seriesFormatters, dataset)
|
|
76
|
+
}), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
|
|
80
77
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SeriesContext.Provider, {
|
|
81
78
|
value: formattedSeries,
|
|
82
79
|
children: children
|
package/esm/BarChart/BarChart.js
CHANGED
|
@@ -351,7 +351,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
351
351
|
labelStyle: PropTypes.object,
|
|
352
352
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
353
353
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
354
|
-
position: PropTypes.oneOf(['bottom', '
|
|
354
|
+
position: PropTypes.oneOf(['bottom', 'top']),
|
|
355
355
|
reverse: PropTypes.bool,
|
|
356
356
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
357
357
|
slotProps: PropTypes.object,
|
|
@@ -404,7 +404,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
404
404
|
labelStyle: PropTypes.object,
|
|
405
405
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
406
406
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
407
|
-
position: PropTypes.oneOf(['
|
|
407
|
+
position: PropTypes.oneOf(['left', 'right']),
|
|
408
408
|
reverse: PropTypes.bool,
|
|
409
409
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
410
410
|
slotProps: PropTypes.object,
|
package/esm/BarChart/BarPlot.js
CHANGED
|
@@ -4,7 +4,6 @@ const _excluded = ["skipAnimation", "onItemClick", "borderRadius", "barLabel"];
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { useTransition } from '@react-spring/web';
|
|
7
|
-
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
8
7
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
9
8
|
import { BarElement } from './BarElement';
|
|
10
9
|
import getColor from './getColor';
|
|
@@ -12,6 +11,7 @@ import { useChartId } from '../hooks';
|
|
|
12
11
|
import { BarClipPath } from './BarClipPath';
|
|
13
12
|
import { BarLabelPlot } from './BarLabel/BarLabelPlot';
|
|
14
13
|
import { checkScaleErrors } from './checkScaleErrors';
|
|
14
|
+
import { useBarSeries } from '../hooks/useSeries';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Solution of the equations
|
|
@@ -42,7 +42,7 @@ function getBandSize({
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
const useAggregatedData = () => {
|
|
45
|
-
const seriesData =
|
|
45
|
+
const seriesData = useBarSeries() ?? {
|
|
46
46
|
series: {},
|
|
47
47
|
stackingGroups: [],
|
|
48
48
|
seriesOrder: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import { stack as d3Stack } from 'd3-shape';
|
|
3
3
|
import { getStackingGroups } from '../internals/stackSeries';
|
|
4
|
-
import defaultizeValueFormatter from '../internals/defaultizeValueFormatter';
|
|
4
|
+
import { defaultizeValueFormatter } from '../internals/defaultizeValueFormatter';
|
|
5
5
|
let warnOnce = false;
|
|
6
6
|
const formatter = (params, dataset) => {
|
|
7
7
|
const {
|
package/esm/BarChart/getColor.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export default function getColor(series, xAxis, yAxis) {
|
|
2
2
|
const verticalLayout = series.layout === 'vertical';
|
|
3
|
-
const bandColorScale = verticalLayout ? xAxis
|
|
4
|
-
const valueColorScale = verticalLayout ? yAxis
|
|
5
|
-
const bandValues = verticalLayout ? xAxis
|
|
3
|
+
const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale;
|
|
4
|
+
const valueColorScale = verticalLayout ? yAxis?.colorScale : xAxis?.colorScale;
|
|
5
|
+
const bandValues = verticalLayout ? xAxis?.data : yAxis?.data;
|
|
6
6
|
if (valueColorScale) {
|
|
7
7
|
return dataIndex => {
|
|
8
8
|
const value = series.data[dataIndex];
|
|
@@ -13,7 +13,7 @@ export default function getColor(series, xAxis, yAxis) {
|
|
|
13
13
|
return color;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
if (bandColorScale) {
|
|
16
|
+
if (bandColorScale && bandValues) {
|
|
17
17
|
return dataIndex => {
|
|
18
18
|
const value = bandValues[dataIndex];
|
|
19
19
|
const color = value === null ? series.color : bandColorScale(value);
|
|
@@ -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: 'bar',
|
|
6
|
+
seriesFormatter: formatter,
|
|
7
|
+
colorProcessor: getColor,
|
|
8
|
+
xExtremumGetter: getExtremumX,
|
|
9
|
+
yExtremumGetter: getExtremumY
|
|
10
|
+
};
|
|
@@ -4,11 +4,13 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
4
4
|
import { DrawingProvider } from '../context/DrawingProvider';
|
|
5
5
|
import { SeriesContextProvider } from '../context/SeriesContextProvider';
|
|
6
6
|
import { InteractionProvider } from '../context/InteractionProvider';
|
|
7
|
+
import { ColorProvider } from '../context/ColorProvider';
|
|
7
8
|
import { useReducedMotion } from '../hooks/useReducedMotion';
|
|
8
9
|
import { ChartsSurface } from '../ChartsSurface';
|
|
9
10
|
import { CartesianContextProvider } from '../context/CartesianContextProvider';
|
|
10
11
|
import { ChartsAxesGradients } from '../internals/components/ChartsAxesGradients';
|
|
11
|
-
import { HighlightedProvider } from '../context';
|
|
12
|
+
import { HighlightedProvider, ZAxisContextProvider } from '../context';
|
|
13
|
+
import { usePluginsMerge } from './usePluginsMerge';
|
|
12
14
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
15
|
const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(props, ref) {
|
|
14
16
|
const {
|
|
@@ -18,6 +20,7 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
|
|
|
18
20
|
margin,
|
|
19
21
|
xAxis,
|
|
20
22
|
yAxis,
|
|
23
|
+
zAxis,
|
|
21
24
|
colors,
|
|
22
25
|
dataset,
|
|
23
26
|
sx,
|
|
@@ -26,10 +29,17 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
|
|
|
26
29
|
disableAxisListener,
|
|
27
30
|
highlightedItem,
|
|
28
31
|
onHighlightChange,
|
|
32
|
+
plugins,
|
|
29
33
|
children
|
|
30
34
|
} = props;
|
|
31
35
|
const svgRef = React.useRef(null);
|
|
32
36
|
const handleRef = useForkRef(ref, svgRef);
|
|
37
|
+
const {
|
|
38
|
+
xExtremumGetters,
|
|
39
|
+
yExtremumGetters,
|
|
40
|
+
seriesFormatters,
|
|
41
|
+
colorProcessors
|
|
42
|
+
} = usePluginsMerge(plugins);
|
|
33
43
|
useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion)
|
|
34
44
|
|
|
35
45
|
return /*#__PURE__*/_jsx(DrawingProvider, {
|
|
@@ -37,27 +47,37 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
|
|
|
37
47
|
height: height,
|
|
38
48
|
margin: margin,
|
|
39
49
|
svgRef: svgRef,
|
|
40
|
-
children: /*#__PURE__*/_jsx(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
xAxis: xAxis,
|
|
46
|
-
yAxis: yAxis,
|
|
50
|
+
children: /*#__PURE__*/_jsx(ColorProvider, {
|
|
51
|
+
colorProcessors: colorProcessors,
|
|
52
|
+
children: /*#__PURE__*/_jsx(SeriesContextProvider, {
|
|
53
|
+
series: series,
|
|
54
|
+
colors: colors,
|
|
47
55
|
dataset: dataset,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
seriesFormatters: seriesFormatters,
|
|
57
|
+
children: /*#__PURE__*/_jsx(CartesianContextProvider, {
|
|
58
|
+
xAxis: xAxis,
|
|
59
|
+
yAxis: yAxis,
|
|
60
|
+
dataset: dataset,
|
|
61
|
+
xExtremumGetters: xExtremumGetters,
|
|
62
|
+
yExtremumGetters: yExtremumGetters,
|
|
63
|
+
children: /*#__PURE__*/_jsx(ZAxisContextProvider, {
|
|
64
|
+
zAxis: zAxis,
|
|
65
|
+
dataset: dataset,
|
|
66
|
+
children: /*#__PURE__*/_jsx(InteractionProvider, {
|
|
67
|
+
children: /*#__PURE__*/_jsx(HighlightedProvider, {
|
|
68
|
+
highlightedItem: highlightedItem,
|
|
69
|
+
onHighlightChange: onHighlightChange,
|
|
70
|
+
children: /*#__PURE__*/_jsxs(ChartsSurface, {
|
|
71
|
+
width: width,
|
|
72
|
+
height: height,
|
|
73
|
+
ref: handleRef,
|
|
74
|
+
sx: sx,
|
|
75
|
+
title: title,
|
|
76
|
+
desc: desc,
|
|
77
|
+
disableAxisListener: disableAxisListener,
|
|
78
|
+
children: [/*#__PURE__*/_jsx(ChartsAxesGradients, {}), children]
|
|
79
|
+
})
|
|
80
|
+
})
|
|
61
81
|
})
|
|
62
82
|
})
|
|
63
83
|
})
|
|
@@ -117,6 +137,11 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
117
137
|
* @param {HighlightItemData | null} highlightedItem The newly highlighted item.
|
|
118
138
|
*/
|
|
119
139
|
onHighlightChange: PropTypes.func,
|
|
140
|
+
/**
|
|
141
|
+
* An array of plugins defining how to preprocess data.
|
|
142
|
+
* If not provided, the container supports line, bar, scatter and pie charts.
|
|
143
|
+
*/
|
|
144
|
+
plugins: PropTypes.arrayOf(PropTypes.object),
|
|
120
145
|
/**
|
|
121
146
|
* The array of series to display.
|
|
122
147
|
* Each type of series has its own specificity.
|
|
@@ -170,7 +195,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
170
195
|
labelStyle: PropTypes.object,
|
|
171
196
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
172
197
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
173
|
-
position: PropTypes.oneOf(['bottom', '
|
|
198
|
+
position: PropTypes.oneOf(['bottom', 'top']),
|
|
174
199
|
reverse: PropTypes.bool,
|
|
175
200
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
176
201
|
slotProps: PropTypes.object,
|
|
@@ -223,7 +248,7 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
223
248
|
labelStyle: PropTypes.object,
|
|
224
249
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
225
250
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
226
|
-
position: PropTypes.oneOf(['
|
|
251
|
+
position: PropTypes.oneOf(['left', 'right']),
|
|
227
252
|
reverse: PropTypes.bool,
|
|
228
253
|
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
229
254
|
slotProps: PropTypes.object,
|
|
@@ -240,6 +265,29 @@ process.env.NODE_ENV !== "production" ? ChartContainer.propTypes = {
|
|
|
240
265
|
tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
241
266
|
tickSize: PropTypes.number,
|
|
242
267
|
valueFormatter: PropTypes.func
|
|
268
|
+
})),
|
|
269
|
+
/**
|
|
270
|
+
* The configuration of the z-axes.
|
|
271
|
+
*/
|
|
272
|
+
zAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
273
|
+
colorMap: PropTypes.oneOfType([PropTypes.shape({
|
|
274
|
+
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
275
|
+
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
276
|
+
unknownColor: PropTypes.string,
|
|
277
|
+
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
278
|
+
}), PropTypes.shape({
|
|
279
|
+
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
280
|
+
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
281
|
+
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
282
|
+
type: PropTypes.oneOf(['continuous']).isRequired
|
|
283
|
+
}), PropTypes.shape({
|
|
284
|
+
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
285
|
+
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
286
|
+
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
287
|
+
})]),
|
|
288
|
+
data: PropTypes.array,
|
|
289
|
+
dataKey: PropTypes.string,
|
|
290
|
+
id: PropTypes.string
|
|
243
291
|
}))
|
|
244
292
|
} : void 0;
|
|
245
293
|
export { ChartContainer };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { plugin as barPlugin } from '../BarChart/plugin';
|
|
2
|
+
import { plugin as scatterPlugin } from '../ScatterChart/plugin';
|
|
3
|
+
import { plugin as linePlugin } from '../LineChart/plugin';
|
|
4
|
+
import { plugin as piePlugin } from '../PieChart/plugin';
|
|
5
|
+
export const defaultPlugins = [barPlugin, scatterPlugin, linePlugin, piePlugin];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { defaultPlugins } from './defaultPlugins';
|
|
3
|
+
export function usePluginsMerge(plugins) {
|
|
4
|
+
const defaultizedPlugins = plugins ?? defaultPlugins;
|
|
5
|
+
return React.useMemo(() => {
|
|
6
|
+
const seriesFormatters = {};
|
|
7
|
+
const colorProcessors = {};
|
|
8
|
+
const xExtremumGetters = {};
|
|
9
|
+
const yExtremumGetters = {};
|
|
10
|
+
for (let i = 0; i < defaultizedPlugins.length; i += 1) {
|
|
11
|
+
const plugin = defaultizedPlugins[i];
|
|
12
|
+
|
|
13
|
+
// To remove those any we will need to solve this union discrimination issue:
|
|
14
|
+
// https://www.typescriptlang.org/play/?#code/FDAuE8AcFMAIDkCuBbARtATgYQPYDsAzASwHNYBeWAb2FlgGsi8ATALlgHI8V0MOBuWrBwwMAQ1A4M7ABQAPdtzSYAlBQB8sJb0EBfEBBiwAyqAxMSuQqQrUhjFuw4BnMxYFCRmCVNkLYruZ4JGrkmoEWeiAAxviuWqhWxCTsSMrY+Mm2VAxMbLAARNqYBQA0wqI+0rByGrAATLAAVDWw+rF48YFJpOymQZaZNpQ5DvkFEcFlFd6S1bVhsAAG9S0AJFRyukttMXGgsB3JzrYA2niJQyTl3VcAugZQcADylXPOALJikJAW2ULFDAAflSPEwPRIpw4XnEcw4d1KQkmJBBJjcwQhUJhVXhiN0gmAHXi2LmXx+FnYr1mUk+31+wWy+JABCksBkABtoAcjjYcARDldnGoaCA6AB6MWwADqUnoJxw9FgRH5AHc4L9ooroGJogALQ5iZxwPJEABuRGYiDE7PASJVRFAerZPJIADoxsKhHRooa4FwwXxWF66DNYVIyfTIS73Xk7rZoySpIIQyHUBhtfRkyGfUbOMiOEGU3RExgIxZTtGxnHKAm3kng8xoAQxIh2aBC0W0xms-pvftqLkWOUS2141chBLYABJDimuB4HBKxtiWBiVA4RAHXU4FWwSSwTkHAAqxlgiBYmFcYhYAusbrGq5vtepGFX6YPTHo0GYnjrpbp5ZVrYJZ6EAA
|
|
15
|
+
seriesFormatters[plugin.seriesType] = plugin.seriesFormatter;
|
|
16
|
+
colorProcessors[plugin.seriesType] = plugin.colorProcessor;
|
|
17
|
+
if (plugin.xExtremumGetter) {
|
|
18
|
+
xExtremumGetters[plugin.seriesType] = plugin.xExtremumGetter;
|
|
19
|
+
}
|
|
20
|
+
if (plugin.yExtremumGetter) {
|
|
21
|
+
yExtremumGetters[plugin.seriesType] = plugin.yExtremumGetter;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
seriesFormatters,
|
|
26
|
+
colorProcessors,
|
|
27
|
+
xExtremumGetters,
|
|
28
|
+
yExtremumGetters
|
|
29
|
+
};
|
|
30
|
+
}, [defaultizedPlugins]);
|
|
31
|
+
}
|
|
@@ -5,10 +5,10 @@ import { useSlotProps } from '@mui/base/utils';
|
|
|
5
5
|
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
6
6
|
import { useThemeProps, useTheme } from '@mui/material/styles';
|
|
7
7
|
import { getSeriesToDisplay } from './utils';
|
|
8
|
-
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
9
8
|
import { getLegendUtilityClass } from './chartsLegendClasses';
|
|
10
9
|
import { DefaultChartsLegend } from './DefaultChartsLegend';
|
|
11
10
|
import { useDrawingArea } from '../hooks';
|
|
11
|
+
import { useSeries } from '../hooks/useSeries';
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
const useUtilityClasses = ownerState => {
|
|
14
14
|
const {
|
|
@@ -47,7 +47,7 @@ function ChartsLegend(inProps) {
|
|
|
47
47
|
theme
|
|
48
48
|
}));
|
|
49
49
|
const drawingArea = useDrawingArea();
|
|
50
|
-
const series =
|
|
50
|
+
const series = useSeries();
|
|
51
51
|
const seriesToDisplay = getSeriesToDisplay(series);
|
|
52
52
|
const ChartLegendRender = slots?.legend ?? DefaultChartsLegend;
|
|
53
53
|
const chartLegendRenderProps = useSlotProps({
|
|
@@ -9,5 +9,8 @@ const legendGetter = {
|
|
|
9
9
|
pie: getPieLegend
|
|
10
10
|
};
|
|
11
11
|
export function getSeriesToDisplay(series) {
|
|
12
|
-
return Object.keys(series).flatMap(seriesType =>
|
|
12
|
+
return Object.keys(series).flatMap(seriesType => {
|
|
13
|
+
const getter = legendGetter[seriesType];
|
|
14
|
+
return getter === undefined ? [] : getter(series[seriesType]);
|
|
15
|
+
});
|
|
13
16
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { SvgContext } from '../context/DrawingProvider';
|
|
4
3
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
5
4
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
6
|
-
import {
|
|
5
|
+
import { useSeries } from '../hooks/useSeries';
|
|
6
|
+
import { useSvgRef } from '../hooks';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
function ChartsOnAxisClickHandler(props) {
|
|
9
9
|
const {
|
|
10
10
|
onAxisClick
|
|
11
11
|
} = props;
|
|
12
|
-
const svgRef =
|
|
13
|
-
const series =
|
|
12
|
+
const svgRef = useSvgRef();
|
|
13
|
+
const series = useSeries();
|
|
14
14
|
const {
|
|
15
15
|
axis
|
|
16
16
|
} = React.useContext(InteractionContext);
|