@mui/x-charts-pro 8.2.0 → 8.3.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/BarChartPro/BarChartPro.d.ts +7 -1
- package/BarChartPro/BarChartPro.js +60 -4
- package/CHANGELOG.md +107 -0
- package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/ChartZoomSlider/ChartZoomSlider.d.ts +5 -0
- package/ChartZoomSlider/ChartZoomSlider.js +47 -0
- package/ChartZoomSlider/index.d.ts +2 -0
- package/ChartZoomSlider/index.js +27 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +23 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +348 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +12 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +92 -0
- package/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +17 -0
- package/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.js +27 -0
- package/ChartsToolbarPro/ChartsToolbarPro.d.ts +2 -0
- package/ChartsToolbarPro/ChartsToolbarPro.js +31 -0
- package/ChartsToolbarPro/index.d.ts +1 -0
- package/ChartsToolbarPro/index.js +16 -0
- package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +13 -0
- package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +36 -0
- package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +13 -0
- package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +36 -0
- package/FunnelChart/FunnelChart.js +2 -7
- package/FunnelChart/FunnelPlot.js +24 -3
- package/FunnelChart/FunnelSection.d.ts +1 -0
- package/FunnelChart/FunnelSection.js +12 -7
- package/FunnelChart/curves/borderRadiusPolygon.d.ts +8 -0
- package/FunnelChart/curves/borderRadiusPolygon.js +42 -0
- package/FunnelChart/curves/bump.d.ts +8 -5
- package/FunnelChart/curves/bump.js +21 -22
- package/FunnelChart/curves/curve.types.d.ts +33 -3
- package/FunnelChart/curves/getFunnelCurve.d.ts +2 -2
- package/FunnelChart/curves/getFunnelCurve.js +12 -4
- package/FunnelChart/curves/linear.d.ts +17 -9
- package/FunnelChart/curves/linear.js +62 -87
- package/FunnelChart/curves/pyramid.d.ts +34 -0
- package/FunnelChart/curves/pyramid.js +127 -0
- package/FunnelChart/curves/step-pyramid.d.ts +31 -0
- package/FunnelChart/curves/step-pyramid.js +107 -0
- package/FunnelChart/curves/step.d.ts +32 -0
- package/FunnelChart/curves/step.js +88 -0
- package/FunnelChart/curves/utils.d.ts +4 -0
- package/FunnelChart/curves/utils.js +29 -0
- package/FunnelChart/funnel.types.d.ts +23 -2
- package/FunnelChart/funnelSectionClasses.d.ts +5 -1
- package/FunnelChart/funnelSectionClasses.js +5 -2
- package/FunnelChart/seriesConfig/getSeriesWithDefaultValues.js +1 -0
- package/FunnelChart/useFunnelChartProps.d.ts +0 -5
- package/FunnelChart/useFunnelChartProps.js +0 -11
- package/Heatmap/Heatmap.d.ts +3 -3
- package/Heatmap/Heatmap.js +2 -20
- package/LineChartPro/LineChartPro.d.ts +7 -1
- package/LineChartPro/LineChartPro.js +60 -4
- package/ScatterChartPro/ScatterChartPro.d.ts +7 -1
- package/ScatterChartPro/ScatterChartPro.js +60 -4
- package/esm/BarChartPro/BarChartPro.d.ts +7 -1
- package/esm/BarChartPro/BarChartPro.js +60 -4
- package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/esm/ChartZoomSlider/ChartZoomSlider.d.ts +5 -0
- package/esm/ChartZoomSlider/ChartZoomSlider.js +41 -0
- package/esm/ChartZoomSlider/index.d.ts +2 -0
- package/esm/ChartZoomSlider/index.js +2 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +23 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +339 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +12 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +85 -0
- package/esm/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +17 -0
- package/esm/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.js +17 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +2 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPro.js +24 -0
- package/esm/ChartsToolbarPro/index.d.ts +1 -0
- package/esm/ChartsToolbarPro/index.js +1 -0
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +13 -0
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +29 -0
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +13 -0
- package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +29 -0
- package/esm/FunnelChart/FunnelChart.js +2 -7
- package/esm/FunnelChart/FunnelPlot.js +24 -3
- package/esm/FunnelChart/FunnelSection.d.ts +1 -0
- package/esm/FunnelChart/FunnelSection.js +12 -7
- package/esm/FunnelChart/curves/borderRadiusPolygon.d.ts +8 -0
- package/esm/FunnelChart/curves/borderRadiusPolygon.js +36 -0
- package/esm/FunnelChart/curves/bump.d.ts +8 -5
- package/esm/FunnelChart/curves/bump.js +21 -22
- package/esm/FunnelChart/curves/curve.types.d.ts +33 -3
- package/esm/FunnelChart/curves/getFunnelCurve.d.ts +2 -2
- package/esm/FunnelChart/curves/getFunnelCurve.js +12 -4
- package/esm/FunnelChart/curves/linear.d.ts +17 -9
- package/esm/FunnelChart/curves/linear.js +62 -86
- package/esm/FunnelChart/curves/pyramid.d.ts +34 -0
- package/esm/FunnelChart/curves/pyramid.js +121 -0
- package/esm/FunnelChart/curves/step-pyramid.d.ts +31 -0
- package/esm/FunnelChart/curves/step-pyramid.js +101 -0
- package/esm/FunnelChart/curves/step.d.ts +32 -0
- package/esm/FunnelChart/curves/step.js +82 -0
- package/esm/FunnelChart/curves/utils.d.ts +4 -0
- package/esm/FunnelChart/curves/utils.js +19 -0
- package/esm/FunnelChart/funnel.types.d.ts +23 -2
- package/esm/FunnelChart/funnelSectionClasses.d.ts +5 -1
- package/esm/FunnelChart/funnelSectionClasses.js +5 -2
- package/esm/FunnelChart/seriesConfig/getSeriesWithDefaultValues.js +1 -0
- package/esm/FunnelChart/useFunnelChartProps.d.ts +0 -5
- package/esm/FunnelChart/useFunnelChartProps.js +0 -11
- package/esm/Heatmap/Heatmap.d.ts +3 -3
- package/esm/Heatmap/Heatmap.js +2 -20
- package/esm/LineChartPro/LineChartPro.d.ts +7 -1
- package/esm/LineChartPro/LineChartPro.js +60 -4
- package/esm/ScatterChartPro/ScatterChartPro.d.ts +7 -1
- package/esm/ScatterChartPro/ScatterChartPro.js +60 -4
- package/esm/index.d.ts +4 -1
- package/esm/index.js +5 -2
- package/esm/internals/material/icons.d.ts +3 -0
- package/esm/internals/material/icons.js +13 -0
- package/esm/internals/material/index.d.ts +4 -0
- package/esm/internals/material/index.js +12 -0
- package/esm/internals/plugins/useChartProZoom/calculateZoom.d.ts +23 -0
- package/esm/internals/plugins/useChartProZoom/calculateZoom.js +32 -0
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.d.ts +1 -1
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +45 -3
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +63 -11
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +3 -2
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +17 -2
- package/esm/internals/slots/chartBaseSlotProps.d.ts +10 -0
- package/esm/internals/slots/chartBaseSlotProps.js +1 -0
- package/esm/internals/slots/chartsBaseSlots.d.ts +6 -0
- package/esm/internals/slots/chartsBaseSlots.js +1 -0
- package/esm/internals/slots/chartsIconSlots.d.ts +14 -0
- package/esm/internals/slots/chartsIconSlots.js +1 -0
- package/esm/typeOverloads/modules.d.ts +1 -1
- package/index.d.ts +4 -1
- package/index.js +90 -1
- package/internals/material/icons.d.ts +3 -0
- package/internals/material/icons.js +20 -0
- package/internals/material/index.d.ts +4 -0
- package/internals/material/index.js +19 -0
- package/internals/plugins/useChartProZoom/calculateZoom.d.ts +23 -0
- package/internals/plugins/useChartProZoom/calculateZoom.js +39 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.d.ts +1 -1
- package/internals/plugins/useChartProZoom/useChartProZoom.js +44 -2
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +63 -11
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +3 -2
- package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +17 -2
- package/internals/slots/chartBaseSlotProps.d.ts +10 -0
- package/internals/slots/chartBaseSlotProps.js +5 -0
- package/internals/slots/chartsBaseSlots.d.ts +6 -0
- package/internals/slots/chartsBaseSlots.js +5 -0
- package/internals/slots/chartsIconSlots.d.ts +14 -0
- package/internals/slots/chartsIconSlots.js +5 -0
- package/package.json +7 -7
- package/typeOverloads/modules.d.ts +1 -1
- package/FunnelChart/curves/funnelStep.d.ts +0 -25
- package/FunnelChart/curves/funnelStep.js +0 -87
- package/esm/FunnelChart/curves/funnelStep.d.ts +0 -25
- package/esm/FunnelChart/curves/funnelStep.js +0 -80
|
@@ -0,0 +1,348 @@
|
|
|
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.ChartAxisZoomSlider = ChartAxisZoomSlider;
|
|
10
|
+
exports.calculateZoomEnd = calculateZoomEnd;
|
|
11
|
+
exports.calculateZoomStart = calculateZoomStart;
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
var React = _interopRequireWildcard(require("react"));
|
|
14
|
+
var _internals = require("@mui/x-charts/internals");
|
|
15
|
+
var _styles = require("@mui/material/styles");
|
|
16
|
+
var _hooks = require("@mui/x-charts/hooks");
|
|
17
|
+
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
18
|
+
var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
|
|
19
|
+
var _ChartAxisZoomSliderHandle = require("./ChartAxisZoomSliderHandle");
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
const BackgroundRect = (0, _styles.styled)('rect')(({
|
|
22
|
+
theme
|
|
23
|
+
}) => ({
|
|
24
|
+
'&': {
|
|
25
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300]
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
const ZoomRangePreviewRect = (0, _styles.styled)('rect')(({
|
|
29
|
+
theme
|
|
30
|
+
}) => ({
|
|
31
|
+
'&': {
|
|
32
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
|
|
33
|
+
cursor: 'grab'
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
const ZOOM_SLIDER_BACKGROUND_SIZE = 8;
|
|
37
|
+
const ZOOM_SLIDER_FOREGROUND_SIZE = 10;
|
|
38
|
+
const ZOOM_SLIDER_HANDLE_HEIGHT = 20;
|
|
39
|
+
const ZOOM_SLIDER_HANDLE_WIDTH = 10;
|
|
40
|
+
const ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_BACKGROUND_SIZE, ZOOM_SLIDER_FOREGROUND_SIZE, ZOOM_SLIDER_HANDLE_HEIGHT, ZOOM_SLIDER_HANDLE_WIDTH);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Renders the zoom slider for a specific axis.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
function ChartAxisZoomSlider({
|
|
47
|
+
axisDirection,
|
|
48
|
+
axisId
|
|
49
|
+
}) {
|
|
50
|
+
const store = (0, _internals.useStore)();
|
|
51
|
+
const drawingArea = (0, _internals.useDrawingArea)();
|
|
52
|
+
const zoomData = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartAxisZoomData, axisId);
|
|
53
|
+
const {
|
|
54
|
+
xAxis
|
|
55
|
+
} = (0, _hooks.useXAxes)();
|
|
56
|
+
const {
|
|
57
|
+
yAxis
|
|
58
|
+
} = (0, _hooks.useYAxes)();
|
|
59
|
+
if (!zoomData) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
let x;
|
|
63
|
+
let y;
|
|
64
|
+
let reverse;
|
|
65
|
+
if (axisDirection === 'x') {
|
|
66
|
+
const axis = xAxis[axisId];
|
|
67
|
+
if (!axis) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const axisSize = axis.height;
|
|
71
|
+
x = drawingArea.left;
|
|
72
|
+
y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
|
|
73
|
+
reverse = axis.reverse ?? false;
|
|
74
|
+
} else {
|
|
75
|
+
const axis = yAxis[axisId];
|
|
76
|
+
if (!axis) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const axisSize = axis.width;
|
|
80
|
+
x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
|
|
81
|
+
y = drawingArea.top;
|
|
82
|
+
reverse = axis.reverse ?? false;
|
|
83
|
+
}
|
|
84
|
+
const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_BACKGROUND_SIZE) / 2;
|
|
85
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
|
|
86
|
+
transform: `translate(${x} ${y})`,
|
|
87
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundRect, {
|
|
88
|
+
x: axisDirection === 'x' ? 0 : backgroundRectOffset,
|
|
89
|
+
y: axisDirection === 'x' ? backgroundRectOffset : 0,
|
|
90
|
+
height: axisDirection === 'x' ? ZOOM_SLIDER_BACKGROUND_SIZE : drawingArea.height,
|
|
91
|
+
width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_BACKGROUND_SIZE,
|
|
92
|
+
rx: ZOOM_SLIDER_BACKGROUND_SIZE / 2,
|
|
93
|
+
ry: ZOOM_SLIDER_BACKGROUND_SIZE / 2
|
|
94
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartAxisZoomSliderSpan, {
|
|
95
|
+
zoomData: zoomData,
|
|
96
|
+
axisId: axisId,
|
|
97
|
+
axisDirection: axisDirection,
|
|
98
|
+
reverse: reverse
|
|
99
|
+
})]
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function ChartAxisZoomSliderSpan({
|
|
103
|
+
axisId,
|
|
104
|
+
axisDirection,
|
|
105
|
+
zoomData,
|
|
106
|
+
reverse
|
|
107
|
+
}) {
|
|
108
|
+
const {
|
|
109
|
+
instance,
|
|
110
|
+
svgRef
|
|
111
|
+
} = (0, _internals.useChartContext)();
|
|
112
|
+
const store = (0, _internals.useStore)();
|
|
113
|
+
const drawingArea = (0, _internals.useDrawingArea)();
|
|
114
|
+
const activePreviewRectRef = React.useRef(null);
|
|
115
|
+
const previewHandleWidth = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_WIDTH : ZOOM_SLIDER_HANDLE_HEIGHT;
|
|
116
|
+
const previewHandleHeight = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_HEIGHT : ZOOM_SLIDER_HANDLE_WIDTH;
|
|
117
|
+
React.useEffect(() => {
|
|
118
|
+
const activePreviewRect = activePreviewRectRef.current;
|
|
119
|
+
if (!activePreviewRect) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* min and max values of zoom to ensure the pointer anchor in the slider is maintained */
|
|
124
|
+
let pointerZoomMin;
|
|
125
|
+
let pointerZoomMax;
|
|
126
|
+
let prevPointerZoom = 0;
|
|
127
|
+
const onPointerMove = (0, _rafThrottle.rafThrottle)(event => {
|
|
128
|
+
const {
|
|
129
|
+
left,
|
|
130
|
+
top,
|
|
131
|
+
height,
|
|
132
|
+
width
|
|
133
|
+
} = (0, _internals.selectorChartDrawingArea)(store.getSnapshot());
|
|
134
|
+
const axisZoomData = (0, _useChartProZoom.selectorChartAxisZoomData)(store.getSnapshot(), axisId);
|
|
135
|
+
const element = svgRef.current;
|
|
136
|
+
if (!axisZoomData || !element) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
140
|
+
let pointerZoom;
|
|
141
|
+
if (axisDirection === 'x') {
|
|
142
|
+
pointerZoom = (point.x - left) / width * 100;
|
|
143
|
+
} else {
|
|
144
|
+
pointerZoom = (top + height - point.y) / height * 100;
|
|
145
|
+
}
|
|
146
|
+
if (reverse) {
|
|
147
|
+
pointerZoom = 100 - pointerZoom;
|
|
148
|
+
}
|
|
149
|
+
pointerZoom = Math.max(pointerZoomMin, Math.min(pointerZoomMax, pointerZoom));
|
|
150
|
+
const deltaZoom = pointerZoom - prevPointerZoom;
|
|
151
|
+
prevPointerZoom = pointerZoom;
|
|
152
|
+
instance.moveZoomRange(axisId, deltaZoom);
|
|
153
|
+
});
|
|
154
|
+
const onPointerUp = () => {
|
|
155
|
+
activePreviewRect.removeEventListener('pointermove', onPointerMove);
|
|
156
|
+
activePreviewRect.removeEventListener('pointerup', onPointerUp);
|
|
157
|
+
};
|
|
158
|
+
const onPointerDown = event => {
|
|
159
|
+
// Prevent text selection when dragging
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
activePreviewRect.setPointerCapture(event.pointerId);
|
|
162
|
+
const {
|
|
163
|
+
left,
|
|
164
|
+
top,
|
|
165
|
+
height,
|
|
166
|
+
width
|
|
167
|
+
} = (0, _internals.selectorChartDrawingArea)(store.getSnapshot());
|
|
168
|
+
const axisZoomData = (0, _useChartProZoom.selectorChartAxisZoomData)(store.getSnapshot(), axisId);
|
|
169
|
+
const element = svgRef.current;
|
|
170
|
+
if (!axisZoomData || !element) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
174
|
+
|
|
175
|
+
// The corresponding value of zoom where the pointer was pressed
|
|
176
|
+
let pointerDownZoom;
|
|
177
|
+
if (axisDirection === 'x') {
|
|
178
|
+
pointerDownZoom = (point.x - left) / width * 100;
|
|
179
|
+
} else {
|
|
180
|
+
pointerDownZoom = (top + height - point.y) / height * 100;
|
|
181
|
+
}
|
|
182
|
+
if (reverse) {
|
|
183
|
+
pointerDownZoom = 100 - pointerDownZoom;
|
|
184
|
+
}
|
|
185
|
+
prevPointerZoom = pointerDownZoom;
|
|
186
|
+
pointerZoomMin = pointerDownZoom - axisZoomData.start;
|
|
187
|
+
pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
|
|
188
|
+
activePreviewRect.addEventListener('pointerup', onPointerUp);
|
|
189
|
+
activePreviewRect.addEventListener('pointermove', onPointerMove);
|
|
190
|
+
};
|
|
191
|
+
activePreviewRect.addEventListener('pointerdown', onPointerDown);
|
|
192
|
+
|
|
193
|
+
// eslint-disable-next-line consistent-return
|
|
194
|
+
return () => {
|
|
195
|
+
activePreviewRect.removeEventListener('pointerdown', onPointerDown);
|
|
196
|
+
onPointerMove.clear();
|
|
197
|
+
};
|
|
198
|
+
}, [axisDirection, axisId, instance, reverse, store, svgRef]);
|
|
199
|
+
const onResizeStart = event => {
|
|
200
|
+
const element = svgRef.current;
|
|
201
|
+
if (!element) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
205
|
+
instance.setZoomData(prevZoomData => {
|
|
206
|
+
const {
|
|
207
|
+
left,
|
|
208
|
+
top,
|
|
209
|
+
width,
|
|
210
|
+
height
|
|
211
|
+
} = (0, _internals.selectorChartDrawingArea)(store.value);
|
|
212
|
+
const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.value, axisId);
|
|
213
|
+
return prevZoomData.map(zoom => {
|
|
214
|
+
if (zoom.axisId === axisId) {
|
|
215
|
+
let newStart;
|
|
216
|
+
if (axisDirection === 'x') {
|
|
217
|
+
newStart = (point.x - left) / width * 100;
|
|
218
|
+
} else {
|
|
219
|
+
newStart = (top + height - point.y) / height * 100;
|
|
220
|
+
}
|
|
221
|
+
if (reverse) {
|
|
222
|
+
newStart = 100 - newStart;
|
|
223
|
+
}
|
|
224
|
+
return (0, _extends2.default)({}, zoom, {
|
|
225
|
+
start: calculateZoomStart(newStart, zoom, zoomOptions)
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return zoom;
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
const onResizeEnd = event => {
|
|
233
|
+
const element = svgRef.current;
|
|
234
|
+
if (!element) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const point = (0, _internals.getSVGPoint)(element, event);
|
|
238
|
+
instance.setZoomData(prevZoomData => {
|
|
239
|
+
const {
|
|
240
|
+
left,
|
|
241
|
+
top,
|
|
242
|
+
width,
|
|
243
|
+
height
|
|
244
|
+
} = (0, _internals.selectorChartDrawingArea)(store.value);
|
|
245
|
+
const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.value, axisId);
|
|
246
|
+
return prevZoomData.map(zoom => {
|
|
247
|
+
if (zoom.axisId === axisId) {
|
|
248
|
+
let newEnd;
|
|
249
|
+
if (axisDirection === 'x') {
|
|
250
|
+
newEnd = (point.x - left) / width * 100;
|
|
251
|
+
} else {
|
|
252
|
+
newEnd = (top + height - point.y) / height * 100;
|
|
253
|
+
}
|
|
254
|
+
if (reverse) {
|
|
255
|
+
newEnd = 100 - newEnd;
|
|
256
|
+
}
|
|
257
|
+
return (0, _extends2.default)({}, zoom, {
|
|
258
|
+
end: calculateZoomEnd(newEnd, zoom, zoomOptions)
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return zoom;
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
let previewX;
|
|
266
|
+
let previewY;
|
|
267
|
+
let previewWidth;
|
|
268
|
+
let previewHeight;
|
|
269
|
+
let startHandleX;
|
|
270
|
+
let startHandleY;
|
|
271
|
+
let endHandleX;
|
|
272
|
+
let endHandleY;
|
|
273
|
+
if (axisDirection === 'x') {
|
|
274
|
+
previewX = zoomData.start / 100 * drawingArea.width;
|
|
275
|
+
previewY = 0;
|
|
276
|
+
previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
|
|
277
|
+
previewHeight = ZOOM_SLIDER_FOREGROUND_SIZE;
|
|
278
|
+
startHandleX = zoomData.start / 100 * drawingArea.width;
|
|
279
|
+
startHandleY = 0;
|
|
280
|
+
endHandleX = zoomData.end / 100 * drawingArea.width;
|
|
281
|
+
endHandleY = 0;
|
|
282
|
+
if (reverse) {
|
|
283
|
+
previewX = drawingArea.width - previewX - previewWidth;
|
|
284
|
+
startHandleX = drawingArea.width - startHandleX;
|
|
285
|
+
endHandleX = drawingArea.width - endHandleX;
|
|
286
|
+
}
|
|
287
|
+
startHandleX -= previewHandleWidth / 2;
|
|
288
|
+
endHandleX -= previewHandleWidth / 2;
|
|
289
|
+
} else {
|
|
290
|
+
previewX = 0;
|
|
291
|
+
previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
292
|
+
previewWidth = ZOOM_SLIDER_FOREGROUND_SIZE;
|
|
293
|
+
previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
|
|
294
|
+
startHandleX = 0;
|
|
295
|
+
startHandleY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
|
|
296
|
+
endHandleX = 0;
|
|
297
|
+
endHandleY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
298
|
+
if (reverse) {
|
|
299
|
+
previewY = drawingArea.height - previewY - previewHeight;
|
|
300
|
+
startHandleY = drawingArea.height - startHandleY;
|
|
301
|
+
endHandleY = drawingArea.height - endHandleY;
|
|
302
|
+
}
|
|
303
|
+
startHandleY -= previewHandleHeight / 2;
|
|
304
|
+
endHandleY -= previewHandleHeight / 2;
|
|
305
|
+
}
|
|
306
|
+
const previewOffset = (ZOOM_SLIDER_HANDLE_HEIGHT - ZOOM_SLIDER_FOREGROUND_SIZE) / 2;
|
|
307
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
308
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomRangePreviewRect, {
|
|
309
|
+
ref: activePreviewRectRef,
|
|
310
|
+
x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
|
|
311
|
+
y: previewY + (axisDirection === 'x' ? previewOffset : 0),
|
|
312
|
+
width: previewWidth,
|
|
313
|
+
height: previewHeight
|
|
314
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderHandle.ChartAxisZoomSliderHandle, {
|
|
315
|
+
x: startHandleX,
|
|
316
|
+
y: startHandleY,
|
|
317
|
+
width: previewHandleWidth,
|
|
318
|
+
height: previewHandleHeight,
|
|
319
|
+
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
320
|
+
onResize: onResizeStart,
|
|
321
|
+
placement: "start"
|
|
322
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderHandle.ChartAxisZoomSliderHandle, {
|
|
323
|
+
x: endHandleX,
|
|
324
|
+
y: endHandleY,
|
|
325
|
+
width: previewHandleWidth,
|
|
326
|
+
height: previewHandleHeight,
|
|
327
|
+
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
328
|
+
onResize: onResizeEnd,
|
|
329
|
+
placement: "end"
|
|
330
|
+
})]
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
function calculateZoomStart(newStart, currentZoom, options) {
|
|
334
|
+
const {
|
|
335
|
+
minStart,
|
|
336
|
+
minSpan,
|
|
337
|
+
maxSpan
|
|
338
|
+
} = options;
|
|
339
|
+
return Math.max(minStart, currentZoom.end - maxSpan, Math.min(currentZoom.end - minSpan, newStart));
|
|
340
|
+
}
|
|
341
|
+
function calculateZoomEnd(newEnd, currentZoom, options) {
|
|
342
|
+
const {
|
|
343
|
+
maxEnd,
|
|
344
|
+
minSpan,
|
|
345
|
+
maxSpan
|
|
346
|
+
} = options;
|
|
347
|
+
return Math.min(maxEnd, currentZoom.start + maxSpan, Math.max(currentZoom.start + minSpan, newEnd));
|
|
348
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface ChartZoomSliderHandleOwnerState {
|
|
3
|
+
onResize: (event: PointerEvent) => void;
|
|
4
|
+
orientation: 'horizontal' | 'vertical';
|
|
5
|
+
placement: 'start' | 'end';
|
|
6
|
+
}
|
|
7
|
+
export interface ChartZoomSliderHandleProps extends Pick<React.ComponentProps<'rect'>, 'x' | 'y' | 'width' | 'height' | 'rx' | 'ry'>, ChartZoomSliderHandleOwnerState {}
|
|
8
|
+
/**
|
|
9
|
+
* Renders the zoom slider handle, which is responsible for resizing the zoom range.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare const ChartAxisZoomSliderHandle: React.ForwardRefExoticComponent<ChartZoomSliderHandleProps & React.RefAttributes<SVGRectElement>>;
|
|
@@ -0,0 +1,92 @@
|
|
|
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.ChartAxisZoomSliderHandle = void 0;
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _styles = require("@mui/material/styles");
|
|
12
|
+
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
13
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
14
|
+
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
15
|
+
var _chartAxisZoomSliderHandleClasses = require("./chartAxisZoomSliderHandleClasses");
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
const Rect = (0, _styles.styled)('rect')(({
|
|
18
|
+
theme
|
|
19
|
+
}) => ({
|
|
20
|
+
[`&.${_chartAxisZoomSliderHandleClasses.chartAxisZoomSliderHandleClasses.root}`]: {
|
|
21
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[300] : (theme.vars || theme).palette.common.white,
|
|
22
|
+
stroke: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[600] : (theme.vars || theme).palette.grey[500]
|
|
23
|
+
},
|
|
24
|
+
[`&.${_chartAxisZoomSliderHandleClasses.chartAxisZoomSliderHandleClasses.horizontal}`]: {
|
|
25
|
+
cursor: 'ew-resize'
|
|
26
|
+
},
|
|
27
|
+
[`&.${_chartAxisZoomSliderHandleClasses.chartAxisZoomSliderHandleClasses.vertical}`]: {
|
|
28
|
+
cursor: 'ns-resize'
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
/**
|
|
32
|
+
* Renders the zoom slider handle, which is responsible for resizing the zoom range.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
const ChartAxisZoomSliderHandle = exports.ChartAxisZoomSliderHandle = /*#__PURE__*/React.forwardRef(function ChartPreviewHandle({
|
|
36
|
+
x,
|
|
37
|
+
y,
|
|
38
|
+
width,
|
|
39
|
+
height,
|
|
40
|
+
onResize,
|
|
41
|
+
orientation,
|
|
42
|
+
placement,
|
|
43
|
+
rx = 4,
|
|
44
|
+
ry = 4
|
|
45
|
+
}, forwardedRef) {
|
|
46
|
+
const classes = (0, _chartAxisZoomSliderHandleClasses.useUtilityClasses)({
|
|
47
|
+
onResize,
|
|
48
|
+
orientation,
|
|
49
|
+
placement
|
|
50
|
+
});
|
|
51
|
+
const handleRef = React.useRef(null);
|
|
52
|
+
const ref = (0, _useForkRef.default)(handleRef, forwardedRef);
|
|
53
|
+
const onResizeEvent = (0, _useEventCallback.default)(onResize);
|
|
54
|
+
React.useEffect(() => {
|
|
55
|
+
const handle = handleRef.current;
|
|
56
|
+
if (!handle) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const onPointerMove = (0, _rafThrottle.rafThrottle)(event => {
|
|
60
|
+
onResizeEvent(event);
|
|
61
|
+
});
|
|
62
|
+
const onPointerUp = () => {
|
|
63
|
+
handle.removeEventListener('pointermove', onPointerMove);
|
|
64
|
+
handle.removeEventListener('pointerup', onPointerUp);
|
|
65
|
+
};
|
|
66
|
+
const onPointerDown = event => {
|
|
67
|
+
// Prevent text selection when dragging the handle
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
event.stopPropagation();
|
|
70
|
+
handle.setPointerCapture(event.pointerId);
|
|
71
|
+
handle.addEventListener('pointerup', onPointerUp);
|
|
72
|
+
handle.addEventListener('pointermove', onPointerMove);
|
|
73
|
+
};
|
|
74
|
+
handle.addEventListener('pointerdown', onPointerDown);
|
|
75
|
+
|
|
76
|
+
// eslint-disable-next-line consistent-return
|
|
77
|
+
return () => {
|
|
78
|
+
handle.removeEventListener('pointerdown', onPointerDown);
|
|
79
|
+
onPointerMove.clear();
|
|
80
|
+
};
|
|
81
|
+
}, [onResizeEvent, orientation]);
|
|
82
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Rect, {
|
|
83
|
+
className: classes.root,
|
|
84
|
+
ref: ref,
|
|
85
|
+
x: x,
|
|
86
|
+
y: y,
|
|
87
|
+
width: width,
|
|
88
|
+
height: height,
|
|
89
|
+
rx: rx,
|
|
90
|
+
ry: ry
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChartZoomSliderHandleOwnerState } from "./ChartAxisZoomSliderHandle.js";
|
|
2
|
+
export interface ChartAxisZoomSliderHandleClasses {
|
|
3
|
+
/** Styles applied to the root element. */
|
|
4
|
+
root: string;
|
|
5
|
+
/** Styles applied to the root element when it is horizontal. */
|
|
6
|
+
horizontal: string;
|
|
7
|
+
/** Styles applied to the root element when it is vertical. */
|
|
8
|
+
vertical: string;
|
|
9
|
+
/** Styles applied to the root element when it is a start handle. */
|
|
10
|
+
start: string;
|
|
11
|
+
/** Styles applied to the root element when it is an end handle. */
|
|
12
|
+
end: string;
|
|
13
|
+
}
|
|
14
|
+
export type ChartAxisZoomSliderHandleClassKey = keyof ChartAxisZoomSliderHandleClasses;
|
|
15
|
+
export declare const chartAxisZoomSliderHandleClasses: ChartAxisZoomSliderHandleClasses;
|
|
16
|
+
export declare function getAxisZoomSliderHandleUtilityClass(slot: string): string;
|
|
17
|
+
export declare const useUtilityClasses: (ownerState: ChartZoomSliderHandleOwnerState) => Record<"root", string>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.chartAxisZoomSliderHandleClasses = void 0;
|
|
8
|
+
exports.getAxisZoomSliderHandleUtilityClass = getAxisZoomSliderHandleUtilityClass;
|
|
9
|
+
exports.useUtilityClasses = void 0;
|
|
10
|
+
var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
|
|
11
|
+
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
12
|
+
var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
|
|
13
|
+
const chartAxisZoomSliderHandleClasses = exports.chartAxisZoomSliderHandleClasses = (0, _generateUtilityClasses.default)('MuiChartAxisZoomSliderHandle', ['root', 'horizontal', 'vertical', 'start', 'end']);
|
|
14
|
+
function getAxisZoomSliderHandleUtilityClass(slot) {
|
|
15
|
+
return (0, _generateUtilityClass.default)('MuiChartAxisZoomSliderHandle', slot);
|
|
16
|
+
}
|
|
17
|
+
const useUtilityClasses = ownerState => {
|
|
18
|
+
const {
|
|
19
|
+
orientation,
|
|
20
|
+
placement
|
|
21
|
+
} = ownerState;
|
|
22
|
+
const slots = {
|
|
23
|
+
root: ['root', orientation === 'horizontal' ? 'horizontal' : 'vertical', placement === 'start' ? 'start' : 'end']
|
|
24
|
+
};
|
|
25
|
+
return (0, _composeClasses.default)(slots, getAxisZoomSliderHandleUtilityClass);
|
|
26
|
+
};
|
|
27
|
+
exports.useUtilityClasses = useUtilityClasses;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ChartsToolbarPro = ChartsToolbarPro;
|
|
8
|
+
var _Toolbar = require("@mui/x-charts/Toolbar");
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _internals = require("@mui/x-charts/internals");
|
|
11
|
+
var _useChartProZoom = require("../internals/plugins/useChartProZoom");
|
|
12
|
+
var _ChartsToolbarZoomInButton = require("./internal/ChartsToolbarZoomInButton");
|
|
13
|
+
var _ChartsToolbarZoomOutButton = require("./internal/ChartsToolbarZoomOutButton");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function ChartsToolbarPro() {
|
|
16
|
+
const {
|
|
17
|
+
store
|
|
18
|
+
} = (0, _internals.useChartContext)();
|
|
19
|
+
const isZoomEnabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartZoomIsEnabled);
|
|
20
|
+
const children = [];
|
|
21
|
+
if (isZoomEnabled) {
|
|
22
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomInButton.ChartsToolbarZoomInButton, {}, "zoom-in"));
|
|
23
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomOutButton.ChartsToolbarZoomOutButton, {}, "zoom-out"));
|
|
24
|
+
}
|
|
25
|
+
if (children.length === 0) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, {
|
|
29
|
+
children: children
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ChartsToolbarPro.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _ChartsToolbarPro = require("./ChartsToolbarPro");
|
|
7
|
+
Object.keys(_ChartsToolbarPro).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _ChartsToolbarPro[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _ChartsToolbarPro[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartsSlotsPro } from "../../internals/material/index.js";
|
|
3
|
+
type ChartsToolbarZoomInButtonSlots = Partial<Pick<ChartsSlotsPro, 'baseTooltip' | 'zoomInIcon'>>;
|
|
4
|
+
type ChartsToolbarZoomInButtonSlotProps = { [K in keyof Required<ChartsToolbarZoomInButtonSlots>]: React.ComponentProps<Required<ChartsToolbarZoomInButtonSlots>[K]> };
|
|
5
|
+
interface ChartsToolbarZoomInButtonProps {
|
|
6
|
+
slots?: ChartsToolbarZoomInButtonSlots;
|
|
7
|
+
slotProps?: ChartsToolbarZoomInButtonSlotProps;
|
|
8
|
+
}
|
|
9
|
+
export declare function ChartsToolbarZoomInButton({
|
|
10
|
+
slots,
|
|
11
|
+
slotProps
|
|
12
|
+
}: ChartsToolbarZoomInButtonProps): React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
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.ChartsToolbarZoomInButton = ChartsToolbarZoomInButton;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _Toolbar = require("@mui/x-charts/Toolbar");
|
|
13
|
+
var _internals = require("@mui/x-charts/internals");
|
|
14
|
+
var _hooks = require("@mui/x-charts/hooks");
|
|
15
|
+
var _material = require("../../internals/material");
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
function ChartsToolbarZoomInButton({
|
|
18
|
+
slots,
|
|
19
|
+
slotProps
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
instance
|
|
23
|
+
} = (0, _internals.useChartContext)();
|
|
24
|
+
const ZoomInIcon = slots?.zoomInIcon ?? _material.defaultSlotsMaterial.zoomInIcon;
|
|
25
|
+
const Tooltip = slots?.baseTooltip ?? _material.defaultSlotsMaterial.baseTooltip;
|
|
26
|
+
const {
|
|
27
|
+
localeText
|
|
28
|
+
} = (0, _hooks.useChartsLocalization)();
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, {
|
|
30
|
+
title: localeText.zoomIn,
|
|
31
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
32
|
+
onClick: () => instance.zoomIn(),
|
|
33
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomInIcon, (0, _extends2.default)({}, slotProps?.zoomInIcon))
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartsSlotsPro } from "../../internals/material/index.js";
|
|
3
|
+
type ChartsToolbarZoomOutButtonSlots = Partial<Pick<ChartsSlotsPro, 'baseTooltip' | 'zoomOutIcon'>>;
|
|
4
|
+
type ChartsToolbarZoomOutButtonSlotProps = { [K in keyof Required<ChartsToolbarZoomOutButtonSlots>]: React.ComponentProps<Required<ChartsToolbarZoomOutButtonSlots>[K]> };
|
|
5
|
+
interface ChartsToolbarZoomOutButtonProps {
|
|
6
|
+
slots?: ChartsToolbarZoomOutButtonSlots;
|
|
7
|
+
slotProps?: ChartsToolbarZoomOutButtonSlotProps;
|
|
8
|
+
}
|
|
9
|
+
export declare function ChartsToolbarZoomOutButton({
|
|
10
|
+
slots,
|
|
11
|
+
slotProps
|
|
12
|
+
}: ChartsToolbarZoomOutButtonProps): React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
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.ChartsToolbarZoomOutButton = ChartsToolbarZoomOutButton;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _Toolbar = require("@mui/x-charts/Toolbar");
|
|
13
|
+
var _internals = require("@mui/x-charts/internals");
|
|
14
|
+
var _hooks = require("@mui/x-charts/hooks");
|
|
15
|
+
var _material = require("../../internals/material");
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
function ChartsToolbarZoomOutButton({
|
|
18
|
+
slots,
|
|
19
|
+
slotProps
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
instance
|
|
23
|
+
} = (0, _internals.useChartContext)();
|
|
24
|
+
const ZoomOutIcon = slots?.zoomOutIcon ?? _material.defaultSlotsMaterial.zoomOutIcon;
|
|
25
|
+
const Tooltip = slots?.baseTooltip ?? _material.defaultSlotsMaterial.baseTooltip;
|
|
26
|
+
const {
|
|
27
|
+
localeText
|
|
28
|
+
} = (0, _hooks.useChartsLocalization)();
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, {
|
|
30
|
+
title: localeText.zoomOut,
|
|
31
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
32
|
+
onClick: () => instance.zoomOut(),
|
|
33
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomOutIcon, (0, _extends2.default)({}, slotProps?.zoomOutIcon))
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|