@mui/x-charts-pro 8.5.2 → 8.6.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 (110) hide show
  1. package/CHANGELOG.md +203 -11
  2. package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  3. package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +1 -1
  4. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +20 -31
  5. package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +1 -8
  6. package/ChartZoomSlider/internals/zoom-utils.d.ts +3 -1
  7. package/ChartZoomSlider/internals/zoom-utils.js +19 -8
  8. package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
  9. package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +77 -0
  10. package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
  11. package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +75 -0
  12. package/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
  13. package/ChartsToolbarPro/ChartsToolbarPro.js +118 -8
  14. package/ChartsToolbarPro/index.d.ts +3 -1
  15. package/ChartsToolbarPro/index.js +22 -0
  16. package/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
  17. package/ChartsToolbarPro/internals/ChartsMenu.js +73 -0
  18. package/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
  19. package/ChartsToolbarPro/internals/ChartsToolbarDivider.js +47 -0
  20. package/FunnelChart/FunnelPlot.js +56 -40
  21. package/FunnelChart/FunnelSection.js +2 -0
  22. package/FunnelChart/curves/bump.d.ts +3 -3
  23. package/FunnelChart/curves/bump.js +3 -0
  24. package/FunnelChart/curves/curve.types.d.ts +14 -1
  25. package/FunnelChart/curves/getFunnelCurve.d.ts +7 -2
  26. package/FunnelChart/curves/linear.d.ts +3 -3
  27. package/FunnelChart/curves/linear.js +23 -18
  28. package/FunnelChart/curves/pyramid.d.ts +3 -3
  29. package/FunnelChart/curves/pyramid.js +17 -12
  30. package/FunnelChart/curves/step-pyramid.d.ts +5 -5
  31. package/FunnelChart/curves/step-pyramid.js +20 -18
  32. package/FunnelChart/curves/step.d.ts +3 -3
  33. package/FunnelChart/curves/step.js +14 -12
  34. package/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +18 -1444
  35. package/FunnelChart/labelUtils.d.ts +4 -12
  36. package/FunnelChart/labelUtils.js +43 -44
  37. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  38. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +1 -1
  39. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +21 -32
  40. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +1 -8
  41. package/esm/ChartZoomSlider/internals/zoom-utils.d.ts +3 -1
  42. package/esm/ChartZoomSlider/internals/zoom-utils.js +19 -9
  43. package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
  44. package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +70 -0
  45. package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
  46. package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +68 -0
  47. package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
  48. package/esm/ChartsToolbarPro/ChartsToolbarPro.js +120 -8
  49. package/esm/ChartsToolbarPro/index.d.ts +3 -1
  50. package/esm/ChartsToolbarPro/index.js +3 -1
  51. package/esm/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
  52. package/esm/ChartsToolbarPro/internals/ChartsMenu.js +67 -0
  53. package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
  54. package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.js +40 -0
  55. package/esm/FunnelChart/FunnelPlot.js +56 -40
  56. package/esm/FunnelChart/FunnelSection.js +2 -0
  57. package/esm/FunnelChart/curves/bump.d.ts +3 -3
  58. package/esm/FunnelChart/curves/bump.js +3 -0
  59. package/esm/FunnelChart/curves/curve.types.d.ts +14 -1
  60. package/esm/FunnelChart/curves/getFunnelCurve.d.ts +7 -2
  61. package/esm/FunnelChart/curves/linear.d.ts +3 -3
  62. package/esm/FunnelChart/curves/linear.js +23 -18
  63. package/esm/FunnelChart/curves/pyramid.d.ts +3 -3
  64. package/esm/FunnelChart/curves/pyramid.js +17 -12
  65. package/esm/FunnelChart/curves/step-pyramid.d.ts +5 -5
  66. package/esm/FunnelChart/curves/step-pyramid.js +20 -18
  67. package/esm/FunnelChart/curves/step.d.ts +3 -3
  68. package/esm/FunnelChart/curves/step.js +14 -12
  69. package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +18 -1444
  70. package/esm/FunnelChart/labelUtils.d.ts +4 -12
  71. package/esm/FunnelChart/labelUtils.js +43 -44
  72. package/esm/index.d.ts +2 -1
  73. package/esm/index.js +1 -1
  74. package/esm/internals/material/components/BaseMenuItem.d.ts +3 -0
  75. package/esm/internals/material/components/BaseMenuItem.js +27 -0
  76. package/esm/internals/material/components/BasePopper.d.ts +3 -0
  77. package/esm/internals/material/components/BasePopper.js +122 -0
  78. package/esm/internals/material/icons.d.ts +2 -1
  79. package/esm/internals/material/icons.js +4 -1
  80. package/esm/internals/material/index.d.ts +1 -0
  81. package/esm/internals/material/index.js +12 -3
  82. package/esm/internals/plugins/useChartProExport/print.js +1 -1
  83. package/esm/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
  84. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +16 -595
  85. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +2 -2
  86. package/esm/internals/slots/chartBaseSlotProps.d.ts +50 -3
  87. package/esm/internals/slots/chartsBaseSlots.d.ts +5 -1
  88. package/esm/internals/slots/chartsIconSlots.d.ts +5 -0
  89. package/index.d.ts +2 -1
  90. package/index.js +1 -1
  91. package/internals/material/components/BaseMenuItem.d.ts +3 -0
  92. package/internals/material/components/BaseMenuItem.js +35 -0
  93. package/internals/material/components/BasePopper.d.ts +3 -0
  94. package/internals/material/components/BasePopper.js +130 -0
  95. package/internals/material/icons.d.ts +2 -1
  96. package/internals/material/icons.js +5 -2
  97. package/internals/material/index.d.ts +1 -0
  98. package/internals/material/index.js +11 -2
  99. package/internals/plugins/useChartProExport/print.js +1 -1
  100. package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
  101. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +16 -595
  102. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +2 -2
  103. package/internals/slots/chartBaseSlotProps.d.ts +50 -3
  104. package/internals/slots/chartsBaseSlots.d.ts +5 -1
  105. package/internals/slots/chartsIconSlots.d.ts +5 -0
  106. package/package.json +5 -5
  107. package/FunnelChart/positionGetter.d.ts +0 -1
  108. package/FunnelChart/positionGetter.js +0 -5
  109. package/esm/FunnelChart/positionGetter.d.ts +0 -1
  110. package/esm/FunnelChart/positionGetter.js +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,208 @@
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.6.0
9
+
10
+ _Jun 27, 2025_
11
+
12
+ We'd like to extend a big thank you to the 12 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 📊 Add export menu to charts toolbar
15
+ - 📅 Add `usePickerAdapter` hook to access the date adapter.
16
+
17
+ You can use the adapter in your custom components if you need them to work with multiple date libraries — [Learn more](https://mui.com/x/react-date-pickers/custom-components/#access-date-adapter).
18
+ - 🌎 Improve Danish (da-DK) locale
19
+ - 🌎 Improve German (de-DE) locale
20
+
21
+ Special thanks go out to the community members for their valuable contributions:
22
+ @ShahrazH, @vadimka123
23
+
24
+ The following are all team members who have contributed to this release:
25
+ @arminmeh, @bernardobelchior, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @sai6855
26
+
27
+ ### Data Grid
28
+
29
+ #### `@mui/x-data-grid@8.6.0`
30
+
31
+ - [DataGrid] Fix `label` type in `GridActionsCellItem` type (#18175) @sai6855
32
+ - [DataGrid] Fix grid menu not closing when pressing escape/tab (#18300) @KenanYusuf
33
+ - [l10n] Improve Danish (da-DK) locale (#18428) @ShahrazH
34
+ - [l10n] Improve German (de-DE) locale (#18388) @omalyutin
35
+
36
+ #### `@mui/x-data-grid-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
37
+
38
+ Same changes as in `@mui/x-data-grid@8.6.0`, plus:
39
+
40
+ - [DataGridPro] Fix lazy loading params calculated from rendering context (#18460) @arminmeh
41
+
42
+ #### `@mui/x-data-grid-premium@8.6.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.6.0`.
45
+
46
+ ### Date and Time Pickers
47
+
48
+ #### `@mui/x-date-pickers@8.6.0`
49
+
50
+ - [pickers] Add `usePickerAdapter` hook (#18457) @LukasTy
51
+ - [pickers] Fix to use latest `value` when updating `lastCommittedValue` in internal state (#18518) @LukasTy
52
+ - [pickers] Use `usePickerAdapter` hook internally instead of `useUtils` (#18465) @LukasTy
53
+
54
+ #### `@mui/x-date-pickers-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
55
+
56
+ Same changes as in `@mui/x-date-pickers@8.6.0`.
57
+
58
+ ### Charts
59
+
60
+ #### `@mui/x-charts@8.6.0`
61
+
62
+ - [charts] Add `data-series` to charts legend item (#18414) @bernardobelchior
63
+ - [charts] Add `data-series` to bar charts (#18413) @bernardobelchior
64
+ - [charts] Add `data-series` to elements of line chart (#18409) @bernardobelchior
65
+ - [charts] Add `data-series` to pie charts (#18432) @bernardobelchior
66
+ - [charts] Fix missing key in bar plot (#18502) @bernardobelchior
67
+ - [charts] Split axis utils from main file (#18517) @JCQuintas
68
+ - [charts] Improve touch behavior for polar axis (#18531) @JCQuintas
69
+ - [charts] Add `isElementInside` helper (#18530) @JCQuintas
70
+
71
+ #### `@mui/x-charts-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
72
+
73
+ Same changes as in `@mui/x-charts@8.6.0`, plus:
74
+
75
+ - [charts-pro] Add export menu to charts toolbar (#18210) @bernardobelchior
76
+ - [charts-pro] Fix export docs mentioning tooltip instead of toolbar (#18490) @bernardobelchior
77
+ - [charts-pro] Fix iframe not being removed after print export (#18500) @bernardobelchior
78
+
79
+ ### Tree View
80
+
81
+ #### `@mui/x-tree-view@8.6.0`
82
+
83
+ Internal changes.
84
+
85
+ #### `@mui/x-tree-view-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
86
+
87
+ Same changes as in `@mui/x-tree-view@8.6.0`, plus:
88
+
89
+ - [tree view pro] Fix theme augmentation (#18437) @LukasTy
90
+
91
+ ### Codemod
92
+
93
+ #### `@mui/x-codemod@8.6.0`
94
+
95
+ Internal changes.
96
+
97
+ ### Docs
98
+
99
+ - [docs] Document `GridRenderContext` (#18492) @arminmeh
100
+ - [docs] Prevent stale rows to appear on sort and filter change in the lazy loading demo (#18461) @arminmeh
101
+ - [docs][pickers] Update action bar demo to use the `nextOrAccept` action (#18505) @LukasTy
102
+ - [docs] Update indeterminate checkbox section in migration guide (#18229) @michelengelen
103
+ - [docs] Data source nested pagination recipe (#14777) @MBilalShafi
104
+
105
+ ### Core
106
+
107
+ - [core] Avoid json stringify whole window object (#18512) @vadimka123
108
+
109
+ ### Miscellaneous
110
+
111
+ - [code-infra] Dynamically get pickers adapters dependencies versions (#18446) @JCQuintas
112
+ - [infra] Adjust inquirer version and usage (#18495) @michelengelen
113
+ - [infra] Use `String.raw` for creating the remote regex (#18462) @michelengelen
114
+
115
+ ## 8.5.3
116
+
117
+ _Jun 19, 2025_
118
+
119
+ We'd like to extend a big thank you to the 10 contributors who made this release possible. Here are some highlights ✨:
120
+
121
+ - 📚 Documentation improvements
122
+ - 🐞 Bugfixes
123
+
124
+ Special thanks go out to the community members for their valuable contributions:
125
+ @alisasanib, @arminmeh, @sai6855
126
+
127
+ The following are all team members who have contributed to this release:
128
+ @alexfauquette, @bernardobelchior, @flaviendelangle, @JCQuintas, @LukasTy, @MBilalShafi, @oliviertassinari
129
+
130
+ ### Data Grid
131
+
132
+ #### `@mui/x-data-grid@8.5.3`
133
+
134
+ - [DataGrid] Fix export menu button tooltip being interactive when menu is open (#18327) @bernardobelchior
135
+ - [DataGrid] Fix column menu scroll close (#18065) @alisasanib
136
+ - [DataGrid] Fix page size issue with data source (#18419) @MBilalShafi
137
+
138
+ #### `@mui/x-data-grid-pro@8.5.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
139
+
140
+ Same changes as in `@mui/x-data-grid@8.5.3`, plus:
141
+
142
+ - [DataGridPro] Ignore missing `rowCount` response when new children are fetched with the data source (#17711) @arminmeh
143
+
144
+ #### `@mui/x-data-grid-premium@8.5.3` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
145
+
146
+ Same changes as in `@mui/x-data-grid-pro@8.5.3`.
147
+
148
+ ### Date and Time Pickers
149
+
150
+ #### `@mui/x-date-pickers@8.5.3`
151
+
152
+ - [pickers] Add `inputSizeSmall` to classes interface (#18242) @sai6855
153
+
154
+ #### `@mui/x-date-pickers-pro@8.5.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
155
+
156
+ Same changes as in `@mui/x-date-pickers@8.5.3`.
157
+
158
+ ### Charts
159
+
160
+ #### `@mui/x-charts@8.5.3`
161
+
162
+ - [charts] Add item class to list item around each series in legend (#18411) @bernardobelchior
163
+ - [charts] Allow `tabIndex` in surface and legend (#18344) @JCQuintas
164
+ - [charts] Explore selector typing (#18362) @alexfauquette
165
+ - [charts] Fix highlight with number ids (#18423) @alexfauquette
166
+ - [charts] Make scatter chart use data attributes (#18048) @alexfauquette
167
+
168
+ #### `@mui/x-charts-pro@8.5.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
169
+
170
+ Same changes as in `@mui/x-charts@8.5.3`, plus:
171
+
172
+ - [charts-pro] Add data-series to elements of funnel chart (#18067) @JCQuintas
173
+ - [charts-pro] Hide values outside minStart and maxEnd in zoom slider (#18336) @bernardobelchior
174
+ - [charts-pro] Fix `FunnelChart` label positioning with different curves (#18354) @JCQuintas
175
+
176
+ ### Tree View
177
+
178
+ #### `@mui/x-tree-view@8.5.3`
179
+
180
+ Internal changes.
181
+
182
+ #### `@mui/x-tree-view-pro@8.5.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
183
+
184
+ Same changes as in `@mui/x-tree-view@8.5.3`.
185
+
186
+ ### Codemod
187
+
188
+ #### `@mui/x-codemod@8.5.3`
189
+
190
+ Internal changes.
191
+
192
+ ### Docs
193
+
194
+ - [docs] Fix 404 in charts docs (#18440) @alexfauquette
195
+ - [docs][pickers] Fix adapter version resolving when opening demo to edit (#18363) @LukasTy
196
+
197
+ ### Core
198
+
199
+ - [core] Fix pnpm valelint error (#18420) @oliviertassinari
200
+
201
+ ### Miscellaneous
202
+
203
+ - [code-infra] Add back a `Playwright` renovate group (#18397) @LukasTy
204
+ - [code-infra] Setup `CODEOWNERS` for charts repositories (#18418) @JCQuintas
205
+ - [code-infra] Strengthen `URL` usage for test config (#18444) @LukasTy
206
+ - [code-infra] Use `vitest` bundled types (#17758) @JCQuintas
207
+ - [infra] Stabilise tests by removing babel and plugins from vitest (#18341) @JCQuintas
208
+ - [infra] Add automated release PR creation script (#18345) @michelengelen
209
+
8
210
  ## 8.5.2
9
211
 
10
212
  _Jun 12, 2025_
@@ -94,7 +296,7 @@ Same changes as in `@mui/x-tree-view@8.5.2`.
94
296
  - [code-infra] Revert `React` to `19.0.0` (#18265) @LukasTy
95
297
  - [code-infra] Use `catalog` for reused dependencies (#18302) @LukasTy
96
298
  - [infra] Remove unused karma/mocha deps and files (#18340) @JCQuintas
97
- - [infra] Update github label references to use 'scope' instead of 'component' (#18260) @michelengelen
299
+ - [infra] Update GitHub label references to use 'scope' instead of 'component' (#18260) @michelengelen
98
300
  - [infra] Use a single browser server in CI (#18230) @JCQuintas
99
301
 
100
302
  ## 8.5.1
@@ -189,15 +391,6 @@ Same changes as in `@mui/x-tree-view@8.5.1`.
189
391
 
190
392
  ### Core
191
393
 
192
- - chore(deps): bump @next/eslint-plugin-next to 15.3.3 (#18155) @renovate[bot]
193
- - chore(deps): bump @types/lodash to ^4.17.17 (#17990) @renovate[bot]
194
- - chore(deps): bump babel (#18157) @renovate[bot]
195
- - chore(deps): bump eslint to ^9.28.0 (#17352) @renovate[bot]
196
- - chore(deps): bump material ui (#17802) @renovate[bot]
197
- - chore(deps): bump next to ^15.3.3 (#18159) @renovate[bot]
198
- - chore(deps): bump ossf/scorecard-action action to v2.4.2 (#18160) @renovate[bot]
199
- - chore(deps): bump react-router to ^7.6.1 (#18162) @renovate[bot]
200
- - chore(deps): bump yargs to ^18.0.0 (#18169) @renovate[bot]
201
394
  - [code-infra] Different approach to console testing for `processRowUpdate` (#18213) @JCQuintas
202
395
  - [code-infra] Fix act warnings in DataGrid/toolbar (#18207) @JCQuintas
203
396
  - [code-infra] Remove `istanbul` references (#18194) @JCQuintas
@@ -4641,7 +4834,6 @@ No changes since `@mui/x-charts@7.22.2`.
4641
4834
  - [docs] Add `next` version links (#15423) @LukasTy
4642
4835
  - [docs] Use the `loading` state in the demos (#15538) @cherniavskii
4643
4836
  - [docs] Add data caching to lazy loaded detail panel demo (#15506) @cherniavskii
4644
-
4645
4837
  - [code-infra] Tentative fix for Argos flaky screenshot tests (#15399) @JCQuintas
4646
4838
  - [docs-infra] Transpile `.ts` demo files (#15421) @KenanYusuf
4647
4839
  - [core] Clarify release version bump strategy (#15536) @cherniavskii
@@ -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 = "MTc0OTY3OTIwMDAwMA==";
21
+ const releaseInfo = "MTc1MDk3NTIwMDAwMA==";
22
22
  const packageIdentifier = 'x-charts-pro';
23
23
  /**
24
24
  * Orchestrates the data providers for the chart components and hooks.
@@ -24,7 +24,7 @@ function ChartAxisZoomSlider({
24
24
  }) {
25
25
  const store = (0, _internals.useStore)();
26
26
  const drawingArea = (0, _internals.useDrawingArea)();
27
- const zoomData = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartAxisZoomData, axisId);
27
+ const zoomData = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartAxisZoomData, [axisId]);
28
28
  const [showTooltip, setShowTooltip] = React.useState(false);
29
29
  const {
30
30
  xAxis
@@ -40,7 +40,7 @@ function ChartAxisZoomSliderActiveTrack({
40
40
  svgRef
41
41
  } = (0, _internals.useChartContext)();
42
42
  const store = (0, _internals.useStore)();
43
- const axis = (0, _internals.useSelector)(store, _internals.selectorChartAxis, axisId);
43
+ const axis = (0, _internals.useSelector)(store, _internals.selectorChartAxis, [axisId]);
44
44
  const drawingArea = (0, _internals.useDrawingArea)();
45
45
  const activePreviewRectRef = React.useRef(null);
46
46
  const [startThumbEl, setStartThumbEl] = React.useState(null);
@@ -56,10 +56,6 @@ function ChartAxisZoomSliderActiveTrack({
56
56
  if (!activePreviewRect) {
57
57
  return;
58
58
  }
59
-
60
- /* min and max values of zoom to ensure the pointer anchor in the slider is maintained */
61
- let pointerZoomMin;
62
- let pointerZoomMax;
63
59
  let prevPointerZoom = 0;
64
60
  const onPointerMove = (0, _rafThrottle.rafThrottle)(event => {
65
61
  const element = svgRef.current;
@@ -67,11 +63,10 @@ function ChartAxisZoomSliderActiveTrack({
67
63
  return;
68
64
  }
69
65
  const point = (0, _internals.getSVGPoint)(element, event);
70
- let pointerZoom = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
66
+ const pointerZoom = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
71
67
  if (pointerZoom === null) {
72
68
  return;
73
69
  }
74
- pointerZoom = Math.max(pointerZoomMin, Math.min(pointerZoomMax, pointerZoom));
75
70
  const deltaZoom = pointerZoom - prevPointerZoom;
76
71
  prevPointerZoom = pointerZoom;
77
72
  instance.moveZoomRange(axisId, deltaZoom);
@@ -95,8 +90,6 @@ function ChartAxisZoomSliderActiveTrack({
95
90
  return;
96
91
  }
97
92
  prevPointerZoom = pointerDownZoom;
98
- pointerZoomMin = pointerDownZoom - axisZoomData.start;
99
- pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
100
93
  document.addEventListener('pointerup', onPointerUp);
101
94
  activePreviewRect.addEventListener('pointermove', onPointerMove);
102
95
  };
@@ -137,23 +130,12 @@ function ChartAxisZoomSliderActiveTrack({
137
130
  }
138
131
  const point = (0, _internals.getSVGPoint)(element, event);
139
132
  instance.setZoomData(prevZoomData => {
140
- const {
141
- left,
142
- top,
143
- width,
144
- height
145
- } = (0, _internals.selectorChartDrawingArea)(store.getSnapshot());
146
133
  const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
147
134
  return prevZoomData.map(zoom => {
148
135
  if (zoom.axisId === axisId) {
149
- let newEnd;
150
- if (axisDirection === 'x') {
151
- newEnd = (point.x - left) / width * 100;
152
- } else {
153
- newEnd = (top + height - point.y) / height * 100;
154
- }
155
- if (reverse) {
156
- newEnd = 100 - newEnd;
136
+ const newEnd = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, point);
137
+ if (newEnd === null) {
138
+ return zoom;
157
139
  }
158
140
  return (0, _extends2.default)({}, zoom, {
159
141
  end: (0, _zoomUtils.calculateZoomEnd)(newEnd, zoom, zoomOptions)
@@ -171,14 +153,21 @@ function ChartAxisZoomSliderActiveTrack({
171
153
  let startThumbY;
172
154
  let endThumbX;
173
155
  let endThumbY;
156
+ const {
157
+ minStart,
158
+ maxEnd
159
+ } = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
160
+ const range = maxEnd - minStart;
161
+ const zoomStart = Math.max(minStart, zoomData.start);
162
+ const zoomEnd = Math.min(zoomData.end, maxEnd);
174
163
  if (axisDirection === 'x') {
175
- previewX = zoomData.start / 100 * drawingArea.width;
164
+ previewX = (zoomStart - minStart) / range * drawingArea.width;
176
165
  previewY = 0;
177
- previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
166
+ previewWidth = drawingArea.width * (zoomEnd - zoomStart) / range;
178
167
  previewHeight = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
179
- startThumbX = zoomData.start / 100 * drawingArea.width;
168
+ startThumbX = (zoomStart - minStart) / range * drawingArea.width;
180
169
  startThumbY = 0;
181
- endThumbX = zoomData.end / 100 * drawingArea.width;
170
+ endThumbX = (zoomEnd - minStart) / range * drawingArea.width;
182
171
  endThumbY = 0;
183
172
  if (reverse) {
184
173
  previewX = drawingArea.width - previewX - previewWidth;
@@ -189,13 +178,13 @@ function ChartAxisZoomSliderActiveTrack({
189
178
  endThumbX -= previewThumbWidth / 2;
190
179
  } else {
191
180
  previewX = 0;
192
- previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
181
+ previewY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
193
182
  previewWidth = _constants.ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
194
- previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
183
+ previewHeight = drawingArea.height * (zoomEnd - zoomStart) / range;
195
184
  startThumbX = 0;
196
- startThumbY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
185
+ startThumbY = drawingArea.height - (zoomStart - minStart) / range * drawingArea.height;
197
186
  endThumbX = 0;
198
- endThumbY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
187
+ endThumbY = drawingArea.height - (zoomEnd - minStart) / range * drawingArea.height;
199
188
  if (reverse) {
200
189
  previewY = drawingArea.height - previewY - previewHeight;
201
190
  startThumbY = drawingArea.height - startThumbY;
@@ -63,17 +63,10 @@ function ChartAxisZoomSliderTrack(_ref) {
63
63
  return;
64
64
  }
65
65
  const pointerDownPoint = (0, _internals.getSVGPoint)(element, event);
66
- let zoomFromPointerDown = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerDownPoint);
66
+ const zoomFromPointerDown = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerDownPoint);
67
67
  if (zoomFromPointerDown === null) {
68
68
  return;
69
69
  }
70
- const {
71
- minStart,
72
- maxEnd
73
- } = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
74
-
75
- // Ensure the zoomFromPointerDown is within the min and max range
76
- zoomFromPointerDown = Math.max(Math.min(zoomFromPointerDown, maxEnd), minStart);
77
70
  const onPointerMove = (0, _rafThrottle.rafThrottle)(function onPointerMove(pointerMoveEvent) {
78
71
  const pointerMovePoint = (0, _internals.getSVGPoint)(element, pointerMoveEvent);
79
72
  const zoomFromPointerMove = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerMovePoint);
@@ -1,4 +1,6 @@
1
- import { AxisId, ChartState, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
1
+ import { AxisId, ChartState, DefaultedXAxis, DefaultedYAxis, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
2
+ import { ChartDrawingArea } from '@mui/x-charts/hooks';
2
3
  export declare function calculateZoomFromPoint(state: ChartState<any>, axisId: AxisId, point: DOMPoint): number | null;
4
+ export declare function calculateZoomFromPointImpl(drawingArea: ChartDrawingArea, axis: Pick<DefaultedXAxis | DefaultedYAxis, 'position' | 'reverse'>, zoomOptions: Pick<DefaultizedZoomOptions, 'minStart' | 'maxEnd'>, point: Pick<DOMPoint, 'x' | 'y'>): number;
3
5
  export declare function calculateZoomStart(newStart: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'minStart' | 'minSpan' | 'maxSpan'>): number;
4
6
  export declare function calculateZoomEnd(newEnd: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'maxEnd' | 'minSpan' | 'maxSpan'>): number;
@@ -5,28 +5,39 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.calculateZoomEnd = calculateZoomEnd;
7
7
  exports.calculateZoomFromPoint = calculateZoomFromPoint;
8
+ exports.calculateZoomFromPointImpl = calculateZoomFromPointImpl;
8
9
  exports.calculateZoomStart = calculateZoomStart;
9
10
  var _internals = require("@mui/x-charts/internals");
10
11
  function calculateZoomFromPoint(state, axisId, point) {
12
+ const axis = (0, _internals.selectorChartRawAxis)(state, axisId);
13
+ if (!axis) {
14
+ return null;
15
+ }
16
+ return calculateZoomFromPointImpl((0, _internals.selectorChartDrawingArea)(state), axis, (0, _internals.selectorChartAxisZoomOptionsLookup)(state, axisId), point);
17
+ }
18
+ function calculateZoomFromPointImpl(drawingArea, axis, zoomOptions, point) {
11
19
  const {
12
20
  left,
13
21
  top,
14
22
  height,
15
23
  width
16
- } = (0, _internals.selectorChartDrawingArea)(state);
17
- const axis = (0, _internals.selectorChartRawAxis)(state, axisId);
18
- if (!axis) {
19
- return null;
20
- }
24
+ } = drawingArea;
25
+ const {
26
+ minStart,
27
+ maxEnd
28
+ } = zoomOptions;
21
29
  const axisDirection = axis.position === 'right' || axis.position === 'left' ? 'y' : 'x';
30
+ const range = maxEnd - minStart;
22
31
  let pointerZoom;
23
32
  if (axisDirection === 'x') {
24
- pointerZoom = (point.x - left) / width * 100;
33
+ pointerZoom = (point.x - left) / width * range;
25
34
  } else {
26
- pointerZoom = (top + height - point.y) / height * 100;
35
+ pointerZoom = (top + height - point.y) / height * range;
27
36
  }
28
37
  if (axis.reverse) {
29
- pointerZoom = 100 - pointerZoom;
38
+ pointerZoom = maxEnd - pointerZoom;
39
+ } else {
40
+ pointerZoom += minStart;
30
41
  }
31
42
  return pointerZoom;
32
43
  }
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
+ import { ChartImageExportOptions } from "../internals/plugins/useChartProExport/index.js";
4
+ import { ChartsSlotPropsPro } from "../internals/material/index.js";
5
+ export interface ChartsToolbarImageExportOptions extends Omit<ChartImageExportOptions, 'type'>, Required<Pick<ChartImageExportOptions, 'type'>> {}
6
+ export type ChartsToolbarImageExportTriggerProps = ChartsSlotPropsPro['baseButton'] & {
7
+ /**
8
+ * A function to customize the rendering of the component.
9
+ */
10
+ render?: RenderProp<ChartsSlotPropsPro['baseButton']>;
11
+ /**
12
+ * The options to apply on the image export.
13
+ * @demos
14
+ * - [Export as Image](https://mui.com/x/react-charts/export/#export-as-image)
15
+ */
16
+ options?: ChartsToolbarImageExportOptions;
17
+ };
18
+ /**
19
+ * A button that triggers an image export.
20
+ * It renders the `baseButton` slot.
21
+ *
22
+ * Demos:
23
+ *
24
+ * - [Export](https://mui.com/x/react-charts/export/)
25
+ */
26
+ declare const ChartsToolbarImageExportTrigger: React.ForwardRefExoticComponent<ChartsToolbarImageExportTriggerProps> | React.ForwardRefExoticComponent<Omit<ChartsToolbarImageExportTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
27
+ export { ChartsToolbarImageExportTrigger };
@@ -0,0 +1,77 @@
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.ChartsToolbarImageExportTrigger = void 0;
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 _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _forwardRef = require("@mui/x-internals/forwardRef");
14
+ var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
15
+ var _internals = require("@mui/x-charts/internals");
16
+ var _context = require("../context");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["render", "options", "onClick"];
19
+ /**
20
+ * A button that triggers an image export.
21
+ * It renders the `baseButton` slot.
22
+ *
23
+ * Demos:
24
+ *
25
+ * - [Export](https://mui.com/x/react-charts/export/)
26
+ */
27
+ const ChartsToolbarImageExportTrigger = exports.ChartsToolbarImageExportTrigger = (0, _forwardRef.forwardRef)(function ChartsToolbarImageExportTrigger(props, ref) {
28
+ const {
29
+ render,
30
+ options,
31
+ onClick
32
+ } = props,
33
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
34
+ const {
35
+ slots,
36
+ slotProps
37
+ } = (0, _internals.useChartsSlots)();
38
+ const apiRef = (0, _context.useChartApiContext)();
39
+ const handleClick = event => {
40
+ apiRef.current.exportAsImage(options);
41
+ onClick?.(event);
42
+ };
43
+ const element = (0, _useComponentRenderer.useComponentRenderer)(slots.baseButton, render, (0, _extends2.default)({}, slotProps?.baseButton, {
44
+ onClick: handleClick
45
+ }, other, {
46
+ ref
47
+ }));
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
49
+ children: element
50
+ });
51
+ });
52
+ if (process.env.NODE_ENV !== "production") ChartsToolbarImageExportTrigger.displayName = "ChartsToolbarImageExportTrigger";
53
+ process.env.NODE_ENV !== "production" ? ChartsToolbarImageExportTrigger.propTypes = {
54
+ // ----------------------------- Warning --------------------------------
55
+ // | These PropTypes are generated from the TypeScript type definitions |
56
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
57
+ // ----------------------------------------------------------------------
58
+ className: _propTypes.default.string,
59
+ disabled: _propTypes.default.bool,
60
+ id: _propTypes.default.string,
61
+ /**
62
+ * The options to apply on the image export.
63
+ * @demos
64
+ * - [Export as Image](https://mui.com/x/react-charts/export/#export-as-image)
65
+ */
66
+ options: _propTypes.default.shape({
67
+ fileName: _propTypes.default.string,
68
+ quality: _propTypes.default.number,
69
+ type: _propTypes.default.string.isRequired
70
+ }),
71
+ /**
72
+ * A function to customize the rendering of the component.
73
+ */
74
+ render: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
75
+ style: _propTypes.default.object,
76
+ tabIndex: _propTypes.default.number
77
+ } : void 0;
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { RenderProp } from '@mui/x-internals/useComponentRenderer';
3
+ import { ChartPrintExportOptions } from "../internals/plugins/useChartProExport/index.js";
4
+ import { ChartsSlotPropsPro } from "../internals/material/index.js";
5
+ export interface ChartsToolbarPrintExportOptions extends ChartPrintExportOptions {
6
+ /**
7
+ * If `true`, this export option will be removed from the ChartsToolbarExport menu.
8
+ * @default false
9
+ */
10
+ disableToolbarButton?: boolean;
11
+ }
12
+ export type ChartsToolbarPrintExportTriggerProps = ChartsSlotPropsPro['baseButton'] & {
13
+ /**
14
+ * A function to customize the rendering of the component.
15
+ */
16
+ render?: RenderProp<ChartsSlotPropsPro['baseButton']>;
17
+ /**
18
+ * The options to apply on the Print export.
19
+ * @demos
20
+ * - [Print/Export as PDF](https://mui.com/x/react-charts/export/#print-export-as-pdf)
21
+ */
22
+ options?: ChartPrintExportOptions;
23
+ };
24
+ /**
25
+ * A button that triggers a print export.
26
+ * It renders the `baseButton` slot.
27
+ *
28
+ * Demos:
29
+ *
30
+ * - [Export](https://mui.com/x/react-charts/export/)
31
+ */
32
+ declare const ChartsToolbarPrintExportTrigger: React.ForwardRefExoticComponent<ChartsToolbarPrintExportTriggerProps> | React.ForwardRefExoticComponent<Omit<ChartsToolbarPrintExportTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
+ export { ChartsToolbarPrintExportTrigger };
@@ -0,0 +1,75 @@
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.ChartsToolbarPrintExportTrigger = void 0;
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 _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _forwardRef = require("@mui/x-internals/forwardRef");
14
+ var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
15
+ var _internals = require("@mui/x-charts/internals");
16
+ var _context = require("../context");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["render", "options", "onClick"];
19
+ /**
20
+ * A button that triggers a print export.
21
+ * It renders the `baseButton` slot.
22
+ *
23
+ * Demos:
24
+ *
25
+ * - [Export](https://mui.com/x/react-charts/export/)
26
+ */
27
+ const ChartsToolbarPrintExportTrigger = exports.ChartsToolbarPrintExportTrigger = (0, _forwardRef.forwardRef)(function ChartsToolbarPrintExportTrigger(props, ref) {
28
+ const {
29
+ render,
30
+ options,
31
+ onClick
32
+ } = props,
33
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
34
+ const {
35
+ slots,
36
+ slotProps
37
+ } = (0, _internals.useChartsSlots)();
38
+ const apiRef = (0, _context.useChartApiContext)();
39
+ const handleClick = event => {
40
+ apiRef.current.exportAsPrint(options);
41
+ onClick?.(event);
42
+ };
43
+ const element = (0, _useComponentRenderer.useComponentRenderer)(slots.baseButton, render, (0, _extends2.default)({}, slotProps?.baseButton, {
44
+ onClick: handleClick
45
+ }, other, {
46
+ ref
47
+ }));
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
49
+ children: element
50
+ });
51
+ });
52
+ if (process.env.NODE_ENV !== "production") ChartsToolbarPrintExportTrigger.displayName = "ChartsToolbarPrintExportTrigger";
53
+ process.env.NODE_ENV !== "production" ? ChartsToolbarPrintExportTrigger.propTypes = {
54
+ // ----------------------------- Warning --------------------------------
55
+ // | These PropTypes are generated from the TypeScript type definitions |
56
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
57
+ // ----------------------------------------------------------------------
58
+ className: _propTypes.default.string,
59
+ disabled: _propTypes.default.bool,
60
+ id: _propTypes.default.string,
61
+ /**
62
+ * The options to apply on the Print export.
63
+ * @demos
64
+ * - [Print/Export as PDF](https://mui.com/x/react-charts/export/#print-export-as-pdf)
65
+ */
66
+ options: _propTypes.default.shape({
67
+ fileName: _propTypes.default.string
68
+ }),
69
+ /**
70
+ * A function to customize the rendering of the component.
71
+ */
72
+ render: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
73
+ style: _propTypes.default.object,
74
+ tabIndex: _propTypes.default.number
75
+ } : void 0;