@mui/x-charts-pro 8.13.0 → 8.14.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.
Files changed (26) hide show
  1. package/BarChartPro/BarChartPro.js +49 -37
  2. package/CHANGELOG.md +171 -1
  3. package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  4. package/FunnelChart/funnelAxisPlugin/computeAxisValue.js +38 -36
  5. package/Heatmap/Heatmap.js +0 -4
  6. package/LineChartPro/LineChartPro.js +49 -37
  7. package/ScatterChartPro/ScatterChartPro.js +49 -37
  8. package/esm/BarChartPro/BarChartPro.js +49 -37
  9. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  10. package/esm/FunnelChart/funnelAxisPlugin/computeAxisValue.js +39 -37
  11. package/esm/Heatmap/Heatmap.js +0 -4
  12. package/esm/LineChartPro/LineChartPro.js +49 -37
  13. package/esm/ScatterChartPro/ScatterChartPro.js +49 -37
  14. package/esm/index.js +1 -1
  15. package/esm/internals/plugins/useChartProZoom/ZoomInteractionConfig.selectors.d.ts +2 -6
  16. package/esm/internals/plugins/useChartProZoom/ZoomInteractionConfig.types.d.ts +5 -1
  17. package/esm/internals/plugins/useChartProZoom/gestureHooks/usePanOnPressAndDrag.d.ts +8 -0
  18. package/esm/internals/plugins/useChartProZoom/gestureHooks/usePanOnPressAndDrag.js +73 -0
  19. package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +2 -0
  20. package/index.js +1 -1
  21. package/internals/plugins/useChartProZoom/ZoomInteractionConfig.selectors.d.ts +2 -6
  22. package/internals/plugins/useChartProZoom/ZoomInteractionConfig.types.d.ts +5 -1
  23. package/internals/plugins/useChartProZoom/gestureHooks/usePanOnPressAndDrag.d.ts +8 -0
  24. package/internals/plugins/useChartProZoom/gestureHooks/usePanOnPressAndDrag.js +80 -0
  25. package/internals/plugins/useChartProZoom/useChartProZoom.js +2 -0
  26. package/package.json +7 -7
@@ -11,7 +11,7 @@ import { defaultSlotsMaterial } from "../internals/material/index.js";
11
11
  import { DEFAULT_PLUGINS } from "../internals/plugins/allPlugins.js";
12
12
  import { useChartDataProviderProProps } from "./useChartDataProviderProProps.js";
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const releaseInfo = "MTc1OTI3NjgwMDAwMA==";
14
+ const releaseInfo = "MTc1OTk2ODAwMDAwMA==";
15
15
  const packageIdentifier = 'x-charts-pro';
16
16
  /**
17
17
  * Orchestrates the data providers for the chart components and hooks.
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { scaleBand } from '@mui/x-charts-vendor/d3-scale';
3
- import { getAxisExtrema, isBandScaleConfig, getScale, getColorScale, getOrdinalColorScale, getTickNumber, scaleTickNumberByRange, getCartesianAxisTriggerTooltip, isDateData, createDateFormatter, getDefaultTickNumber } from '@mui/x-charts/internals';
3
+ import { getAxisExtrema, isBandScaleConfig, isPointScaleConfig, isContinuousScaleConfig, getScale, getColorScale, getOrdinalColorScale, getTickNumber, scaleTickNumberByRange, getCartesianAxisTriggerTooltip, isDateData, createDateFormatter, getDefaultTickNumber } from '@mui/x-charts/internals';
4
4
  export const xRangeGetter = (drawingArea, reverse, removedSpace = 0) => {
5
5
  const range = [drawingArea.left, drawingArea.left + drawingArea.width - removedSpace];
6
6
  return reverse ? [range[1], range[0]] : [range[0], range[1]];
@@ -60,47 +60,49 @@ export function computeAxisValue({
60
60
  completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;
61
61
  }
62
62
  }
63
- if (axis.scaleType === 'band') {
63
+ if (isBandScaleConfig(axis)) {
64
64
  return;
65
65
  }
66
- if (axis.scaleType === 'point') {
66
+ if (isPointScaleConfig(axis)) {
67
67
  throw new Error('Point scale is not supported in FunnelChart. Please use band scale instead.');
68
68
  }
69
- const isHorizontal = Object.values(formattedSeries.funnel?.series ?? {}).some(s => s.layout === 'horizontal');
70
- if (isHorizontal ? axisDirection === 'x' : axisDirection === 'y') {
71
- // For linear scale replacing the band scale, we remove the space needed for gap from the scale range.
72
- const itemNumber = formattedSeries.funnel?.series[formattedSeries.funnel.seriesOrder[0]].data.length ?? 0;
73
- const spaceToRemove = gap * (itemNumber - 1);
74
- range = getRange(drawingArea, axisDirection, axis, spaceToRemove);
75
- }
76
- const scaleType = axis.scaleType ?? 'linear';
77
- const domainLimit = axis.domainLimit ?? 'nice';
78
- const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
79
- if (typeof domainLimit === 'function') {
80
- const {
81
- min,
82
- max
83
- } = domainLimit(minData, maxData);
84
- axisExtremums[0] = min;
85
- axisExtremums[1] = max;
69
+ if (isContinuousScaleConfig(axis)) {
70
+ const isHorizontal = Object.values(formattedSeries.funnel?.series ?? {}).some(s => s.layout === 'horizontal');
71
+ if (isHorizontal ? axisDirection === 'x' : axisDirection === 'y') {
72
+ // For linear scale replacing the band scale, we remove the space needed for gap from the scale range.
73
+ const itemNumber = formattedSeries.funnel?.series[formattedSeries.funnel.seriesOrder[0]].data.length ?? 0;
74
+ const spaceToRemove = gap * (itemNumber - 1);
75
+ range = getRange(drawingArea, axisDirection, axis, spaceToRemove);
76
+ }
77
+ const scaleType = axis.scaleType ?? 'linear';
78
+ const domainLimit = axis.domainLimit ?? 'nice';
79
+ const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
80
+ if (typeof domainLimit === 'function') {
81
+ const {
82
+ min,
83
+ max
84
+ } = domainLimit(minData, maxData);
85
+ axisExtremums[0] = min;
86
+ axisExtremums[1] = max;
87
+ }
88
+ const rawTickNumber = getTickNumber(axis, axisExtremums, getDefaultTickNumber(Math.abs(range[1] - range[0])));
89
+ const tickNumber = scaleTickNumberByRange(rawTickNumber, range);
90
+ const scale = getScale(scaleType, axisExtremums, range);
91
+ const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
92
+ const [minDomain, maxDomain] = finalScale.domain();
93
+ const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
94
+ completeAxis[axis.id] = _extends({
95
+ offset: 0,
96
+ height: 0,
97
+ triggerTooltip
98
+ }, axis, {
99
+ data,
100
+ scaleType: scaleType,
101
+ scale: finalScale.domain(domain),
102
+ tickNumber,
103
+ colorScale: axis.colorMap && getColorScale(axis.colorMap)
104
+ });
86
105
  }
87
- const rawTickNumber = getTickNumber(axis, axisExtremums, getDefaultTickNumber(Math.abs(range[1] - range[0])));
88
- const tickNumber = scaleTickNumberByRange(rawTickNumber, range);
89
- const scale = getScale(scaleType, axisExtremums, range);
90
- const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
91
- const [minDomain, maxDomain] = finalScale.domain();
92
- const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
93
- completeAxis[axis.id] = _extends({
94
- offset: 0,
95
- height: 0,
96
- triggerTooltip
97
- }, axis, {
98
- data,
99
- scaleType: scaleType,
100
- scale: finalScale.domain(domain),
101
- tickNumber,
102
- colorScale: axis.colorMap && getColorScale(axis.colorMap)
103
- });
104
106
  });
105
107
  return {
106
108
  axis: completeAxis,
@@ -316,8 +316,6 @@ process.env.NODE_ENV !== "production" ? Heatmap.propTypes = {
316
316
  ignoreTooltip: PropTypes.bool,
317
317
  label: PropTypes.string,
318
318
  labelStyle: PropTypes.object,
319
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
320
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
321
319
  offset: PropTypes.number,
322
320
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
323
321
  reverse: PropTypes.bool,
@@ -377,8 +375,6 @@ process.env.NODE_ENV !== "production" ? Heatmap.propTypes = {
377
375
  ignoreTooltip: PropTypes.bool,
378
376
  label: PropTypes.string,
379
377
  labelStyle: PropTypes.object,
380
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
381
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
382
378
  offset: PropTypes.number,
383
379
  position: PropTypes.oneOf(['left', 'none', 'right']),
384
380
  reverse: PropTypes.bool,
@@ -317,8 +317,6 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
317
317
  ignoreTooltip: PropTypes.bool,
318
318
  label: PropTypes.string,
319
319
  labelStyle: PropTypes.object,
320
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
321
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
322
320
  offset: PropTypes.number,
323
321
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
324
322
  reverse: PropTypes.bool,
@@ -386,8 +384,6 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
386
384
  ignoreTooltip: PropTypes.bool,
387
385
  label: PropTypes.string,
388
386
  labelStyle: PropTypes.object,
389
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
390
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
391
387
  offset: PropTypes.number,
392
388
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
393
389
  reverse: PropTypes.bool,
@@ -445,8 +441,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
445
441
  ignoreTooltip: PropTypes.bool,
446
442
  label: PropTypes.string,
447
443
  labelStyle: PropTypes.object,
448
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
449
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
444
+ max: PropTypes.number,
445
+ min: PropTypes.number,
450
446
  offset: PropTypes.number,
451
447
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
452
448
  reverse: PropTypes.bool,
@@ -505,8 +501,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
505
501
  ignoreTooltip: PropTypes.bool,
506
502
  label: PropTypes.string,
507
503
  labelStyle: PropTypes.object,
508
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
509
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
504
+ max: PropTypes.number,
505
+ min: PropTypes.number,
510
506
  offset: PropTypes.number,
511
507
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
512
508
  reverse: PropTypes.bool,
@@ -564,8 +560,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
564
560
  ignoreTooltip: PropTypes.bool,
565
561
  label: PropTypes.string,
566
562
  labelStyle: PropTypes.object,
567
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
568
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
563
+ max: PropTypes.number,
564
+ min: PropTypes.number,
569
565
  offset: PropTypes.number,
570
566
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
571
567
  reverse: PropTypes.bool,
@@ -623,8 +619,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
623
619
  ignoreTooltip: PropTypes.bool,
624
620
  label: PropTypes.string,
625
621
  labelStyle: PropTypes.object,
626
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
627
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
622
+ max: PropTypes.number,
623
+ min: PropTypes.number,
628
624
  offset: PropTypes.number,
629
625
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
630
626
  reverse: PropTypes.bool,
@@ -682,8 +678,12 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
682
678
  ignoreTooltip: PropTypes.bool,
683
679
  label: PropTypes.string,
684
680
  labelStyle: PropTypes.object,
685
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
686
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
681
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
682
+ valueOf: PropTypes.func.isRequired
683
+ })]),
684
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
685
+ valueOf: PropTypes.func.isRequired
686
+ })]),
687
687
  offset: PropTypes.number,
688
688
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
689
689
  reverse: PropTypes.bool,
@@ -741,8 +741,12 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
741
741
  ignoreTooltip: PropTypes.bool,
742
742
  label: PropTypes.string,
743
743
  labelStyle: PropTypes.object,
744
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
745
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
744
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
745
+ valueOf: PropTypes.func.isRequired
746
+ })]),
747
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
748
+ valueOf: PropTypes.func.isRequired
749
+ })]),
746
750
  offset: PropTypes.number,
747
751
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
748
752
  reverse: PropTypes.bool,
@@ -800,8 +804,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
800
804
  ignoreTooltip: PropTypes.bool,
801
805
  label: PropTypes.string,
802
806
  labelStyle: PropTypes.object,
803
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
804
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
807
+ max: PropTypes.number,
808
+ min: PropTypes.number,
805
809
  offset: PropTypes.number,
806
810
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
807
811
  reverse: PropTypes.bool,
@@ -876,8 +880,6 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
876
880
  ignoreTooltip: PropTypes.bool,
877
881
  label: PropTypes.string,
878
882
  labelStyle: PropTypes.object,
879
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
880
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
881
883
  offset: PropTypes.number,
882
884
  position: PropTypes.oneOf(['left', 'none', 'right']),
883
885
  reverse: PropTypes.bool,
@@ -944,8 +946,6 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
944
946
  ignoreTooltip: PropTypes.bool,
945
947
  label: PropTypes.string,
946
948
  labelStyle: PropTypes.object,
947
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
948
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
949
949
  offset: PropTypes.number,
950
950
  position: PropTypes.oneOf(['left', 'none', 'right']),
951
951
  reverse: PropTypes.bool,
@@ -1002,8 +1002,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1002
1002
  ignoreTooltip: PropTypes.bool,
1003
1003
  label: PropTypes.string,
1004
1004
  labelStyle: PropTypes.object,
1005
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1006
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1005
+ max: PropTypes.number,
1006
+ min: PropTypes.number,
1007
1007
  offset: PropTypes.number,
1008
1008
  position: PropTypes.oneOf(['left', 'none', 'right']),
1009
1009
  reverse: PropTypes.bool,
@@ -1061,8 +1061,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1061
1061
  ignoreTooltip: PropTypes.bool,
1062
1062
  label: PropTypes.string,
1063
1063
  labelStyle: PropTypes.object,
1064
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1065
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1064
+ max: PropTypes.number,
1065
+ min: PropTypes.number,
1066
1066
  offset: PropTypes.number,
1067
1067
  position: PropTypes.oneOf(['left', 'none', 'right']),
1068
1068
  reverse: PropTypes.bool,
@@ -1119,8 +1119,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1119
1119
  ignoreTooltip: PropTypes.bool,
1120
1120
  label: PropTypes.string,
1121
1121
  labelStyle: PropTypes.object,
1122
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1123
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1122
+ max: PropTypes.number,
1123
+ min: PropTypes.number,
1124
1124
  offset: PropTypes.number,
1125
1125
  position: PropTypes.oneOf(['left', 'none', 'right']),
1126
1126
  reverse: PropTypes.bool,
@@ -1177,8 +1177,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1177
1177
  ignoreTooltip: PropTypes.bool,
1178
1178
  label: PropTypes.string,
1179
1179
  labelStyle: PropTypes.object,
1180
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1181
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1180
+ max: PropTypes.number,
1181
+ min: PropTypes.number,
1182
1182
  offset: PropTypes.number,
1183
1183
  position: PropTypes.oneOf(['left', 'none', 'right']),
1184
1184
  reverse: PropTypes.bool,
@@ -1235,8 +1235,12 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1235
1235
  ignoreTooltip: PropTypes.bool,
1236
1236
  label: PropTypes.string,
1237
1237
  labelStyle: PropTypes.object,
1238
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1239
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1238
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1239
+ valueOf: PropTypes.func.isRequired
1240
+ })]),
1241
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1242
+ valueOf: PropTypes.func.isRequired
1243
+ })]),
1240
1244
  offset: PropTypes.number,
1241
1245
  position: PropTypes.oneOf(['left', 'none', 'right']),
1242
1246
  reverse: PropTypes.bool,
@@ -1293,8 +1297,12 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1293
1297
  ignoreTooltip: PropTypes.bool,
1294
1298
  label: PropTypes.string,
1295
1299
  labelStyle: PropTypes.object,
1296
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1297
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1300
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1301
+ valueOf: PropTypes.func.isRequired
1302
+ })]),
1303
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1304
+ valueOf: PropTypes.func.isRequired
1305
+ })]),
1298
1306
  offset: PropTypes.number,
1299
1307
  position: PropTypes.oneOf(['left', 'none', 'right']),
1300
1308
  reverse: PropTypes.bool,
@@ -1351,8 +1359,8 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1351
1359
  ignoreTooltip: PropTypes.bool,
1352
1360
  label: PropTypes.string,
1353
1361
  labelStyle: PropTypes.object,
1354
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1355
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1362
+ max: PropTypes.number,
1363
+ min: PropTypes.number,
1356
1364
  offset: PropTypes.number,
1357
1365
  position: PropTypes.oneOf(['left', 'none', 'right']),
1358
1366
  reverse: PropTypes.bool,
@@ -1424,10 +1432,14 @@ process.env.NODE_ENV !== "production" ? LineChartPro.propTypes = {
1424
1432
  * Configuration for zoom interactions.
1425
1433
  */
1426
1434
  zoomInteractionConfig: PropTypes.shape({
1427
- pan: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['drag']), PropTypes.shape({
1435
+ pan: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['drag', 'pressAndDrag']), PropTypes.shape({
1428
1436
  pointerMode: PropTypes.oneOf(['mouse', 'touch']),
1429
1437
  requiredKeys: PropTypes.arrayOf(PropTypes.string),
1430
1438
  type: PropTypes.oneOf(['drag']).isRequired
1439
+ }), PropTypes.shape({
1440
+ pointerMode: PropTypes.oneOf(['mouse', 'touch']),
1441
+ requiredKeys: PropTypes.arrayOf(PropTypes.string),
1442
+ type: PropTypes.oneOf(['pressAndDrag']).isRequired
1431
1443
  })]).isRequired),
1432
1444
  zoom: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['pinch', 'tapAndDrag', 'wheel']), PropTypes.shape({
1433
1445
  pointerMode: PropTypes.any,
@@ -299,8 +299,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
299
299
  ignoreTooltip: PropTypes.bool,
300
300
  label: PropTypes.string,
301
301
  labelStyle: PropTypes.object,
302
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
303
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
304
302
  offset: PropTypes.number,
305
303
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
306
304
  reverse: PropTypes.bool,
@@ -368,8 +366,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
368
366
  ignoreTooltip: PropTypes.bool,
369
367
  label: PropTypes.string,
370
368
  labelStyle: PropTypes.object,
371
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
372
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
373
369
  offset: PropTypes.number,
374
370
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
375
371
  reverse: PropTypes.bool,
@@ -427,8 +423,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
427
423
  ignoreTooltip: PropTypes.bool,
428
424
  label: PropTypes.string,
429
425
  labelStyle: PropTypes.object,
430
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
431
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
426
+ max: PropTypes.number,
427
+ min: PropTypes.number,
432
428
  offset: PropTypes.number,
433
429
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
434
430
  reverse: PropTypes.bool,
@@ -487,8 +483,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
487
483
  ignoreTooltip: PropTypes.bool,
488
484
  label: PropTypes.string,
489
485
  labelStyle: PropTypes.object,
490
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
491
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
486
+ max: PropTypes.number,
487
+ min: PropTypes.number,
492
488
  offset: PropTypes.number,
493
489
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
494
490
  reverse: PropTypes.bool,
@@ -546,8 +542,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
546
542
  ignoreTooltip: PropTypes.bool,
547
543
  label: PropTypes.string,
548
544
  labelStyle: PropTypes.object,
549
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
550
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
545
+ max: PropTypes.number,
546
+ min: PropTypes.number,
551
547
  offset: PropTypes.number,
552
548
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
553
549
  reverse: PropTypes.bool,
@@ -605,8 +601,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
605
601
  ignoreTooltip: PropTypes.bool,
606
602
  label: PropTypes.string,
607
603
  labelStyle: PropTypes.object,
608
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
609
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
604
+ max: PropTypes.number,
605
+ min: PropTypes.number,
610
606
  offset: PropTypes.number,
611
607
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
612
608
  reverse: PropTypes.bool,
@@ -664,8 +660,12 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
664
660
  ignoreTooltip: PropTypes.bool,
665
661
  label: PropTypes.string,
666
662
  labelStyle: PropTypes.object,
667
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
668
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
663
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
664
+ valueOf: PropTypes.func.isRequired
665
+ })]),
666
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
667
+ valueOf: PropTypes.func.isRequired
668
+ })]),
669
669
  offset: PropTypes.number,
670
670
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
671
671
  reverse: PropTypes.bool,
@@ -723,8 +723,12 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
723
723
  ignoreTooltip: PropTypes.bool,
724
724
  label: PropTypes.string,
725
725
  labelStyle: PropTypes.object,
726
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
727
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
726
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
727
+ valueOf: PropTypes.func.isRequired
728
+ })]),
729
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
730
+ valueOf: PropTypes.func.isRequired
731
+ })]),
728
732
  offset: PropTypes.number,
729
733
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
730
734
  reverse: PropTypes.bool,
@@ -782,8 +786,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
782
786
  ignoreTooltip: PropTypes.bool,
783
787
  label: PropTypes.string,
784
788
  labelStyle: PropTypes.object,
785
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
786
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
789
+ max: PropTypes.number,
790
+ min: PropTypes.number,
787
791
  offset: PropTypes.number,
788
792
  position: PropTypes.oneOf(['bottom', 'none', 'top']),
789
793
  reverse: PropTypes.bool,
@@ -858,8 +862,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
858
862
  ignoreTooltip: PropTypes.bool,
859
863
  label: PropTypes.string,
860
864
  labelStyle: PropTypes.object,
861
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
862
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
863
865
  offset: PropTypes.number,
864
866
  position: PropTypes.oneOf(['left', 'none', 'right']),
865
867
  reverse: PropTypes.bool,
@@ -926,8 +928,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
926
928
  ignoreTooltip: PropTypes.bool,
927
929
  label: PropTypes.string,
928
930
  labelStyle: PropTypes.object,
929
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
930
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
931
931
  offset: PropTypes.number,
932
932
  position: PropTypes.oneOf(['left', 'none', 'right']),
933
933
  reverse: PropTypes.bool,
@@ -984,8 +984,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
984
984
  ignoreTooltip: PropTypes.bool,
985
985
  label: PropTypes.string,
986
986
  labelStyle: PropTypes.object,
987
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
988
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
987
+ max: PropTypes.number,
988
+ min: PropTypes.number,
989
989
  offset: PropTypes.number,
990
990
  position: PropTypes.oneOf(['left', 'none', 'right']),
991
991
  reverse: PropTypes.bool,
@@ -1043,8 +1043,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1043
1043
  ignoreTooltip: PropTypes.bool,
1044
1044
  label: PropTypes.string,
1045
1045
  labelStyle: PropTypes.object,
1046
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1047
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1046
+ max: PropTypes.number,
1047
+ min: PropTypes.number,
1048
1048
  offset: PropTypes.number,
1049
1049
  position: PropTypes.oneOf(['left', 'none', 'right']),
1050
1050
  reverse: PropTypes.bool,
@@ -1101,8 +1101,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1101
1101
  ignoreTooltip: PropTypes.bool,
1102
1102
  label: PropTypes.string,
1103
1103
  labelStyle: PropTypes.object,
1104
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1105
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1104
+ max: PropTypes.number,
1105
+ min: PropTypes.number,
1106
1106
  offset: PropTypes.number,
1107
1107
  position: PropTypes.oneOf(['left', 'none', 'right']),
1108
1108
  reverse: PropTypes.bool,
@@ -1159,8 +1159,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1159
1159
  ignoreTooltip: PropTypes.bool,
1160
1160
  label: PropTypes.string,
1161
1161
  labelStyle: PropTypes.object,
1162
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1163
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1162
+ max: PropTypes.number,
1163
+ min: PropTypes.number,
1164
1164
  offset: PropTypes.number,
1165
1165
  position: PropTypes.oneOf(['left', 'none', 'right']),
1166
1166
  reverse: PropTypes.bool,
@@ -1217,8 +1217,12 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1217
1217
  ignoreTooltip: PropTypes.bool,
1218
1218
  label: PropTypes.string,
1219
1219
  labelStyle: PropTypes.object,
1220
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1221
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1220
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1221
+ valueOf: PropTypes.func.isRequired
1222
+ })]),
1223
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1224
+ valueOf: PropTypes.func.isRequired
1225
+ })]),
1222
1226
  offset: PropTypes.number,
1223
1227
  position: PropTypes.oneOf(['left', 'none', 'right']),
1224
1228
  reverse: PropTypes.bool,
@@ -1275,8 +1279,12 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1275
1279
  ignoreTooltip: PropTypes.bool,
1276
1280
  label: PropTypes.string,
1277
1281
  labelStyle: PropTypes.object,
1278
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1279
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1282
+ max: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1283
+ valueOf: PropTypes.func.isRequired
1284
+ })]),
1285
+ min: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
1286
+ valueOf: PropTypes.func.isRequired
1287
+ })]),
1280
1288
  offset: PropTypes.number,
1281
1289
  position: PropTypes.oneOf(['left', 'none', 'right']),
1282
1290
  reverse: PropTypes.bool,
@@ -1333,8 +1341,8 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1333
1341
  ignoreTooltip: PropTypes.bool,
1334
1342
  label: PropTypes.string,
1335
1343
  labelStyle: PropTypes.object,
1336
- max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1337
- min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
1344
+ max: PropTypes.number,
1345
+ min: PropTypes.number,
1338
1346
  offset: PropTypes.number,
1339
1347
  position: PropTypes.oneOf(['left', 'none', 'right']),
1340
1348
  reverse: PropTypes.bool,
@@ -1406,10 +1414,14 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1406
1414
  * Configuration for zoom interactions.
1407
1415
  */
1408
1416
  zoomInteractionConfig: PropTypes.shape({
1409
- pan: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['drag']), PropTypes.shape({
1417
+ pan: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['drag', 'pressAndDrag']), PropTypes.shape({
1410
1418
  pointerMode: PropTypes.oneOf(['mouse', 'touch']),
1411
1419
  requiredKeys: PropTypes.arrayOf(PropTypes.string),
1412
1420
  type: PropTypes.oneOf(['drag']).isRequired
1421
+ }), PropTypes.shape({
1422
+ pointerMode: PropTypes.oneOf(['mouse', 'touch']),
1423
+ requiredKeys: PropTypes.arrayOf(PropTypes.string),
1424
+ type: PropTypes.oneOf(['pressAndDrag']).isRequired
1413
1425
  })]).isRequired),
1414
1426
  zoom: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['pinch', 'tapAndDrag', 'wheel']), PropTypes.shape({
1415
1427
  pointerMode: PropTypes.any,
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts-pro v8.13.0
2
+ * @mui/x-charts-pro v8.14.0
3
3
  *
4
4
  * @license SEE LICENSE IN LICENSE
5
5
  * This source code is licensed under the SEE LICENSE IN LICENSE license found in the
@@ -7,11 +7,7 @@ export declare const selectorZoomInteractionConfig: import("reselect").Selector<
7
7
  };
8
8
  pointerMode?: import("@mui/x-internal-gestures/core").PointerMode[];
9
9
  }) | null, [interactionName: "wheel" | "pinch" | "tapAndDrag"]>;
10
- export declare const selectorPanInteractionConfig: import("reselect").Selector<any, (Omit<{
11
- type: "drag";
12
- pointerMode?: import("./ZoomInteractionConfig.types.js").InteractionMode | undefined;
13
- requiredKeys?: import("@mui/x-internal-gestures/core").KeyboardKey[] | undefined;
14
- }, "pointerMode"> & {
10
+ export declare const selectorPanInteractionConfig: import("reselect").Selector<any, (Omit<import("./ZoomInteractionConfig.types.js").PanInteraction, "pointerMode"> & {
15
11
  mouse: {
16
12
  requiredKeys?: import("@mui/x-internal-gestures/core").KeyboardKey[];
17
13
  };
@@ -19,4 +15,4 @@ export declare const selectorPanInteractionConfig: import("reselect").Selector<a
19
15
  requiredKeys?: import("@mui/x-internal-gestures/core").KeyboardKey[];
20
16
  };
21
17
  pointerMode?: import("@mui/x-internal-gestures/core").PointerMode[];
22
- }) | null, [interactionName: "drag"]>;
18
+ }) | null, [interactionName: "drag" | "pressAndDrag"]>;
@@ -12,6 +12,7 @@ export type ZoomInteractionConfig = {
12
12
  /**
13
13
  * Defines the interactions that trigger panning.
14
14
  * - `drag`: Pans the chart when dragged with the mouse.
15
+ * - `pressAndDrag`: Pans the chart by pressing and holding, then dragging. Useful for avoiding conflicts with selection gestures.
15
16
  *
16
17
  * @default ['drag']
17
18
  */
@@ -31,7 +32,7 @@ export type DefaultizedZoomInteractionConfig = {
31
32
  pan: Entry<PanInteraction>;
32
33
  };
33
34
  export type ZoomInteraction = WheelInteraction | PinchInteraction | TapAndDragInteraction;
34
- export type PanInteraction = DragInteraction;
35
+ export type PanInteraction = DragInteraction | PressAndDragInteraction;
35
36
  export type ZoomInteractionName = ZoomInteraction['type'];
36
37
  export type PanInteractionName = PanInteraction['type'];
37
38
  export type InteractionMode = Exclude<PointerMode, 'pen'>;
@@ -75,6 +76,9 @@ export type DragInteraction = Unpack<{
75
76
  export type TapAndDragInteraction = Unpack<{
76
77
  type: 'tapAndDrag';
77
78
  } & AllModeProp & AllKeysProp>;
79
+ export type PressAndDragInteraction = Unpack<{
80
+ type: 'pressAndDrag';
81
+ } & AllModeProp & AllKeysProp>;
78
82
  export type AnyInteraction = {
79
83
  type: string;
80
84
  pointerMode?: InteractionMode;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { ChartPlugin, ZoomData } from '@mui/x-charts/internals';
3
+ import { UseChartProZoomSignature } from "../useChartProZoom.types.js";
4
+ export declare const usePanOnPressAndDrag: ({
5
+ store,
6
+ instance,
7
+ svgRef
8
+ }: Pick<Parameters<ChartPlugin<UseChartProZoomSignature>>[0], "store" | "instance" | "svgRef">, setZoomDataCallback: React.Dispatch<ZoomData[] | ((prev: ZoomData[]) => ZoomData[])>) => void;