@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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["initialZoom", "zoomData", "onZoomChange", "apiRef"];
|
|
5
|
+
const _excluded = ["initialZoom", "zoomData", "onZoomChange", "apiRef", "showToolbar"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { useThemeProps } from '@mui/material/styles';
|
|
@@ -16,6 +16,8 @@ import { ChartsTooltip } from '@mui/x-charts/ChartsTooltip';
|
|
|
16
16
|
import { ChartsClipPath } from '@mui/x-charts/ChartsClipPath';
|
|
17
17
|
import { ChartsSurface } from '@mui/x-charts/ChartsSurface';
|
|
18
18
|
import { useLineChartProps, ChartsWrapper } from '@mui/x-charts/internals';
|
|
19
|
+
import { ChartZoomSlider } from "../ChartZoomSlider/index.js";
|
|
20
|
+
import { ChartsToolbarPro } from "../ChartsToolbarPro/index.js";
|
|
19
21
|
import { useChartContainerProProps } from "../ChartContainerPro/useChartContainerProProps.js";
|
|
20
22
|
import { ChartDataProviderPro } from "../ChartDataProviderPro/index.js";
|
|
21
23
|
import { LINE_CHART_PRO_PLUGINS } from "./LineChartPro.plugins.js";
|
|
@@ -39,7 +41,8 @@ const LineChartPro = /*#__PURE__*/React.forwardRef(function LineChartPro(inProps
|
|
|
39
41
|
initialZoom,
|
|
40
42
|
zoomData,
|
|
41
43
|
onZoomChange,
|
|
42
|
-
apiRef
|
|
44
|
+
apiRef,
|
|
45
|
+
showToolbar
|
|
43
46
|
} = props,
|
|
44
47
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
45
48
|
const {
|
|
@@ -71,10 +74,10 @@ const LineChartPro = /*#__PURE__*/React.forwardRef(function LineChartPro(inProps
|
|
|
71
74
|
const Tooltip = props.slots?.tooltip ?? ChartsTooltip;
|
|
72
75
|
return /*#__PURE__*/_jsx(ChartDataProviderPro, _extends({}, chartDataProviderProProps, {
|
|
73
76
|
children: /*#__PURE__*/_jsxs(ChartsWrapper, _extends({}, chartsWrapperProps, {
|
|
74
|
-
children: [!props.hideLegend && /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
|
|
77
|
+
children: [showToolbar ? /*#__PURE__*/_jsx(ChartsToolbarPro, {}) : null, !props.hideLegend && /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
|
|
75
78
|
children: [/*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
|
|
76
79
|
children: [/*#__PURE__*/_jsx(AreaPlot, _extends({}, areaPlotProps)), /*#__PURE__*/_jsx(LinePlot, _extends({}, linePlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps))]
|
|
77
|
-
})), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx("g", {
|
|
80
|
+
})), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartZoomSlider, {}), /*#__PURE__*/_jsx("g", {
|
|
78
81
|
"data-drawing-container": true,
|
|
79
82
|
children: /*#__PURE__*/_jsx(MarkPlot, _extends({}, markPlotProps))
|
|
80
83
|
}), /*#__PURE__*/_jsx(LineHighlightPlot, _extends({}, lineHighlightPlotProps)), !props.loading && /*#__PURE__*/_jsx(Tooltip, _extends({}, props.slotProps?.tooltip)), /*#__PURE__*/_jsx(ChartsClipPath, _extends({}, clipPathProps)), children]
|
|
@@ -219,6 +222,11 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
219
222
|
* An array of [[LineSeriesType]] objects.
|
|
220
223
|
*/
|
|
221
224
|
series: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
225
|
+
/**
|
|
226
|
+
* If true, shows the default chart toolbar.
|
|
227
|
+
* @default false
|
|
228
|
+
*/
|
|
229
|
+
showToolbar: PropTypes.bool,
|
|
222
230
|
/**
|
|
223
231
|
* If `true`, animations are skipped.
|
|
224
232
|
* @default false
|
|
@@ -306,6 +314,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
306
314
|
minSpan: PropTypes.number,
|
|
307
315
|
minStart: PropTypes.number,
|
|
308
316
|
panning: PropTypes.bool,
|
|
317
|
+
slider: PropTypes.shape({
|
|
318
|
+
enabled: PropTypes.bool
|
|
319
|
+
}),
|
|
309
320
|
step: PropTypes.number
|
|
310
321
|
}), PropTypes.bool])
|
|
311
322
|
}), PropTypes.shape({
|
|
@@ -366,6 +377,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
366
377
|
minSpan: PropTypes.number,
|
|
367
378
|
minStart: PropTypes.number,
|
|
368
379
|
panning: PropTypes.bool,
|
|
380
|
+
slider: PropTypes.shape({
|
|
381
|
+
enabled: PropTypes.bool
|
|
382
|
+
}),
|
|
369
383
|
step: PropTypes.number
|
|
370
384
|
}), PropTypes.bool])
|
|
371
385
|
}), PropTypes.shape({
|
|
@@ -421,6 +435,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
421
435
|
minSpan: PropTypes.number,
|
|
422
436
|
minStart: PropTypes.number,
|
|
423
437
|
panning: PropTypes.bool,
|
|
438
|
+
slider: PropTypes.shape({
|
|
439
|
+
enabled: PropTypes.bool
|
|
440
|
+
}),
|
|
424
441
|
step: PropTypes.number
|
|
425
442
|
}), PropTypes.bool])
|
|
426
443
|
}), PropTypes.shape({
|
|
@@ -476,6 +493,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
476
493
|
minSpan: PropTypes.number,
|
|
477
494
|
minStart: PropTypes.number,
|
|
478
495
|
panning: PropTypes.bool,
|
|
496
|
+
slider: PropTypes.shape({
|
|
497
|
+
enabled: PropTypes.bool
|
|
498
|
+
}),
|
|
479
499
|
step: PropTypes.number
|
|
480
500
|
}), PropTypes.bool])
|
|
481
501
|
}), PropTypes.shape({
|
|
@@ -531,6 +551,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
531
551
|
minSpan: PropTypes.number,
|
|
532
552
|
minStart: PropTypes.number,
|
|
533
553
|
panning: PropTypes.bool,
|
|
554
|
+
slider: PropTypes.shape({
|
|
555
|
+
enabled: PropTypes.bool
|
|
556
|
+
}),
|
|
534
557
|
step: PropTypes.number
|
|
535
558
|
}), PropTypes.bool])
|
|
536
559
|
}), PropTypes.shape({
|
|
@@ -586,6 +609,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
586
609
|
minSpan: PropTypes.number,
|
|
587
610
|
minStart: PropTypes.number,
|
|
588
611
|
panning: PropTypes.bool,
|
|
612
|
+
slider: PropTypes.shape({
|
|
613
|
+
enabled: PropTypes.bool
|
|
614
|
+
}),
|
|
589
615
|
step: PropTypes.number
|
|
590
616
|
}), PropTypes.bool])
|
|
591
617
|
}), PropTypes.shape({
|
|
@@ -641,6 +667,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
641
667
|
minSpan: PropTypes.number,
|
|
642
668
|
minStart: PropTypes.number,
|
|
643
669
|
panning: PropTypes.bool,
|
|
670
|
+
slider: PropTypes.shape({
|
|
671
|
+
enabled: PropTypes.bool
|
|
672
|
+
}),
|
|
644
673
|
step: PropTypes.number
|
|
645
674
|
}), PropTypes.bool])
|
|
646
675
|
}), PropTypes.shape({
|
|
@@ -696,6 +725,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
696
725
|
minSpan: PropTypes.number,
|
|
697
726
|
minStart: PropTypes.number,
|
|
698
727
|
panning: PropTypes.bool,
|
|
728
|
+
slider: PropTypes.shape({
|
|
729
|
+
enabled: PropTypes.bool
|
|
730
|
+
}),
|
|
699
731
|
step: PropTypes.number
|
|
700
732
|
}), PropTypes.bool])
|
|
701
733
|
})]).isRequired),
|
|
@@ -763,6 +795,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
763
795
|
minSpan: PropTypes.number,
|
|
764
796
|
minStart: PropTypes.number,
|
|
765
797
|
panning: PropTypes.bool,
|
|
798
|
+
slider: PropTypes.shape({
|
|
799
|
+
enabled: PropTypes.bool
|
|
800
|
+
}),
|
|
766
801
|
step: PropTypes.number
|
|
767
802
|
}), PropTypes.bool])
|
|
768
803
|
}), PropTypes.shape({
|
|
@@ -822,6 +857,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
822
857
|
minSpan: PropTypes.number,
|
|
823
858
|
minStart: PropTypes.number,
|
|
824
859
|
panning: PropTypes.bool,
|
|
860
|
+
slider: PropTypes.shape({
|
|
861
|
+
enabled: PropTypes.bool
|
|
862
|
+
}),
|
|
825
863
|
step: PropTypes.number
|
|
826
864
|
}), PropTypes.bool])
|
|
827
865
|
}), PropTypes.shape({
|
|
@@ -876,6 +914,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
876
914
|
minSpan: PropTypes.number,
|
|
877
915
|
minStart: PropTypes.number,
|
|
878
916
|
panning: PropTypes.bool,
|
|
917
|
+
slider: PropTypes.shape({
|
|
918
|
+
enabled: PropTypes.bool
|
|
919
|
+
}),
|
|
879
920
|
step: PropTypes.number
|
|
880
921
|
}), PropTypes.bool])
|
|
881
922
|
}), PropTypes.shape({
|
|
@@ -930,6 +971,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
930
971
|
minSpan: PropTypes.number,
|
|
931
972
|
minStart: PropTypes.number,
|
|
932
973
|
panning: PropTypes.bool,
|
|
974
|
+
slider: PropTypes.shape({
|
|
975
|
+
enabled: PropTypes.bool
|
|
976
|
+
}),
|
|
933
977
|
step: PropTypes.number
|
|
934
978
|
}), PropTypes.bool])
|
|
935
979
|
}), PropTypes.shape({
|
|
@@ -984,6 +1028,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
984
1028
|
minSpan: PropTypes.number,
|
|
985
1029
|
minStart: PropTypes.number,
|
|
986
1030
|
panning: PropTypes.bool,
|
|
1031
|
+
slider: PropTypes.shape({
|
|
1032
|
+
enabled: PropTypes.bool
|
|
1033
|
+
}),
|
|
987
1034
|
step: PropTypes.number
|
|
988
1035
|
}), PropTypes.bool])
|
|
989
1036
|
}), PropTypes.shape({
|
|
@@ -1038,6 +1085,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
1038
1085
|
minSpan: PropTypes.number,
|
|
1039
1086
|
minStart: PropTypes.number,
|
|
1040
1087
|
panning: PropTypes.bool,
|
|
1088
|
+
slider: PropTypes.shape({
|
|
1089
|
+
enabled: PropTypes.bool
|
|
1090
|
+
}),
|
|
1041
1091
|
step: PropTypes.number
|
|
1042
1092
|
}), PropTypes.bool])
|
|
1043
1093
|
}), PropTypes.shape({
|
|
@@ -1092,6 +1142,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
1092
1142
|
minSpan: PropTypes.number,
|
|
1093
1143
|
minStart: PropTypes.number,
|
|
1094
1144
|
panning: PropTypes.bool,
|
|
1145
|
+
slider: PropTypes.shape({
|
|
1146
|
+
enabled: PropTypes.bool
|
|
1147
|
+
}),
|
|
1095
1148
|
step: PropTypes.number
|
|
1096
1149
|
}), PropTypes.bool])
|
|
1097
1150
|
}), PropTypes.shape({
|
|
@@ -1146,6 +1199,9 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
|
|
|
1146
1199
|
minSpan: PropTypes.number,
|
|
1147
1200
|
minStart: PropTypes.number,
|
|
1148
1201
|
panning: PropTypes.bool,
|
|
1202
|
+
slider: PropTypes.shape({
|
|
1203
|
+
enabled: PropTypes.bool
|
|
1204
|
+
}),
|
|
1149
1205
|
step: PropTypes.number
|
|
1150
1206
|
}), PropTypes.bool])
|
|
1151
1207
|
})]).isRequired),
|
|
@@ -2,7 +2,13 @@ import * as React from 'react';
|
|
|
2
2
|
import { ScatterChartProps } from '@mui/x-charts/ScatterChart';
|
|
3
3
|
import { ChartContainerProProps } from "../ChartContainerPro/ChartContainerPro.js";
|
|
4
4
|
import { ScatterChartProPluginsSignatures } from "./ScatterChartPro.plugins.js";
|
|
5
|
-
export interface ScatterChartProProps extends Omit<ScatterChartProps, 'apiRef'>, Omit<ChartContainerProProps<'scatter', ScatterChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'onItemClick'> {
|
|
5
|
+
export interface ScatterChartProProps extends Omit<ScatterChartProps, 'apiRef'>, Omit<ChartContainerProProps<'scatter', ScatterChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'onItemClick'> {
|
|
6
|
+
/**
|
|
7
|
+
* If true, shows the default chart toolbar.
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
showToolbar?: boolean;
|
|
11
|
+
}
|
|
6
12
|
/**
|
|
7
13
|
* Demos:
|
|
8
14
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["initialZoom", "zoomData", "onZoomChange", "apiRef"];
|
|
5
|
+
const _excluded = ["initialZoom", "zoomData", "onZoomChange", "apiRef", "showToolbar"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { useThemeProps } from '@mui/material/styles';
|
|
@@ -15,6 +15,8 @@ import { ChartsSurface } from '@mui/x-charts/ChartsSurface';
|
|
|
15
15
|
import { ChartsAxisHighlight } from '@mui/x-charts/ChartsAxisHighlight';
|
|
16
16
|
import { ChartsTooltip } from '@mui/x-charts/ChartsTooltip';
|
|
17
17
|
import { useScatterChartProps, ChartsWrapper } from '@mui/x-charts/internals';
|
|
18
|
+
import { ChartZoomSlider } from "../ChartZoomSlider/index.js";
|
|
19
|
+
import { ChartsToolbarPro } from "../ChartsToolbarPro/index.js";
|
|
18
20
|
import { useChartContainerProProps } from "../ChartContainerPro/useChartContainerProProps.js";
|
|
19
21
|
import { ChartDataProviderPro } from "../ChartDataProviderPro/index.js";
|
|
20
22
|
import { SCATTER_CHART_PRO_PLUGINS } from "./ScatterChartPro.plugins.js";
|
|
@@ -38,7 +40,8 @@ const ScatterChartPro = /*#__PURE__*/React.forwardRef(function ScatterChartPro(i
|
|
|
38
40
|
initialZoom,
|
|
39
41
|
zoomData,
|
|
40
42
|
onZoomChange,
|
|
41
|
-
apiRef
|
|
43
|
+
apiRef,
|
|
44
|
+
showToolbar
|
|
42
45
|
} = props,
|
|
43
46
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
44
47
|
const {
|
|
@@ -65,8 +68,8 @@ const ScatterChartPro = /*#__PURE__*/React.forwardRef(function ScatterChartPro(i
|
|
|
65
68
|
const Tooltip = props.slots?.tooltip ?? ChartsTooltip;
|
|
66
69
|
return /*#__PURE__*/_jsx(ChartDataProviderPro, _extends({}, chartDataProviderProProps, {
|
|
67
70
|
children: /*#__PURE__*/_jsxs(ChartsWrapper, _extends({}, chartsWrapperProps, {
|
|
68
|
-
children: [!props.hideLegend && /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
|
|
69
|
-
children: [/*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsx("g", {
|
|
71
|
+
children: [showToolbar ? /*#__PURE__*/_jsx(ChartsToolbarPro, {}) : null, !props.hideLegend && /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
|
|
72
|
+
children: [/*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx(ChartZoomSlider, {}), /*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsx("g", {
|
|
70
73
|
"data-drawing-container": true,
|
|
71
74
|
children: /*#__PURE__*/_jsx(ScatterPlot, _extends({}, scatterPlotProps))
|
|
72
75
|
}), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps)), !props.loading && /*#__PURE__*/_jsx(Tooltip, _extends({}, props?.slotProps?.tooltip, {
|
|
@@ -208,6 +211,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
208
211
|
* An array of [[ScatterSeriesType]] objects.
|
|
209
212
|
*/
|
|
210
213
|
series: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
214
|
+
/**
|
|
215
|
+
* If true, shows the default chart toolbar.
|
|
216
|
+
* @default false
|
|
217
|
+
*/
|
|
218
|
+
showToolbar: PropTypes.bool,
|
|
211
219
|
/**
|
|
212
220
|
* If `true`, animations are skipped.
|
|
213
221
|
* If unset or `false`, the animations respects the user's `prefers-reduced-motion` setting.
|
|
@@ -300,6 +308,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
300
308
|
minSpan: PropTypes.number,
|
|
301
309
|
minStart: PropTypes.number,
|
|
302
310
|
panning: PropTypes.bool,
|
|
311
|
+
slider: PropTypes.shape({
|
|
312
|
+
enabled: PropTypes.bool
|
|
313
|
+
}),
|
|
303
314
|
step: PropTypes.number
|
|
304
315
|
}), PropTypes.bool])
|
|
305
316
|
}), PropTypes.shape({
|
|
@@ -360,6 +371,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
360
371
|
minSpan: PropTypes.number,
|
|
361
372
|
minStart: PropTypes.number,
|
|
362
373
|
panning: PropTypes.bool,
|
|
374
|
+
slider: PropTypes.shape({
|
|
375
|
+
enabled: PropTypes.bool
|
|
376
|
+
}),
|
|
363
377
|
step: PropTypes.number
|
|
364
378
|
}), PropTypes.bool])
|
|
365
379
|
}), PropTypes.shape({
|
|
@@ -415,6 +429,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
415
429
|
minSpan: PropTypes.number,
|
|
416
430
|
minStart: PropTypes.number,
|
|
417
431
|
panning: PropTypes.bool,
|
|
432
|
+
slider: PropTypes.shape({
|
|
433
|
+
enabled: PropTypes.bool
|
|
434
|
+
}),
|
|
418
435
|
step: PropTypes.number
|
|
419
436
|
}), PropTypes.bool])
|
|
420
437
|
}), PropTypes.shape({
|
|
@@ -470,6 +487,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
470
487
|
minSpan: PropTypes.number,
|
|
471
488
|
minStart: PropTypes.number,
|
|
472
489
|
panning: PropTypes.bool,
|
|
490
|
+
slider: PropTypes.shape({
|
|
491
|
+
enabled: PropTypes.bool
|
|
492
|
+
}),
|
|
473
493
|
step: PropTypes.number
|
|
474
494
|
}), PropTypes.bool])
|
|
475
495
|
}), PropTypes.shape({
|
|
@@ -525,6 +545,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
525
545
|
minSpan: PropTypes.number,
|
|
526
546
|
minStart: PropTypes.number,
|
|
527
547
|
panning: PropTypes.bool,
|
|
548
|
+
slider: PropTypes.shape({
|
|
549
|
+
enabled: PropTypes.bool
|
|
550
|
+
}),
|
|
528
551
|
step: PropTypes.number
|
|
529
552
|
}), PropTypes.bool])
|
|
530
553
|
}), PropTypes.shape({
|
|
@@ -580,6 +603,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
580
603
|
minSpan: PropTypes.number,
|
|
581
604
|
minStart: PropTypes.number,
|
|
582
605
|
panning: PropTypes.bool,
|
|
606
|
+
slider: PropTypes.shape({
|
|
607
|
+
enabled: PropTypes.bool
|
|
608
|
+
}),
|
|
583
609
|
step: PropTypes.number
|
|
584
610
|
}), PropTypes.bool])
|
|
585
611
|
}), PropTypes.shape({
|
|
@@ -635,6 +661,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
635
661
|
minSpan: PropTypes.number,
|
|
636
662
|
minStart: PropTypes.number,
|
|
637
663
|
panning: PropTypes.bool,
|
|
664
|
+
slider: PropTypes.shape({
|
|
665
|
+
enabled: PropTypes.bool
|
|
666
|
+
}),
|
|
638
667
|
step: PropTypes.number
|
|
639
668
|
}), PropTypes.bool])
|
|
640
669
|
}), PropTypes.shape({
|
|
@@ -690,6 +719,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
690
719
|
minSpan: PropTypes.number,
|
|
691
720
|
minStart: PropTypes.number,
|
|
692
721
|
panning: PropTypes.bool,
|
|
722
|
+
slider: PropTypes.shape({
|
|
723
|
+
enabled: PropTypes.bool
|
|
724
|
+
}),
|
|
693
725
|
step: PropTypes.number
|
|
694
726
|
}), PropTypes.bool])
|
|
695
727
|
})]).isRequired),
|
|
@@ -757,6 +789,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
757
789
|
minSpan: PropTypes.number,
|
|
758
790
|
minStart: PropTypes.number,
|
|
759
791
|
panning: PropTypes.bool,
|
|
792
|
+
slider: PropTypes.shape({
|
|
793
|
+
enabled: PropTypes.bool
|
|
794
|
+
}),
|
|
760
795
|
step: PropTypes.number
|
|
761
796
|
}), PropTypes.bool])
|
|
762
797
|
}), PropTypes.shape({
|
|
@@ -816,6 +851,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
816
851
|
minSpan: PropTypes.number,
|
|
817
852
|
minStart: PropTypes.number,
|
|
818
853
|
panning: PropTypes.bool,
|
|
854
|
+
slider: PropTypes.shape({
|
|
855
|
+
enabled: PropTypes.bool
|
|
856
|
+
}),
|
|
819
857
|
step: PropTypes.number
|
|
820
858
|
}), PropTypes.bool])
|
|
821
859
|
}), PropTypes.shape({
|
|
@@ -870,6 +908,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
870
908
|
minSpan: PropTypes.number,
|
|
871
909
|
minStart: PropTypes.number,
|
|
872
910
|
panning: PropTypes.bool,
|
|
911
|
+
slider: PropTypes.shape({
|
|
912
|
+
enabled: PropTypes.bool
|
|
913
|
+
}),
|
|
873
914
|
step: PropTypes.number
|
|
874
915
|
}), PropTypes.bool])
|
|
875
916
|
}), PropTypes.shape({
|
|
@@ -924,6 +965,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
924
965
|
minSpan: PropTypes.number,
|
|
925
966
|
minStart: PropTypes.number,
|
|
926
967
|
panning: PropTypes.bool,
|
|
968
|
+
slider: PropTypes.shape({
|
|
969
|
+
enabled: PropTypes.bool
|
|
970
|
+
}),
|
|
927
971
|
step: PropTypes.number
|
|
928
972
|
}), PropTypes.bool])
|
|
929
973
|
}), PropTypes.shape({
|
|
@@ -978,6 +1022,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
978
1022
|
minSpan: PropTypes.number,
|
|
979
1023
|
minStart: PropTypes.number,
|
|
980
1024
|
panning: PropTypes.bool,
|
|
1025
|
+
slider: PropTypes.shape({
|
|
1026
|
+
enabled: PropTypes.bool
|
|
1027
|
+
}),
|
|
981
1028
|
step: PropTypes.number
|
|
982
1029
|
}), PropTypes.bool])
|
|
983
1030
|
}), PropTypes.shape({
|
|
@@ -1032,6 +1079,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
1032
1079
|
minSpan: PropTypes.number,
|
|
1033
1080
|
minStart: PropTypes.number,
|
|
1034
1081
|
panning: PropTypes.bool,
|
|
1082
|
+
slider: PropTypes.shape({
|
|
1083
|
+
enabled: PropTypes.bool
|
|
1084
|
+
}),
|
|
1035
1085
|
step: PropTypes.number
|
|
1036
1086
|
}), PropTypes.bool])
|
|
1037
1087
|
}), PropTypes.shape({
|
|
@@ -1086,6 +1136,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
1086
1136
|
minSpan: PropTypes.number,
|
|
1087
1137
|
minStart: PropTypes.number,
|
|
1088
1138
|
panning: PropTypes.bool,
|
|
1139
|
+
slider: PropTypes.shape({
|
|
1140
|
+
enabled: PropTypes.bool
|
|
1141
|
+
}),
|
|
1089
1142
|
step: PropTypes.number
|
|
1090
1143
|
}), PropTypes.bool])
|
|
1091
1144
|
}), PropTypes.shape({
|
|
@@ -1140,6 +1193,9 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
1140
1193
|
minSpan: PropTypes.number,
|
|
1141
1194
|
minStart: PropTypes.number,
|
|
1142
1195
|
panning: PropTypes.bool,
|
|
1196
|
+
slider: PropTypes.shape({
|
|
1197
|
+
enabled: PropTypes.bool
|
|
1198
|
+
}),
|
|
1143
1199
|
step: PropTypes.number
|
|
1144
1200
|
}), PropTypes.bool])
|
|
1145
1201
|
})]).isRequired),
|
package/esm/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * from '@mui/x-charts/RadarChart';
|
|
|
25
25
|
export * from '@mui/x-charts/ChartsSurface';
|
|
26
26
|
export * from '@mui/x-charts/ChartDataProvider';
|
|
27
27
|
export * from '@mui/x-charts/ChartsLabel';
|
|
28
|
+
export { ZoomData, ZoomFilterMode, ZoomOptions, ZoomSliderOptions } from '@mui/x-charts/internals';
|
|
28
29
|
export * from "./hooks/index.js";
|
|
29
30
|
export * from "./Heatmap/index.js";
|
|
30
31
|
export * from "./ChartContainerPro/index.js";
|
|
@@ -32,4 +33,6 @@ export * from "./ChartDataProviderPro/index.js";
|
|
|
32
33
|
export * from "./ScatterChartPro/index.js";
|
|
33
34
|
export * from "./BarChartPro/index.js";
|
|
34
35
|
export * from "./LineChartPro/index.js";
|
|
35
|
-
export * from "./FunnelChart/index.js";
|
|
36
|
+
export * from "./FunnelChart/index.js";
|
|
37
|
+
export * from "./ChartZoomSlider/index.js";
|
|
38
|
+
export * from "./ChartsToolbarPro/index.js";
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-charts-pro v8.
|
|
2
|
+
* @mui/x-charts-pro v8.3.0
|
|
3
3
|
*
|
|
4
4
|
* @license MUI X Commercial
|
|
5
5
|
* This source code is licensed under the commercial license found in the
|
|
@@ -34,6 +34,7 @@ export * from '@mui/x-charts/RadarChart';
|
|
|
34
34
|
export * from '@mui/x-charts/ChartsSurface';
|
|
35
35
|
export * from '@mui/x-charts/ChartDataProvider';
|
|
36
36
|
export * from '@mui/x-charts/ChartsLabel';
|
|
37
|
+
export { ZoomData, ZoomFilterMode, ZoomOptions, ZoomSliderOptions } from '@mui/x-charts/internals';
|
|
37
38
|
|
|
38
39
|
// Pro components
|
|
39
40
|
export * from "./hooks/index.js";
|
|
@@ -43,4 +44,6 @@ export * from "./ChartDataProviderPro/index.js";
|
|
|
43
44
|
export * from "./ScatterChartPro/index.js";
|
|
44
45
|
export * from "./BarChartPro/index.js";
|
|
45
46
|
export * from "./LineChartPro/index.js";
|
|
46
|
-
export * from "./FunnelChart/index.js";
|
|
47
|
+
export * from "./FunnelChart/index.js";
|
|
48
|
+
export * from "./ChartZoomSlider/index.js";
|
|
49
|
+
export * from "./ChartsToolbarPro/index.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createSvgIcon } from '@mui/x-charts/internals';
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
export const ChartsZoomInIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {
|
|
5
|
+
children: [/*#__PURE__*/_jsx("path", {
|
|
6
|
+
d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"
|
|
7
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
8
|
+
d: "M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"
|
|
9
|
+
})]
|
|
10
|
+
}), 'ZoomIn');
|
|
11
|
+
export const ChartsZoomOutIcon = createSvgIcon(/*#__PURE__*/_jsx("path", {
|
|
12
|
+
d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"
|
|
13
|
+
}), 'ZoomOut');
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
3
|
+
import { defaultSlotsMaterial as communityDefaultSlotsMaterial } from '@mui/x-charts/internals';
|
|
4
|
+
import { ChartsZoomInIcon, ChartsZoomOutIcon } from "./icons.js";
|
|
5
|
+
const baseSlots = {
|
|
6
|
+
baseTooltip: Tooltip
|
|
7
|
+
};
|
|
8
|
+
const iconSlots = {
|
|
9
|
+
zoomInIcon: ChartsZoomInIcon,
|
|
10
|
+
zoomOutIcon: ChartsZoomOutIcon
|
|
11
|
+
};
|
|
12
|
+
export const defaultSlotsMaterial = _extends({}, communityDefaultSlotsMaterial, baseSlots, iconSlots);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the new zoom range based on the current zoom, step, and constraints.
|
|
4
|
+
*
|
|
5
|
+
* A step of 0.1 or -0.1 means that 10% of the current range will be subtracted/added, respectively, and assuming no
|
|
6
|
+
* constraints (e.g., minSpan, maxEnd) are faced.
|
|
7
|
+
*
|
|
8
|
+
* @param zoom Current zoom range with start and end values.
|
|
9
|
+
* @param step Percentage of the current zoom range to adjust (positive to zoom in, negative to zoom out). Ranges from 0 to 1.
|
|
10
|
+
* @param minSpan Minimum allowed span between start and end values.
|
|
11
|
+
* @param maxSpan Maximum allowed span between start and end values.
|
|
12
|
+
* @param minStart Minimum allowed start value.
|
|
13
|
+
* @param maxEnd Maximum allowed end value.
|
|
14
|
+
*/
|
|
15
|
+
export declare function calculateZoom<T extends Readonly<Pick<ZoomData, 'start' | 'end'>>>(zoom: T, step: number, {
|
|
16
|
+
minSpan,
|
|
17
|
+
maxSpan,
|
|
18
|
+
minStart,
|
|
19
|
+
maxEnd
|
|
20
|
+
}: Pick<DefaultizedZoomOptions, 'minSpan' | 'maxSpan' | 'minStart' | 'maxEnd'>): T & {
|
|
21
|
+
start: number;
|
|
22
|
+
end: number;
|
|
23
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the new zoom range based on the current zoom, step, and constraints.
|
|
4
|
+
*
|
|
5
|
+
* A step of 0.1 or -0.1 means that 10% of the current range will be subtracted/added, respectively, and assuming no
|
|
6
|
+
* constraints (e.g., minSpan, maxEnd) are faced.
|
|
7
|
+
*
|
|
8
|
+
* @param zoom Current zoom range with start and end values.
|
|
9
|
+
* @param step Percentage of the current zoom range to adjust (positive to zoom in, negative to zoom out). Ranges from 0 to 1.
|
|
10
|
+
* @param minSpan Minimum allowed span between start and end values.
|
|
11
|
+
* @param maxSpan Maximum allowed span between start and end values.
|
|
12
|
+
* @param minStart Minimum allowed start value.
|
|
13
|
+
* @param maxEnd Maximum allowed end value.
|
|
14
|
+
*/
|
|
15
|
+
export function calculateZoom(zoom, step, {
|
|
16
|
+
minSpan,
|
|
17
|
+
maxSpan,
|
|
18
|
+
minStart,
|
|
19
|
+
maxEnd
|
|
20
|
+
}) {
|
|
21
|
+
const span = zoom.end - zoom.start;
|
|
22
|
+
let delta = span * step / 2;
|
|
23
|
+
if (delta > 0) {
|
|
24
|
+
delta = Math.min(delta, (span - minSpan) / 2);
|
|
25
|
+
} else {
|
|
26
|
+
delta = Math.max(delta, (span - maxSpan) / 2);
|
|
27
|
+
}
|
|
28
|
+
return _extends({}, zoom, {
|
|
29
|
+
start: Math.max(minStart, zoom.start + delta),
|
|
30
|
+
end: Math.min(maxEnd, zoom.end - delta)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ChartPlugin, AxisId, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
|
|
2
2
|
import { UseChartProZoomSignature } from "./useChartProZoom.types.js";
|
|
3
|
-
export declare function initializeZoomData(options: Record<AxisId, DefaultizedZoomOptions
|
|
3
|
+
export declare function initializeZoomData(options: Record<AxisId, Pick<DefaultizedZoomOptions, 'axisId' | 'minStart' | 'maxEnd'>>, zoomData?: readonly ZoomData[]): ZoomData[];
|
|
4
4
|
export declare const useChartProZoom: ChartPlugin<UseChartProZoomSignature>;
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { useSelector, getSVGPoint, selectorChartDrawingArea, createZoomLookup, selectorChartZoomOptionsLookup } from '@mui/x-charts/internals';
|
|
5
|
+
import { useSelector, getSVGPoint, selectorChartDrawingArea, createZoomLookup, selectorChartZoomOptionsLookup, selectorChartAxisZoomOptionsLookup } from '@mui/x-charts/internals';
|
|
6
6
|
import { useEventCallback } from '@mui/material/utils';
|
|
7
7
|
import { rafThrottle } from '@mui/x-internals/rafThrottle';
|
|
8
8
|
import debounce from '@mui/utils/debounce';
|
|
9
|
+
import { calculateZoom } from "./calculateZoom.js";
|
|
9
10
|
import { getDiff, getHorizontalCenterRatio, getPinchScaleRatio, getVerticalCenterRatio, getWheelScaleRatio, isSpanValid, preventDefault, zoomAtPoint } from "./useChartProZoom.utils.js";
|
|
10
11
|
|
|
11
12
|
// It is helpful to avoid the need to provide the possibly auto-generated id for each axis.
|
|
@@ -101,6 +102,34 @@ export const useChartProZoom = ({
|
|
|
101
102
|
});
|
|
102
103
|
});
|
|
103
104
|
}, [onZoomChange, store, removeIsInteracting]);
|
|
105
|
+
const moveZoomRange = React.useCallback((axisId, by) => {
|
|
106
|
+
setZoomDataCallback(prevZoomData => {
|
|
107
|
+
return prevZoomData.map(zoom => {
|
|
108
|
+
if (zoom.axisId !== axisId) {
|
|
109
|
+
return zoom;
|
|
110
|
+
}
|
|
111
|
+
const options = optionsLookup[axisId];
|
|
112
|
+
if (!options) {
|
|
113
|
+
return zoom;
|
|
114
|
+
}
|
|
115
|
+
let start = zoom.start;
|
|
116
|
+
let end = zoom.end;
|
|
117
|
+
if (by > 0) {
|
|
118
|
+
const span = end - start;
|
|
119
|
+
end = Math.min(end + by, options.maxEnd);
|
|
120
|
+
start = end - span;
|
|
121
|
+
} else {
|
|
122
|
+
const span = end - start;
|
|
123
|
+
start = Math.max(start + by, options.minStart);
|
|
124
|
+
end = start + span;
|
|
125
|
+
}
|
|
126
|
+
return _extends({}, zoom, {
|
|
127
|
+
start,
|
|
128
|
+
end
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}, [optionsLookup, setZoomDataCallback]);
|
|
104
133
|
React.useEffect(() => {
|
|
105
134
|
return () => {
|
|
106
135
|
removeIsInteracting.clear();
|
|
@@ -327,12 +356,25 @@ export const useChartProZoom = ({
|
|
|
327
356
|
rafThrottledSetZoomData.clear();
|
|
328
357
|
};
|
|
329
358
|
}, [svgRef, drawingArea, isZoomEnabled, optionsLookup, instance, setZoomDataCallback]);
|
|
359
|
+
const zoom = React.useCallback(step => {
|
|
360
|
+
setZoomDataCallback(prev => prev.map(zoomData => {
|
|
361
|
+
const zoomOptions = selectorChartAxisZoomOptionsLookup(store.getSnapshot(), zoomData.axisId);
|
|
362
|
+
return calculateZoom(zoomData, step, zoomOptions);
|
|
363
|
+
}));
|
|
364
|
+
}, [setZoomDataCallback, store]);
|
|
365
|
+
const zoomIn = React.useCallback(() => zoom(0.1), [zoom]);
|
|
366
|
+
const zoomOut = React.useCallback(() => zoom(-0.1), [zoom]);
|
|
330
367
|
return {
|
|
331
368
|
publicAPI: {
|
|
332
|
-
setZoomData: setZoomDataCallback
|
|
369
|
+
setZoomData: setZoomDataCallback,
|
|
370
|
+
zoomIn,
|
|
371
|
+
zoomOut
|
|
333
372
|
},
|
|
334
373
|
instance: {
|
|
335
|
-
setZoomData: setZoomDataCallback
|
|
374
|
+
setZoomData: setZoomDataCallback,
|
|
375
|
+
moveZoomRange,
|
|
376
|
+
zoomIn,
|
|
377
|
+
zoomOut
|
|
336
378
|
}
|
|
337
379
|
};
|
|
338
380
|
};
|