@mui/x-charts-pro 8.3.0 → 8.4.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.js +37 -20
- package/CHANGELOG.md +206 -10
- package/ChartContainerPro/ChartContainerPro.js +1 -0
- package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/ChartZoomSlider/index.d.ts +1 -1
- package/ChartZoomSlider/index.js +4 -4
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +94 -60
- package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
- package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +92 -0
- package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
- package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +58 -0
- package/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
- package/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +6 -6
- package/FunnelChart/FunnelChart.js +4 -3
- package/FunnelChart/FunnelPlot.js +2 -0
- package/FunnelChart/FunnelSection.js +2 -1
- package/FunnelChart/curves/curve.types.d.ts +4 -0
- package/FunnelChart/curves/pyramid.d.ts +3 -1
- package/FunnelChart/curves/pyramid.js +37 -10
- package/FunnelChart/curves/step-pyramid.d.ts +10 -2
- package/FunnelChart/curves/step-pyramid.js +96 -20
- package/FunnelChart/curves/step.d.ts +5 -1
- package/FunnelChart/curves/step.js +20 -2
- package/FunnelChart/funnel.types.d.ts +7 -0
- package/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
- package/Heatmap/Heatmap.d.ts +1 -1
- package/Heatmap/Heatmap.js +25 -21
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +27 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.js +4 -102
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +5 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +96 -0
- package/Heatmap/HeatmapTooltip/index.d.ts +3 -1
- package/Heatmap/HeatmapTooltip/index.js +11 -0
- package/LineChartPro/LineChartPro.js +37 -20
- package/ScatterChartPro/ScatterChartPro.js +38 -21
- package/esm/BarChartPro/BarChartPro.js +35 -18
- package/esm/ChartContainerPro/ChartContainerPro.js +1 -0
- package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/esm/ChartZoomSlider/index.d.ts +1 -1
- package/esm/ChartZoomSlider/index.js +1 -1
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +94 -60
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +85 -0
- package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
- package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +52 -0
- package/esm/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
- package/esm/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +4 -4
- package/esm/FunnelChart/FunnelChart.js +4 -3
- package/esm/FunnelChart/FunnelPlot.js +2 -0
- package/esm/FunnelChart/FunnelSection.js +1 -0
- package/esm/FunnelChart/curves/curve.types.d.ts +4 -0
- package/esm/FunnelChart/curves/pyramid.d.ts +3 -1
- package/esm/FunnelChart/curves/pyramid.js +37 -10
- package/esm/FunnelChart/curves/step-pyramid.d.ts +10 -2
- package/esm/FunnelChart/curves/step-pyramid.js +96 -20
- package/esm/FunnelChart/curves/step.d.ts +5 -1
- package/esm/FunnelChart/curves/step.js +20 -2
- package/esm/FunnelChart/funnel.types.d.ts +7 -0
- package/esm/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
- package/esm/Heatmap/Heatmap.d.ts +1 -1
- package/esm/Heatmap/Heatmap.js +23 -19
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +19 -0
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.js +5 -103
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +1 -0
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
- package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +89 -0
- package/esm/Heatmap/HeatmapTooltip/index.d.ts +3 -1
- package/esm/Heatmap/HeatmapTooltip/index.js +3 -1
- package/esm/LineChartPro/LineChartPro.js +35 -18
- package/esm/ScatterChartPro/ScatterChartPro.js +36 -19
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -3
- package/esm/internals/plugins/useChartProExport/exportImage.js +1 -1
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +2 -2
- package/index.d.ts +1 -1
- package/index.js +1 -68
- package/internals/plugins/useChartProExport/exportImage.js +1 -1
- package/internals/plugins/useChartProZoom/useChartProZoom.js +2 -2
- package/package.json +5 -5
- package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
- package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -92
- package/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -85
- package/esm/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
|
@@ -15,17 +15,18 @@ var _internals = require("@mui/x-charts/internals");
|
|
|
15
15
|
var _styles = require("@mui/material/styles");
|
|
16
16
|
var _hooks = require("@mui/x-charts/hooks");
|
|
17
17
|
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
18
|
+
var _ChartsTooltipZoomSliderValue = require("./ChartsTooltipZoomSliderValue");
|
|
18
19
|
var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
|
|
19
|
-
var
|
|
20
|
+
var _ChartAxisZoomSliderThumb = require("./ChartAxisZoomSliderThumb");
|
|
20
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
const
|
|
22
|
+
const ZoomSliderTrack = (0, _styles.styled)('rect')(({
|
|
22
23
|
theme
|
|
23
24
|
}) => ({
|
|
24
25
|
'&': {
|
|
25
26
|
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300]
|
|
26
27
|
}
|
|
27
28
|
}));
|
|
28
|
-
const
|
|
29
|
+
const ZoomSliderActiveTrackRect = (0, _styles.styled)('rect')(({
|
|
29
30
|
theme
|
|
30
31
|
}) => ({
|
|
31
32
|
'&': {
|
|
@@ -33,11 +34,11 @@ const ZoomRangePreviewRect = (0, _styles.styled)('rect')(({
|
|
|
33
34
|
cursor: 'grab'
|
|
34
35
|
}
|
|
35
36
|
}));
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
const ZOOM_SLIDER_SIZE = Math.max(
|
|
37
|
+
const ZOOM_SLIDER_TRACK_SIZE = 8;
|
|
38
|
+
const ZOOM_SLIDER_ACTIVE_TRACK_SIZE = 10;
|
|
39
|
+
const ZOOM_SLIDER_THUMB_HEIGHT = 20;
|
|
40
|
+
const ZOOM_SLIDER_THUMB_WIDTH = 10;
|
|
41
|
+
const ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_TRACK_SIZE, ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH);
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Renders the zoom slider for a specific axis.
|
|
@@ -62,48 +63,58 @@ function ChartAxisZoomSlider({
|
|
|
62
63
|
let x;
|
|
63
64
|
let y;
|
|
64
65
|
let reverse;
|
|
66
|
+
let axisPosition;
|
|
65
67
|
if (axisDirection === 'x') {
|
|
66
68
|
const axis = xAxis[axisId];
|
|
67
|
-
if (!axis) {
|
|
69
|
+
if (!axis || axis.position === 'none') {
|
|
68
70
|
return null;
|
|
69
71
|
}
|
|
70
72
|
const axisSize = axis.height;
|
|
71
73
|
x = drawingArea.left;
|
|
72
74
|
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
75
|
reverse = axis.reverse ?? false;
|
|
76
|
+
axisPosition = axis.position ?? 'bottom';
|
|
74
77
|
} else {
|
|
75
78
|
const axis = yAxis[axisId];
|
|
76
|
-
if (!axis) {
|
|
79
|
+
if (!axis || axis.position === 'none') {
|
|
77
80
|
return null;
|
|
78
81
|
}
|
|
79
82
|
const axisSize = axis.width;
|
|
80
83
|
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
84
|
y = drawingArea.top;
|
|
82
85
|
reverse = axis.reverse ?? false;
|
|
86
|
+
axisPosition = axis.position ?? 'left';
|
|
83
87
|
}
|
|
84
|
-
const backgroundRectOffset = (ZOOM_SLIDER_SIZE -
|
|
88
|
+
const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_TRACK_SIZE) / 2;
|
|
85
89
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
|
|
86
90
|
transform: `translate(${x} ${y})`,
|
|
87
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
91
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderTrack, {
|
|
88
92
|
x: axisDirection === 'x' ? 0 : backgroundRectOffset,
|
|
89
93
|
y: axisDirection === 'x' ? backgroundRectOffset : 0,
|
|
90
|
-
height: axisDirection === 'x' ?
|
|
91
|
-
width: axisDirection === 'x' ? drawingArea.width :
|
|
92
|
-
rx:
|
|
93
|
-
ry:
|
|
94
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
94
|
+
height: axisDirection === 'x' ? ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
|
|
95
|
+
width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_TRACK_SIZE,
|
|
96
|
+
rx: ZOOM_SLIDER_TRACK_SIZE / 2,
|
|
97
|
+
ry: ZOOM_SLIDER_TRACK_SIZE / 2
|
|
98
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartAxisZoomSliderActiveTrack, {
|
|
95
99
|
zoomData: zoomData,
|
|
96
100
|
axisId: axisId,
|
|
101
|
+
axisPosition: axisPosition,
|
|
97
102
|
axisDirection: axisDirection,
|
|
98
103
|
reverse: reverse
|
|
99
104
|
})]
|
|
100
105
|
});
|
|
101
106
|
}
|
|
102
|
-
|
|
107
|
+
const formatter = Intl.NumberFormat(undefined, {
|
|
108
|
+
maximumFractionDigits: 0
|
|
109
|
+
});
|
|
110
|
+
const zoomValueFormatter = value => formatter.format(value);
|
|
111
|
+
function ChartAxisZoomSliderActiveTrack({
|
|
103
112
|
axisId,
|
|
104
113
|
axisDirection,
|
|
114
|
+
axisPosition,
|
|
105
115
|
zoomData,
|
|
106
|
-
reverse
|
|
116
|
+
reverse,
|
|
117
|
+
valueFormatter = zoomValueFormatter
|
|
107
118
|
}) {
|
|
108
119
|
const {
|
|
109
120
|
instance,
|
|
@@ -112,8 +123,11 @@ function ChartAxisZoomSliderSpan({
|
|
|
112
123
|
const store = (0, _internals.useStore)();
|
|
113
124
|
const drawingArea = (0, _internals.useDrawingArea)();
|
|
114
125
|
const activePreviewRectRef = React.useRef(null);
|
|
115
|
-
const
|
|
116
|
-
const
|
|
126
|
+
const [startThumbEl, setStartThumbEl] = React.useState(null);
|
|
127
|
+
const [endThumbEl, setEndThumbEl] = React.useState(null);
|
|
128
|
+
const [showTooltip, setShowTooltip] = React.useState(null);
|
|
129
|
+
const previewThumbWidth = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_WIDTH : ZOOM_SLIDER_THUMB_HEIGHT;
|
|
130
|
+
const previewThumbHeight = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_HEIGHT : ZOOM_SLIDER_THUMB_WIDTH;
|
|
117
131
|
React.useEffect(() => {
|
|
118
132
|
const activePreviewRect = activePreviewRectRef.current;
|
|
119
133
|
if (!activePreviewRect) {
|
|
@@ -154,6 +168,7 @@ function ChartAxisZoomSliderSpan({
|
|
|
154
168
|
const onPointerUp = () => {
|
|
155
169
|
activePreviewRect.removeEventListener('pointermove', onPointerMove);
|
|
156
170
|
activePreviewRect.removeEventListener('pointerup', onPointerUp);
|
|
171
|
+
setShowTooltip(null);
|
|
157
172
|
};
|
|
158
173
|
const onPointerDown = event => {
|
|
159
174
|
// Prevent text selection when dragging
|
|
@@ -185,6 +200,7 @@ function ChartAxisZoomSliderSpan({
|
|
|
185
200
|
prevPointerZoom = pointerDownZoom;
|
|
186
201
|
pointerZoomMin = pointerDownZoom - axisZoomData.start;
|
|
187
202
|
pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
|
|
203
|
+
setShowTooltip('both');
|
|
188
204
|
activePreviewRect.addEventListener('pointerup', onPointerUp);
|
|
189
205
|
activePreviewRect.addEventListener('pointermove', onPointerMove);
|
|
190
206
|
};
|
|
@@ -196,7 +212,7 @@ function ChartAxisZoomSliderSpan({
|
|
|
196
212
|
onPointerMove.clear();
|
|
197
213
|
};
|
|
198
214
|
}, [axisDirection, axisId, instance, reverse, store, svgRef]);
|
|
199
|
-
const
|
|
215
|
+
const onStartThumbMove = event => {
|
|
200
216
|
const element = svgRef.current;
|
|
201
217
|
if (!element) {
|
|
202
218
|
return;
|
|
@@ -229,7 +245,7 @@ function ChartAxisZoomSliderSpan({
|
|
|
229
245
|
});
|
|
230
246
|
});
|
|
231
247
|
};
|
|
232
|
-
const
|
|
248
|
+
const onEndThumbMove = event => {
|
|
233
249
|
const element = svgRef.current;
|
|
234
250
|
if (!element) {
|
|
235
251
|
return;
|
|
@@ -266,67 +282,85 @@ function ChartAxisZoomSliderSpan({
|
|
|
266
282
|
let previewY;
|
|
267
283
|
let previewWidth;
|
|
268
284
|
let previewHeight;
|
|
269
|
-
let
|
|
270
|
-
let
|
|
271
|
-
let
|
|
272
|
-
let
|
|
285
|
+
let startThumbX;
|
|
286
|
+
let startThumbY;
|
|
287
|
+
let endThumbX;
|
|
288
|
+
let endThumbY;
|
|
273
289
|
if (axisDirection === 'x') {
|
|
274
290
|
previewX = zoomData.start / 100 * drawingArea.width;
|
|
275
291
|
previewY = 0;
|
|
276
292
|
previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
|
|
277
|
-
previewHeight =
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
293
|
+
previewHeight = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
|
|
294
|
+
startThumbX = zoomData.start / 100 * drawingArea.width;
|
|
295
|
+
startThumbY = 0;
|
|
296
|
+
endThumbX = zoomData.end / 100 * drawingArea.width;
|
|
297
|
+
endThumbY = 0;
|
|
282
298
|
if (reverse) {
|
|
283
299
|
previewX = drawingArea.width - previewX - previewWidth;
|
|
284
|
-
|
|
285
|
-
|
|
300
|
+
startThumbX = drawingArea.width - startThumbX;
|
|
301
|
+
endThumbX = drawingArea.width - endThumbX;
|
|
286
302
|
}
|
|
287
|
-
|
|
288
|
-
|
|
303
|
+
startThumbX -= previewThumbWidth / 2;
|
|
304
|
+
endThumbX -= previewThumbWidth / 2;
|
|
289
305
|
} else {
|
|
290
306
|
previewX = 0;
|
|
291
307
|
previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
292
|
-
previewWidth =
|
|
308
|
+
previewWidth = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
|
|
293
309
|
previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
310
|
+
startThumbX = 0;
|
|
311
|
+
startThumbY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
|
|
312
|
+
endThumbX = 0;
|
|
313
|
+
endThumbY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
|
|
298
314
|
if (reverse) {
|
|
299
315
|
previewY = drawingArea.height - previewY - previewHeight;
|
|
300
|
-
|
|
301
|
-
|
|
316
|
+
startThumbY = drawingArea.height - startThumbY;
|
|
317
|
+
endThumbY = drawingArea.height - endThumbY;
|
|
302
318
|
}
|
|
303
|
-
|
|
304
|
-
|
|
319
|
+
startThumbY -= previewThumbHeight / 2;
|
|
320
|
+
endThumbY -= previewThumbHeight / 2;
|
|
305
321
|
}
|
|
306
|
-
const previewOffset = (
|
|
322
|
+
const previewOffset = (ZOOM_SLIDER_THUMB_HEIGHT - ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
|
|
307
323
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
308
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
324
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderActiveTrackRect, {
|
|
309
325
|
ref: activePreviewRectRef,
|
|
310
326
|
x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
|
|
311
327
|
y: previewY + (axisDirection === 'x' ? previewOffset : 0),
|
|
312
328
|
width: previewWidth,
|
|
313
|
-
height: previewHeight
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
329
|
+
height: previewHeight,
|
|
330
|
+
onPointerEnter: () => setShowTooltip('both'),
|
|
331
|
+
onPointerLeave: () => setShowTooltip(null)
|
|
332
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
|
|
333
|
+
ref: setStartThumbEl,
|
|
334
|
+
x: startThumbX,
|
|
335
|
+
y: startThumbY,
|
|
336
|
+
width: previewThumbWidth,
|
|
337
|
+
height: previewThumbHeight,
|
|
319
338
|
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
320
|
-
|
|
339
|
+
onMove: onStartThumbMove,
|
|
340
|
+
onPointerEnter: () => setShowTooltip('start'),
|
|
341
|
+
onPointerLeave: () => setShowTooltip(null),
|
|
321
342
|
placement: "start"
|
|
322
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
343
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
|
|
344
|
+
ref: setEndThumbEl,
|
|
345
|
+
x: endThumbX,
|
|
346
|
+
y: endThumbY,
|
|
347
|
+
width: previewThumbWidth,
|
|
348
|
+
height: previewThumbHeight,
|
|
327
349
|
orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
|
|
328
|
-
|
|
350
|
+
onMove: onEndThumbMove,
|
|
351
|
+
onPointerEnter: () => setShowTooltip('end'),
|
|
352
|
+
onPointerLeave: () => setShowTooltip(null),
|
|
329
353
|
placement: "end"
|
|
354
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
|
|
355
|
+
anchorEl: startThumbEl,
|
|
356
|
+
open: showTooltip === 'start' || showTooltip === 'both',
|
|
357
|
+
placement: axisPosition,
|
|
358
|
+
children: valueFormatter(zoomData.start)
|
|
359
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
|
|
360
|
+
anchorEl: endThumbEl,
|
|
361
|
+
open: showTooltip === 'end' || showTooltip === 'both',
|
|
362
|
+
placement: axisPosition,
|
|
363
|
+
children: valueFormatter(zoomData.end)
|
|
330
364
|
})]
|
|
331
365
|
});
|
|
332
366
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface ChartZoomSliderThumbOwnerState {
|
|
3
|
+
onMove: (event: PointerEvent) => void;
|
|
4
|
+
orientation: 'horizontal' | 'vertical';
|
|
5
|
+
placement: 'start' | 'end';
|
|
6
|
+
}
|
|
7
|
+
export interface ChartZoomSliderThumbProps extends Omit<React.ComponentProps<'rect'>, 'orientation'>, ChartZoomSliderThumbOwnerState {}
|
|
8
|
+
/**
|
|
9
|
+
* Renders the zoom slider thumb, which is responsible for resizing the zoom range.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare const ChartAxisZoomSliderThumb: React.ForwardRefExoticComponent<Omit<ChartZoomSliderThumbProps, "ref"> & 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.ChartAxisZoomSliderThumb = 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 _styles = require("@mui/material/styles");
|
|
14
|
+
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
15
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
16
|
+
var _rafThrottle = require("@mui/x-internals/rafThrottle");
|
|
17
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
18
|
+
var _chartAxisZoomSliderThumbClasses = require("./chartAxisZoomSliderThumbClasses");
|
|
19
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
const _excluded = ["className", "onMove", "orientation", "placement", "rx", "ry"];
|
|
21
|
+
const Rect = (0, _styles.styled)('rect')(({
|
|
22
|
+
theme
|
|
23
|
+
}) => ({
|
|
24
|
+
[`&.${_chartAxisZoomSliderThumbClasses.chartAxisZoomSliderThumbClasses.root}`]: {
|
|
25
|
+
fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[300] : (theme.vars || theme).palette.common.white,
|
|
26
|
+
stroke: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[600] : (theme.vars || theme).palette.grey[500]
|
|
27
|
+
},
|
|
28
|
+
[`&.${_chartAxisZoomSliderThumbClasses.chartAxisZoomSliderThumbClasses.horizontal}`]: {
|
|
29
|
+
cursor: 'ew-resize'
|
|
30
|
+
},
|
|
31
|
+
[`&.${_chartAxisZoomSliderThumbClasses.chartAxisZoomSliderThumbClasses.vertical}`]: {
|
|
32
|
+
cursor: 'ns-resize'
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
/**
|
|
36
|
+
* Renders the zoom slider thumb, which is responsible for resizing the zoom range.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
const ChartAxisZoomSliderThumb = exports.ChartAxisZoomSliderThumb = /*#__PURE__*/React.forwardRef(function ChartAxisZoomSliderThumb(_ref, forwardedRef) {
|
|
40
|
+
let {
|
|
41
|
+
className,
|
|
42
|
+
onMove,
|
|
43
|
+
orientation,
|
|
44
|
+
placement,
|
|
45
|
+
rx = 4,
|
|
46
|
+
ry = 4
|
|
47
|
+
} = _ref,
|
|
48
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
49
|
+
const classes = (0, _chartAxisZoomSliderThumbClasses.useUtilityClasses)({
|
|
50
|
+
onMove,
|
|
51
|
+
orientation,
|
|
52
|
+
placement
|
|
53
|
+
});
|
|
54
|
+
const thumbRef = React.useRef(null);
|
|
55
|
+
const ref = (0, _useForkRef.default)(thumbRef, forwardedRef);
|
|
56
|
+
const onMoveEvent = (0, _useEventCallback.default)(onMove);
|
|
57
|
+
React.useEffect(() => {
|
|
58
|
+
const thumb = thumbRef.current;
|
|
59
|
+
if (!thumb) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const onPointerMove = (0, _rafThrottle.rafThrottle)(event => {
|
|
63
|
+
onMoveEvent(event);
|
|
64
|
+
});
|
|
65
|
+
const onPointerUp = () => {
|
|
66
|
+
thumb.removeEventListener('pointermove', onPointerMove);
|
|
67
|
+
thumb.removeEventListener('pointerup', onPointerUp);
|
|
68
|
+
};
|
|
69
|
+
const onPointerDown = event => {
|
|
70
|
+
// Prevent text selection when dragging the thumb
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
thumb.setPointerCapture(event.pointerId);
|
|
74
|
+
thumb.addEventListener('pointerup', onPointerUp);
|
|
75
|
+
thumb.addEventListener('pointermove', onPointerMove);
|
|
76
|
+
};
|
|
77
|
+
thumb.addEventListener('pointerdown', onPointerDown);
|
|
78
|
+
|
|
79
|
+
// eslint-disable-next-line consistent-return
|
|
80
|
+
return () => {
|
|
81
|
+
thumb.removeEventListener('pointerdown', onPointerDown);
|
|
82
|
+
onPointerMove.clear();
|
|
83
|
+
};
|
|
84
|
+
}, [onMoveEvent, orientation]);
|
|
85
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Rect, (0, _extends2.default)({
|
|
86
|
+
className: (0, _clsx.default)(classes.root, className),
|
|
87
|
+
ref: ref,
|
|
88
|
+
rx: rx,
|
|
89
|
+
ry: ry
|
|
90
|
+
}, rest));
|
|
91
|
+
});
|
|
92
|
+
if (process.env.NODE_ENV !== "production") ChartAxisZoomSliderThumb.displayName = "ChartAxisZoomSliderThumb";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PopperProps } from '@mui/material/Popper';
|
|
3
|
+
interface ChartsTooltipZoomSliderValueProps extends Pick<PopperProps, 'anchorEl' | 'open' | 'modifiers' | 'placement'>, React.PropsWithChildren {}
|
|
4
|
+
export declare function ChartsTooltipZoomSliderValue({
|
|
5
|
+
anchorEl,
|
|
6
|
+
open,
|
|
7
|
+
placement,
|
|
8
|
+
modifiers,
|
|
9
|
+
children
|
|
10
|
+
}: ChartsTooltipZoomSliderValueProps): React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
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.ChartsTooltipZoomSliderValue = ChartsTooltipZoomSliderValue;
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _NoSsr = _interopRequireDefault(require("@mui/material/NoSsr"));
|
|
11
|
+
var _Popper = _interopRequireDefault(require("@mui/material/Popper"));
|
|
12
|
+
var _ChartsTooltip = require("@mui/x-charts/ChartsTooltip");
|
|
13
|
+
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
+
/**
|
|
17
|
+
* The root component of the zoom slider tooltip.
|
|
18
|
+
* @ignore - internal component.
|
|
19
|
+
*/const ChartsZoomSliderTooltipRoot = (0, _styles.styled)(_Popper.default, {
|
|
20
|
+
name: 'MuiChartsZoomSliderTooltip',
|
|
21
|
+
slot: 'Root'
|
|
22
|
+
})(({
|
|
23
|
+
theme
|
|
24
|
+
}) => ({
|
|
25
|
+
pointerEvents: 'none',
|
|
26
|
+
zIndex: theme.zIndex.modal
|
|
27
|
+
}));
|
|
28
|
+
const MODIFIERS = [{
|
|
29
|
+
name: 'offset',
|
|
30
|
+
options: {
|
|
31
|
+
offset: [0, 4]
|
|
32
|
+
}
|
|
33
|
+
}];
|
|
34
|
+
function ChartsTooltipZoomSliderValue({
|
|
35
|
+
anchorEl,
|
|
36
|
+
open,
|
|
37
|
+
placement,
|
|
38
|
+
modifiers = MODIFIERS,
|
|
39
|
+
children
|
|
40
|
+
}) {
|
|
41
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoSsr.default, {
|
|
42
|
+
children: open ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsZoomSliderTooltipRoot, {
|
|
43
|
+
open: open,
|
|
44
|
+
anchorEl: anchorEl,
|
|
45
|
+
placement: placement,
|
|
46
|
+
modifiers: modifiers,
|
|
47
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltip.ChartsTooltipPaper, {
|
|
48
|
+
sx: {
|
|
49
|
+
paddingX: 0.5
|
|
50
|
+
},
|
|
51
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
52
|
+
variant: "caption",
|
|
53
|
+
children: children
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
}) : null
|
|
57
|
+
});
|
|
58
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChartZoomSliderThumbOwnerState } from "./ChartAxisZoomSliderThumb.js";
|
|
2
|
+
export interface ChartAxisZoomSliderThumbClasses {
|
|
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 thumb. */
|
|
10
|
+
start: string;
|
|
11
|
+
/** Styles applied to the root element when it is an end thumb. */
|
|
12
|
+
end: string;
|
|
13
|
+
}
|
|
14
|
+
export type ChartAxisZoomSliderThumbClassKey = keyof ChartAxisZoomSliderThumbClasses;
|
|
15
|
+
export declare const chartAxisZoomSliderThumbClasses: ChartAxisZoomSliderThumbClasses;
|
|
16
|
+
export declare function getAxisZoomSliderThumbUtilityClass(slot: string): string;
|
|
17
|
+
export declare const useUtilityClasses: (ownerState: ChartZoomSliderThumbOwnerState) => Record<"root", string>;
|
|
@@ -4,15 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
7
|
+
exports.chartAxisZoomSliderThumbClasses = void 0;
|
|
8
|
+
exports.getAxisZoomSliderThumbUtilityClass = getAxisZoomSliderThumbUtilityClass;
|
|
9
9
|
exports.useUtilityClasses = void 0;
|
|
10
10
|
var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
|
|
11
11
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
12
12
|
var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
|
|
13
|
-
const
|
|
14
|
-
function
|
|
15
|
-
return (0, _generateUtilityClass.default)('
|
|
13
|
+
const chartAxisZoomSliderThumbClasses = exports.chartAxisZoomSliderThumbClasses = (0, _generateUtilityClasses.default)('MuiChartAxisZoomSliderThumb', ['root', 'horizontal', 'vertical', 'start', 'end']);
|
|
14
|
+
function getAxisZoomSliderThumbUtilityClass(slot) {
|
|
15
|
+
return (0, _generateUtilityClass.default)('MuiChartAxisZoomSliderThumb', slot);
|
|
16
16
|
}
|
|
17
17
|
const useUtilityClasses = ownerState => {
|
|
18
18
|
const {
|
|
@@ -22,6 +22,6 @@ const useUtilityClasses = ownerState => {
|
|
|
22
22
|
const slots = {
|
|
23
23
|
root: ['root', orientation === 'horizontal' ? 'horizontal' : 'vertical', placement === 'start' ? 'start' : 'end']
|
|
24
24
|
};
|
|
25
|
-
return (0, _composeClasses.default)(slots,
|
|
25
|
+
return (0, _composeClasses.default)(slots, getAxisZoomSliderThumbUtilityClass);
|
|
26
26
|
};
|
|
27
27
|
exports.useUtilityClasses = useUtilityClasses;
|
|
@@ -51,13 +51,14 @@ const FunnelChart = exports.FunnelChart = /*#__PURE__*/React.forwardRef(function
|
|
|
51
51
|
seriesConfig: seriesConfig,
|
|
52
52
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.ChartsWrapper, (0, _extends2.default)({}, chartsWrapperProps, {
|
|
53
53
|
children: [!themedProps.hideLegend && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLegend.ChartsLegend, (0, _extends2.default)({}, legendProps)), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsSurface.ChartsSurface, (0, _extends2.default)({}, chartsSurfaceProps, {
|
|
54
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FunnelPlot.FunnelPlot, (0, _extends2.default)({}, funnelPlotProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsOverlay.ChartsOverlay, (0, _extends2.default)({}, overlayProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({}, axisHighlightProps)),
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FunnelPlot.FunnelPlot, (0, _extends2.default)({}, funnelPlotProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsOverlay.ChartsOverlay, (0, _extends2.default)({}, overlayProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({}, axisHighlightProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, (0, _extends2.default)({}, chartsAxisProps)), children]
|
|
55
|
+
})), !themedProps.loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, themedProps.slotProps?.tooltip, {
|
|
56
|
+
trigger: "item"
|
|
57
57
|
}))]
|
|
58
58
|
}))
|
|
59
59
|
}));
|
|
60
60
|
});
|
|
61
|
+
if (process.env.NODE_ENV !== "production") FunnelChart.displayName = "FunnelChart";
|
|
61
62
|
process.env.NODE_ENV !== "production" ? FunnelChart.propTypes = {
|
|
62
63
|
// ----------------------------- Warning --------------------------------
|
|
63
64
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
@@ -86,12 +86,14 @@ const useAggregatedData = gap => {
|
|
|
86
86
|
seriesId,
|
|
87
87
|
value: currentSeries.data[dataIndex].value
|
|
88
88
|
}) : currentSeries.sectionLabel;
|
|
89
|
+
const isIncreasing = currentSeries.dataDirection === 'increasing';
|
|
89
90
|
const curve = (0, _curves.getFunnelCurve)(currentSeries.curve, {
|
|
90
91
|
isHorizontal,
|
|
91
92
|
gap,
|
|
92
93
|
position: dataIndex,
|
|
93
94
|
sections: currentSeries.dataPoints.length,
|
|
94
95
|
borderRadius: currentSeries.borderRadius,
|
|
96
|
+
isIncreasing,
|
|
95
97
|
min: minPoint,
|
|
96
98
|
max: maxPoint
|
|
97
99
|
});
|
|
@@ -8,6 +8,10 @@ export type CurveOptions = {
|
|
|
8
8
|
* Indicates if the main axis of the visualization.
|
|
9
9
|
*/
|
|
10
10
|
isHorizontal?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Indicates if the segments values are increasing or decreasing.
|
|
13
|
+
*/
|
|
14
|
+
isIncreasing?: boolean;
|
|
11
15
|
/**
|
|
12
16
|
* The order position of the segment.
|
|
13
17
|
*/
|
|
@@ -11,6 +11,7 @@ export declare class Pyramid implements CurveGenerator {
|
|
|
11
11
|
private position;
|
|
12
12
|
private sections;
|
|
13
13
|
private isHorizontal;
|
|
14
|
+
private isIncreasing;
|
|
14
15
|
private gap;
|
|
15
16
|
private borderRadius;
|
|
16
17
|
private min;
|
|
@@ -23,7 +24,8 @@ export declare class Pyramid implements CurveGenerator {
|
|
|
23
24
|
sections,
|
|
24
25
|
borderRadius,
|
|
25
26
|
min,
|
|
26
|
-
max
|
|
27
|
+
max,
|
|
28
|
+
isIncreasing
|
|
27
29
|
}: CurveOptions);
|
|
28
30
|
areaStart(): void;
|
|
29
31
|
areaEnd(): void;
|