@mui/x-charts-pro 8.0.0-alpha.6 → 8.0.0-alpha.8
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/BarChartPro/BarChartPro.d.ts +2 -2
- package/BarChartPro/BarChartPro.js +68 -23
- package/CHANGELOG.md +242 -1
- package/ChartContainerPro/ChartContainerPro.d.ts +32 -4
- package/ChartContainerPro/ChartContainerPro.js +53 -18
- package/ChartContainerPro/useChartContainerProProps.d.ts +5 -5
- package/ChartContainerPro/useChartContainerProProps.js +11 -5
- package/Heatmap/Heatmap.js +28 -2
- package/Heatmap/HeatmapTooltip.js +6 -4
- package/Heatmap/extremums.d.ts +2 -2
- package/Heatmap/formatter.d.ts +2 -2
- package/Heatmap/formatter.js +2 -1
- package/Heatmap/plugin.d.ts +2 -2
- package/Heatmap/plugin.js +1 -2
- package/LineChartPro/LineChartPro.d.ts +2 -2
- package/LineChartPro/LineChartPro.js +73 -32
- package/ScatterChartPro/ScatterChartPro.d.ts +2 -2
- package/ScatterChartPro/ScatterChartPro.js +46 -28
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/zoom/index.d.ts +1 -0
- package/hooks/zoom/index.js +1 -0
- package/hooks/zoom/useIsZoomInteracting.d.ts +6 -0
- package/hooks/zoom/useIsZoomInteracting.js +14 -0
- package/index.d.ts +0 -1
- package/index.js +2 -5
- package/internals/plugins/allPlugins.d.ts +10 -0
- package/internals/plugins/allPlugins.js +5 -0
- package/internals/plugins/useChartProZoom/defaultizeZoom.d.ts +2 -0
- package/internals/plugins/useChartProZoom/defaultizeZoom.js +25 -0
- package/internals/plugins/useChartProZoom/index.d.ts +3 -0
- package/internals/plugins/useChartProZoom/index.js +3 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.d.ts +3 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.js +324 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +149 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +6 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +54 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.utils.d.ts +45 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.utils.js +126 -0
- package/internals/plugins/useChartProZoom/zoom.types.d.ts +53 -0
- package/internals/utils/releaseInfo.js +1 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/modern/BarChartPro/BarChartPro.js +68 -23
- package/modern/ChartContainerPro/ChartContainerPro.js +53 -18
- package/modern/ChartContainerPro/useChartContainerProProps.js +11 -5
- package/modern/Heatmap/Heatmap.js +28 -2
- package/modern/Heatmap/HeatmapTooltip.js +6 -4
- package/modern/Heatmap/formatter.js +2 -1
- package/modern/Heatmap/plugin.js +1 -2
- package/modern/LineChartPro/LineChartPro.js +73 -32
- package/modern/ScatterChartPro/ScatterChartPro.js +46 -28
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/zoom/index.js +1 -0
- package/modern/hooks/zoom/useIsZoomInteracting.js +14 -0
- package/modern/index.js +2 -5
- package/modern/internals/plugins/allPlugins.js +5 -0
- package/modern/internals/plugins/useChartProZoom/defaultizeZoom.js +25 -0
- package/modern/internals/plugins/useChartProZoom/index.js +3 -0
- package/modern/internals/plugins/useChartProZoom/useChartProZoom.js +324 -0
- package/modern/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +6 -0
- package/modern/internals/plugins/useChartProZoom/useChartProZoom.types.js +1 -0
- package/modern/internals/plugins/useChartProZoom/useChartProZoom.utils.js +126 -0
- package/modern/internals/plugins/useChartProZoom/zoom.types.js +1 -0
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/models/index.js +2 -1
- package/node/BarChartPro/BarChartPro.js +67 -22
- package/node/ChartContainerPro/ChartContainerPro.js +53 -18
- package/node/ChartContainerPro/useChartContainerProProps.js +11 -5
- package/node/Heatmap/Heatmap.js +28 -2
- package/node/Heatmap/HeatmapTooltip.js +4 -2
- package/node/Heatmap/formatter.js +2 -1
- package/node/Heatmap/plugin.js +1 -2
- package/node/LineChartPro/LineChartPro.js +72 -31
- package/node/ScatterChartPro/ScatterChartPro.js +44 -26
- package/node/hooks/index.js +16 -1
- package/node/{context/CartesianProviderPro → hooks/zoom}/index.js +4 -4
- package/node/hooks/zoom/useIsZoomInteracting.js +19 -0
- package/node/index.js +1 -12
- package/node/internals/plugins/allPlugins.js +11 -0
- package/node/internals/plugins/useChartProZoom/defaultizeZoom.js +33 -0
- package/node/internals/plugins/useChartProZoom/index.js +38 -0
- package/node/internals/plugins/useChartProZoom/useChartProZoom.js +331 -0
- package/node/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +13 -0
- package/node/internals/plugins/useChartProZoom/useChartProZoom.utils.js +140 -0
- package/node/internals/plugins/useChartProZoom/zoom.types.js +5 -0
- package/node/internals/utils/releaseInfo.js +1 -1
- package/package.json +5 -5
- package/typeOverloads/modules.d.ts +8 -1
- package/context/CartesianProviderPro/CartesianProviderPro.d.ts +0 -6
- package/context/CartesianProviderPro/CartesianProviderPro.js +0 -89
- package/context/CartesianProviderPro/createAxisFilterMapper.d.ts +0 -13
- package/context/CartesianProviderPro/createAxisFilterMapper.js +0 -60
- package/context/CartesianProviderPro/index.d.ts +0 -1
- package/context/CartesianProviderPro/index.js +0 -1
- package/context/ChartDataProviderPro/ChartDataProviderPro.d.ts +0 -7
- package/context/ChartDataProviderPro/ChartDataProviderPro.js +0 -50
- package/context/ChartDataProviderPro/index.d.ts +0 -1
- package/context/ChartDataProviderPro/index.js +0 -1
- package/context/ChartDataProviderPro/useChartDataProviderProProps.d.ts +0 -14
- package/context/ChartDataProviderPro/useChartDataProviderProProps.js +0 -43
- package/context/ZoomProvider/Zoom.types.d.ts +0 -144
- package/context/ZoomProvider/ZoomContext.d.ts +0 -4
- package/context/ZoomProvider/ZoomContext.js +0 -16
- package/context/ZoomProvider/ZoomProvider.d.ts +0 -3
- package/context/ZoomProvider/ZoomProvider.js +0 -56
- package/context/ZoomProvider/ZoomSetup.d.ts +0 -9
- package/context/ZoomProvider/ZoomSetup.js +0 -16
- package/context/ZoomProvider/defaultizeZoom.d.ts +0 -2
- package/context/ZoomProvider/defaultizeZoom.js +0 -32
- package/context/ZoomProvider/index.d.ts +0 -3
- package/context/ZoomProvider/index.js +0 -3
- package/context/ZoomProvider/initializeZoomData.d.ts +0 -6
- package/context/ZoomProvider/initializeZoomData.js +0 -13
- package/context/ZoomProvider/useSetupPan.d.ts +0 -1
- package/context/ZoomProvider/useSetupPan.js +0 -106
- package/context/ZoomProvider/useSetupZoom.d.ts +0 -1
- package/context/ZoomProvider/useSetupZoom.js +0 -274
- package/context/ZoomProvider/useZoom.d.ts +0 -7
- package/context/ZoomProvider/useZoom.js +0 -19
- package/context/index.d.ts +0 -3
- package/context/index.js +0 -5
- package/context/package.json +0 -6
- package/modern/context/CartesianProviderPro/CartesianProviderPro.js +0 -89
- package/modern/context/CartesianProviderPro/createAxisFilterMapper.js +0 -60
- package/modern/context/CartesianProviderPro/index.js +0 -1
- package/modern/context/ChartDataProviderPro/ChartDataProviderPro.js +0 -50
- package/modern/context/ChartDataProviderPro/index.js +0 -1
- package/modern/context/ChartDataProviderPro/useChartDataProviderProProps.js +0 -43
- package/modern/context/ZoomProvider/ZoomContext.js +0 -16
- package/modern/context/ZoomProvider/ZoomProvider.js +0 -56
- package/modern/context/ZoomProvider/ZoomSetup.js +0 -16
- package/modern/context/ZoomProvider/defaultizeZoom.js +0 -32
- package/modern/context/ZoomProvider/index.js +0 -3
- package/modern/context/ZoomProvider/initializeZoomData.js +0 -13
- package/modern/context/ZoomProvider/useSetupPan.js +0 -106
- package/modern/context/ZoomProvider/useSetupZoom.js +0 -274
- package/modern/context/ZoomProvider/useZoom.js +0 -19
- package/modern/context/index.js +0 -5
- package/node/context/CartesianProviderPro/CartesianProviderPro.js +0 -95
- package/node/context/CartesianProviderPro/createAxisFilterMapper.js +0 -68
- package/node/context/ChartDataProviderPro/ChartDataProviderPro.js +0 -56
- package/node/context/ChartDataProviderPro/index.js +0 -16
- package/node/context/ChartDataProviderPro/useChartDataProviderProProps.js +0 -50
- package/node/context/ZoomProvider/ZoomContext.js +0 -23
- package/node/context/ZoomProvider/ZoomProvider.js +0 -63
- package/node/context/ZoomProvider/ZoomSetup.js +0 -20
- package/node/context/ZoomProvider/defaultizeZoom.js +0 -40
- package/node/context/ZoomProvider/index.js +0 -38
- package/node/context/ZoomProvider/initializeZoomData.js +0 -20
- package/node/context/ZoomProvider/useSetupPan.js +0 -114
- package/node/context/ZoomProvider/useSetupZoom.js +0 -281
- package/node/context/ZoomProvider/useZoom.js +0 -25
- package/node/context/index.js +0 -27
- /package/{context/ZoomProvider/Zoom.types.js → internals/plugins/useChartProZoom/useChartProZoom.types.js} +0 -0
- /package/{modern/context/ZoomProvider/Zoom.types.js → internals/plugins/useChartProZoom/zoom.types.js} +0 -0
- /package/node/{context/ZoomProvider/Zoom.types.js → internals/plugins/useChartProZoom/useChartProZoom.types.js} +0 -0
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createGetAxisFilters = exports.createAxisFilterMapper = void 0;
|
|
7
|
-
var _internals = require("@mui/x-charts/internals");
|
|
8
|
-
const createAxisFilterMapper = ({
|
|
9
|
-
zoomData,
|
|
10
|
-
extremumGetter,
|
|
11
|
-
formattedSeries,
|
|
12
|
-
direction
|
|
13
|
-
}) => (axis, axisIndex) => {
|
|
14
|
-
if (typeof axis.zoom !== 'object' || axis.zoom.filterMode !== 'discard') {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
const zoom = zoomData?.find(({
|
|
18
|
-
axisId
|
|
19
|
-
}) => axisId === axis.id);
|
|
20
|
-
if (zoom === undefined || zoom.start <= 0 && zoom.end >= 100) {
|
|
21
|
-
// No zoom, or zoom with all data visible
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
let extremums = [];
|
|
25
|
-
const scaleType = axis.scaleType;
|
|
26
|
-
if (scaleType === 'point' || scaleType === 'band') {
|
|
27
|
-
extremums = [0, (axis.data?.length ?? 1) - 1];
|
|
28
|
-
} else {
|
|
29
|
-
extremums = (0, _internals.getAxisExtremum)(axis, extremumGetter, axisIndex, formattedSeries);
|
|
30
|
-
}
|
|
31
|
-
let min;
|
|
32
|
-
let max;
|
|
33
|
-
|
|
34
|
-
// @ts-expect-error The function defaults to linear scale if the scaleType is not recognized.
|
|
35
|
-
[min, max] = (0, _internals.getScale)(scaleType, extremums, [0, 100]).nice().domain();
|
|
36
|
-
min = min instanceof Date ? min.getTime() : min;
|
|
37
|
-
max = max instanceof Date ? max.getTime() : max;
|
|
38
|
-
const minVal = min + zoom.start * (max - min) / 100;
|
|
39
|
-
const maxVal = min + zoom.end * (max - min) / 100;
|
|
40
|
-
return (value, dataIndex) => {
|
|
41
|
-
const val = value[direction] ?? axis.data?.[dataIndex];
|
|
42
|
-
if (val == null) {
|
|
43
|
-
// If the value does not exist because of missing data point, or out of range index, we just ignore.
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
if (axis.scaleType === 'point' || axis.scaleType === 'band' || typeof val === 'string') {
|
|
47
|
-
return dataIndex >= minVal && dataIndex <= maxVal;
|
|
48
|
-
}
|
|
49
|
-
return val >= minVal && val <= maxVal;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
exports.createAxisFilterMapper = createAxisFilterMapper;
|
|
53
|
-
const createGetAxisFilters = filters => ({
|
|
54
|
-
currentAxisId,
|
|
55
|
-
seriesXAxisId,
|
|
56
|
-
seriesYAxisId,
|
|
57
|
-
isDefaultAxis
|
|
58
|
-
}) => {
|
|
59
|
-
return (value, dataIndex) => {
|
|
60
|
-
const axisId = currentAxisId === seriesXAxisId ? seriesYAxisId : seriesXAxisId;
|
|
61
|
-
if (!axisId || isDefaultAxis) {
|
|
62
|
-
return Object.values(filters ?? {})[0]?.(value, dataIndex) ?? true;
|
|
63
|
-
}
|
|
64
|
-
const data = [seriesYAxisId, seriesXAxisId].filter(id => id !== currentAxisId).map(id => filters[id ?? '']).filter(_internals.isDefined);
|
|
65
|
-
return data.every(f => f(value, dataIndex));
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
exports.createGetAxisFilters = createGetAxisFilters;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.ChartDataProviderPro = ChartDataProviderPro;
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _internals = require("@mui/x-charts/internals");
|
|
13
|
-
var _context = require("@mui/x-charts/context");
|
|
14
|
-
var _useLicenseVerifier = require("@mui/x-license/useLicenseVerifier");
|
|
15
|
-
var _releaseInfo = require("../../internals/utils/releaseInfo");
|
|
16
|
-
var _CartesianProviderPro = require("../CartesianProviderPro");
|
|
17
|
-
var _ZoomProvider = require("../ZoomProvider");
|
|
18
|
-
var _useChartDataProviderProProps = require("./useChartDataProviderProProps");
|
|
19
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
const releaseInfo = (0, _releaseInfo.getReleaseInfo)();
|
|
21
|
-
function ChartDataProviderPro(props) {
|
|
22
|
-
const {
|
|
23
|
-
zoomProviderProps,
|
|
24
|
-
drawingAreaProviderProps,
|
|
25
|
-
seriesProviderProps,
|
|
26
|
-
zAxisContextProps,
|
|
27
|
-
highlightedProviderProps,
|
|
28
|
-
cartesianProviderProps,
|
|
29
|
-
sizeProviderProps,
|
|
30
|
-
pluginProviderProps,
|
|
31
|
-
animationProviderProps,
|
|
32
|
-
children
|
|
33
|
-
} = (0, _useChartDataProviderProProps.useChartContainerProProps)(props);
|
|
34
|
-
(0, _useLicenseVerifier.useLicenseVerifier)('x-charts-pro', releaseInfo);
|
|
35
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.ChartProvider, {
|
|
36
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.SizeProvider, (0, _extends2.default)({}, sizeProviderProps, {
|
|
37
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.DrawingAreaProvider, (0, _extends2.default)({}, drawingAreaProviderProps, {
|
|
38
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.AnimationProvider, (0, _extends2.default)({}, animationProviderProps, {
|
|
39
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PluginProvider, (0, _extends2.default)({}, pluginProviderProps, {
|
|
40
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ZoomProvider.ZoomProvider, (0, _extends2.default)({}, zoomProviderProps, {
|
|
41
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.SeriesProvider, (0, _extends2.default)({}, seriesProviderProps, {
|
|
42
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CartesianProviderPro.CartesianProviderPro, (0, _extends2.default)({}, cartesianProviderProps, {
|
|
43
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ZAxisContextProvider, (0, _extends2.default)({}, zAxisContextProps, {
|
|
44
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.HighlightedProvider, (0, _extends2.default)({}, highlightedProviderProps, {
|
|
45
|
-
children: children
|
|
46
|
-
}))
|
|
47
|
-
}))
|
|
48
|
-
}))
|
|
49
|
-
}))
|
|
50
|
-
}))
|
|
51
|
-
}))
|
|
52
|
-
}))
|
|
53
|
-
}))
|
|
54
|
-
}))
|
|
55
|
-
});
|
|
56
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _ChartDataProviderPro = require("./ChartDataProviderPro");
|
|
7
|
-
Object.keys(_ChartDataProviderPro).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _ChartDataProviderPro[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _ChartDataProviderPro[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.useChartContainerProProps = void 0;
|
|
9
|
-
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
-
var _internals = require("@mui/x-charts/internals");
|
|
11
|
-
const _excluded = ["zoom", "onZoomChange"];
|
|
12
|
-
const useChartContainerProProps = props => {
|
|
13
|
-
const {
|
|
14
|
-
zoom,
|
|
15
|
-
onZoomChange
|
|
16
|
-
} = props,
|
|
17
|
-
baseProps = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
18
|
-
const {
|
|
19
|
-
children,
|
|
20
|
-
drawingAreaProviderProps,
|
|
21
|
-
seriesProviderProps,
|
|
22
|
-
cartesianProviderProps,
|
|
23
|
-
zAxisContextProps,
|
|
24
|
-
highlightedProviderProps,
|
|
25
|
-
sizeProviderProps,
|
|
26
|
-
pluginProviderProps,
|
|
27
|
-
animationProviderProps,
|
|
28
|
-
xAxis,
|
|
29
|
-
yAxis
|
|
30
|
-
} = (0, _internals.useChartDataProviderProps)(baseProps);
|
|
31
|
-
const zoomProviderProps = {
|
|
32
|
-
zoom,
|
|
33
|
-
onZoomChange,
|
|
34
|
-
xAxis,
|
|
35
|
-
yAxis
|
|
36
|
-
};
|
|
37
|
-
return {
|
|
38
|
-
zoomProviderProps,
|
|
39
|
-
children,
|
|
40
|
-
drawingAreaProviderProps,
|
|
41
|
-
pluginProviderProps,
|
|
42
|
-
seriesProviderProps,
|
|
43
|
-
cartesianProviderProps,
|
|
44
|
-
zAxisContextProps,
|
|
45
|
-
highlightedProviderProps,
|
|
46
|
-
sizeProviderProps,
|
|
47
|
-
animationProviderProps
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
exports.useChartContainerProProps = useChartContainerProProps;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.ZoomContext = void 0;
|
|
8
|
-
var React = _interopRequireWildcard(require("react"));
|
|
9
|
-
const ZoomContext = exports.ZoomContext = /*#__PURE__*/React.createContext({
|
|
10
|
-
isInitialized: false,
|
|
11
|
-
data: {
|
|
12
|
-
isZoomEnabled: false,
|
|
13
|
-
isPanEnabled: false,
|
|
14
|
-
options: {},
|
|
15
|
-
zoomData: [],
|
|
16
|
-
setZoomData: () => {},
|
|
17
|
-
isInteracting: false,
|
|
18
|
-
setIsInteracting: () => {}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
22
|
-
ZoomContext.displayName = 'ZoomContext';
|
|
23
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.ZoomProvider = ZoomProvider;
|
|
10
|
-
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _useControlled = _interopRequireDefault(require("@mui/utils/useControlled"));
|
|
12
|
-
var _ZoomContext = require("./ZoomContext");
|
|
13
|
-
var _defaultizeZoom = require("./defaultizeZoom");
|
|
14
|
-
var _initializeZoomData = require("./initializeZoomData");
|
|
15
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
function ZoomProvider({
|
|
17
|
-
children,
|
|
18
|
-
xAxis,
|
|
19
|
-
yAxis,
|
|
20
|
-
zoom,
|
|
21
|
-
onZoomChange
|
|
22
|
-
}) {
|
|
23
|
-
const [isInteracting, setIsInteracting] = React.useState(false);
|
|
24
|
-
const options = React.useMemo(() => [...(0, _defaultizeZoom.defaultizeZoom)(xAxis, 'x'), ...(0, _defaultizeZoom.defaultizeZoom)(yAxis, 'y')].reduce((acc, v) => {
|
|
25
|
-
acc[v.axisId] = v;
|
|
26
|
-
return acc;
|
|
27
|
-
}, {}), [xAxis, yAxis]);
|
|
28
|
-
|
|
29
|
-
// Default zoom data is initialized only once when uncontrolled. If the user changes the options
|
|
30
|
-
// after the initial render, the zoom data will not be updated until the next zoom interaction.
|
|
31
|
-
// This is required to avoid warnings about controlled/uncontrolled components.
|
|
32
|
-
const defaultZoomData = React.useRef((0, _initializeZoomData.initializeZoomData)(options));
|
|
33
|
-
const [zoomData, setZoomData] = (0, _useControlled.default)({
|
|
34
|
-
controlled: zoom,
|
|
35
|
-
// eslint-disable-next-line react-compiler/react-compiler
|
|
36
|
-
default: defaultZoomData.current,
|
|
37
|
-
name: 'ZoomProvider',
|
|
38
|
-
state: 'zoom'
|
|
39
|
-
});
|
|
40
|
-
const setZoomDataCallback = React.useCallback(newZoomData => {
|
|
41
|
-
setZoomData(newZoomData);
|
|
42
|
-
onZoomChange?.(newZoomData);
|
|
43
|
-
}, [setZoomData, onZoomChange]);
|
|
44
|
-
const value = React.useMemo(() => ({
|
|
45
|
-
isInitialized: true,
|
|
46
|
-
data: {
|
|
47
|
-
isZoomEnabled: Object.keys(options).length > 0,
|
|
48
|
-
isPanEnabled: isPanEnabled(options),
|
|
49
|
-
options,
|
|
50
|
-
zoomData,
|
|
51
|
-
setZoomData: setZoomDataCallback,
|
|
52
|
-
isInteracting,
|
|
53
|
-
setIsInteracting
|
|
54
|
-
}
|
|
55
|
-
}), [zoomData, isInteracting, setIsInteracting, options, setZoomDataCallback]);
|
|
56
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ZoomContext.ZoomContext.Provider, {
|
|
57
|
-
value: value,
|
|
58
|
-
children: children
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
function isPanEnabled(options) {
|
|
62
|
-
return Object.values(options).some(v => v.panning) || false;
|
|
63
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ZoomSetup = ZoomSetup;
|
|
7
|
-
var _useSetupPan = require("./useSetupPan");
|
|
8
|
-
var _useSetupZoom = require("./useSetupZoom");
|
|
9
|
-
/**
|
|
10
|
-
* Sets up the zoom functionality if using composition or a custom chart.
|
|
11
|
-
*
|
|
12
|
-
* Simply add this component at the same level as the chart component to enable zooming and panning.
|
|
13
|
-
*
|
|
14
|
-
* See: [Composition](https://mui.com/x/react-charts/composition/)
|
|
15
|
-
*/
|
|
16
|
-
function ZoomSetup() {
|
|
17
|
-
(0, _useSetupZoom.useSetupZoom)();
|
|
18
|
-
(0, _useSetupPan.useSetupPan)();
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.defaultizeZoom = void 0;
|
|
8
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
var _internals = require("@mui/x-charts/internals");
|
|
10
|
-
const defaultZoomOptions = {
|
|
11
|
-
minStart: 0,
|
|
12
|
-
maxEnd: 100,
|
|
13
|
-
step: 5,
|
|
14
|
-
minSpan: 10,
|
|
15
|
-
maxSpan: 100,
|
|
16
|
-
panning: true,
|
|
17
|
-
filterMode: 'keep'
|
|
18
|
-
};
|
|
19
|
-
const defaultizeZoom = (axis, axisDirection) => {
|
|
20
|
-
if (!axis) {
|
|
21
|
-
return [];
|
|
22
|
-
}
|
|
23
|
-
const defaultized = axis.map(v => {
|
|
24
|
-
if (!v.zoom) {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
if (v.zoom === true) {
|
|
28
|
-
return (0, _extends2.default)({
|
|
29
|
-
axisId: v.id,
|
|
30
|
-
axisDirection
|
|
31
|
-
}, defaultZoomOptions);
|
|
32
|
-
}
|
|
33
|
-
return (0, _extends2.default)({
|
|
34
|
-
axisId: v.id,
|
|
35
|
-
axisDirection
|
|
36
|
-
}, defaultZoomOptions, v.zoom);
|
|
37
|
-
}).filter(_internals.isDefined);
|
|
38
|
-
return defaultized;
|
|
39
|
-
};
|
|
40
|
-
exports.defaultizeZoom = defaultizeZoom;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _ZoomContext = require("./ZoomContext");
|
|
7
|
-
Object.keys(_ZoomContext).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _ZoomContext[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _ZoomContext[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
var _ZoomProvider = require("./ZoomProvider");
|
|
18
|
-
Object.keys(_ZoomProvider).forEach(function (key) {
|
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
|
20
|
-
if (key in exports && exports[key] === _ZoomProvider[key]) return;
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _ZoomProvider[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
var _Zoom = require("./Zoom.types");
|
|
29
|
-
Object.keys(_Zoom).forEach(function (key) {
|
|
30
|
-
if (key === "default" || key === "__esModule") return;
|
|
31
|
-
if (key in exports && exports[key] === _Zoom[key]) return;
|
|
32
|
-
Object.defineProperty(exports, key, {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _Zoom[key];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.initializeZoomData = void 0;
|
|
7
|
-
// This function is used to initialize the zoom data when it is not provided by the user.
|
|
8
|
-
// It is helpful to avoid the need to provide the possibly auto-generated id for each axis.
|
|
9
|
-
const initializeZoomData = options => {
|
|
10
|
-
return Object.values(options).map(({
|
|
11
|
-
axisId,
|
|
12
|
-
minStart: start,
|
|
13
|
-
maxEnd: end
|
|
14
|
-
}) => ({
|
|
15
|
-
axisId,
|
|
16
|
-
start,
|
|
17
|
-
end
|
|
18
|
-
}));
|
|
19
|
-
};
|
|
20
|
-
exports.initializeZoomData = initializeZoomData;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.useSetupPan = void 0;
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _hooks = require("@mui/x-charts/hooks");
|
|
13
|
-
var _internals = require("@mui/x-charts/internals");
|
|
14
|
-
var _useZoom = require("./useZoom");
|
|
15
|
-
const useSetupPan = () => {
|
|
16
|
-
const {
|
|
17
|
-
zoomData,
|
|
18
|
-
setZoomData,
|
|
19
|
-
setIsInteracting,
|
|
20
|
-
isPanEnabled,
|
|
21
|
-
options
|
|
22
|
-
} = (0, _useZoom.useZoom)();
|
|
23
|
-
const drawingArea = (0, _hooks.useDrawingArea)();
|
|
24
|
-
const svgRef = (0, _hooks.useSvgRef)();
|
|
25
|
-
const isDraggingRef = React.useRef(false);
|
|
26
|
-
const touchStartRef = React.useRef(null);
|
|
27
|
-
const eventCacheRef = React.useRef([]);
|
|
28
|
-
React.useEffect(() => {
|
|
29
|
-
const element = svgRef.current;
|
|
30
|
-
if (element === null || !isPanEnabled) {
|
|
31
|
-
return () => {};
|
|
32
|
-
}
|
|
33
|
-
const handlePan = event => {
|
|
34
|
-
if (element === null || !isDraggingRef.current || eventCacheRef.current.length > 1) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (touchStartRef.current == null) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const point = (0, _internals.getSVGPoint)(element, event);
|
|
41
|
-
const movementX = point.x - touchStartRef.current.x;
|
|
42
|
-
const movementY = (point.y - touchStartRef.current.y) * -1;
|
|
43
|
-
const newZoomData = touchStartRef.current.zoomData.map(zoom => {
|
|
44
|
-
const option = options[zoom.axisId];
|
|
45
|
-
if (!option || !option.panning) {
|
|
46
|
-
return zoom;
|
|
47
|
-
}
|
|
48
|
-
const min = zoom.start;
|
|
49
|
-
const max = zoom.end;
|
|
50
|
-
const span = max - min;
|
|
51
|
-
const MIN_PERCENT = option.minStart;
|
|
52
|
-
const MAX_PERCENT = option.maxEnd;
|
|
53
|
-
const movement = option.axisDirection === 'x' ? movementX : movementY;
|
|
54
|
-
const dimension = option.axisDirection === 'x' ? drawingArea.width : drawingArea.height;
|
|
55
|
-
let newMinPercent = min - movement / dimension * span;
|
|
56
|
-
let newMaxPercent = max - movement / dimension * span;
|
|
57
|
-
if (newMinPercent < MIN_PERCENT) {
|
|
58
|
-
newMinPercent = MIN_PERCENT;
|
|
59
|
-
newMaxPercent = newMinPercent + span;
|
|
60
|
-
}
|
|
61
|
-
if (newMaxPercent > MAX_PERCENT) {
|
|
62
|
-
newMaxPercent = MAX_PERCENT;
|
|
63
|
-
newMinPercent = newMaxPercent - span;
|
|
64
|
-
}
|
|
65
|
-
if (newMinPercent < MIN_PERCENT || newMaxPercent > MAX_PERCENT || span < option.minSpan || span > option.maxSpan) {
|
|
66
|
-
return zoom;
|
|
67
|
-
}
|
|
68
|
-
return (0, _extends2.default)({}, zoom, {
|
|
69
|
-
start: newMinPercent,
|
|
70
|
-
end: newMaxPercent
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
setZoomData(newZoomData);
|
|
74
|
-
};
|
|
75
|
-
const handleDown = event => {
|
|
76
|
-
eventCacheRef.current.push(event);
|
|
77
|
-
const point = (0, _internals.getSVGPoint)(element, event);
|
|
78
|
-
if (!drawingArea.isPointInside(point)) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// If there is only one pointer, prevent selecting text
|
|
83
|
-
if (eventCacheRef.current.length === 1) {
|
|
84
|
-
event.preventDefault();
|
|
85
|
-
}
|
|
86
|
-
isDraggingRef.current = true;
|
|
87
|
-
setIsInteracting(true);
|
|
88
|
-
touchStartRef.current = {
|
|
89
|
-
x: point.x,
|
|
90
|
-
y: point.y,
|
|
91
|
-
zoomData
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
const handleUp = event => {
|
|
95
|
-
eventCacheRef.current.splice(eventCacheRef.current.findIndex(cachedEvent => cachedEvent.pointerId === event.pointerId), 1);
|
|
96
|
-
setIsInteracting(false);
|
|
97
|
-
isDraggingRef.current = false;
|
|
98
|
-
touchStartRef.current = null;
|
|
99
|
-
};
|
|
100
|
-
element.addEventListener('pointerdown', handleDown);
|
|
101
|
-
document.addEventListener('pointermove', handlePan);
|
|
102
|
-
document.addEventListener('pointerup', handleUp);
|
|
103
|
-
document.addEventListener('pointercancel', handleUp);
|
|
104
|
-
document.addEventListener('pointerleave', handleUp);
|
|
105
|
-
return () => {
|
|
106
|
-
element.removeEventListener('pointerdown', handleDown);
|
|
107
|
-
document.removeEventListener('pointermove', handlePan);
|
|
108
|
-
document.removeEventListener('pointerup', handleUp);
|
|
109
|
-
document.removeEventListener('pointercancel', handleUp);
|
|
110
|
-
document.removeEventListener('pointerleave', handleUp);
|
|
111
|
-
};
|
|
112
|
-
}, [drawingArea, svgRef, isDraggingRef, setIsInteracting, zoomData, setZoomData, isPanEnabled, options]);
|
|
113
|
-
};
|
|
114
|
-
exports.useSetupPan = useSetupPan;
|