@mui/x-charts-pro 9.2.0 → 9.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 +62 -32
- package/BarChartPro/BarChartPro.mjs +62 -32
- package/CHANGELOG.md +314 -0
- package/ChartsDataProviderPro/ChartsDataProviderPro.js +2 -2
- package/ChartsDataProviderPro/ChartsDataProviderPro.mjs +2 -2
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +1 -0
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.mjs +1 -0
- package/ChartsToolbarPro/ChartsToolbarPro.d.mts +1 -1
- package/ChartsToolbarPro/ChartsToolbarPro.d.ts +1 -1
- package/ChartsToolbarPro/ChartsToolbarRangeButtonTrigger.d.mts +1 -1
- package/ChartsToolbarPro/ChartsToolbarRangeButtonTrigger.d.ts +1 -1
- package/ChartsToolbarPro/ChartsToolbarRangeButtonTrigger.js +35 -38
- package/ChartsToolbarPro/ChartsToolbarRangeButtonTrigger.mjs +37 -40
- package/ChartsToolbarPro/Toolbar.types.d.mts +3 -2
- package/ChartsToolbarPro/Toolbar.types.d.ts +3 -2
- package/ChartsToolbarPro/rangeButtonValueToZoom.d.mts +18 -2
- package/ChartsToolbarPro/rangeButtonValueToZoom.d.ts +18 -2
- package/ChartsToolbarPro/rangeButtonValueToZoom.js +73 -10
- package/ChartsToolbarPro/rangeButtonValueToZoom.mjs +72 -10
- package/ChartsZoomSlider/internals/chartsAxisZoomSliderThumbClasses.js +9 -2
- package/ChartsZoomSlider/internals/chartsAxisZoomSliderThumbClasses.mjs +9 -2
- package/ChartsZoomSlider/internals/previews/ScatterPreviewPlot.js +2 -1
- package/ChartsZoomSlider/internals/previews/ScatterPreviewPlot.mjs +2 -1
- package/FunnelChart/FunnelChart.js +15 -15
- package/FunnelChart/FunnelChart.mjs +15 -15
- package/FunnelChart/funnelPlotSlots.types.d.mts +5 -4
- package/FunnelChart/funnelPlotSlots.types.d.ts +5 -4
- package/Heatmap/Heatmap.d.mts +3 -2
- package/Heatmap/Heatmap.d.ts +3 -2
- package/Heatmap/Heatmap.js +52 -22
- package/Heatmap/Heatmap.mjs +52 -22
- package/Heatmap/HeatmapItem.d.mts +3 -2
- package/Heatmap/HeatmapItem.d.ts +3 -2
- package/Heatmap/HeatmapItem.js +2 -0
- package/Heatmap/HeatmapItem.mjs +2 -0
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.mts +3 -2
- package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +3 -2
- package/LineChartPro/LineChartPro.js +58 -28
- package/LineChartPro/LineChartPro.mjs +58 -28
- package/PieChartPro/PieChartPro.js +6 -6
- package/PieChartPro/PieChartPro.mjs +6 -6
- package/RadarChartPro/RadarChartPro.js +8 -8
- package/RadarChartPro/RadarChartPro.mjs +8 -8
- package/SankeyChart/SankeyChart.js +16 -16
- package/SankeyChart/SankeyChart.mjs +16 -16
- package/ScatterChartPro/ScatterChartPro.d.mts +2 -1
- package/ScatterChartPro/ScatterChartPro.d.ts +2 -1
- package/ScatterChartPro/ScatterChartPro.js +58 -28
- package/ScatterChartPro/ScatterChartPro.mjs +58 -28
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/plugins/useChartProExport/exportImage.js +8 -2
- package/internals/plugins/useChartProExport/exportImage.mjs +8 -2
- package/internals/plugins/useChartProExport/print.js +1 -0
- package/internals/plugins/useChartProExport/print.mjs +1 -0
- package/internals/plugins/useChartProExport/useChartProExport.types.d.mts +6 -0
- package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +6 -0
- package/internals/plugins/useChartProZoom/useChartProZoom.js +77 -14
- package/internals/plugins/useChartProZoom/useChartProZoom.mjs +79 -15
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.mts +0 -3
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +0 -3
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +1 -2
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.mjs +0 -1
- package/internals/plugins/useChartProZoom/useChartProZoom.types.d.mts +28 -11
- package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +28 -11
- package/internals/slots/chartsBaseSlots.d.mts +6 -5
- package/internals/slots/chartsBaseSlots.d.ts +6 -5
- package/internals/slots/chartsIconSlots.d.mts +4 -3
- package/internals/slots/chartsIconSlots.d.ts +4 -3
- package/models/chartsSlotsComponentsPropsPro.d.mts +11 -0
- package/models/chartsSlotsComponentsPropsPro.d.ts +11 -0
- package/models/chartsSlotsComponentsPropsPro.js +5 -0
- package/models/chartsSlotsComponentsPropsPro.mjs +1 -0
- package/models/index.d.mts +1 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +12 -0
- package/models/index.mjs +1 -0
- package/package.json +6 -6
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type ScatterChartProps, type ScatterChartSlotProps, type ScatterChartSlots } from '@mui/x-charts/ScatterChart';
|
|
3
3
|
import { type ChartsTooltipProps } from '@mui/x-charts/ChartsTooltip';
|
|
4
|
+
import type { TooltipPropsOverrides } from '@mui/x-charts/models';
|
|
4
5
|
import { type ChartsSlotPropsPro, type ChartsSlotsPro } from "../internals/material/index.js";
|
|
5
6
|
import { type ChartsContainerProProps } from "../ChartsContainerPro/ChartsContainerPro.js";
|
|
6
7
|
import { type ScatterChartProPluginSignatures } from "./ScatterChartPro.plugins.js";
|
|
@@ -11,7 +12,7 @@ export interface ScatterChartProSlotProps extends Omit<ScatterChartSlotProps, 't
|
|
|
11
12
|
* Slot props for the tooltip component.
|
|
12
13
|
* @default {}
|
|
13
14
|
*/
|
|
14
|
-
tooltip?: Partial<ChartsTooltipProps<'item' | 'none'
|
|
15
|
+
tooltip?: Partial<ChartsTooltipProps<'item' | 'none'>> & TooltipPropsOverrides;
|
|
15
16
|
}
|
|
16
17
|
export interface ScatterChartProProps extends Omit<ScatterChartProps, 'apiRef' | 'slots' | 'slotProps' | 'plugins' | 'seriesConfig'>, Omit<ChartsContainerProProps<'scatter', ScatterChartProPluginSignatures>, 'series' | 'onItemClick' | 'slots' | 'slotProps' | 'highlightedAxis' | 'onHighlightedAxisChange'> {
|
|
17
18
|
/**
|
|
@@ -223,11 +223,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
223
223
|
*/
|
|
224
224
|
highlightedItem: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
225
225
|
dataIndex: _propTypes.default.number,
|
|
226
|
-
seriesId: _propTypes.default.string.isRequired
|
|
227
|
-
type: _propTypes.default.oneOf(['scatter']).isRequired
|
|
226
|
+
seriesId: _propTypes.default.string.isRequired
|
|
228
227
|
}), _propTypes.default.shape({
|
|
229
228
|
dataIndex: _propTypes.default.number,
|
|
230
|
-
seriesId: _propTypes.default.string.isRequired
|
|
229
|
+
seriesId: _propTypes.default.string.isRequired,
|
|
230
|
+
type: _propTypes.default.oneOf(['scatter']).isRequired
|
|
231
231
|
})]),
|
|
232
232
|
/**
|
|
233
233
|
* Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
|
|
@@ -273,12 +273,21 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
273
273
|
/**
|
|
274
274
|
* The list of zoom data related to each axis.
|
|
275
275
|
* Used to initialize the zoom in a specific configuration without controlling it.
|
|
276
|
+
*
|
|
277
|
+
* Each entry is either explicit zoom percentages (`{ axisId, start, end }`) or a
|
|
278
|
+
* range value (`{ axisId, value }`) resolved against the axis domain.
|
|
276
279
|
*/
|
|
277
|
-
initialZoom: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
280
|
+
initialZoom: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
278
281
|
axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
|
|
279
282
|
end: _propTypes.default.number.isRequired,
|
|
280
283
|
start: _propTypes.default.number.isRequired
|
|
281
|
-
})
|
|
284
|
+
}), _propTypes.default.shape({
|
|
285
|
+
axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
|
|
286
|
+
value: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.instanceOf(Date).isRequired), _propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func, _propTypes.default.shape({
|
|
287
|
+
step: _propTypes.default.number,
|
|
288
|
+
unit: _propTypes.default.oneOf(['day', 'hour', 'microsecond', 'millisecond', 'minute', 'month', 'second', 'week', 'year']).isRequired
|
|
289
|
+
})])
|
|
290
|
+
})]).isRequired),
|
|
282
291
|
/**
|
|
283
292
|
* If `true`, a loading overlay is displayed.
|
|
284
293
|
* @default false
|
|
@@ -399,11 +408,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
399
408
|
*/
|
|
400
409
|
tooltipItem: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
401
410
|
dataIndex: _propTypes.default.number.isRequired,
|
|
402
|
-
seriesId: _propTypes.default.string.isRequired
|
|
403
|
-
type: _propTypes.default.oneOf(['scatter']).isRequired
|
|
411
|
+
seriesId: _propTypes.default.string.isRequired
|
|
404
412
|
}), _propTypes.default.shape({
|
|
405
413
|
dataIndex: _propTypes.default.number.isRequired,
|
|
406
|
-
seriesId: _propTypes.default.string.isRequired
|
|
414
|
+
seriesId: _propTypes.default.string.isRequired,
|
|
415
|
+
type: _propTypes.default.oneOf(['scatter']).isRequired
|
|
407
416
|
})]),
|
|
408
417
|
/**
|
|
409
418
|
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
@@ -426,11 +435,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
426
435
|
*/
|
|
427
436
|
zAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
428
437
|
colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
429
|
-
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
430
|
-
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
431
|
-
unknownColor: _propTypes.default.string,
|
|
432
|
-
values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
|
|
433
|
-
}), _propTypes.default.shape({
|
|
434
438
|
color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
|
|
435
439
|
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
436
440
|
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
@@ -439,12 +443,38 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
439
443
|
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
440
444
|
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
441
445
|
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
446
|
+
}), _propTypes.default.shape({
|
|
447
|
+
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
448
|
+
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
449
|
+
unknownColor: _propTypes.default.string,
|
|
450
|
+
values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
|
|
442
451
|
})]),
|
|
443
452
|
data: _propTypes.default.array,
|
|
444
453
|
dataKey: _propTypes.default.string,
|
|
445
454
|
id: _propTypes.default.string,
|
|
446
455
|
max: _propTypes.default.number,
|
|
447
456
|
min: _propTypes.default.number,
|
|
457
|
+
sizeMap: _propTypes.default.oneOfType([_propTypes.default.shape({
|
|
458
|
+
interpolator: _propTypes.default.oneOf(['linear', 'log', 'sqrt']),
|
|
459
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
460
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
461
|
+
size: _propTypes.default.arrayOf(_propTypes.default.number.isRequired).isRequired,
|
|
462
|
+
type: _propTypes.default.oneOf(['continuous']).isRequired
|
|
463
|
+
}), _propTypes.default.shape({
|
|
464
|
+
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
465
|
+
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
466
|
+
size: _propTypes.default.func.isRequired,
|
|
467
|
+
type: _propTypes.default.oneOf(['continuous']).isRequired
|
|
468
|
+
}), _propTypes.default.shape({
|
|
469
|
+
sizes: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
|
|
470
|
+
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
471
|
+
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
472
|
+
}), _propTypes.default.shape({
|
|
473
|
+
sizes: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
|
|
474
|
+
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
475
|
+
unknownSize: _propTypes.default.number,
|
|
476
|
+
values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
|
|
477
|
+
})]),
|
|
448
478
|
valueGetter: _propTypes.default.func
|
|
449
479
|
})),
|
|
450
480
|
/**
|
|
@@ -460,6 +490,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
460
490
|
*/
|
|
461
491
|
zoomInteractionConfig: _propTypes.default.shape({
|
|
462
492
|
pan: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf(['drag', 'pressAndDrag', 'wheel']), _propTypes.default.shape({
|
|
493
|
+
allowedDirection: _propTypes.default.oneOf(['x', 'xy', 'y']),
|
|
494
|
+
pointerMode: _propTypes.default.any,
|
|
495
|
+
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
496
|
+
type: _propTypes.default.oneOf(['wheel']).isRequired
|
|
497
|
+
}), _propTypes.default.shape({
|
|
463
498
|
pointerMode: _propTypes.default.oneOf(['mouse', 'touch']),
|
|
464
499
|
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
465
500
|
type: _propTypes.default.oneOf(['drag']).isRequired
|
|
@@ -467,24 +502,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
467
502
|
pointerMode: _propTypes.default.oneOf(['mouse', 'touch']),
|
|
468
503
|
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
469
504
|
type: _propTypes.default.oneOf(['pressAndDrag']).isRequired
|
|
470
|
-
}), _propTypes.default.shape({
|
|
471
|
-
allowedDirection: _propTypes.default.oneOf(['x', 'xy', 'y']),
|
|
472
|
-
pointerMode: _propTypes.default.any,
|
|
473
|
-
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
474
|
-
type: _propTypes.default.oneOf(['wheel']).isRequired
|
|
475
505
|
})]).isRequired),
|
|
476
506
|
zoom: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf(['brush', 'doubleTapReset', 'pinch', 'tapAndDrag', 'wheel']), _propTypes.default.shape({
|
|
477
|
-
pointerMode: _propTypes.default.any,
|
|
478
|
-
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
479
|
-
type: _propTypes.default.oneOf(['wheel']).isRequired
|
|
480
|
-
}), _propTypes.default.shape({
|
|
481
|
-
pointerMode: _propTypes.default.any,
|
|
482
|
-
requiredKeys: _propTypes.default.array,
|
|
483
|
-
type: _propTypes.default.oneOf(['pinch']).isRequired
|
|
484
|
-
}), _propTypes.default.shape({
|
|
485
507
|
pointerMode: _propTypes.default.oneOf(['mouse', 'touch']),
|
|
486
508
|
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
487
|
-
type: _propTypes.default.oneOf(['
|
|
509
|
+
type: _propTypes.default.oneOf(['brush']).isRequired
|
|
488
510
|
}), _propTypes.default.shape({
|
|
489
511
|
pointerMode: _propTypes.default.oneOf(['mouse', 'touch']),
|
|
490
512
|
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
@@ -492,7 +514,15 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
492
514
|
}), _propTypes.default.shape({
|
|
493
515
|
pointerMode: _propTypes.default.oneOf(['mouse', 'touch']),
|
|
494
516
|
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
495
|
-
type: _propTypes.default.oneOf(['
|
|
517
|
+
type: _propTypes.default.oneOf(['tapAndDrag']).isRequired
|
|
518
|
+
}), _propTypes.default.shape({
|
|
519
|
+
pointerMode: _propTypes.default.any,
|
|
520
|
+
requiredKeys: _propTypes.default.array,
|
|
521
|
+
type: _propTypes.default.oneOf(['pinch']).isRequired
|
|
522
|
+
}), _propTypes.default.shape({
|
|
523
|
+
pointerMode: _propTypes.default.any,
|
|
524
|
+
requiredKeys: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
525
|
+
type: _propTypes.default.oneOf(['wheel']).isRequired
|
|
496
526
|
})]).isRequired)
|
|
497
527
|
})
|
|
498
528
|
} : void 0;
|
|
@@ -216,11 +216,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
216
216
|
*/
|
|
217
217
|
highlightedItem: PropTypes.oneOfType([PropTypes.shape({
|
|
218
218
|
dataIndex: PropTypes.number,
|
|
219
|
-
seriesId: PropTypes.string.isRequired
|
|
220
|
-
type: PropTypes.oneOf(['scatter']).isRequired
|
|
219
|
+
seriesId: PropTypes.string.isRequired
|
|
221
220
|
}), PropTypes.shape({
|
|
222
221
|
dataIndex: PropTypes.number,
|
|
223
|
-
seriesId: PropTypes.string.isRequired
|
|
222
|
+
seriesId: PropTypes.string.isRequired,
|
|
223
|
+
type: PropTypes.oneOf(['scatter']).isRequired
|
|
224
224
|
})]),
|
|
225
225
|
/**
|
|
226
226
|
* Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
|
|
@@ -266,12 +266,21 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
266
266
|
/**
|
|
267
267
|
* The list of zoom data related to each axis.
|
|
268
268
|
* Used to initialize the zoom in a specific configuration without controlling it.
|
|
269
|
+
*
|
|
270
|
+
* Each entry is either explicit zoom percentages (`{ axisId, start, end }`) or a
|
|
271
|
+
* range value (`{ axisId, value }`) resolved against the axis domain.
|
|
269
272
|
*/
|
|
270
|
-
initialZoom: PropTypes.arrayOf(PropTypes.shape({
|
|
273
|
+
initialZoom: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
|
|
271
274
|
axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
272
275
|
end: PropTypes.number.isRequired,
|
|
273
276
|
start: PropTypes.number.isRequired
|
|
274
|
-
})
|
|
277
|
+
}), PropTypes.shape({
|
|
278
|
+
axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
279
|
+
value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.instanceOf(Date).isRequired), PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func, PropTypes.shape({
|
|
280
|
+
step: PropTypes.number,
|
|
281
|
+
unit: PropTypes.oneOf(['day', 'hour', 'microsecond', 'millisecond', 'minute', 'month', 'second', 'week', 'year']).isRequired
|
|
282
|
+
})])
|
|
283
|
+
})]).isRequired),
|
|
275
284
|
/**
|
|
276
285
|
* If `true`, a loading overlay is displayed.
|
|
277
286
|
* @default false
|
|
@@ -392,11 +401,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
392
401
|
*/
|
|
393
402
|
tooltipItem: PropTypes.oneOfType([PropTypes.shape({
|
|
394
403
|
dataIndex: PropTypes.number.isRequired,
|
|
395
|
-
seriesId: PropTypes.string.isRequired
|
|
396
|
-
type: PropTypes.oneOf(['scatter']).isRequired
|
|
404
|
+
seriesId: PropTypes.string.isRequired
|
|
397
405
|
}), PropTypes.shape({
|
|
398
406
|
dataIndex: PropTypes.number.isRequired,
|
|
399
|
-
seriesId: PropTypes.string.isRequired
|
|
407
|
+
seriesId: PropTypes.string.isRequired,
|
|
408
|
+
type: PropTypes.oneOf(['scatter']).isRequired
|
|
400
409
|
})]),
|
|
401
410
|
/**
|
|
402
411
|
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
@@ -419,11 +428,6 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
419
428
|
*/
|
|
420
429
|
zAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
421
430
|
colorMap: PropTypes.oneOfType([PropTypes.shape({
|
|
422
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
423
|
-
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
424
|
-
unknownColor: PropTypes.string,
|
|
425
|
-
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
426
|
-
}), PropTypes.shape({
|
|
427
431
|
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
428
432
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
429
433
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
@@ -432,12 +436,38 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
432
436
|
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
433
437
|
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
434
438
|
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
439
|
+
}), PropTypes.shape({
|
|
440
|
+
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
441
|
+
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
442
|
+
unknownColor: PropTypes.string,
|
|
443
|
+
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
435
444
|
})]),
|
|
436
445
|
data: PropTypes.array,
|
|
437
446
|
dataKey: PropTypes.string,
|
|
438
447
|
id: PropTypes.string,
|
|
439
448
|
max: PropTypes.number,
|
|
440
449
|
min: PropTypes.number,
|
|
450
|
+
sizeMap: PropTypes.oneOfType([PropTypes.shape({
|
|
451
|
+
interpolator: PropTypes.oneOf(['linear', 'log', 'sqrt']),
|
|
452
|
+
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
453
|
+
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
454
|
+
size: PropTypes.arrayOf(PropTypes.number.isRequired).isRequired,
|
|
455
|
+
type: PropTypes.oneOf(['continuous']).isRequired
|
|
456
|
+
}), PropTypes.shape({
|
|
457
|
+
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
458
|
+
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
459
|
+
size: PropTypes.func.isRequired,
|
|
460
|
+
type: PropTypes.oneOf(['continuous']).isRequired
|
|
461
|
+
}), PropTypes.shape({
|
|
462
|
+
sizes: PropTypes.arrayOf(PropTypes.number).isRequired,
|
|
463
|
+
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
464
|
+
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
465
|
+
}), PropTypes.shape({
|
|
466
|
+
sizes: PropTypes.arrayOf(PropTypes.number).isRequired,
|
|
467
|
+
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
468
|
+
unknownSize: PropTypes.number,
|
|
469
|
+
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
470
|
+
})]),
|
|
441
471
|
valueGetter: PropTypes.func
|
|
442
472
|
})),
|
|
443
473
|
/**
|
|
@@ -453,6 +483,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
453
483
|
*/
|
|
454
484
|
zoomInteractionConfig: PropTypes.shape({
|
|
455
485
|
pan: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['drag', 'pressAndDrag', 'wheel']), PropTypes.shape({
|
|
486
|
+
allowedDirection: PropTypes.oneOf(['x', 'xy', 'y']),
|
|
487
|
+
pointerMode: PropTypes.any,
|
|
488
|
+
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
489
|
+
type: PropTypes.oneOf(['wheel']).isRequired
|
|
490
|
+
}), PropTypes.shape({
|
|
456
491
|
pointerMode: PropTypes.oneOf(['mouse', 'touch']),
|
|
457
492
|
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
458
493
|
type: PropTypes.oneOf(['drag']).isRequired
|
|
@@ -460,24 +495,11 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
460
495
|
pointerMode: PropTypes.oneOf(['mouse', 'touch']),
|
|
461
496
|
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
462
497
|
type: PropTypes.oneOf(['pressAndDrag']).isRequired
|
|
463
|
-
}), PropTypes.shape({
|
|
464
|
-
allowedDirection: PropTypes.oneOf(['x', 'xy', 'y']),
|
|
465
|
-
pointerMode: PropTypes.any,
|
|
466
|
-
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
467
|
-
type: PropTypes.oneOf(['wheel']).isRequired
|
|
468
498
|
})]).isRequired),
|
|
469
499
|
zoom: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['brush', 'doubleTapReset', 'pinch', 'tapAndDrag', 'wheel']), PropTypes.shape({
|
|
470
|
-
pointerMode: PropTypes.any,
|
|
471
|
-
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
472
|
-
type: PropTypes.oneOf(['wheel']).isRequired
|
|
473
|
-
}), PropTypes.shape({
|
|
474
|
-
pointerMode: PropTypes.any,
|
|
475
|
-
requiredKeys: PropTypes.array,
|
|
476
|
-
type: PropTypes.oneOf(['pinch']).isRequired
|
|
477
|
-
}), PropTypes.shape({
|
|
478
500
|
pointerMode: PropTypes.oneOf(['mouse', 'touch']),
|
|
479
501
|
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
480
|
-
type: PropTypes.oneOf(['
|
|
502
|
+
type: PropTypes.oneOf(['brush']).isRequired
|
|
481
503
|
}), PropTypes.shape({
|
|
482
504
|
pointerMode: PropTypes.oneOf(['mouse', 'touch']),
|
|
483
505
|
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
@@ -485,7 +507,15 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
|
|
|
485
507
|
}), PropTypes.shape({
|
|
486
508
|
pointerMode: PropTypes.oneOf(['mouse', 'touch']),
|
|
487
509
|
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
488
|
-
type: PropTypes.oneOf(['
|
|
510
|
+
type: PropTypes.oneOf(['tapAndDrag']).isRequired
|
|
511
|
+
}), PropTypes.shape({
|
|
512
|
+
pointerMode: PropTypes.any,
|
|
513
|
+
requiredKeys: PropTypes.array,
|
|
514
|
+
type: PropTypes.oneOf(['pinch']).isRequired
|
|
515
|
+
}), PropTypes.shape({
|
|
516
|
+
pointerMode: PropTypes.any,
|
|
517
|
+
requiredKeys: PropTypes.arrayOf(PropTypes.string),
|
|
518
|
+
type: PropTypes.oneOf(['wheel']).isRequired
|
|
489
519
|
})]).isRequired)
|
|
490
520
|
})
|
|
491
521
|
} : void 0;
|
package/index.js
CHANGED
package/index.mjs
CHANGED
|
@@ -10,6 +10,7 @@ var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/form
|
|
|
10
10
|
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
|
|
11
11
|
var _ownerDocument = _interopRequireDefault(require("@mui/utils/ownerDocument"));
|
|
12
12
|
var _export = require("@mui/x-internals/export");
|
|
13
|
+
var _warning = require("@mui/x-internals/warning");
|
|
13
14
|
var _common = require("./common");
|
|
14
15
|
var _defaults = require("./defaults");
|
|
15
16
|
const getDrawDocument = async () => {
|
|
@@ -30,11 +31,15 @@ async function exportImage(element, svg, params) {
|
|
|
30
31
|
quality = 0.9,
|
|
31
32
|
onBeforeExport = _defaults.defaultOnBeforeExport,
|
|
32
33
|
copyStyles = true,
|
|
33
|
-
nonce
|
|
34
|
+
nonce,
|
|
35
|
+
pixelRatio
|
|
34
36
|
} = params ?? {};
|
|
37
|
+
if (process.env.NODE_ENV !== 'production' && pixelRatio !== undefined && (!Number.isFinite(pixelRatio) || pixelRatio <= 0)) {
|
|
38
|
+
(0, _warning.warnOnce)('MUI X Charts: `pixelRatio` must be a finite number greater than 0 when exporting a chart as an image.', 'error');
|
|
39
|
+
}
|
|
35
40
|
const drawDocumentPromise = getDrawDocument();
|
|
36
41
|
const doc = (0, _ownerDocument.default)(element);
|
|
37
|
-
const ratio = Math.max(window.devicePixelRatio || 1, 1);
|
|
42
|
+
const ratio = pixelRatio ?? Math.max(window.devicePixelRatio || 1, 1);
|
|
38
43
|
const iframe = (0, _common.createExportIframe)(fileName);
|
|
39
44
|
/* We apply the min/max width and height to ensure the SVG doesn't resize in the export.
|
|
40
45
|
* We apply to the original SVG so that the cloned tree will contain the styles and revert these
|
|
@@ -49,6 +54,7 @@ async function exportImage(element, svg, params) {
|
|
|
49
54
|
iframe.onload = async () => {
|
|
50
55
|
const exportDoc = iframe.contentDocument;
|
|
51
56
|
const elementClone = element.cloneNode(true);
|
|
57
|
+
elementClone.querySelectorAll('[data-hide-on-export]').forEach(el => el.remove());
|
|
52
58
|
(0, _common.applyStyles)(svg, previousStyles);
|
|
53
59
|
exportDoc.body.replaceChildren(elementClone);
|
|
54
60
|
exportDoc.body.style.margin = '0px';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
|
|
2
2
|
import ownerDocument from '@mui/utils/ownerDocument';
|
|
3
3
|
import { loadStyleSheets } from '@mui/x-internals/export';
|
|
4
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
4
5
|
import { applyStyles, copyCanvasesContent, createExportIframe } from "./common.mjs";
|
|
5
6
|
import { defaultOnBeforeExport } from "./defaults.mjs";
|
|
6
7
|
export const getDrawDocument = async () => {
|
|
@@ -20,11 +21,15 @@ export async function exportImage(element, svg, params) {
|
|
|
20
21
|
quality = 0.9,
|
|
21
22
|
onBeforeExport = defaultOnBeforeExport,
|
|
22
23
|
copyStyles = true,
|
|
23
|
-
nonce
|
|
24
|
+
nonce,
|
|
25
|
+
pixelRatio
|
|
24
26
|
} = params ?? {};
|
|
27
|
+
if (process.env.NODE_ENV !== 'production' && pixelRatio !== undefined && (!Number.isFinite(pixelRatio) || pixelRatio <= 0)) {
|
|
28
|
+
warnOnce('MUI X Charts: `pixelRatio` must be a finite number greater than 0 when exporting a chart as an image.', 'error');
|
|
29
|
+
}
|
|
25
30
|
const drawDocumentPromise = getDrawDocument();
|
|
26
31
|
const doc = ownerDocument(element);
|
|
27
|
-
const ratio = Math.max(window.devicePixelRatio || 1, 1);
|
|
32
|
+
const ratio = pixelRatio ?? Math.max(window.devicePixelRatio || 1, 1);
|
|
28
33
|
const iframe = createExportIframe(fileName);
|
|
29
34
|
/* We apply the min/max width and height to ensure the SVG doesn't resize in the export.
|
|
30
35
|
* We apply to the original SVG so that the cloned tree will contain the styles and revert these
|
|
@@ -39,6 +44,7 @@ export async function exportImage(element, svg, params) {
|
|
|
39
44
|
iframe.onload = async () => {
|
|
40
45
|
const exportDoc = iframe.contentDocument;
|
|
41
46
|
const elementClone = element.cloneNode(true);
|
|
47
|
+
elementClone.querySelectorAll('[data-hide-on-export]').forEach(el => el.remove());
|
|
42
48
|
applyStyles(svg, previousStyles);
|
|
43
49
|
exportDoc.body.replaceChildren(elementClone);
|
|
44
50
|
exportDoc.body.style.margin = '0px';
|
|
@@ -20,6 +20,7 @@ function printChart(element, {
|
|
|
20
20
|
printWindow.onload = async () => {
|
|
21
21
|
const printDoc = printWindow.contentDocument;
|
|
22
22
|
const elementClone = element.cloneNode(true);
|
|
23
|
+
elementClone.querySelectorAll('[data-hide-on-export]').forEach(el => el.remove());
|
|
23
24
|
printDoc.body.replaceChildren(elementClone);
|
|
24
25
|
printDoc.body.style.margin = '0px';
|
|
25
26
|
const rootCandidate = element.getRootNode();
|
|
@@ -13,6 +13,7 @@ export function printChart(element, {
|
|
|
13
13
|
printWindow.onload = async () => {
|
|
14
14
|
const printDoc = printWindow.contentDocument;
|
|
15
15
|
const elementClone = element.cloneNode(true);
|
|
16
|
+
elementClone.querySelectorAll('[data-hide-on-export]').forEach(el => el.remove());
|
|
16
17
|
printDoc.body.replaceChildren(elementClone);
|
|
17
18
|
printDoc.body.style.margin = '0px';
|
|
18
19
|
const rootCandidate = element.getRootNode();
|
|
@@ -55,6 +55,12 @@ export interface ChartImageExportOptions extends ChartExportOptions {
|
|
|
55
55
|
* @default 0.9
|
|
56
56
|
*/
|
|
57
57
|
quality?: number;
|
|
58
|
+
/**
|
|
59
|
+
* The pixel ratio used when rasterizing the chart to a canvas. Higher values produce
|
|
60
|
+
* sharper images at the cost of a larger file size.
|
|
61
|
+
* @default The larger of `window.devicePixelRatio` and `1`
|
|
62
|
+
*/
|
|
63
|
+
pixelRatio?: number;
|
|
58
64
|
}
|
|
59
65
|
export interface UseChartProExportPublicApi {
|
|
60
66
|
/**
|
|
@@ -55,6 +55,12 @@ export interface ChartImageExportOptions extends ChartExportOptions {
|
|
|
55
55
|
* @default 0.9
|
|
56
56
|
*/
|
|
57
57
|
quality?: number;
|
|
58
|
+
/**
|
|
59
|
+
* The pixel ratio used when rasterizing the chart to a canvas. Higher values produce
|
|
60
|
+
* sharper images at the cost of a larger file size.
|
|
61
|
+
* @default The larger of `window.devicePixelRatio` and `1`
|
|
62
|
+
*/
|
|
63
|
+
pixelRatio?: number;
|
|
58
64
|
}
|
|
59
65
|
export interface UseChartProExportPublicApi {
|
|
60
66
|
/**
|
|
@@ -11,9 +11,11 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _internals = require("@mui/x-charts/internals");
|
|
13
13
|
var _debounce = _interopRequireDefault(require("@mui/utils/debounce"));
|
|
14
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
14
15
|
var _useEffectAfterFirstRender = require("@mui/x-internals/useEffectAfterFirstRender");
|
|
15
16
|
var _utils = require("@mui/material/utils");
|
|
16
17
|
var _isDeepEqual = require("@mui/x-internals/isDeepEqual");
|
|
18
|
+
var _rangeButtonValueToZoom = require("../../../ChartsToolbarPro/rangeButtonValueToZoom");
|
|
17
19
|
var _calculateZoom = require("./calculateZoom");
|
|
18
20
|
var _useZoomOnWheel = require("./gestureHooks/useZoomOnWheel");
|
|
19
21
|
var _useZoomOnPinch = require("./gestureHooks/useZoomOnPinch");
|
|
@@ -25,6 +27,12 @@ var _useZoomOnBrush = require("./gestureHooks/useZoomOnBrush");
|
|
|
25
27
|
var _useZoomOnDoubleTapReset = require("./gestureHooks/useZoomOnDoubleTapReset");
|
|
26
28
|
var _initializeZoomInteractionConfig = require("./initializeZoomInteractionConfig");
|
|
27
29
|
var _initializeZoomData = require("./initializeZoomData");
|
|
30
|
+
/**
|
|
31
|
+
* Type guard for `initialZoom` entries provided as a range value.
|
|
32
|
+
*/
|
|
33
|
+
function isInitialZoomRange(entry) {
|
|
34
|
+
return 'value' in entry;
|
|
35
|
+
}
|
|
28
36
|
const useChartProZoom = pluginData => {
|
|
29
37
|
const {
|
|
30
38
|
store,
|
|
@@ -62,6 +70,68 @@ const useChartProZoom = pluginData => {
|
|
|
62
70
|
}));
|
|
63
71
|
removeIsInteracting();
|
|
64
72
|
}, [store, paramsZoomData, removeIsInteracting]);
|
|
73
|
+
|
|
74
|
+
// Resolve `initialZoom` entries provided as range values (e.g. `{ axisId, value: { unit: 'month' } }`).
|
|
75
|
+
// These depend on the computed axis domains, which are only available after the first render
|
|
76
|
+
// (unless the user provides explicit `width`/`height`), so they are resolved once on mount.
|
|
77
|
+
// A layout effect avoids a visible unzoomed frame.
|
|
78
|
+
const hasResolvedInitialZoomRanges = React.useRef(false);
|
|
79
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
80
|
+
if (hasResolvedInitialZoomRanges.current) {
|
|
81
|
+
// `initialZoom` is only read on mount, like the rest of the initial zoom state.
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
hasResolvedInitialZoomRanges.current = true;
|
|
85
|
+
if (paramsZoomData !== undefined) {
|
|
86
|
+
// The zoom is controlled, `initialZoom` is ignored.
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const rangeEntries = (params.initialZoom ?? []).filter(isInitialZoomRange);
|
|
90
|
+
if (rangeEntries.length === 0) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const {
|
|
94
|
+
axes: xAxes,
|
|
95
|
+
domains: xDomains
|
|
96
|
+
} = (0, _internals.selectorChartXAxisWithDomains)(store.state);
|
|
97
|
+
const {
|
|
98
|
+
axes: yAxes,
|
|
99
|
+
domains: yDomains
|
|
100
|
+
} = (0, _internals.selectorChartYAxisWithDomains)(store.state);
|
|
101
|
+
const resolvedZoom = new Map();
|
|
102
|
+
rangeEntries.forEach(entry => {
|
|
103
|
+
const xAxis = xAxes?.find(axis => axis.id === entry.axisId);
|
|
104
|
+
const axis = xAxis ?? yAxes?.find(candidate => candidate.id === entry.axisId);
|
|
105
|
+
if (!axis) {
|
|
106
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
107
|
+
console.error(`MUI X Charts: \`initialZoom\` references the axis with id "${entry.axisId}", which does not exist.\n` + 'The range cannot be resolved. Provide an `axisId` that matches a chart axis.');
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const domain = (xAxis ? xDomains : yDomains)[entry.axisId]?.domain;
|
|
112
|
+
const domainParams = (0, _rangeButtonValueToZoom.getRangeButtonDomainParams)(axis, domain);
|
|
113
|
+
if (!domainParams) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const {
|
|
117
|
+
start,
|
|
118
|
+
end
|
|
119
|
+
} = (0, _rangeButtonValueToZoom.rangeButtonValueToZoom)(entry.value, domainParams);
|
|
120
|
+
resolvedZoom.set(entry.axisId, {
|
|
121
|
+
axisId: entry.axisId,
|
|
122
|
+
start,
|
|
123
|
+
end
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
if (resolvedZoom.size === 0) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
store.set('zoom', (0, _extends2.default)({}, store.state.zoom, {
|
|
130
|
+
isInteracting: true,
|
|
131
|
+
zoomData: store.state.zoom.zoomData.map(zoom => resolvedZoom.get(zoom.axisId) ?? zoom)
|
|
132
|
+
}));
|
|
133
|
+
removeIsInteracting();
|
|
134
|
+
}, [store, paramsZoomData, params.initialZoom, removeIsInteracting]);
|
|
65
135
|
const setZoomDataCallback = React.useCallback(zoomData => {
|
|
66
136
|
const newZoomData = typeof zoomData === 'function' ? zoomData([...store.state.zoom.zoomData]) : zoomData;
|
|
67
137
|
if ((0, _isDeepEqual.isDeepEqual)(store.state.zoom.zoomData, newZoomData)) {
|
|
@@ -70,14 +140,12 @@ const useChartProZoom = pluginData => {
|
|
|
70
140
|
onZoomChange(newZoomData);
|
|
71
141
|
if (store.state.zoom.isControlled) {
|
|
72
142
|
store.set('zoom', (0, _extends2.default)({}, store.state.zoom, {
|
|
73
|
-
isInteracting: true
|
|
74
|
-
activeRangeButtonKey: null
|
|
143
|
+
isInteracting: true
|
|
75
144
|
}));
|
|
76
145
|
} else {
|
|
77
146
|
store.set('zoom', (0, _extends2.default)({}, store.state.zoom, {
|
|
78
147
|
isInteracting: true,
|
|
79
|
-
zoomData: newZoomData
|
|
80
|
-
activeRangeButtonKey: null
|
|
148
|
+
zoomData: newZoomData
|
|
81
149
|
}));
|
|
82
150
|
removeIsInteracting();
|
|
83
151
|
}
|
|
@@ -141,11 +209,6 @@ const useChartProZoom = pluginData => {
|
|
|
141
209
|
}, [setZoomDataCallback, store]);
|
|
142
210
|
const zoomIn = React.useCallback(() => zoom(0.1), [zoom]);
|
|
143
211
|
const zoomOut = React.useCallback(() => zoom(-0.1), [zoom]);
|
|
144
|
-
const setActiveRangeButtonKey = React.useCallback(key => {
|
|
145
|
-
store.set('zoom', (0, _extends2.default)({}, store.state.zoom, {
|
|
146
|
-
activeRangeButtonKey: key
|
|
147
|
-
}));
|
|
148
|
-
}, [store]);
|
|
149
212
|
return {
|
|
150
213
|
publicAPI: {
|
|
151
214
|
setZoomData: setZoomDataCallback,
|
|
@@ -158,8 +221,7 @@ const useChartProZoom = pluginData => {
|
|
|
158
221
|
setAxisZoomData,
|
|
159
222
|
moveZoomRange,
|
|
160
223
|
zoomIn,
|
|
161
|
-
zoomOut
|
|
162
|
-
setActiveRangeButtonKey
|
|
224
|
+
zoomOut
|
|
163
225
|
}
|
|
164
226
|
};
|
|
165
227
|
};
|
|
@@ -178,16 +240,17 @@ useChartProZoom.getInitialState = params => {
|
|
|
178
240
|
defaultizedYAxis
|
|
179
241
|
} = params;
|
|
180
242
|
const optionsLookup = (0, _extends2.default)({}, (0, _internals.createZoomLookup)('x')(defaultizedXAxis), (0, _internals.createZoomLookup)('y')(defaultizedYAxis));
|
|
243
|
+
// Range-value entries of `initialZoom` are resolved after the first render, once the axis
|
|
244
|
+
// domains are computed. Only the explicit `ZoomData` entries are applied to the initial state.
|
|
181
245
|
const userZoomData =
|
|
182
246
|
// eslint-disable-next-line no-nested-ternary
|
|
183
|
-
zoomData !== undefined ? zoomData : initialZoom !== undefined ? initialZoom : undefined;
|
|
247
|
+
zoomData !== undefined ? zoomData : initialZoom !== undefined ? initialZoom.filter(entry => !isInitialZoomRange(entry)) : undefined;
|
|
184
248
|
return {
|
|
185
249
|
zoom: {
|
|
186
250
|
zoomData: (0, _initializeZoomData.initializeZoomData)(optionsLookup, userZoomData),
|
|
187
251
|
isInteracting: false,
|
|
188
252
|
isControlled: zoomData !== undefined,
|
|
189
|
-
zoomInteractionConfig: (0, _initializeZoomInteractionConfig.initializeZoomInteractionConfig)(params.zoomInteractionConfig, optionsLookup)
|
|
190
|
-
activeRangeButtonKey: null
|
|
253
|
+
zoomInteractionConfig: (0, _initializeZoomInteractionConfig.initializeZoomInteractionConfig)(params.zoomInteractionConfig, optionsLookup)
|
|
191
254
|
}
|
|
192
255
|
};
|
|
193
256
|
};
|