@mui/x-charts-pro 8.4.0 → 8.5.1
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 +13 -5
- package/BarChartPro/BarChartPro.js +19 -1
- package/CHANGELOG.md +215 -0
- package/ChartContainerPro/ChartContainerPro.d.ts +0 -1
- package/ChartContainerPro/ChartProApi.d.ts +28 -0
- package/ChartContainerPro/ChartProApi.js +5 -0
- package/ChartContainerPro/index.d.ts +2 -1
- package/ChartContainerPro/index.js +11 -0
- package/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
- package/ChartDataProviderPro/ChartDataProviderPro.js +19 -3
- package/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
- package/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +25 -315
- package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +22 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +283 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +138 -0
- package/ChartZoomSlider/internals/constants.d.ts +5 -0
- package/ChartZoomSlider/internals/constants.js +11 -0
- package/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
- package/ChartZoomSlider/internals/zoom-utils.js +48 -0
- package/ChartsToolbarPro/ChartsToolbarPro.d.ts +5 -1
- package/ChartsToolbarPro/ChartsToolbarPro.js +35 -7
- package/ChartsToolbarPro/ChartsToolbarZoomInTrigger.d.ts +17 -0
- package/ChartsToolbarPro/ChartsToolbarZoomInTrigger.js +57 -0
- package/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.d.ts +17 -0
- package/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.js +57 -0
- package/ChartsToolbarPro/index.d.ts +3 -1
- package/ChartsToolbarPro/index.js +22 -0
- package/FunnelChart/FunnelChart.d.ts +2 -1
- package/FunnelChart/FunnelChart.js +2 -20
- package/FunnelChart/FunnelChart.plugins.d.ts +4 -0
- package/FunnelChart/FunnelChart.plugins.js +9 -0
- package/FunnelChart/FunnelPlot.js +10 -22
- package/FunnelChart/FunnelSection.d.ts +1 -1
- package/FunnelChart/FunnelSectionLabel.d.ts +21 -0
- package/FunnelChart/FunnelSectionLabel.js +52 -0
- package/FunnelChart/curves/bump.d.ts +10 -4
- package/FunnelChart/curves/bump.js +73 -41
- package/FunnelChart/curves/curve.types.d.ts +6 -1
- package/FunnelChart/curves/getFunnelCurve.js +3 -0
- package/FunnelChart/curves/linear.d.ts +9 -1
- package/FunnelChart/curves/linear.js +82 -5
- package/FunnelChart/funnel.types.d.ts +1 -0
- package/FunnelChart/funnelPlotSlots.types.d.ts +11 -0
- package/FunnelChart/funnelSectionClasses.d.ts +2 -0
- package/FunnelChart/funnelSectionClasses.js +17 -4
- package/FunnelChart/funnelSlots.types.d.ts +4 -3
- package/FunnelChart/index.d.ts +3 -1
- package/FunnelChart/index.js +18 -2
- package/FunnelChart/useFunnelChartProps.d.ts +2 -1
- package/FunnelChart/useFunnelChartProps.js +3 -1
- package/Heatmap/Heatmap.d.ts +22 -4
- package/Heatmap/Heatmap.js +64 -22
- package/Heatmap/Heatmap.plugins.d.ts +2 -1
- package/Heatmap/Heatmap.plugins.js +2 -1
- package/Heatmap/HeatmapTooltip/HeatmapTooltipAxesValue.d.ts +1 -1
- package/LineChartPro/LineChartPro.d.ts +13 -5
- package/LineChartPro/LineChartPro.js +19 -1
- package/PieChartPro/PieChartPro.d.ts +21 -0
- package/PieChartPro/PieChartPro.js +204 -0
- package/PieChartPro/PieChartPro.plugins.d.ts +4 -0
- package/PieChartPro/PieChartPro.plugins.js +9 -0
- package/PieChartPro/index.d.ts +1 -0
- package/PieChartPro/index.js +16 -0
- package/RadarChartPro/RadarChartPro.d.ts +15 -0
- package/RadarChartPro/RadarChartPro.js +202 -0
- package/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
- package/RadarChartPro/RadarChartPro.plugins.js +9 -0
- package/RadarChartPro/index.d.ts +1 -0
- package/RadarChartPro/index.js +16 -0
- package/ScatterChartPro/ScatterChartPro.d.ts +13 -5
- package/ScatterChartPro/ScatterChartPro.js +19 -1
- package/context/index.d.ts +1 -0
- package/context/index.js +16 -0
- package/context/useChartApiContext.d.ts +9 -0
- package/context/useChartApiContext.js +17 -0
- package/esm/BarChartPro/BarChartPro.d.ts +13 -5
- package/esm/BarChartPro/BarChartPro.js +19 -1
- package/esm/ChartContainerPro/ChartContainerPro.d.ts +0 -1
- package/esm/ChartContainerPro/ChartProApi.d.ts +28 -0
- package/esm/ChartContainerPro/ChartProApi.js +1 -0
- package/esm/ChartContainerPro/index.d.ts +2 -1
- package/esm/ChartContainerPro/index.js +2 -1
- package/esm/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
- package/esm/ChartDataProviderPro/ChartDataProviderPro.js +20 -4
- package/esm/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
- package/esm/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +19 -306
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +22 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +275 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +130 -0
- package/esm/ChartZoomSlider/internals/constants.d.ts +5 -0
- package/esm/ChartZoomSlider/internals/constants.js +5 -0
- package/esm/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
- package/esm/ChartZoomSlider/internals/zoom-utils.js +40 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +5 -1
- package/esm/ChartsToolbarPro/ChartsToolbarPro.js +36 -9
- package/esm/ChartsToolbarPro/ChartsToolbarZoomInTrigger.d.ts +17 -0
- package/esm/ChartsToolbarPro/ChartsToolbarZoomInTrigger.js +51 -0
- package/esm/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.d.ts +17 -0
- package/esm/ChartsToolbarPro/ChartsToolbarZoomOutTrigger.js +51 -0
- package/esm/ChartsToolbarPro/index.d.ts +3 -1
- package/esm/ChartsToolbarPro/index.js +3 -1
- package/esm/FunnelChart/FunnelChart.d.ts +2 -1
- package/esm/FunnelChart/FunnelChart.js +2 -20
- package/esm/FunnelChart/FunnelChart.plugins.d.ts +4 -0
- package/esm/FunnelChart/FunnelChart.plugins.js +3 -0
- package/esm/FunnelChart/FunnelPlot.js +10 -22
- package/esm/FunnelChart/FunnelSection.d.ts +1 -1
- package/esm/FunnelChart/FunnelSectionLabel.d.ts +21 -0
- package/esm/FunnelChart/FunnelSectionLabel.js +46 -0
- package/esm/FunnelChart/curves/bump.d.ts +10 -4
- package/esm/FunnelChart/curves/bump.js +73 -41
- package/esm/FunnelChart/curves/curve.types.d.ts +6 -1
- package/esm/FunnelChart/curves/getFunnelCurve.js +3 -0
- package/esm/FunnelChart/curves/linear.d.ts +9 -1
- package/esm/FunnelChart/curves/linear.js +82 -5
- package/esm/FunnelChart/funnel.types.d.ts +1 -0
- package/esm/FunnelChart/funnelPlotSlots.types.d.ts +11 -0
- package/esm/FunnelChart/funnelSectionClasses.d.ts +2 -0
- package/esm/FunnelChart/funnelSectionClasses.js +15 -3
- package/esm/FunnelChart/funnelSlots.types.d.ts +4 -3
- package/esm/FunnelChart/index.d.ts +3 -1
- package/esm/FunnelChart/index.js +3 -1
- package/esm/FunnelChart/useFunnelChartProps.d.ts +2 -1
- package/esm/FunnelChart/useFunnelChartProps.js +3 -1
- package/esm/Heatmap/Heatmap.d.ts +22 -4
- package/esm/Heatmap/Heatmap.js +64 -22
- package/esm/Heatmap/Heatmap.plugins.d.ts +2 -1
- package/esm/Heatmap/Heatmap.plugins.js +2 -1
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipAxesValue.d.ts +1 -1
- package/esm/LineChartPro/LineChartPro.d.ts +13 -5
- package/esm/LineChartPro/LineChartPro.js +19 -1
- package/esm/PieChartPro/PieChartPro.d.ts +21 -0
- package/esm/PieChartPro/PieChartPro.js +197 -0
- package/esm/PieChartPro/PieChartPro.plugins.d.ts +4 -0
- package/esm/PieChartPro/PieChartPro.plugins.js +3 -0
- package/esm/PieChartPro/index.d.ts +1 -0
- package/esm/PieChartPro/index.js +1 -0
- package/esm/RadarChartPro/RadarChartPro.d.ts +15 -0
- package/esm/RadarChartPro/RadarChartPro.js +195 -0
- package/esm/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
- package/esm/RadarChartPro/RadarChartPro.plugins.js +3 -0
- package/esm/RadarChartPro/index.d.ts +1 -0
- package/esm/RadarChartPro/index.js +1 -0
- package/esm/ScatterChartPro/ScatterChartPro.d.ts +13 -5
- package/esm/ScatterChartPro/ScatterChartPro.js +19 -1
- package/esm/context/index.d.ts +1 -0
- package/esm/context/index.js +1 -0
- package/esm/context/useChartApiContext.d.ts +9 -0
- package/esm/context/useChartApiContext.js +11 -0
- package/esm/hooks/index.d.ts +2 -1
- package/esm/hooks/index.js +2 -1
- package/esm/index.d.ts +3 -1
- package/esm/index.js +3 -1
- package/esm/internals/material/index.d.ts +1 -0
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +10 -0
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +15 -1
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
- package/esm/models/index.d.ts +1 -1
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +21 -10
- package/index.d.ts +3 -1
- package/index.js +23 -1
- package/internals/material/index.d.ts +1 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.js +10 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +16 -2
- package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
- package/models/index.d.ts +1 -1
- package/package.json +7 -7
- package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
- package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -36
- package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
- package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -36
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -29
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -29
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ChartAxisZoomSliderActiveTrack = ChartAxisZoomSliderActiveTrack;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _styles = require("@mui/material/styles");
|
|
11
|
+
var _internals = require("@mui/x-charts/internals");
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
14
|
+
var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
|
|
15
|
+
var _ChartAxisZoomSliderThumb = require("./ChartAxisZoomSliderThumb");
|
|
16
|
+
var _ChartsTooltipZoomSliderValue = require("./ChartsTooltipZoomSliderValue");
|
|
17
|
+
var _zoomUtils = require("./zoom-utils");
|
|
18
|
+
var _constants = require("./constants");
|
|
19
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
const ZoomSliderActiveTrackRect = (0, _styles.styled)('rect')(({
|
|
21
|
+
theme
|
|
22
|
+
}) => ({
|
|
23
|
+
'&': {
|
|
24
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
|
|
25
|
+
cursor: 'grab'
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
function ChartAxisZoomSliderActiveTrack({
|
|
29
|
+
axisId,
|
|
30
|
+
axisDirection,
|
|
31
|
+
axisPosition,
|
|
32
|
+
zoomData,
|
|
33
|
+
reverse,
|
|
34
|
+
showTooltip,
|
|
35
|
+
onPointerEnter,
|
|
36
|
+
onPointerLeave
|
|
37
|
+
}) {
|
|
38
|
+
const {
|
|
39
|
+
instance,
|
|
40
|
+
svgRef
|
|
41
|
+
} = (0, _internals.useChartContext)();
|
|
42
|
+
const store = (0, _internals.useStore)();
|
|
43
|
+
const axis = (0, _internals.useSelector)(store, _internals.selectorChartAxis, axisId);
|
|
44
|
+
const drawingArea = (0, _internals.useDrawingArea)();
|
|
45
|
+
const activePreviewRectRef = React.useRef(null);
|
|
46
|
+
const [startThumbEl, setStartThumbEl] = React.useState(null);
|
|
47
|
+
const [endThumbEl, setEndThumbEl] = React.useState(null);
|
|
48
|
+
const {
|
|
49
|
+
tooltipStart,
|
|
50
|
+
tooltipEnd
|
|
51
|
+
} = getZoomSliderTooltipsText(axis, drawingArea);
|
|
52
|
+
const previewThumbWidth = axisDirection === 'x' ? _constants.ZOOM_SLIDER_THUMB_WIDTH : _constants.ZOOM_SLIDER_THUMB_HEIGHT;
|
|
53
|
+
const previewThumbHeight = axisDirection === 'x' ? _constants.ZOOM_SLIDER_THUMB_HEIGHT : _constants.ZOOM_SLIDER_THUMB_WIDTH;
|
|
54
|
+
React.useEffect(() => {
|
|
55
|
+
const activePreviewRect = activePreviewRectRef.current;
|
|
56
|
+
if (!activePreviewRect) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* min and max values of zoom to ensure the pointer anchor in the slider is maintained */
|
|
61
|
+
let pointerZoomMin;
|
|
62
|
+
let pointerZoomMax;
|
|
63
|
+
let prevPointerZoom = 0;
|
|
64
|
+
const onPointerMove = (0, _rafThrottle.rafThrottle)(event => {
|
|
65
|
+
const element = svgRef.current;
|
|
66
|
+
if (!element) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
70
|
+
let pointerZoom = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
|
|
71
|
+
if (pointerZoom === null) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
pointerZoom = Math.max(pointerZoomMin, Math.min(pointerZoomMax, pointerZoom));
|
|
75
|
+
const deltaZoom = pointerZoom - prevPointerZoom;
|
|
76
|
+
prevPointerZoom = pointerZoom;
|
|
77
|
+
instance.moveZoomRange(axisId, deltaZoom);
|
|
78
|
+
});
|
|
79
|
+
const onPointerUp = () => {
|
|
80
|
+
activePreviewRect.removeEventListener('pointermove', onPointerMove);
|
|
81
|
+
document.removeEventListener('pointerup', onPointerUp);
|
|
82
|
+
};
|
|
83
|
+
const onPointerDown = event => {
|
|
84
|
+
// Prevent text selection when dragging
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
activePreviewRect.setPointerCapture(event.pointerId);
|
|
87
|
+
const axisZoomData = (0, _useChartProZoom.selectorChartAxisZoomData)(store.getSnapshot(), axisId);
|
|
88
|
+
const element = svgRef.current;
|
|
89
|
+
if (!axisZoomData || !element) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
93
|
+
const pointerDownZoom = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
|
|
94
|
+
if (pointerDownZoom === null) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
prevPointerZoom = pointerDownZoom;
|
|
98
|
+
pointerZoomMin = pointerDownZoom - axisZoomData.start;
|
|
99
|
+
pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
|
|
100
|
+
document.addEventListener('pointerup', onPointerUp);
|
|
101
|
+
activePreviewRect.addEventListener('pointermove', onPointerMove);
|
|
102
|
+
};
|
|
103
|
+
activePreviewRect.addEventListener('pointerdown', onPointerDown);
|
|
104
|
+
|
|
105
|
+
// eslint-disable-next-line consistent-return
|
|
106
|
+
return () => {
|
|
107
|
+
activePreviewRect.removeEventListener('pointerdown', onPointerDown);
|
|
108
|
+
onPointerMove.clear();
|
|
109
|
+
};
|
|
110
|
+
}, [axisDirection, axisId, instance, reverse, store, svgRef]);
|
|
111
|
+
const onStartThumbMove = event => {
|
|
112
|
+
const element = svgRef.current;
|
|
113
|
+
if (!element) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
117
|
+
instance.setZoomData(prevZoomData => {
|
|
118
|
+
const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
|
|
119
|
+
return prevZoomData.map(zoom => {
|
|
120
|
+
if (zoom.axisId === axisId) {
|
|
121
|
+
const newStart = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
|
|
122
|
+
if (newStart === null) {
|
|
123
|
+
return zoom;
|
|
124
|
+
}
|
|
125
|
+
return (0, _extends2.default)({}, zoom, {
|
|
126
|
+
start: (0, _zoomUtils.calculateZoomStart)(newStart, zoom, zoomOptions)
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return zoom;
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
const onEndThumbMove = event => {
|
|
134
|
+
const element = svgRef.current;
|
|
135
|
+
if (!element) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
139
|
+
instance.setZoomData(prevZoomData => {
|
|
140
|
+
const {
|
|
141
|
+
left,
|
|
142
|
+
top,
|
|
143
|
+
width,
|
|
144
|
+
height
|
|
145
|
+
} = (0, _internals.selectorChartDrawingArea)(store.getSnapshot());
|
|
146
|
+
const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
|
|
147
|
+
return prevZoomData.map(zoom => {
|
|
148
|
+
if (zoom.axisId === axisId) {
|
|
149
|
+
let newEnd;
|
|
150
|
+
if (axisDirection === 'x') {
|
|
151
|
+
newEnd = (point.x - left) / width * 100;
|
|
152
|
+
} else {
|
|
153
|
+
newEnd = (top + height - point.y) / height * 100;
|
|
154
|
+
}
|
|
155
|
+
if (reverse) {
|
|
156
|
+
newEnd = 100 - newEnd;
|
|
157
|
+
}
|
|
158
|
+
return (0, _extends2.default)({}, zoom, {
|
|
159
|
+
end: (0, _zoomUtils.calculateZoomEnd)(newEnd, zoom, zoomOptions)
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return zoom;
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
let previewX;
|
|
167
|
+
let previewY;
|
|
168
|
+
let previewWidth;
|
|
169
|
+
let previewHeight;
|
|
170
|
+
let startThumbX;
|
|
171
|
+
let startThumbY;
|
|
172
|
+
let endThumbX;
|
|
173
|
+
let endThumbY;
|
|
174
|
+
if (axisDirection === 'x') {
|
|
175
|
+
previewX = zoomData.start / 100 * drawingArea.width;
|
|
176
|
+
previewY = 0;
|
|
177
|
+
previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
|
|
178
|
+
previewHeight = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
|
|
179
|
+
startThumbX = zoomData.start / 100 * drawingArea.width;
|
|
180
|
+
startThumbY = 0;
|
|
181
|
+
endThumbX = zoomData.end / 100 * drawingArea.width;
|
|
182
|
+
endThumbY = 0;
|
|
183
|
+
if (reverse) {
|
|
184
|
+
previewX = drawingArea.width - previewX - previewWidth;
|
|
185
|
+
startThumbX = drawingArea.width - startThumbX;
|
|
186
|
+
endThumbX = drawingArea.width - endThumbX;
|
|
187
|
+
}
|
|
188
|
+
startThumbX -= previewThumbWidth / 2;
|
|
189
|
+
endThumbX -= previewThumbWidth / 2;
|
|
190
|
+
} else {
|
|
191
|
+
previewX = 0;
|
|
192
|
+
previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
193
|
+
previewWidth = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
|
|
194
|
+
previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
|
|
195
|
+
startThumbX = 0;
|
|
196
|
+
startThumbY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
|
|
197
|
+
endThumbX = 0;
|
|
198
|
+
endThumbY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
199
|
+
if (reverse) {
|
|
200
|
+
previewY = drawingArea.height - previewY - previewHeight;
|
|
201
|
+
startThumbY = drawingArea.height - startThumbY;
|
|
202
|
+
endThumbY = drawingArea.height - endThumbY;
|
|
203
|
+
}
|
|
204
|
+
startThumbY -= previewThumbHeight / 2;
|
|
205
|
+
endThumbY -= previewThumbHeight / 2;
|
|
206
|
+
}
|
|
207
|
+
const previewOffset = (_constants.ZOOM_SLIDER_THUMB_HEIGHT - _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
|
|
208
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
209
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderActiveTrackRect, {
|
|
210
|
+
ref: activePreviewRectRef,
|
|
211
|
+
x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
|
|
212
|
+
y: previewY + (axisDirection === 'x' ? previewOffset : 0),
|
|
213
|
+
width: previewWidth,
|
|
214
|
+
height: previewHeight,
|
|
215
|
+
onPointerEnter: onPointerEnter,
|
|
216
|
+
onPointerLeave: onPointerLeave
|
|
217
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
|
|
218
|
+
ref: setStartThumbEl,
|
|
219
|
+
x: startThumbX,
|
|
220
|
+
y: startThumbY,
|
|
221
|
+
width: previewThumbWidth,
|
|
222
|
+
height: previewThumbHeight,
|
|
223
|
+
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
224
|
+
onMove: onStartThumbMove,
|
|
225
|
+
onPointerEnter: onPointerEnter,
|
|
226
|
+
onPointerLeave: onPointerLeave,
|
|
227
|
+
placement: "start"
|
|
228
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
|
|
229
|
+
ref: setEndThumbEl,
|
|
230
|
+
x: endThumbX,
|
|
231
|
+
y: endThumbY,
|
|
232
|
+
width: previewThumbWidth,
|
|
233
|
+
height: previewThumbHeight,
|
|
234
|
+
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
235
|
+
onMove: onEndThumbMove,
|
|
236
|
+
onPointerEnter: onPointerEnter,
|
|
237
|
+
onPointerLeave: onPointerLeave,
|
|
238
|
+
placement: "end"
|
|
239
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
|
|
240
|
+
anchorEl: startThumbEl,
|
|
241
|
+
open: showTooltip && tooltipStart !== '',
|
|
242
|
+
placement: axisPosition,
|
|
243
|
+
children: tooltipStart
|
|
244
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
|
|
245
|
+
anchorEl: endThumbEl,
|
|
246
|
+
open: showTooltip && tooltipEnd !== '',
|
|
247
|
+
placement: axisPosition,
|
|
248
|
+
children: tooltipEnd
|
|
249
|
+
})]
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Returns the text for the tooltips on the thumbs of the zoom slider.
|
|
255
|
+
*/
|
|
256
|
+
function getZoomSliderTooltipsText(axis, drawingArea) {
|
|
257
|
+
const formatValue = value => {
|
|
258
|
+
if (axis.valueFormatter) {
|
|
259
|
+
return axis.valueFormatter(value, {
|
|
260
|
+
location: 'zoom-slider-tooltip'
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return `${value}`;
|
|
264
|
+
};
|
|
265
|
+
const axisDirection = axis.position === 'top' || axis.position === 'bottom' ? 'x' : 'y';
|
|
266
|
+
let start = axisDirection === 'x' ? drawingArea.left : drawingArea.top;
|
|
267
|
+
const size = axisDirection === 'x' ? drawingArea.width : drawingArea.height;
|
|
268
|
+
let end = start + size;
|
|
269
|
+
if (axisDirection === 'y') {
|
|
270
|
+
[start, end] = [end, start]; // Invert for y-axis
|
|
271
|
+
}
|
|
272
|
+
if (axis.reverse) {
|
|
273
|
+
[start, end] = [end, start]; // Reverse the start and end if the axis is reversed
|
|
274
|
+
}
|
|
275
|
+
const startValue = (0, _internals.invertScale)(axis.scale, axis.data ?? [], start) ?? axis.data?.at(0);
|
|
276
|
+
const endValue = (0, _internals.invertScale)(axis.scale, axis.data ?? [], end) ?? axis.data?.at(-1);
|
|
277
|
+
const tooltipStart = formatValue(startValue);
|
|
278
|
+
const tooltipEnd = formatValue(endValue);
|
|
279
|
+
return {
|
|
280
|
+
tooltipStart,
|
|
281
|
+
tooltipEnd
|
|
282
|
+
};
|
|
283
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AxisId } from '@mui/x-charts/internals';
|
|
3
|
+
interface ChartAxisZoomSliderTrackProps extends React.ComponentProps<'rect'> {
|
|
4
|
+
axisId: AxisId;
|
|
5
|
+
axisDirection: 'x' | 'y';
|
|
6
|
+
reverse: boolean;
|
|
7
|
+
onSelectStart?: () => void;
|
|
8
|
+
onSelectEnd?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function ChartAxisZoomSliderTrack({
|
|
11
|
+
axisId,
|
|
12
|
+
axisDirection,
|
|
13
|
+
reverse,
|
|
14
|
+
onSelectStart,
|
|
15
|
+
onSelectEnd,
|
|
16
|
+
...other
|
|
17
|
+
}: ChartAxisZoomSliderTrackProps): React.JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ChartAxisZoomSliderTrack = ChartAxisZoomSliderTrack;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _internals = require("@mui/x-charts/internals");
|
|
13
|
+
var _styles = require("@mui/material/styles");
|
|
14
|
+
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
15
|
+
var _system = require("@mui/system");
|
|
16
|
+
var _zoomUtils = require("./zoom-utils");
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
const _excluded = ["axisId", "axisDirection", "reverse", "onSelectStart", "onSelectEnd"];
|
|
19
|
+
const ZoomSliderTrack = (0, _styles.styled)('rect', {
|
|
20
|
+
shouldForwardProp: prop => (0, _system.shouldForwardProp)(prop) && prop !== 'axisDirection' && prop !== 'isSelecting'
|
|
21
|
+
})(({
|
|
22
|
+
theme
|
|
23
|
+
}) => ({
|
|
24
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300],
|
|
25
|
+
cursor: 'pointer',
|
|
26
|
+
variants: [{
|
|
27
|
+
props: {
|
|
28
|
+
axisDirection: 'x',
|
|
29
|
+
isSelecting: true
|
|
30
|
+
},
|
|
31
|
+
style: {
|
|
32
|
+
cursor: 'ew-resize'
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
props: {
|
|
36
|
+
axisDirection: 'y',
|
|
37
|
+
isSelecting: true
|
|
38
|
+
},
|
|
39
|
+
style: {
|
|
40
|
+
cursor: 'ns-resize'
|
|
41
|
+
}
|
|
42
|
+
}]
|
|
43
|
+
}));
|
|
44
|
+
function ChartAxisZoomSliderTrack(_ref) {
|
|
45
|
+
let {
|
|
46
|
+
axisId,
|
|
47
|
+
axisDirection,
|
|
48
|
+
onSelectStart,
|
|
49
|
+
onSelectEnd
|
|
50
|
+
} = _ref,
|
|
51
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
52
|
+
const ref = React.useRef(null);
|
|
53
|
+
const {
|
|
54
|
+
instance,
|
|
55
|
+
svgRef
|
|
56
|
+
} = (0, _internals.useChartContext)();
|
|
57
|
+
const store = (0, _internals.useStore)();
|
|
58
|
+
const [isSelecting, setIsSelecting] = React.useState(false);
|
|
59
|
+
const onPointerDown = function onPointerDown(event) {
|
|
60
|
+
const rect = ref.current;
|
|
61
|
+
const element = svgRef.current;
|
|
62
|
+
if (!rect || !element) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const pointerDownPoint = (0, _internals.getSVGPoint)(element, event);
|
|
66
|
+
let zoomFromPointerDown = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerDownPoint);
|
|
67
|
+
if (zoomFromPointerDown === null) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const {
|
|
71
|
+
minStart,
|
|
72
|
+
maxEnd
|
|
73
|
+
} = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
|
|
74
|
+
|
|
75
|
+
// Ensure the zoomFromPointerDown is within the min and max range
|
|
76
|
+
zoomFromPointerDown = Math.max(Math.min(zoomFromPointerDown, maxEnd), minStart);
|
|
77
|
+
const onPointerMove = (0, _rafThrottle.rafThrottle)(function onPointerMove(pointerMoveEvent) {
|
|
78
|
+
const pointerMovePoint = (0, _internals.getSVGPoint)(element, pointerMoveEvent);
|
|
79
|
+
const zoomFromPointerMove = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerMovePoint);
|
|
80
|
+
if (zoomFromPointerMove === null) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
|
|
84
|
+
instance.setAxisZoomData(axisId, prevZoomData => {
|
|
85
|
+
if (zoomFromPointerMove > zoomFromPointerDown) {
|
|
86
|
+
const end = (0, _zoomUtils.calculateZoomEnd)(zoomFromPointerMove, (0, _extends2.default)({}, prevZoomData, {
|
|
87
|
+
start: zoomFromPointerDown
|
|
88
|
+
}), zoomOptions);
|
|
89
|
+
|
|
90
|
+
/* If the starting point is too close to the end that minSpan wouldn't be respected, we need to update the
|
|
91
|
+
* start point. */
|
|
92
|
+
const start = (0, _zoomUtils.calculateZoomStart)(zoomFromPointerDown, (0, _extends2.default)({}, prevZoomData, {
|
|
93
|
+
start: zoomFromPointerDown,
|
|
94
|
+
end
|
|
95
|
+
}), zoomOptions);
|
|
96
|
+
return (0, _extends2.default)({}, prevZoomData, {
|
|
97
|
+
start,
|
|
98
|
+
end
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const start = (0, _zoomUtils.calculateZoomStart)(zoomFromPointerMove, (0, _extends2.default)({}, prevZoomData, {
|
|
102
|
+
end: zoomFromPointerDown
|
|
103
|
+
}), zoomOptions);
|
|
104
|
+
|
|
105
|
+
/* If the starting point is too close to the start that minSpan wouldn't be respected, we need to update the
|
|
106
|
+
* start point. */
|
|
107
|
+
const end = (0, _zoomUtils.calculateZoomEnd)(zoomFromPointerDown, (0, _extends2.default)({}, prevZoomData, {
|
|
108
|
+
start,
|
|
109
|
+
end: zoomFromPointerDown
|
|
110
|
+
}), zoomOptions);
|
|
111
|
+
return (0, _extends2.default)({}, prevZoomData, {
|
|
112
|
+
start,
|
|
113
|
+
end
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
const onPointerUp = function onPointerUp(pointerUpEvent) {
|
|
118
|
+
rect.releasePointerCapture(pointerUpEvent.pointerId);
|
|
119
|
+
rect.removeEventListener('pointermove', onPointerMove);
|
|
120
|
+
document.removeEventListener('pointerup', onPointerUp);
|
|
121
|
+
setIsSelecting(false);
|
|
122
|
+
onSelectEnd?.();
|
|
123
|
+
};
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
event.stopPropagation();
|
|
126
|
+
rect.setPointerCapture(event.pointerId);
|
|
127
|
+
document.addEventListener('pointerup', onPointerUp);
|
|
128
|
+
rect.addEventListener('pointermove', onPointerMove);
|
|
129
|
+
onSelectStart?.();
|
|
130
|
+
setIsSelecting(true);
|
|
131
|
+
};
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderTrack, (0, _extends2.default)({
|
|
133
|
+
ref: ref,
|
|
134
|
+
onPointerDown: onPointerDown,
|
|
135
|
+
axisDirection: axisDirection,
|
|
136
|
+
isSelecting: isSelecting
|
|
137
|
+
}, other));
|
|
138
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ZOOM_SLIDER_TRACK_SIZE = exports.ZOOM_SLIDER_THUMB_WIDTH = exports.ZOOM_SLIDER_THUMB_HEIGHT = exports.ZOOM_SLIDER_SIZE = exports.ZOOM_SLIDER_ACTIVE_TRACK_SIZE = void 0;
|
|
7
|
+
const ZOOM_SLIDER_TRACK_SIZE = exports.ZOOM_SLIDER_TRACK_SIZE = 8;
|
|
8
|
+
const ZOOM_SLIDER_ACTIVE_TRACK_SIZE = exports.ZOOM_SLIDER_ACTIVE_TRACK_SIZE = 10;
|
|
9
|
+
const ZOOM_SLIDER_THUMB_HEIGHT = exports.ZOOM_SLIDER_THUMB_HEIGHT = 20;
|
|
10
|
+
const ZOOM_SLIDER_THUMB_WIDTH = exports.ZOOM_SLIDER_THUMB_WIDTH = 10;
|
|
11
|
+
const ZOOM_SLIDER_SIZE = exports.ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_TRACK_SIZE, ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AxisId, ChartState, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
|
|
2
|
+
export declare function calculateZoomFromPoint(state: ChartState<any>, axisId: AxisId, point: DOMPoint): number | null;
|
|
3
|
+
export declare function calculateZoomStart(newStart: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'minStart' | 'minSpan' | 'maxSpan'>): number;
|
|
4
|
+
export declare function calculateZoomEnd(newEnd: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'maxEnd' | 'minSpan' | 'maxSpan'>): number;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.calculateZoomEnd = calculateZoomEnd;
|
|
7
|
+
exports.calculateZoomFromPoint = calculateZoomFromPoint;
|
|
8
|
+
exports.calculateZoomStart = calculateZoomStart;
|
|
9
|
+
var _internals = require("@mui/x-charts/internals");
|
|
10
|
+
function calculateZoomFromPoint(state, axisId, point) {
|
|
11
|
+
const {
|
|
12
|
+
left,
|
|
13
|
+
top,
|
|
14
|
+
height,
|
|
15
|
+
width
|
|
16
|
+
} = (0, _internals.selectorChartDrawingArea)(state);
|
|
17
|
+
const axis = (0, _internals.selectorChartRawAxis)(state, axisId);
|
|
18
|
+
if (!axis) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const axisDirection = axis.position === 'right' || axis.position === 'left' ? 'y' : 'x';
|
|
22
|
+
let pointerZoom;
|
|
23
|
+
if (axisDirection === 'x') {
|
|
24
|
+
pointerZoom = (point.x - left) / width * 100;
|
|
25
|
+
} else {
|
|
26
|
+
pointerZoom = (top + height - point.y) / height * 100;
|
|
27
|
+
}
|
|
28
|
+
if (axis.reverse) {
|
|
29
|
+
pointerZoom = 100 - pointerZoom;
|
|
30
|
+
}
|
|
31
|
+
return pointerZoom;
|
|
32
|
+
}
|
|
33
|
+
function calculateZoomStart(newStart, currentZoom, options) {
|
|
34
|
+
const {
|
|
35
|
+
minStart,
|
|
36
|
+
minSpan,
|
|
37
|
+
maxSpan
|
|
38
|
+
} = options;
|
|
39
|
+
return Math.max(minStart, currentZoom.end - maxSpan, Math.min(currentZoom.end - minSpan, newStart));
|
|
40
|
+
}
|
|
41
|
+
function calculateZoomEnd(newEnd, currentZoom, options) {
|
|
42
|
+
const {
|
|
43
|
+
maxEnd,
|
|
44
|
+
minSpan,
|
|
45
|
+
maxSpan
|
|
46
|
+
} = options;
|
|
47
|
+
return Math.min(maxEnd, currentZoom.start + maxSpan, Math.max(currentZoom.start + minSpan, newEnd));
|
|
48
|
+
}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
+
/**
|
|
4
|
+
* The chart toolbar component for the pro package.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ChartsToolbarPro(props: ChartsToolbarProps): React.JSX.Element | null;
|
|
@@ -1,31 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.ChartsToolbarPro = ChartsToolbarPro;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
10
|
var _Toolbar = require("@mui/x-charts/Toolbar");
|
|
9
11
|
var React = _interopRequireWildcard(require("react"));
|
|
10
12
|
var _internals = require("@mui/x-charts/internals");
|
|
13
|
+
var _hooks = require("@mui/x-charts/hooks");
|
|
11
14
|
var _useChartProZoom = require("../internals/plugins/useChartProZoom");
|
|
12
|
-
var
|
|
13
|
-
var
|
|
15
|
+
var _ChartsToolbarZoomInTrigger = require("./ChartsToolbarZoomInTrigger");
|
|
16
|
+
var _ChartsToolbarZoomOutTrigger = require("./ChartsToolbarZoomOutTrigger");
|
|
14
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* The chart toolbar component for the pro package.
|
|
20
|
+
*/
|
|
21
|
+
function ChartsToolbarPro(props) {
|
|
22
|
+
const {
|
|
23
|
+
slots,
|
|
24
|
+
slotProps
|
|
25
|
+
} = (0, _internals.useChartsSlots)();
|
|
16
26
|
const {
|
|
17
27
|
store
|
|
18
28
|
} = (0, _internals.useChartContext)();
|
|
29
|
+
const {
|
|
30
|
+
localeText
|
|
31
|
+
} = (0, _hooks.useChartsLocalization)();
|
|
19
32
|
const isZoomEnabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartZoomIsEnabled);
|
|
20
33
|
const children = [];
|
|
21
34
|
if (isZoomEnabled) {
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
const Tooltip = slots.baseTooltip;
|
|
36
|
+
const ZoomOutIcon = slots.zoomOutIcon;
|
|
37
|
+
const ZoomInIcon = slots.zoomInIcon;
|
|
38
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
|
|
39
|
+
title: localeText.zoomIn,
|
|
40
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomInTrigger.ChartsToolbarZoomInTrigger, {
|
|
41
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {}),
|
|
42
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomInIcon, (0, _extends2.default)({}, slotProps.zoomInIcon))
|
|
43
|
+
})
|
|
44
|
+
}), "zoom-in"));
|
|
45
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
|
|
46
|
+
title: localeText.zoomOut,
|
|
47
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomOutTrigger.ChartsToolbarZoomOutTrigger, {
|
|
48
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {}),
|
|
49
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomOutIcon, (0, _extends2.default)({}, slotProps.zoomOutIcon))
|
|
50
|
+
})
|
|
51
|
+
}), "zoom-out"));
|
|
24
52
|
}
|
|
25
53
|
if (children.length === 0) {
|
|
26
54
|
return null;
|
|
27
55
|
}
|
|
28
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, {
|
|
56
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, (0, _extends2.default)({}, props, {
|
|
29
57
|
children: children
|
|
30
|
-
});
|
|
58
|
+
}));
|
|
31
59
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartsSlotProps } from '@mui/x-charts/internals';
|
|
3
|
+
import { RenderProp } from '@mui/x-internals/useComponentRenderer';
|
|
4
|
+
interface ChartsToolbarZoomInTriggerProps {
|
|
5
|
+
/**
|
|
6
|
+
* A function to customize the rendering of the component.
|
|
7
|
+
*/
|
|
8
|
+
render?: RenderProp<ChartsSlotProps['baseButton']>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A button that zooms the chart in.
|
|
12
|
+
* It renders the `baseButton` slot.
|
|
13
|
+
*/
|
|
14
|
+
declare const ChartsToolbarZoomInTrigger: React.ForwardRefExoticComponent<ChartsToolbarZoomInTriggerProps & {
|
|
15
|
+
children?: React.ReactNode | undefined;
|
|
16
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
17
|
+
export { ChartsToolbarZoomInTrigger };
|
|
@@ -0,0 +1,57 @@
|
|
|
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.ChartsToolbarZoomInTrigger = void 0;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
+
var _internals = require("@mui/x-charts/internals");
|
|
15
|
+
var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
|
|
16
|
+
var _useChartProZoom = require("../internals/plugins/useChartProZoom");
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
const _excluded = ["render"];
|
|
19
|
+
/**
|
|
20
|
+
* A button that zooms the chart in.
|
|
21
|
+
* It renders the `baseButton` slot.
|
|
22
|
+
*/
|
|
23
|
+
const ChartsToolbarZoomInTrigger = exports.ChartsToolbarZoomInTrigger = /*#__PURE__*/React.forwardRef(function ChartsToolbarZoomInTrigger(_ref, ref) {
|
|
24
|
+
let {
|
|
25
|
+
render
|
|
26
|
+
} = _ref,
|
|
27
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
28
|
+
const {
|
|
29
|
+
slots,
|
|
30
|
+
slotProps
|
|
31
|
+
} = (0, _internals.useChartsSlots)();
|
|
32
|
+
const {
|
|
33
|
+
instance,
|
|
34
|
+
store
|
|
35
|
+
} = (0, _internals.useChartContext)();
|
|
36
|
+
const disabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartCanZoomIn);
|
|
37
|
+
const element = (0, _useComponentRenderer.useComponentRenderer)(slots.baseButton, render, (0, _extends2.default)({}, slotProps.baseButton, {
|
|
38
|
+
onClick: () => instance.zoomIn(),
|
|
39
|
+
disabled
|
|
40
|
+
}, other, {
|
|
41
|
+
ref
|
|
42
|
+
}));
|
|
43
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
|
|
44
|
+
children: element
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarZoomInTrigger.displayName = "ChartsToolbarZoomInTrigger";
|
|
48
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarZoomInTrigger.propTypes = {
|
|
49
|
+
// ----------------------------- Warning --------------------------------
|
|
50
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
51
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
52
|
+
// ----------------------------------------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* A function to customize the rendering of the component.
|
|
55
|
+
*/
|
|
56
|
+
render: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func])
|
|
57
|
+
} : void 0;
|