@mui/x-charts-pro 8.7.0 → 8.8.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 (84) hide show
  1. package/BarChartPro/BarChartPro.d.ts +1 -1
  2. package/BarChartPro/BarChartPro.js +32 -0
  3. package/CHANGELOG.md +98 -0
  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 +1 -1
  26. package/FunnelChart/FunnelPlot.js +1 -1
  27. package/FunnelChart/funnel.types.d.ts +14 -9
  28. package/FunnelChart/funnelAxisPlugin/useChartFunnelAxis.types.d.ts +1 -1
  29. package/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +3 -3
  30. package/FunnelChart/seriesConfig/seriesProcessor.js +24 -48
  31. package/Heatmap/Heatmap.d.ts +1 -1
  32. package/LineChartPro/LineChartPro.js +38 -0
  33. package/PieChartPro/PieChartPro.d.ts +1 -1
  34. package/RadarChartPro/RadarChartPro.d.ts +1 -1
  35. package/ScatterChartPro/ScatterChartPro.d.ts +1 -1
  36. package/ScatterChartPro/ScatterChartPro.js +16 -0
  37. package/esm/BarChartPro/BarChartPro.d.ts +1 -1
  38. package/esm/BarChartPro/BarChartPro.js +32 -0
  39. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +7 -1
  40. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +33 -18
  41. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +4 -0
  42. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +28 -13
  43. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.d.ts +18 -0
  44. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreview.js +94 -0
  45. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.d.ts +11 -0
  46. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderPreviewContent.js +54 -0
  47. package/esm/ChartZoomSlider/internals/previews/AreaPreviewPlot.d.ts +14 -0
  48. package/esm/ChartZoomSlider/internals/previews/AreaPreviewPlot.js +53 -0
  49. package/esm/ChartZoomSlider/internals/previews/BarPreviewPlot.d.ts +10 -0
  50. package/esm/ChartZoomSlider/internals/previews/BarPreviewPlot.js +55 -0
  51. package/esm/ChartZoomSlider/internals/previews/LinePreviewPlot.d.ts +14 -0
  52. package/esm/ChartZoomSlider/internals/previews/LinePreviewPlot.js +51 -0
  53. package/esm/ChartZoomSlider/internals/previews/PreviewPlot.types.d.ts +4 -0
  54. package/esm/ChartZoomSlider/internals/previews/PreviewPlot.types.js +1 -0
  55. package/esm/ChartZoomSlider/internals/previews/ScatterPreviewPlot.d.ts +16 -0
  56. package/esm/ChartZoomSlider/internals/previews/ScatterPreviewPlot.js +86 -0
  57. package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +2 -0
  58. package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +3 -1
  59. package/esm/ChartsToolbarPro/ChartsToolbarPro.js +2 -0
  60. package/esm/FunnelChart/FunnelChart.d.ts +1 -1
  61. package/esm/FunnelChart/FunnelPlot.js +1 -1
  62. package/esm/FunnelChart/funnel.types.d.ts +14 -9
  63. package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxis.types.d.ts +1 -1
  64. package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +3 -3
  65. package/esm/FunnelChart/seriesConfig/seriesProcessor.js +24 -48
  66. package/esm/Heatmap/Heatmap.d.ts +1 -1
  67. package/esm/LineChartPro/LineChartPro.js +38 -0
  68. package/esm/PieChartPro/PieChartPro.d.ts +1 -1
  69. package/esm/RadarChartPro/RadarChartPro.d.ts +1 -1
  70. package/esm/ScatterChartPro/ScatterChartPro.d.ts +1 -1
  71. package/esm/ScatterChartPro/ScatterChartPro.js +16 -0
  72. package/esm/index.js +1 -1
  73. package/esm/internals/plugins/useChartProExport/exportImage.js +9 -3
  74. package/esm/internals/plugins/useChartProExport/print.d.ts +3 -1
  75. package/esm/internals/plugins/useChartProExport/print.js +7 -2
  76. package/esm/internals/plugins/useChartProExport/useChartProExport.types.d.ts +22 -12
  77. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +4 -4
  78. package/index.js +1 -1
  79. package/internals/plugins/useChartProExport/exportImage.js +9 -3
  80. package/internals/plugins/useChartProExport/print.d.ts +3 -1
  81. package/internals/plugins/useChartProExport/print.js +7 -2
  82. package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +22 -12
  83. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +4 -4
  84. package/package.json +6 -6
@@ -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 {}
@@ -157,6 +157,14 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
157
157
  * If `true`, the legend is not rendered.
158
158
  */
159
159
  hideLegend: _propTypes.default.bool,
160
+ /**
161
+ * The controlled axis highlight.
162
+ * Identified by the axis id, and data index.
163
+ */
164
+ highlightedAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
165
+ axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
166
+ dataIndex: _propTypes.default.number.isRequired
167
+ })),
160
168
  /**
161
169
  * The highlighted item.
162
170
  * Used when the highlight is controlled.
@@ -218,6 +226,14 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
218
226
  * @param {HighlightItemData | null} highlightedItem The newly highlighted item.
219
227
  */
220
228
  onHighlightChange: _propTypes.default.func,
229
+ /**
230
+ * The function called when the pointer position corresponds to a new axis data item.
231
+ * This update can either be caused by a pointer movement, or an axis update.
232
+ * In case of multiple axes, the function is called if at least one axis is updated.
233
+ * The argument contains the identifier for all axes with a `data` property.
234
+ * @param {AxisItemIdentifier[]} axisItems The array of axes item identifiers.
235
+ */
236
+ onHighlightedAxisChange: _propTypes.default.func,
221
237
  /**
222
238
  * Callback fired when a bar item is clicked.
223
239
  * @param {React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
@@ -329,6 +345,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
329
345
  panning: _propTypes.default.bool,
330
346
  slider: _propTypes.default.shape({
331
347
  enabled: _propTypes.default.bool,
348
+ preview: _propTypes.default.bool,
332
349
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
333
350
  size: _propTypes.default.number
334
351
  }),
@@ -394,6 +411,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
394
411
  panning: _propTypes.default.bool,
395
412
  slider: _propTypes.default.shape({
396
413
  enabled: _propTypes.default.bool,
414
+ preview: _propTypes.default.bool,
397
415
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
398
416
  size: _propTypes.default.number
399
417
  }),
@@ -454,6 +472,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
454
472
  panning: _propTypes.default.bool,
455
473
  slider: _propTypes.default.shape({
456
474
  enabled: _propTypes.default.bool,
475
+ preview: _propTypes.default.bool,
457
476
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
458
477
  size: _propTypes.default.number
459
478
  }),
@@ -514,6 +533,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
514
533
  panning: _propTypes.default.bool,
515
534
  slider: _propTypes.default.shape({
516
535
  enabled: _propTypes.default.bool,
536
+ preview: _propTypes.default.bool,
517
537
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
518
538
  size: _propTypes.default.number
519
539
  }),
@@ -574,6 +594,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
574
594
  panning: _propTypes.default.bool,
575
595
  slider: _propTypes.default.shape({
576
596
  enabled: _propTypes.default.bool,
597
+ preview: _propTypes.default.bool,
577
598
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
578
599
  size: _propTypes.default.number
579
600
  }),
@@ -634,6 +655,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
634
655
  panning: _propTypes.default.bool,
635
656
  slider: _propTypes.default.shape({
636
657
  enabled: _propTypes.default.bool,
658
+ preview: _propTypes.default.bool,
637
659
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
638
660
  size: _propTypes.default.number
639
661
  }),
@@ -694,6 +716,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
694
716
  panning: _propTypes.default.bool,
695
717
  slider: _propTypes.default.shape({
696
718
  enabled: _propTypes.default.bool,
719
+ preview: _propTypes.default.bool,
697
720
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
698
721
  size: _propTypes.default.number
699
722
  }),
@@ -754,6 +777,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
754
777
  panning: _propTypes.default.bool,
755
778
  slider: _propTypes.default.shape({
756
779
  enabled: _propTypes.default.bool,
780
+ preview: _propTypes.default.bool,
757
781
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
758
782
  size: _propTypes.default.number
759
783
  }),
@@ -826,6 +850,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
826
850
  panning: _propTypes.default.bool,
827
851
  slider: _propTypes.default.shape({
828
852
  enabled: _propTypes.default.bool,
853
+ preview: _propTypes.default.bool,
829
854
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
830
855
  size: _propTypes.default.number
831
856
  }),
@@ -890,6 +915,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
890
915
  panning: _propTypes.default.bool,
891
916
  slider: _propTypes.default.shape({
892
917
  enabled: _propTypes.default.bool,
918
+ preview: _propTypes.default.bool,
893
919
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
894
920
  size: _propTypes.default.number
895
921
  }),
@@ -949,6 +975,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
949
975
  panning: _propTypes.default.bool,
950
976
  slider: _propTypes.default.shape({
951
977
  enabled: _propTypes.default.bool,
978
+ preview: _propTypes.default.bool,
952
979
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
953
980
  size: _propTypes.default.number
954
981
  }),
@@ -1008,6 +1035,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1008
1035
  panning: _propTypes.default.bool,
1009
1036
  slider: _propTypes.default.shape({
1010
1037
  enabled: _propTypes.default.bool,
1038
+ preview: _propTypes.default.bool,
1011
1039
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1012
1040
  size: _propTypes.default.number
1013
1041
  }),
@@ -1067,6 +1095,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1067
1095
  panning: _propTypes.default.bool,
1068
1096
  slider: _propTypes.default.shape({
1069
1097
  enabled: _propTypes.default.bool,
1098
+ preview: _propTypes.default.bool,
1070
1099
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1071
1100
  size: _propTypes.default.number
1072
1101
  }),
@@ -1126,6 +1155,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1126
1155
  panning: _propTypes.default.bool,
1127
1156
  slider: _propTypes.default.shape({
1128
1157
  enabled: _propTypes.default.bool,
1158
+ preview: _propTypes.default.bool,
1129
1159
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1130
1160
  size: _propTypes.default.number
1131
1161
  }),
@@ -1185,6 +1215,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1185
1215
  panning: _propTypes.default.bool,
1186
1216
  slider: _propTypes.default.shape({
1187
1217
  enabled: _propTypes.default.bool,
1218
+ preview: _propTypes.default.bool,
1188
1219
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1189
1220
  size: _propTypes.default.number
1190
1221
  }),
@@ -1244,6 +1275,7 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1244
1275
  panning: _propTypes.default.bool,
1245
1276
  slider: _propTypes.default.shape({
1246
1277
  enabled: _propTypes.default.bool,
1278
+ preview: _propTypes.default.bool,
1247
1279
  showTooltip: _propTypes.default.oneOf(['always', 'hover', 'never']),
1248
1280
  size: _propTypes.default.number
1249
1281
  }),
package/CHANGELOG.md CHANGED
@@ -5,6 +5,104 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.8.0
9
+
10
+ _Jul 11, 2025_
11
+
12
+ We'd like to extend a big thank you to the 13 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 📊 Chart zoom preview can be enabled
15
+
16
+ <img width="758" alt="chart with x-axis preview" src="https://github.com/user-attachments/assets/50ce6f61-16dc-4e9b-a727-ca65d80927d7" />
17
+
18
+ - 🌎 Add Indonesian (id-ID) locale on the Data Grid
19
+
20
+ Special thanks go out to the community members for their valuable contributions:
21
+ @kennarddh
22
+
23
+ The following are all team members who have contributed to this release:
24
+ @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @noraleonte, @prakhargupta1, @rita-codes, @siriwatknp
25
+
26
+ ### Data Grid
27
+
28
+ #### `@mui/x-data-grid@8.8.0`
29
+
30
+ - [DataGrid] Fix `useGridSelector` missing subscription in `React.StrictMode` (#18676) @cherniavskii
31
+ - [DataGrid] Fix scrollbar filler `z-index` (#18688) @KenanYusuf
32
+ - [DataGrid] Set correct data source cache chunk size when pagination is disabled (#18636) @arminmeh
33
+ - [l10n] Add Indonesian (id-ID) locale (#18710) @kennarddh
34
+
35
+ #### `@mui/x-data-grid-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
36
+
37
+ Same changes as in `@mui/x-data-grid@8.8.0`, plus:
38
+
39
+ - [DataGridPro] Fix row ordering not auto-scrolling when moving beyond viewport (#18557) @MBilalShafi
40
+ - [DataGridPro] Set correct parent paths when tree is refreshed with data source tree data and row grouping (#18715) @arminmeh
41
+
42
+ #### `@mui/x-data-grid-premium@8.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
43
+
44
+ Same changes as in `@mui/x-data-grid-pro@8.8.0`.
45
+
46
+ ### Date and Time Pickers
47
+
48
+ #### `@mui/x-date-pickers@8.8.0`
49
+
50
+ Internal changes.
51
+
52
+ #### `@mui/x-date-pickers-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
53
+
54
+ Same changes as in `@mui/x-date-pickers@8.8.0`.
55
+
56
+ ### Charts
57
+
58
+ #### `@mui/x-charts@8.8.0`
59
+
60
+ - [charts] Add control to the axis highlight (#17900) @alexfauquette
61
+ - [charts] Avoid processing area plot data if area isn't used in series (#18712) @bernardobelchior
62
+ - [charts] Make smarter default domain limit (#18506) @alexfauquette
63
+
64
+ #### `@mui/x-charts-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
65
+
66
+ Same changes as in `@mui/x-charts@8.8.0`, plus:
67
+
68
+ - [charts-pro] Add `funnelDirection` to control pyramid direction (#18568) @JCQuintas
69
+ - [charts-pro] Add `onBeforeExport` callback (#18722) @bernardobelchior
70
+ - [charts-pro] Add chart zoom preview (#18267) @bernardobelchior
71
+ - [charts-pro] Allow customizing scatter preview marker size (#18726) @bernardobelchior
72
+ - [charts-pro] Allow disabling the copy of styles in charts export (#18753) @bernardobelchior
73
+
74
+ ### Tree View
75
+
76
+ #### `@mui/x-tree-view@8.8.0`
77
+
78
+ - [tree view] Fix state update that caused scrolling bug when lazy loading and `checkboxSelection` are enabled (#18749) @rita-codes
79
+
80
+ #### `@mui/x-tree-view-pro@8.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
81
+
82
+ Same changes as in `@mui/x-tree-view@8.8.0`.
83
+
84
+ ### Codemod
85
+
86
+ #### `@mui/x-codemod@8.8.0`
87
+
88
+ Internal changes.
89
+
90
+ ### Docs
91
+
92
+ - [docs] Add standalone Pyramid chart page to improve SEO (#18527) @prakhargupta1
93
+ - [docs] Add example to customise line interaction (#18539) @alexfauquette
94
+ - [docs] Fix `size` column filtering in files tree demo (#17952) @cherniavskii
95
+ - [docs] Generate `llms.txt` for X and their products (#18595) @siriwatknp
96
+ - [docs] Improve bar chart demos on mobile (#18721) @alexfauquette
97
+ - [docs] Refine charts overview page (#17447) @noraleonte
98
+
99
+ ### Miscellaneous
100
+
101
+ - [code-infra] Ensure all `@mui/*` packages are picked by `Material UI` renovate group (#18711) @LukasTy
102
+ - [code-infra] Fix broken CI (#18716) @LukasTy
103
+ - [code-infra] Refactor `prettier` config resolving (#18720) @LukasTy
104
+ - [test] Increase data points in chart benchmarks (#18714) @bernardobelchior
105
+
8
106
  ## 8.7.0
9
107
 
10
108
  _Jul 4, 2025_
@@ -18,7 +18,7 @@ var _material = require("../internals/material");
18
18
  var _allPlugins = require("../internals/plugins/allPlugins");
19
19
  var _useChartDataProviderProProps = require("./useChartDataProviderProProps");
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
- const releaseInfo = "MTc1MTU4MDAwMDAwMA==";
21
+ const releaseInfo = "MTc1MjE4NDgwMDAwMA==";
22
22
  const packageIdentifier = 'x-charts-pro';
23
23
  /**
24
24
  * Orchestrates the data providers for the chart components and hooks.
@@ -90,6 +90,12 @@ process.env.NODE_ENV !== "production" ? ChartDataProviderPro.propTypes = {
90
90
  * An array of objects that can be used to populate series and axes data using their `dataKey` property.
91
91
  */
92
92
  dataset: _propTypes.default.arrayOf(_propTypes.default.object),
93
+ /**
94
+ * Options to enable features planned for the next major.
95
+ */
96
+ experimentalFeatures: _propTypes.default.shape({
97
+ preferStrictDomainInLineCharts: _propTypes.default.bool
98
+ }),
93
99
  /**
94
100
  * The height of the chart in px. If not defined, it takes the height of the parent element.
95
101
  */
@@ -9,6 +9,7 @@ exports.ChartAxisZoomSlider = ChartAxisZoomSlider;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _internals = require("@mui/x-charts/internals");
11
11
  var _hooks = require("@mui/x-charts/hooks");
12
+ var _ChartAxisZoomSliderPreview = require("./ChartAxisZoomSliderPreview");
12
13
  var _constants = require("./constants");
13
14
  var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
14
15
  var _ChartAxisZoomSliderTrack = require("./ChartAxisZoomSliderTrack");
@@ -25,6 +26,7 @@ function ChartAxisZoomSlider({
25
26
  const store = (0, _internals.useStore)();
26
27
  const drawingArea = (0, _internals.useDrawingArea)();
27
28
  const zoomData = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartAxisZoomData, [axisId]);
29
+ const zoomOptions = (0, _internals.useSelector)(store, _internals.selectorChartAxisZoomOptionsLookup, [axisId]);
28
30
  const [showTooltip, setShowTooltip] = React.useState(false);
29
31
  const {
30
32
  xAxis
@@ -32,6 +34,7 @@ function ChartAxisZoomSlider({
32
34
  const {
33
35
  yAxis
34
36
  } = (0, _hooks.useYAxes)();
37
+ const showPreview = zoomOptions.slider.preview;
35
38
  if (!zoomData) {
36
39
  return null;
37
40
  }
@@ -40,6 +43,7 @@ function ChartAxisZoomSlider({
40
43
  let reverse;
41
44
  let axisPosition;
42
45
  let tooltipConditions;
46
+ const sliderSize = showPreview ? _internals.ZOOM_SLIDER_PREVIEW_SIZE : _constants.ZOOM_SLIDER_SIZE;
43
47
  if (axisDirection === 'x') {
44
48
  const axis = xAxis[axisId];
45
49
  if (!axis || axis.position === 'none') {
@@ -47,7 +51,7 @@ function ChartAxisZoomSlider({
47
51
  }
48
52
  const axisSize = axis.height;
49
53
  x = drawingArea.left;
50
- y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - _constants.ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
54
+ y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - sliderSize - _internals.ZOOM_SLIDER_MARGIN;
51
55
  reverse = axis.reverse ?? false;
52
56
  axisPosition = axis.position ?? 'bottom';
53
57
  tooltipConditions = axis.zoom?.slider?.showTooltip ?? _internals.DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
@@ -57,38 +61,49 @@ function ChartAxisZoomSlider({
57
61
  return null;
58
62
  }
59
63
  const axisSize = axis.width;
60
- x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - _constants.ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
64
+ x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - sliderSize - _internals.ZOOM_SLIDER_MARGIN;
61
65
  y = drawingArea.top;
62
66
  reverse = axis.reverse ?? false;
63
67
  axisPosition = axis.position ?? 'left';
64
68
  tooltipConditions = axis.zoom?.slider?.showTooltip ?? _internals.DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
65
69
  }
66
- const backgroundRectOffset = (_constants.ZOOM_SLIDER_SIZE - _constants.ZOOM_SLIDER_TRACK_SIZE) / 2;
70
+ const backgroundRectOffset = (sliderSize - _constants.ZOOM_SLIDER_TRACK_SIZE) / 2;
71
+ const track = showPreview ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderPreview.ChartAxisZoomSliderPreview, {
72
+ axisId: axisId,
73
+ axisDirection: axisDirection,
74
+ reverse: reverse,
75
+ x: 0,
76
+ y: 0,
77
+ height: axisDirection === 'x' ? _internals.ZOOM_SLIDER_PREVIEW_SIZE : drawingArea.height,
78
+ width: axisDirection === 'x' ? drawingArea.width : _internals.ZOOM_SLIDER_PREVIEW_SIZE
79
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderTrack.ChartAxisZoomSliderTrack, {
80
+ x: axisDirection === 'x' ? 0 : backgroundRectOffset,
81
+ y: axisDirection === 'x' ? backgroundRectOffset : 0,
82
+ height: axisDirection === 'x' ? _constants.ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
83
+ width: axisDirection === 'x' ? drawingArea.width : _constants.ZOOM_SLIDER_TRACK_SIZE,
84
+ rx: _constants.ZOOM_SLIDER_TRACK_SIZE / 2,
85
+ ry: _constants.ZOOM_SLIDER_TRACK_SIZE / 2,
86
+ axisId: axisId,
87
+ axisDirection: axisDirection,
88
+ reverse: reverse,
89
+ onSelectStart: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
90
+ onSelectEnd: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
91
+ });
67
92
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
68
93
  "data-charts-zoom-slider": true,
69
94
  transform: `translate(${x} ${y})`,
70
95
  style: {
71
96
  touchAction: 'none'
72
97
  },
73
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderTrack.ChartAxisZoomSliderTrack, {
74
- x: axisDirection === 'x' ? 0 : backgroundRectOffset,
75
- y: axisDirection === 'x' ? backgroundRectOffset : 0,
76
- height: axisDirection === 'x' ? _constants.ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
77
- width: axisDirection === 'x' ? drawingArea.width : _constants.ZOOM_SLIDER_TRACK_SIZE,
78
- rx: _constants.ZOOM_SLIDER_TRACK_SIZE / 2,
79
- ry: _constants.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
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderActiveTrack.ChartAxisZoomSliderActiveTrack, {
98
+ children: [track, /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderActiveTrack.ChartAxisZoomSliderActiveTrack, {
86
99
  zoomData: zoomData,
87
100
  axisId: axisId,
88
101
  axisPosition: axisPosition,
89
102
  axisDirection: axisDirection,
90
103
  reverse: reverse,
91
104
  showTooltip: showTooltip && tooltipConditions !== 'never' || tooltipConditions === 'always',
105
+ size: showPreview ? _internals.ZOOM_SLIDER_PREVIEW_SIZE : _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE,
106
+ preview: showPreview,
92
107
  onPointerEnter: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
93
108
  onPointerLeave: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
94
109
  })]
@@ -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,
@@ -12,6 +12,7 @@ var _styles = require("@mui/material/styles");
12
12
  var _internals = require("@mui/x-charts/internals");
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
  var _rafThrottle = require("@mui/x-internals/rafThrottle");
15
+ var _system = require("@mui/system");
15
16
  var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
16
17
  var _ChartAxisZoomSliderThumb = require("./ChartAxisZoomSliderThumb");
17
18
  var _ChartsTooltipZoomSliderValue = require("./ChartsTooltipZoomSliderValue");
@@ -19,18 +20,31 @@ var _zoomUtils = require("./zoom-utils");
19
20
  var _constants = require("./constants");
20
21
  var _chartAxisZoomSliderTrackClasses = require("./chartAxisZoomSliderTrackClasses");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
- const ZoomSliderActiveTrackRect = (0, _styles.styled)('rect')(({
23
+ const ZoomSliderActiveTrackRect = (0, _styles.styled)('rect', {
24
+ shouldForwardProp: prop => (0, _system.shouldForwardProp)(prop) && prop !== 'preview'
25
+ })(({
23
26
  theme
24
27
  }) => ({
25
- '&': {
26
- fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
27
- cursor: 'grab'
28
- }
28
+ fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
29
+ cursor: 'grab',
30
+ variants: [{
31
+ props: {
32
+ preview: true
33
+ },
34
+ style: {
35
+ fill: 'transparent',
36
+ rx: 4,
37
+ ry: 4,
38
+ stroke: theme.palette.grey[500]
39
+ }
40
+ }]
29
41
  }));
30
42
  function ChartAxisZoomSliderActiveTrack({
31
43
  axisId,
32
44
  axisDirection,
33
45
  axisPosition,
46
+ size,
47
+ preview,
34
48
  zoomData,
35
49
  reverse,
36
50
  showTooltip,
@@ -169,11 +183,11 @@ function ChartAxisZoomSliderActiveTrack({
169
183
  previewX = (zoomStart - minStart) / range * drawingArea.width;
170
184
  previewY = 0;
171
185
  previewWidth = drawingArea.width * (zoomEnd - zoomStart) / range;
172
- previewHeight = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
186
+ previewHeight = size;
173
187
  startThumbX = (zoomStart - minStart) / range * drawingArea.width;
174
- startThumbY = 0;
188
+ startThumbY = _constants.ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - _constants.ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
175
189
  endThumbX = (zoomEnd - minStart) / range * drawingArea.width;
176
- endThumbY = 0;
190
+ endThumbY = _constants.ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - _constants.ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
177
191
  if (reverse) {
178
192
  previewX = drawingArea.width - previewX - previewWidth;
179
193
  startThumbX = drawingArea.width - startThumbX;
@@ -184,11 +198,11 @@ function ChartAxisZoomSliderActiveTrack({
184
198
  } else {
185
199
  previewX = 0;
186
200
  previewY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
187
- previewWidth = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
201
+ previewWidth = size;
188
202
  previewHeight = drawingArea.height * (zoomEnd - zoomStart) / range;
189
- startThumbX = 0;
203
+ startThumbX = _constants.ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - _constants.ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
190
204
  startThumbY = drawingArea.height - (zoomStart - minStart) / range * drawingArea.height;
191
- endThumbX = 0;
205
+ endThumbX = _constants.ZOOM_SLIDER_THUMB_HEIGHT < size ? (size - _constants.ZOOM_SLIDER_THUMB_HEIGHT) / 2 : 0;
192
206
  endThumbY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
193
207
  if (reverse) {
194
208
  previewY = drawingArea.height - previewY - previewHeight;
@@ -198,12 +212,13 @@ function ChartAxisZoomSliderActiveTrack({
198
212
  startThumbY -= previewThumbHeight / 2;
199
213
  endThumbY -= previewThumbHeight / 2;
200
214
  }
201
- const previewOffset = (_constants.ZOOM_SLIDER_THUMB_HEIGHT - _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
215
+ const previewOffset = _constants.ZOOM_SLIDER_THUMB_HEIGHT > size ? (_constants.ZOOM_SLIDER_THUMB_HEIGHT - size) / 2 : 0;
202
216
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
203
217
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderActiveTrackRect, {
204
218
  ref: activePreviewRectRef,
205
219
  x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
206
220
  y: previewY + (axisDirection === 'x' ? previewOffset : 0),
221
+ preview: preview,
207
222
  width: previewWidth,
208
223
  height: previewHeight,
209
224
  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 {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ChartAxisZoomSliderPreview = ChartAxisZoomSliderPreview;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _styles = require("@mui/material/styles");
13
+ var _internals = require("@mui/x-charts/internals");
14
+ var _system = require("@mui/system");
15
+ var _useId = _interopRequireDefault(require("@mui/utils/useId"));
16
+ var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
17
+ var _ChartAxisZoomSliderPreviewContent = require("./ChartAxisZoomSliderPreviewContent");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ const _excluded = ["axisId", "axisDirection", "reverse"];
20
+ const PreviewBackgroundRect = (0, _styles.styled)('rect')(({
21
+ theme
22
+ }) => ({
23
+ rx: 4,
24
+ ry: 4,
25
+ stroke: theme.palette.grey[700],
26
+ fill: (0, _system.alpha)(theme.palette.grey[700], 0.4)
27
+ }));
28
+ function ChartAxisZoomSliderPreview(_ref) {
29
+ let {
30
+ axisId,
31
+ axisDirection
32
+ } = _ref,
33
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
34
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", (0, _extends2.default)({}, props, {
35
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreviewRectangles, (0, _extends2.default)({}, props, {
36
+ axisId: axisId,
37
+ axisDirection: axisDirection
38
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", (0, _extends2.default)({}, props, {
39
+ fill: "transparent",
40
+ rx: 4,
41
+ ry: 4
42
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderPreviewContent.ChartAxisZoomSliderPreviewContent, (0, _extends2.default)({
43
+ axisId: axisId
44
+ }, props))]
45
+ }));
46
+ }
47
+ function PreviewRectangles(props) {
48
+ const {
49
+ axisId,
50
+ axisDirection
51
+ } = props;
52
+ const store = (0, _internals.useStore)();
53
+ const zoomData = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartAxisZoomData, [axisId]);
54
+ const zoomOptions = (0, _internals.useSelector)(store, _internals.selectorChartAxisZoomOptionsLookup, [axisId]);
55
+ const id = (0, _useId.default)();
56
+ if (!zoomData) {
57
+ return null;
58
+ }
59
+ const maskId = `zoom-preview-mask-${axisId}-${id}`;
60
+ let x;
61
+ let y;
62
+ let width;
63
+ let height;
64
+ const range = zoomOptions.maxEnd - zoomOptions.minStart;
65
+ if (axisDirection === 'x') {
66
+ x = props.x + (zoomData.start - zoomOptions.minStart) / range * props.width;
67
+ y = props.y;
68
+ width = (zoomData.end - zoomData.start) / range * props.width;
69
+ height = props.height;
70
+ } else {
71
+ x = props.x;
72
+ y = props.y + (1 - zoomData.end / range) * props.height;
73
+ width = props.width;
74
+ height = (zoomData.end - zoomData.start) / range * props.height;
75
+ }
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
77
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("mask", {
78
+ id: maskId,
79
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
80
+ x: props.x,
81
+ y: props.y,
82
+ width: props.width,
83
+ height: props.height,
84
+ fill: "white"
85
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", {
86
+ x: x,
87
+ y: y,
88
+ width: width,
89
+ height: height,
90
+ fill: "black",
91
+ rx: 4,
92
+ ry: 4
93
+ })]
94
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreviewBackgroundRect, {
95
+ x: props.x,
96
+ y: props.y,
97
+ width: props.width,
98
+ height: props.height,
99
+ mask: `url(#${maskId})`
100
+ })]
101
+ });
102
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { AxisId } from '@mui/x-charts/internals';
3
+ interface ChartAxisZoomSliderPreviewContentProps {
4
+ axisId: AxisId;
5
+ x: number;
6
+ y: number;
7
+ height: number;
8
+ width: number;
9
+ }
10
+ export declare function ChartAxisZoomSliderPreviewContent(props: ChartAxisZoomSliderPreviewContentProps): React.JSX.Element;
11
+ export {};