@mui/x-charts-pro 8.7.0 → 8.9.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 (96) hide show
  1. package/BarChartPro/BarChartPro.d.ts +1 -1
  2. package/BarChartPro/BarChartPro.js +33 -1
  3. package/CHANGELOG.md +199 -24
  4. package/ChartDataProviderPro/ChartDataProviderPro.js +7 -1
  5. package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +31 -16
  6. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +4 -0
  7. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +27 -12
  8. package/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.d.ts +18 -0
  9. package/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.js +102 -0
  10. package/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.d.ts +11 -0
  11. package/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.js +62 -0
  12. package/ChartZoomSlider/internals/previews/AreaPreviewPlot.d.ts +14 -0
  13. package/ChartZoomSlider/internals/previews/AreaPreviewPlot.js +61 -0
  14. package/ChartZoomSlider/internals/previews/BarPreviewPlot.d.ts +10 -0
  15. package/ChartZoomSlider/internals/previews/BarPreviewPlot.js +62 -0
  16. package/ChartZoomSlider/internals/previews/LinePreviewPlot.d.ts +14 -0
  17. package/ChartZoomSlider/internals/previews/LinePreviewPlot.js +59 -0
  18. package/ChartZoomSlider/internals/previews/PreviewPlot.types.d.ts +4 -0
  19. package/ChartZoomSlider/internals/previews/PreviewPlot.types.js +5 -0
  20. package/ChartZoomSlider/internals/previews/ScatterPreviewPlot.d.ts +16 -0
  21. package/ChartZoomSlider/internals/previews/ScatterPreviewPlot.js +93 -0
  22. package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +2 -0
  23. package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +3 -1
  24. package/ChartsToolbarPro/ChartsToolbarPro.js +2 -0
  25. package/FunnelChart/FunnelChart.d.ts +4 -3
  26. package/FunnelChart/FunnelChart.js +1 -1
  27. package/FunnelChart/FunnelPlot.js +1 -1
  28. package/FunnelChart/funnel.types.d.ts +14 -9
  29. package/FunnelChart/funnelAxisPlugin/useChartFunnelAxis.types.d.ts +1 -1
  30. package/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +3 -3
  31. package/FunnelChart/index.d.ts +1 -1
  32. package/FunnelChart/seriesConfig/seriesProcessor.js +24 -48
  33. package/Heatmap/Heatmap.d.ts +4 -3
  34. package/Heatmap/Heatmap.js +1 -1
  35. package/Heatmap/index.d.ts +1 -0
  36. package/LineChartPro/LineChartPro.js +39 -1
  37. package/PieChartPro/PieChartPro.d.ts +1 -1
  38. package/PieChartPro/PieChartPro.js +1 -1
  39. package/RadarChartPro/RadarChartPro.d.ts +1 -1
  40. package/RadarChartPro/RadarChartPro.js +20 -1
  41. package/ScatterChartPro/ScatterChartPro.d.ts +1 -1
  42. package/ScatterChartPro/ScatterChartPro.js +17 -1
  43. package/esm/BarChartPro/BarChartPro.d.ts +1 -1
  44. package/esm/BarChartPro/BarChartPro.js +33 -1
  45. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +7 -1
  46. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +33 -18
  47. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +4 -0
  48. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +28 -13
  49. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.d.ts +18 -0
  50. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.js +94 -0
  51. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.d.ts +11 -0
  52. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.js +54 -0
  53. package/esm/ChartZoomSlider/internals/previews/AreaPreviewPlot.d.ts +14 -0
  54. package/esm/ChartZoomSlider/internals/previews/AreaPreviewPlot.js +53 -0
  55. package/esm/ChartZoomSlider/internals/previews/BarPreviewPlot.d.ts +10 -0
  56. package/esm/ChartZoomSlider/internals/previews/BarPreviewPlot.js +55 -0
  57. package/esm/ChartZoomSlider/internals/previews/LinePreviewPlot.d.ts +14 -0
  58. package/esm/ChartZoomSlider/internals/previews/LinePreviewPlot.js +51 -0
  59. package/esm/ChartZoomSlider/internals/previews/PreviewPlot.types.d.ts +4 -0
  60. package/esm/ChartZoomSlider/internals/previews/PreviewPlot.types.js +1 -0
  61. package/esm/ChartZoomSlider/internals/previews/ScatterPreviewPlot.d.ts +16 -0
  62. package/esm/ChartZoomSlider/internals/previews/ScatterPreviewPlot.js +86 -0
  63. package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +2 -0
  64. package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +3 -1
  65. package/esm/ChartsToolbarPro/ChartsToolbarPro.js +2 -0
  66. package/esm/FunnelChart/FunnelChart.d.ts +4 -3
  67. package/esm/FunnelChart/FunnelChart.js +1 -1
  68. package/esm/FunnelChart/FunnelPlot.js +1 -1
  69. package/esm/FunnelChart/funnel.types.d.ts +14 -9
  70. package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxis.types.d.ts +1 -1
  71. package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +3 -3
  72. package/esm/FunnelChart/index.d.ts +1 -1
  73. package/esm/FunnelChart/seriesConfig/seriesProcessor.js +24 -48
  74. package/esm/Heatmap/Heatmap.d.ts +4 -3
  75. package/esm/Heatmap/Heatmap.js +1 -1
  76. package/esm/Heatmap/index.d.ts +1 -0
  77. package/esm/LineChartPro/LineChartPro.js +39 -1
  78. package/esm/PieChartPro/PieChartPro.d.ts +1 -1
  79. package/esm/PieChartPro/PieChartPro.js +1 -1
  80. package/esm/RadarChartPro/RadarChartPro.d.ts +1 -1
  81. package/esm/RadarChartPro/RadarChartPro.js +20 -1
  82. package/esm/ScatterChartPro/ScatterChartPro.d.ts +1 -1
  83. package/esm/ScatterChartPro/ScatterChartPro.js +17 -1
  84. package/esm/index.js +3 -3
  85. package/esm/internals/plugins/useChartProExport/exportImage.js +9 -3
  86. package/esm/internals/plugins/useChartProExport/print.d.ts +3 -1
  87. package/esm/internals/plugins/useChartProExport/print.js +7 -2
  88. package/esm/internals/plugins/useChartProExport/useChartProExport.types.d.ts +22 -12
  89. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +4 -4
  90. package/index.js +3 -3
  91. package/internals/plugins/useChartProExport/exportImage.js +9 -3
  92. package/internals/plugins/useChartProExport/print.d.ts +3 -1
  93. package/internals/plugins/useChartProExport/print.js +7 -2
  94. package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +22 -12
  95. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +4 -4
  96. package/package.json +7 -7
@@ -135,12 +135,31 @@ process.env.NODE_ENV !== "production" ? RadarChartPro.propTypes = {
135
135
  right: _propTypes.default.number,
136
136
  top: _propTypes.default.number
137
137
  })]),
138
+ /**
139
+ * Callback fired when an area is clicked.
140
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
141
+ * @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
142
+ */
143
+ onAreaClick: _propTypes.default.func,
144
+ /**
145
+ * The function called for onClick events.
146
+ * The second argument contains information about all line/bar elements at the current mouse position.
147
+ * @param {MouseEvent} event The mouse event recorded on the `<svg/>` element.
148
+ * @param {null | ChartsAxisData} data The data about the clicked axis and items associated with it.
149
+ */
150
+ onAxisClick: _propTypes.default.func,
138
151
  /**
139
152
  * The callback fired when the highlighted item changes.
140
153
  *
141
154
  * @param {HighlightItemData | null} highlightedItem The newly highlighted item.
142
155
  */
143
156
  onHighlightChange: _propTypes.default.func,
157
+ /**
158
+ * Callback fired when a mark is clicked.
159
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
160
+ * @param {RadarItemIdentifier} radarItemIdentifier The radar item identifier.
161
+ */
162
+ onMarkClick: _propTypes.default.func,
144
163
  /**
145
164
  * The configuration of the radar scales.
146
165
  */
@@ -157,7 +176,7 @@ process.env.NODE_ENV !== "production" ? RadarChartPro.propTypes = {
157
176
  }).isRequired,
158
177
  /**
159
178
  * The series to display in the bar chart.
160
- * An array of [[RadarSeriesType]] objects.
179
+ * An array of [[RadarSeries]] objects.
161
180
  */
162
181
  series: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
163
182
  /**
@@ -6,7 +6,7 @@ import { ScatterChartProPluginsSignatures } from "./ScatterChartPro.plugins.js";
6
6
  import { ChartsToolbarProSlots, ChartsToolbarProSlotProps } from "../ChartsToolbarPro/Toolbar.types.js";
7
7
  export interface ScatterChartProSlots extends Omit<ScatterChartSlots, 'toolbar'>, ChartsToolbarProSlots, Partial<ChartsSlotsPro> {}
8
8
  export interface ScatterChartProSlotProps extends Omit<ScatterChartSlotProps, 'toolbar'>, ChartsToolbarProSlotProps, Partial<ChartsSlotPropsPro> {}
9
- export interface ScatterChartProProps extends Omit<ScatterChartProps, 'apiRef' | 'slots' | 'slotProps'>, Omit<ChartContainerProProps<'scatter', ScatterChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'onItemClick' | 'slots' | 'slotProps'> {
9
+ export interface ScatterChartProProps extends Omit<ScatterChartProps, 'apiRef' | 'slots' | 'slotProps'>, Omit<ChartContainerProProps<'scatter', ScatterChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'onItemClick' | 'slots' | 'slotProps' | 'experimentalFeatures' | 'highlightedAxis' | 'onHighlightedAxisChange'> {
10
10
  /**
11
11
  * Overridable component slots.
12
12
  * @default {}
@@ -218,7 +218,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
218
218
  onZoomChange: _propTypes.default.func,
219
219
  /**
220
220
  * The series to display in the scatter chart.
221
- * An array of [[ScatterSeriesType]] objects.
221
+ * An array of [[ScatterSeries]] objects.
222
222
  */
223
223
  series: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
224
224
  /**
@@ -320,6 +320,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
320
320
  panning: _propTypes.default.bool,
321
321
  slider: _propTypes.default.shape({
322
322
  enabled: _propTypes.default.bool,
323
+ preview: _propTypes.default.bool,
323
324
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
324
325
  size: _propTypes.default.number
325
326
  }),
@@ -385,6 +386,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
385
386
  panning: _propTypes.default.bool,
386
387
  slider: _propTypes.default.shape({
387
388
  enabled: _propTypes.default.bool,
389
+ preview: _propTypes.default.bool,
388
390
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
389
391
  size: _propTypes.default.number
390
392
  }),
@@ -445,6 +447,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
445
447
  panning: _propTypes.default.bool,
446
448
  slider: _propTypes.default.shape({
447
449
  enabled: _propTypes.default.bool,
450
+ preview: _propTypes.default.bool,
448
451
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
449
452
  size: _propTypes.default.number
450
453
  }),
@@ -505,6 +508,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
505
508
  panning: _propTypes.default.bool,
506
509
  slider: _propTypes.default.shape({
507
510
  enabled: _propTypes.default.bool,
511
+ preview: _propTypes.default.bool,
508
512
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
509
513
  size: _propTypes.default.number
510
514
  }),
@@ -565,6 +569,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
565
569
  panning: _propTypes.default.bool,
566
570
  slider: _propTypes.default.shape({
567
571
  enabled: _propTypes.default.bool,
572
+ preview: _propTypes.default.bool,
568
573
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
569
574
  size: _propTypes.default.number
570
575
  }),
@@ -625,6 +630,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
625
630
  panning: _propTypes.default.bool,
626
631
  slider: _propTypes.default.shape({
627
632
  enabled: _propTypes.default.bool,
633
+ preview: _propTypes.default.bool,
628
634
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
629
635
  size: _propTypes.default.number
630
636
  }),
@@ -685,6 +691,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
685
691
  panning: _propTypes.default.bool,
686
692
  slider: _propTypes.default.shape({
687
693
  enabled: _propTypes.default.bool,
694
+ preview: _propTypes.default.bool,
688
695
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
689
696
  size: _propTypes.default.number
690
697
  }),
@@ -745,6 +752,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
745
752
  panning: _propTypes.default.bool,
746
753
  slider: _propTypes.default.shape({
747
754
  enabled: _propTypes.default.bool,
755
+ preview: _propTypes.default.bool,
748
756
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
749
757
  size: _propTypes.default.number
750
758
  }),
@@ -817,6 +825,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
817
825
  panning: _propTypes.default.bool,
818
826
  slider: _propTypes.default.shape({
819
827
  enabled: _propTypes.default.bool,
828
+ preview: _propTypes.default.bool,
820
829
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
821
830
  size: _propTypes.default.number
822
831
  }),
@@ -881,6 +890,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
881
890
  panning: _propTypes.default.bool,
882
891
  slider: _propTypes.default.shape({
883
892
  enabled: _propTypes.default.bool,
893
+ preview: _propTypes.default.bool,
884
894
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
885
895
  size: _propTypes.default.number
886
896
  }),
@@ -940,6 +950,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
940
950
  panning: _propTypes.default.bool,
941
951
  slider: _propTypes.default.shape({
942
952
  enabled: _propTypes.default.bool,
953
+ preview: _propTypes.default.bool,
943
954
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
944
955
  size: _propTypes.default.number
945
956
  }),
@@ -999,6 +1010,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
999
1010
  panning: _propTypes.default.bool,
1000
1011
  slider: _propTypes.default.shape({
1001
1012
  enabled: _propTypes.default.bool,
1013
+ preview: _propTypes.default.bool,
1002
1014
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1003
1015
  size: _propTypes.default.number
1004
1016
  }),
@@ -1058,6 +1070,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1058
1070
  panning: _propTypes.default.bool,
1059
1071
  slider: _propTypes.default.shape({
1060
1072
  enabled: _propTypes.default.bool,
1073
+ preview: _propTypes.default.bool,
1061
1074
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1062
1075
  size: _propTypes.default.number
1063
1076
  }),
@@ -1117,6 +1130,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1117
1130
  panning: _propTypes.default.bool,
1118
1131
  slider: _propTypes.default.shape({
1119
1132
  enabled: _propTypes.default.bool,
1133
+ preview: _propTypes.default.bool,
1120
1134
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1121
1135
  size: _propTypes.default.number
1122
1136
  }),
@@ -1176,6 +1190,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1176
1190
  panning: _propTypes.default.bool,
1177
1191
  slider: _propTypes.default.shape({
1178
1192
  enabled: _propTypes.default.bool,
1193
+ preview: _propTypes.default.bool,
1179
1194
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1180
1195
  size: _propTypes.default.number
1181
1196
  }),
@@ -1235,6 +1250,7 @@ process.env.NODE_ENV !== "production" ? ScatterChartPro.propTypes = {
1235
1250
  panning: _propTypes.default.bool,
1236
1251
  slider: _propTypes.default.shape({
1237
1252
  enabled: _propTypes.default.bool,
1253
+ preview: _propTypes.default.bool,
1238
1254
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1239
1255
  size: _propTypes.default.number
1240
1256
  }),
@@ -6,7 +6,7 @@ import { ChartContainerProProps } from "../ChartContainerPro/index.js";
6
6
  import { BarChartProPluginsSignatures } from "./BarChartPro.plugins.js";
7
7
  export interface BarChartProSlots extends Omit<BarChartSlots, 'toolbar'>, ChartsToolbarProSlots, Partial<ChartsSlotsPro> {}
8
8
  export interface BarChartProSlotProps extends Omit<BarChartSlotProps, 'toolbar'>, ChartsToolbarProSlotProps, Partial<ChartsSlotPropsPro> {}
9
- export interface BarChartProProps extends Omit<BarChartProps, 'apiRef' | 'slots' | 'slotProps'>, Omit<ChartContainerProProps<'bar', BarChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'slots' | 'slotProps'> {
9
+ export interface BarChartProProps extends Omit<BarChartProps, 'apiRef' | 'slots' | 'slotProps'>, Omit<ChartContainerProProps<'bar', BarChartProPluginsSignatures>, 'series' | 'plugins' | 'seriesConfig' | 'slots' | 'slotProps' | 'experimentalFeatures'> {
10
10
  /**
11
11
  * Overridable component slots.
12
12
  * @default {}
@@ -150,6 +150,14 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
150
150
  * If `true`, the legend is not rendered.
151
151
  */
152
152
  hideLegend: PropTypes.bool,
153
+ /**
154
+ * The controlled axis highlight.
155
+ * Identified by the axis id, and data index.
156
+ */
157
+ highlightedAxis: PropTypes.arrayOf(PropTypes.shape({
158
+ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
159
+ dataIndex: PropTypes.number.isRequired
160
+ })),
153
161
  /**
154
162
  * The highlighted item.
155
163
  * Used when the highlight is controlled.
@@ -211,6 +219,14 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
211
219
  * @param {HighlightItemData | null} highlightedItem The newly highlighted item.
212
220
  */
213
221
  onHighlightChange: PropTypes.func,
222
+ /**
223
+ * The function called when the pointer position corresponds to a new axis data item.
224
+ * This update can either be caused by a pointer movement, or an axis update.
225
+ * In case of multiple axes, the function is called if at least one axis is updated.
226
+ * The argument contains the identifier for all axes with a `data` property.
227
+ * @param {AxisItemIdentifier[]} axisItems The array of axes item identifiers.
228
+ */
229
+ onHighlightedAxisChange: PropTypes.func,
214
230
  /**
215
231
  * Callback fired when a bar item is clicked.
216
232
  * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
@@ -225,7 +241,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
225
241
  onZoomChange: PropTypes.func,
226
242
  /**
227
243
  * The series to display in the bar chart.
228
- * An array of [[BarSeriesType]] objects.
244
+ * An array of [[BarSeries]] objects.
229
245
  */
230
246
  series: PropTypes.arrayOf(PropTypes.object).isRequired,
231
247
  /**
@@ -322,6 +338,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
322
338
  panning: PropTypes.bool,
323
339
  slider: PropTypes.shape({
324
340
  enabled: PropTypes.bool,
341
+ preview: PropTypes.bool,
325
342
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
326
343
  size: PropTypes.number
327
344
  }),
@@ -387,6 +404,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
387
404
  panning: PropTypes.bool,
388
405
  slider: PropTypes.shape({
389
406
  enabled: PropTypes.bool,
407
+ preview: PropTypes.bool,
390
408
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
391
409
  size: PropTypes.number
392
410
  }),
@@ -447,6 +465,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
447
465
  panning: PropTypes.bool,
448
466
  slider: PropTypes.shape({
449
467
  enabled: PropTypes.bool,
468
+ preview: PropTypes.bool,
450
469
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
451
470
  size: PropTypes.number
452
471
  }),
@@ -507,6 +526,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
507
526
  panning: PropTypes.bool,
508
527
  slider: PropTypes.shape({
509
528
  enabled: PropTypes.bool,
529
+ preview: PropTypes.bool,
510
530
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
511
531
  size: PropTypes.number
512
532
  }),
@@ -567,6 +587,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
567
587
  panning: PropTypes.bool,
568
588
  slider: PropTypes.shape({
569
589
  enabled: PropTypes.bool,
590
+ preview: PropTypes.bool,
570
591
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
571
592
  size: PropTypes.number
572
593
  }),
@@ -627,6 +648,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
627
648
  panning: PropTypes.bool,
628
649
  slider: PropTypes.shape({
629
650
  enabled: PropTypes.bool,
651
+ preview: PropTypes.bool,
630
652
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
631
653
  size: PropTypes.number
632
654
  }),
@@ -687,6 +709,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
687
709
  panning: PropTypes.bool,
688
710
  slider: PropTypes.shape({
689
711
  enabled: PropTypes.bool,
712
+ preview: PropTypes.bool,
690
713
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
691
714
  size: PropTypes.number
692
715
  }),
@@ -747,6 +770,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
747
770
  panning: PropTypes.bool,
748
771
  slider: PropTypes.shape({
749
772
  enabled: PropTypes.bool,
773
+ preview: PropTypes.bool,
750
774
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
751
775
  size: PropTypes.number
752
776
  }),
@@ -819,6 +843,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
819
843
  panning: PropTypes.bool,
820
844
  slider: PropTypes.shape({
821
845
  enabled: PropTypes.bool,
846
+ preview: PropTypes.bool,
822
847
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
823
848
  size: PropTypes.number
824
849
  }),
@@ -883,6 +908,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
883
908
  panning: PropTypes.bool,
884
909
  slider: PropTypes.shape({
885
910
  enabled: PropTypes.bool,
911
+ preview: PropTypes.bool,
886
912
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
887
913
  size: PropTypes.number
888
914
  }),
@@ -942,6 +968,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
942
968
  panning: PropTypes.bool,
943
969
  slider: PropTypes.shape({
944
970
  enabled: PropTypes.bool,
971
+ preview: PropTypes.bool,
945
972
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
946
973
  size: PropTypes.number
947
974
  }),
@@ -1001,6 +1028,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1001
1028
  panning: PropTypes.bool,
1002
1029
  slider: PropTypes.shape({
1003
1030
  enabled: PropTypes.bool,
1031
+ preview: PropTypes.bool,
1004
1032
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
1005
1033
  size: PropTypes.number
1006
1034
  }),
@@ -1060,6 +1088,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1060
1088
  panning: PropTypes.bool,
1061
1089
  slider: PropTypes.shape({
1062
1090
  enabled: PropTypes.bool,
1091
+ preview: PropTypes.bool,
1063
1092
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
1064
1093
  size: PropTypes.number
1065
1094
  }),
@@ -1119,6 +1148,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1119
1148
  panning: PropTypes.bool,
1120
1149
  slider: PropTypes.shape({
1121
1150
  enabled: PropTypes.bool,
1151
+ preview: PropTypes.bool,
1122
1152
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
1123
1153
  size: PropTypes.number
1124
1154
  }),
@@ -1178,6 +1208,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1178
1208
  panning: PropTypes.bool,
1179
1209
  slider: PropTypes.shape({
1180
1210
  enabled: PropTypes.bool,
1211
+ preview: PropTypes.bool,
1181
1212
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
1182
1213
  size: PropTypes.number
1183
1214
  }),
@@ -1237,6 +1268,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1237
1268
  panning: PropTypes.bool,
1238
1269
  slider: PropTypes.shape({
1239
1270
  enabled: PropTypes.bool,
1271
+ preview: PropTypes.bool,
1240
1272
  showTooltip: PropTypes.oneOf(['always', 'hover', 'never']),
1241
1273
  size: PropTypes.number
1242
1274
  }),
@@ -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 = "MTc1MTU4MDAwMDAwMA==";
14
+ const releaseInfo = "MTc1Mjc4OTYwMDAwMA==";
15
15
  const packageIdentifier = 'x-charts-pro';
16
16
  /**
17
17
  * Orchestrates the data providers for the chart components and hooks.
@@ -83,6 +83,12 @@ process.env.NODE_ENV !== "production" ? ChartDataProviderPro.propTypes = {
83
83
  * An array of objects that can be used to populate series and axes data using their `dataKey` property.
84
84
  */
85
85
  dataset: PropTypes.arrayOf(PropTypes.object),
86
+ /**
87
+ * Options to enable features planned for the next major.
88
+ */
89
+ experimentalFeatures: PropTypes.shape({
90
+ preferStrictDomainInLineCharts: PropTypes.bool
91
+ }),
86
92
  /**
87
93
  * The height of the chart in px. If not defined, it takes the height of the parent element.
88
94
  */
@@ -1,9 +1,10 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
- import { DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, useDrawingArea, useSelector, useStore, ZOOM_SLIDER_MARGIN } from '@mui/x-charts/internals';
4
+ import { DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, selectorChartAxisZoomOptionsLookup, useDrawingArea, useSelector, useStore, ZOOM_SLIDER_MARGIN, ZOOM_SLIDER_PREVIEW_SIZE } from '@mui/x-charts/internals';
5
5
  import { useXAxes, useYAxes } from '@mui/x-charts/hooks';
6
- import { ZOOM_SLIDER_SIZE, ZOOM_SLIDER_TRACK_SIZE } from "./constants.js";
6
+ import { ChartAxisZoomSliderPreview } from "./ChartAxisZoomSliderPreview.js";
7
+ import { ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_SIZE, ZOOM_SLIDER_TRACK_SIZE } from "./constants.js";
7
8
  import { selectorChartAxisZoomData } from "../../internals/plugins/useChartProZoom/index.js";
8
9
  import { ChartAxisZoomSliderTrack } from "./ChartAxisZoomSliderTrack.js";
9
10
  import { ChartAxisZoomSliderActiveTrack } from "./ChartAxisZoomSliderActiveTrack.js";
@@ -19,6 +20,7 @@ export function ChartAxisZoomSlider({
19
20
  const store = useStore();
20
21
  const drawingArea = useDrawingArea();
21
22
  const zoomData = useSelector(store, selectorChartAxisZoomData, [axisId]);
23
+ const zoomOptions = useSelector(store, selectorChartAxisZoomOptionsLookup, [axisId]);
22
24
  const [showTooltip, setShowTooltip] = React.useState(false);
23
25
  const {
24
26
  xAxis
@@ -26,6 +28,7 @@ export function ChartAxisZoomSlider({
26
28
  const {
27
29
  yAxis
28
30
  } = useYAxes();
31
+ const showPreview = zoomOptions.slider.preview;
29
32
  if (!zoomData) {
30
33
  return null;
31
34
  }
@@ -34,6 +37,7 @@ export function ChartAxisZoomSlider({
34
37
  let reverse;
35
38
  let axisPosition;
36
39
  let tooltipConditions;
40
+ const sliderSize = showPreview ? ZOOM_SLIDER_PREVIEW_SIZE : ZOOM_SLIDER_SIZE;
37
41
  if (axisDirection === 'x') {
38
42
  const axis = xAxis[axisId];
39
43
  if (!axis || axis.position === 'none') {
@@ -41,7 +45,7 @@ export function ChartAxisZoomSlider({
41
45
  }
42
46
  const axisSize = axis.height;
43
47
  x = drawingArea.left;
44
- y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN;
48
+ y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - sliderSize - ZOOM_SLIDER_MARGIN;
45
49
  reverse = axis.reverse ?? false;
46
50
  axisPosition = axis.position ?? 'bottom';
47
51
  tooltipConditions = axis.zoom?.slider?.showTooltip ?? DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
@@ -51,38 +55,49 @@ export function ChartAxisZoomSlider({
51
55
  return null;
52
56
  }
53
57
  const axisSize = axis.width;
54
- x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN;
58
+ x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - sliderSize - ZOOM_SLIDER_MARGIN;
55
59
  y = drawingArea.top;
56
60
  reverse = axis.reverse ?? false;
57
61
  axisPosition = axis.position ?? 'left';
58
62
  tooltipConditions = axis.zoom?.slider?.showTooltip ?? DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
59
63
  }
60
- const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_TRACK_SIZE) / 2;
64
+ const backgroundRectOffset = (sliderSize - ZOOM_SLIDER_TRACK_SIZE) / 2;
65
+ const track = showPreview ? /*#__PURE__*/_jsx(ChartAxisZoomSliderPreview, {
66
+ axisId: axisId,
67
+ axisDirection: axisDirection,
68
+ reverse: reverse,
69
+ x: 0,
70
+ y: 0,
71
+ height: axisDirection === 'x' ? ZOOM_SLIDER_PREVIEW_SIZE : drawingArea.height,
72
+ width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_PREVIEW_SIZE
73
+ }) : /*#__PURE__*/_jsx(ChartAxisZoomSliderTrack, {
74
+ x: axisDirection === 'x' ? 0 : backgroundRectOffset,
75
+ y: axisDirection === 'x' ? backgroundRectOffset : 0,
76
+ height: axisDirection === 'x' ? ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
77
+ width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_TRACK_SIZE,
78
+ rx: ZOOM_SLIDER_TRACK_SIZE / 2,
79
+ ry: ZOOM_SLIDER_TRACK_SIZE / 2,
80
+ axisId: axisId,
81
+ axisDirection: axisDirection,
82
+ reverse: reverse,
83
+ onSelectStart: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
84
+ onSelectEnd: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
85
+ });
61
86
  return /*#__PURE__*/_jsxs("g", {
62
87
  "data-charts-zoom-slider": true,
63
88
  transform: `translate(${x} ${y})`,
64
89
  style: {
65
90
  touchAction: 'none'
66
91
  },
67
- children: [/*#__PURE__*/_jsx(ChartAxisZoomSliderTrack, {
68
- x: axisDirection === 'x' ? 0 : backgroundRectOffset,
69
- y: axisDirection === 'x' ? backgroundRectOffset : 0,
70
- height: axisDirection === 'x' ? ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
71
- width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_TRACK_SIZE,
72
- rx: ZOOM_SLIDER_TRACK_SIZE / 2,
73
- ry: ZOOM_SLIDER_TRACK_SIZE / 2,
74
- axisId: axisId,
75
- axisDirection: axisDirection,
76
- reverse: reverse,
77
- onSelectStart: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
78
- onSelectEnd: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
79
- }), /*#__PURE__*/_jsx(ChartAxisZoomSliderActiveTrack, {
92
+ children: [track, /*#__PURE__*/_jsx(ChartAxisZoomSliderActiveTrack, {
80
93
  zoomData: zoomData,
81
94
  axisId: axisId,
82
95
  axisPosition: axisPosition,
83
96
  axisDirection: axisDirection,
84
97
  reverse: reverse,
85
98
  showTooltip: showTooltip && tooltipConditions !== 'never' || tooltipConditions === 'always',
99
+ size: showPreview ? ZOOM_SLIDER_PREVIEW_SIZE : ZOOM_SLIDER_ACTIVE_TRACK_SIZE,
100
+ preview: showPreview,
86
101
  onPointerEnter: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
87
102
  onPointerLeave: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
88
103
  })]
@@ -4,6 +4,8 @@ export interface ChartAxisZoomSliderActiveTrackProps {
4
4
  axisId: AxisId;
5
5
  axisDirection: 'x' | 'y';
6
6
  axisPosition: 'top' | 'bottom' | 'left' | 'right';
7
+ size: number;
8
+ preview: boolean;
7
9
  zoomData: ZoomData;
8
10
  reverse?: boolean;
9
11
  showTooltip: boolean;
@@ -14,6 +16,8 @@ export declare function ChartAxisZoomSliderActiveTrack({
14
16
  axisId,
15
17
  axisDirection,
16
18
  axisPosition,
19
+ size,
20
+ preview,
17
21
  zoomData,
18
22
  reverse,
19
23
  showTooltip,
@@ -5,25 +5,39 @@ import { styled } from '@mui/material/styles';
5
5
  import { getSVGPoint, invertScale, selectorChartAxis, selectorChartAxisZoomOptionsLookup, useChartContext, useDrawingArea, useSelector, useStore } from '@mui/x-charts/internals';
6
6
  import * as React from 'react';
7
7
  import { rafThrottle } from '@mui/x-internals/rafThrottle';
8
+ import { shouldForwardProp } from '@mui/system';
8
9
  import { selectorChartAxisZoomData } from "../../internals/plugins/useChartProZoom/index.js";
9
10
  import { ChartAxisZoomSliderThumb } from "./ChartAxisZoomSliderThumb.js";
10
11
  import { ChartsTooltipZoomSliderValue } from "./ChartsTooltipZoomSliderValue.js";
11
12
  import { calculateZoomEnd, calculateZoomFromPoint, calculateZoomStart } from "./zoom-utils.js";
12
- import { ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH } from "./constants.js";
13
+ import { ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH } from "./constants.js";
13
14
  import { useUtilityClasses } from "./chartAxisZoomSliderTrackClasses.js";
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- const ZoomSliderActiveTrackRect = styled('rect')(({
16
+ const ZoomSliderActiveTrackRect = styled('rect', {
17
+ shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'preview'
18
+ })(({
16
19
  theme
17
20
  }) => ({
18
- '&': {
19
- fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
20
- cursor: 'grab'
21
- }
21
+ fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
22
+ cursor: 'grab',
23
+ variants: [{
24
+ props: {
25
+ preview: true
26
+ },
27
+ style: {
28
+ fill: 'transparent',
29
+ rx: 4,
30
+ ry: 4,
31
+ stroke: theme.palette.grey[500]
32
+ }
33
+ }]
22
34
  }));
23
35
  export function ChartAxisZoomSliderActiveTrack({
24
36
  axisId,
25
37
  axisDirection,
26
38
  axisPosition,
39
+ size,
40
+ preview,
27
41
  zoomData,
28
42
  reverse,
29
43
  showTooltip,
@@ -162,11 +176,11 @@ export function ChartAxisZoomSliderActiveTrack({
162
176
  previewX = (zoomStart - minStart) / range * drawingArea.width;
163
177
  previewY = 0;
164
178
  previewWidth = drawingArea.width * (zoomEnd - zoomStart) / range;
165
- previewHeight = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
179
+ previewHeight = size;
166
180
  startThumbX = (zoomStart - minStart) / range * drawingArea.width;
167
- startThumbY = 0;
181
+ startThumbY = ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
168
182
  endThumbX = (zoomEnd - minStart) / range * drawingArea.width;
169
- endThumbY = 0;
183
+ endThumbY = ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
170
184
  if (reverse) {
171
185
  previewX = drawingArea.width - previewX - previewWidth;
172
186
  startThumbX = drawingArea.width - startThumbX;
@@ -177,11 +191,11 @@ export function ChartAxisZoomSliderActiveTrack({
177
191
  } else {
178
192
  previewX = 0;
179
193
  previewY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
180
- previewWidth = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
194
+ previewWidth = size;
181
195
  previewHeight = drawingArea.height * (zoomEnd - zoomStart) / range;
182
- startThumbX = 0;
196
+ startThumbX = ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
183
197
  startThumbY = drawingArea.height - (zoomStart - minStart) / range * drawingArea.height;
184
- endThumbX = 0;
198
+ endThumbX = ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
185
199
  endThumbY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
186
200
  if (reverse) {
187
201
  previewY = drawingArea.height - previewY - previewHeight;
@@ -191,12 +205,13 @@ export function ChartAxisZoomSliderActiveTrack({
191
205
  startThumbY -= previewThumbHeight / 2;
192
206
  endThumbY -= previewThumbHeight / 2;
193
207
  }
194
- const previewOffset = (ZOOM_SLIDER_THUMB_HEIGHT - ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
208
+ const previewOffset = ZOOM_SLIDER_THUMB_HEIGHT > size ? (ZOOM_SLIDER_THUMB_HEIGHT - size) / 2 : 0;
195
209
  return /*#__PURE__*/_jsxs(React.Fragment, {
196
210
  children: [/*#__PURE__*/_jsx(ZoomSliderActiveTrackRect, {
197
211
  ref: activePreviewRectRef,
198
212
  x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
199
213
  y: previewY + (axisDirection === 'x' ? previewOffset : 0),
214
+ preview: preview,
200
215
  width: previewWidth,
201
216
  height: previewHeight,
202
217
  onPointerEnter: onPointerEnter,
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import { AxisId } from '@mui/x-charts/internals';
3
+ interface ChartAxisZoomSliderPreviewProps {
4
+ axisId: AxisId;
5
+ axisDirection: 'x' | 'y';
6
+ reverse: boolean;
7
+ x: number;
8
+ y: number;
9
+ height: number;
10
+ width: number;
11
+ }
12
+ export declare function ChartAxisZoomSliderPreview({
13
+ axisId,
14
+ axisDirection,
15
+ reverse,
16
+ ...props
17
+ }: ChartAxisZoomSliderPreviewProps): React.JSX.Element;
18
+ export {};