@mui/x-charts-pro 8.4.0 → 8.5.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 (138) hide show
  1. package/BarChartPro/BarChartPro.d.ts +13 -5
  2. package/BarChartPro/BarChartPro.js +19 -1
  3. package/CHANGELOG.md +103 -0
  4. package/ChartContainerPro/ChartContainerPro.d.ts +0 -1
  5. package/ChartContainerPro/ChartProApi.d.ts +26 -0
  6. package/ChartContainerPro/ChartProApi.js +5 -0
  7. package/ChartContainerPro/index.d.ts +2 -1
  8. package/ChartContainerPro/index.js +11 -0
  9. package/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
  10. package/ChartDataProviderPro/ChartDataProviderPro.js +19 -3
  11. package/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
  12. package/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
  13. package/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
  14. package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +25 -315
  15. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +24 -0
  16. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +251 -0
  17. package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
  18. package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +160 -0
  19. package/ChartZoomSlider/internals/constants.d.ts +5 -0
  20. package/ChartZoomSlider/internals/constants.js +11 -0
  21. package/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
  22. package/ChartZoomSlider/internals/zoom-utils.js +48 -0
  23. package/ChartsToolbarPro/ChartsToolbarPro.d.ts +8 -1
  24. package/ChartsToolbarPro/ChartsToolbarPro.js +42 -8
  25. package/ChartsToolbarPro/ChartsToolbarZoomInButton.d.ts +16 -0
  26. package/ChartsToolbarPro/ChartsToolbarZoomInButton.js +56 -0
  27. package/ChartsToolbarPro/ChartsToolbarZoomOutButton.d.ts +16 -0
  28. package/ChartsToolbarPro/ChartsToolbarZoomOutButton.js +56 -0
  29. package/ChartsToolbarPro/index.d.ts +3 -1
  30. package/ChartsToolbarPro/index.js +22 -0
  31. package/FunnelChart/FunnelChart.d.ts +2 -1
  32. package/FunnelChart/FunnelChart.js +2 -20
  33. package/FunnelChart/FunnelChart.plugins.d.ts +4 -0
  34. package/FunnelChart/FunnelChart.plugins.js +9 -0
  35. package/FunnelChart/funnelSlots.types.d.ts +4 -3
  36. package/FunnelChart/useFunnelChartProps.d.ts +2 -1
  37. package/FunnelChart/useFunnelChartProps.js +3 -1
  38. package/Heatmap/Heatmap.d.ts +17 -4
  39. package/Heatmap/Heatmap.js +56 -22
  40. package/Heatmap/Heatmap.plugins.d.ts +2 -1
  41. package/Heatmap/Heatmap.plugins.js +2 -1
  42. package/LineChartPro/LineChartPro.d.ts +13 -5
  43. package/LineChartPro/LineChartPro.js +19 -1
  44. package/RadarChartPro/RadarChartPro.d.ts +15 -0
  45. package/RadarChartPro/RadarChartPro.js +202 -0
  46. package/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
  47. package/RadarChartPro/RadarChartPro.plugins.js +9 -0
  48. package/RadarChartPro/index.d.ts +1 -0
  49. package/RadarChartPro/index.js +16 -0
  50. package/ScatterChartPro/ScatterChartPro.d.ts +13 -5
  51. package/ScatterChartPro/ScatterChartPro.js +19 -1
  52. package/context/index.d.ts +1 -0
  53. package/context/index.js +16 -0
  54. package/context/useChartApiContext.d.ts +9 -0
  55. package/context/useChartApiContext.js +17 -0
  56. package/esm/BarChartPro/BarChartPro.d.ts +13 -5
  57. package/esm/BarChartPro/BarChartPro.js +19 -1
  58. package/esm/ChartContainerPro/ChartContainerPro.d.ts +0 -1
  59. package/esm/ChartContainerPro/ChartProApi.d.ts +26 -0
  60. package/esm/ChartContainerPro/ChartProApi.js +1 -0
  61. package/esm/ChartContainerPro/index.d.ts +2 -1
  62. package/esm/ChartContainerPro/index.js +2 -1
  63. package/esm/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
  64. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +20 -4
  65. package/esm/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
  66. package/esm/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
  67. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
  68. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +19 -306
  69. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +24 -0
  70. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +243 -0
  71. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
  72. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +152 -0
  73. package/esm/ChartZoomSlider/internals/constants.d.ts +5 -0
  74. package/esm/ChartZoomSlider/internals/constants.js +5 -0
  75. package/esm/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
  76. package/esm/ChartZoomSlider/internals/zoom-utils.js +40 -0
  77. package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +8 -1
  78. package/esm/ChartsToolbarPro/ChartsToolbarPro.js +42 -9
  79. package/esm/ChartsToolbarPro/ChartsToolbarZoomInButton.d.ts +16 -0
  80. package/esm/ChartsToolbarPro/ChartsToolbarZoomInButton.js +50 -0
  81. package/esm/ChartsToolbarPro/ChartsToolbarZoomOutButton.d.ts +16 -0
  82. package/esm/ChartsToolbarPro/ChartsToolbarZoomOutButton.js +50 -0
  83. package/esm/ChartsToolbarPro/index.d.ts +3 -1
  84. package/esm/ChartsToolbarPro/index.js +3 -1
  85. package/esm/FunnelChart/FunnelChart.d.ts +2 -1
  86. package/esm/FunnelChart/FunnelChart.js +2 -20
  87. package/esm/FunnelChart/FunnelChart.plugins.d.ts +4 -0
  88. package/esm/FunnelChart/FunnelChart.plugins.js +3 -0
  89. package/esm/FunnelChart/funnelSlots.types.d.ts +4 -3
  90. package/esm/FunnelChart/useFunnelChartProps.d.ts +2 -1
  91. package/esm/FunnelChart/useFunnelChartProps.js +3 -1
  92. package/esm/Heatmap/Heatmap.d.ts +17 -4
  93. package/esm/Heatmap/Heatmap.js +56 -22
  94. package/esm/Heatmap/Heatmap.plugins.d.ts +2 -1
  95. package/esm/Heatmap/Heatmap.plugins.js +2 -1
  96. package/esm/LineChartPro/LineChartPro.d.ts +13 -5
  97. package/esm/LineChartPro/LineChartPro.js +19 -1
  98. package/esm/RadarChartPro/RadarChartPro.d.ts +15 -0
  99. package/esm/RadarChartPro/RadarChartPro.js +195 -0
  100. package/esm/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
  101. package/esm/RadarChartPro/RadarChartPro.plugins.js +3 -0
  102. package/esm/RadarChartPro/index.d.ts +1 -0
  103. package/esm/RadarChartPro/index.js +1 -0
  104. package/esm/ScatterChartPro/ScatterChartPro.d.ts +13 -5
  105. package/esm/ScatterChartPro/ScatterChartPro.js +19 -1
  106. package/esm/context/index.d.ts +1 -0
  107. package/esm/context/index.js +1 -0
  108. package/esm/context/useChartApiContext.d.ts +9 -0
  109. package/esm/context/useChartApiContext.js +11 -0
  110. package/esm/hooks/index.d.ts +2 -1
  111. package/esm/hooks/index.js +2 -1
  112. package/esm/index.d.ts +2 -1
  113. package/esm/index.js +2 -1
  114. package/esm/internals/material/index.d.ts +1 -0
  115. package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +10 -0
  116. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
  117. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +15 -1
  118. package/esm/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
  119. package/esm/models/index.d.ts +1 -1
  120. package/hooks/index.d.ts +2 -1
  121. package/hooks/index.js +21 -10
  122. package/index.d.ts +2 -1
  123. package/index.js +12 -1
  124. package/internals/material/index.d.ts +1 -0
  125. package/internals/plugins/useChartProZoom/useChartProZoom.js +10 -0
  126. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
  127. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +16 -2
  128. package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
  129. package/models/index.d.ts +1 -1
  130. package/package.json +5 -5
  131. package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
  132. package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -36
  133. package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
  134. package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -36
  135. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
  136. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -29
  137. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
  138. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -29
@@ -0,0 +1,160 @@
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.ChartAxisZoomSliderTrack = ChartAxisZoomSliderTrack;
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 _internals = require("@mui/x-charts/internals");
13
+ var _styles = require("@mui/material/styles");
14
+ var _rafThrottle = require("@mui/x-internals/rafThrottle");
15
+ var _system = require("@mui/system");
16
+ var _zoomUtils = require("./zoom-utils");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["axisId", "axisDirection", "reverse", "onSelectStart", "onSelectEnd"];
19
+ const ZoomSliderTrack = (0, _styles.styled)('rect', {
20
+ shouldForwardProp: prop => (0, _system.shouldForwardProp)(prop) && prop !== 'axisDirection' && prop !== 'isSelecting'
21
+ })(({
22
+ theme
23
+ }) => ({
24
+ fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300],
25
+ cursor: 'pointer',
26
+ variants: [{
27
+ props: {
28
+ axisDirection: 'x',
29
+ isSelecting: true
30
+ },
31
+ style: {
32
+ cursor: 'ew-resize'
33
+ }
34
+ }, {
35
+ props: {
36
+ axisDirection: 'y',
37
+ isSelecting: true
38
+ },
39
+ style: {
40
+ cursor: 'ns-resize'
41
+ }
42
+ }]
43
+ }));
44
+ function ChartAxisZoomSliderTrack(_ref) {
45
+ let {
46
+ axisId,
47
+ axisDirection,
48
+ onSelectStart,
49
+ onSelectEnd
50
+ } = _ref,
51
+ other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
52
+ const ref = React.useRef(null);
53
+ const {
54
+ instance,
55
+ svgRef
56
+ } = (0, _internals.useChartContext)();
57
+ const store = (0, _internals.useStore)();
58
+ const [isSelecting, setIsSelecting] = React.useState(false);
59
+ const onPointerDown = function onPointerDown(event) {
60
+ const rect = ref.current;
61
+ const element = svgRef.current;
62
+ if (!rect || !element) {
63
+ return;
64
+ }
65
+ const pointerDownPoint = (0, _internals.getSVGPoint)(element, event);
66
+ let zoomFromPointerDown = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerDownPoint);
67
+ if (zoomFromPointerDown === null) {
68
+ return;
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
+ let pointerMoved = false;
78
+ const onPointerMove = (0, _rafThrottle.rafThrottle)(function onPointerMove(pointerMoveEvent) {
79
+ const pointerMovePoint = (0, _internals.getSVGPoint)(element, pointerMoveEvent);
80
+ const zoomFromPointerMove = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerMovePoint);
81
+ if (zoomFromPointerMove === null) {
82
+ return;
83
+ }
84
+ pointerMoved = true;
85
+ const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
86
+ instance.setAxisZoomData(axisId, prevZoomData => {
87
+ if (zoomFromPointerMove > zoomFromPointerDown) {
88
+ const end = (0, _zoomUtils.calculateZoomEnd)(zoomFromPointerMove, (0, _extends2.default)({}, prevZoomData, {
89
+ start: zoomFromPointerDown
90
+ }), zoomOptions);
91
+
92
+ /* If the starting point is too close to the end that minSpan wouldn't be respected, we need to update the
93
+ * start point. */
94
+ const start = (0, _zoomUtils.calculateZoomStart)(zoomFromPointerDown, (0, _extends2.default)({}, prevZoomData, {
95
+ start: zoomFromPointerDown,
96
+ end
97
+ }), zoomOptions);
98
+ return (0, _extends2.default)({}, prevZoomData, {
99
+ start,
100
+ end
101
+ });
102
+ }
103
+ const start = (0, _zoomUtils.calculateZoomStart)(zoomFromPointerMove, (0, _extends2.default)({}, prevZoomData, {
104
+ end: zoomFromPointerDown
105
+ }), zoomOptions);
106
+
107
+ /* If the starting point is too close to the start that minSpan wouldn't be respected, we need to update the
108
+ * start point. */
109
+ const end = (0, _zoomUtils.calculateZoomEnd)(zoomFromPointerDown, (0, _extends2.default)({}, prevZoomData, {
110
+ start,
111
+ end: zoomFromPointerDown
112
+ }), zoomOptions);
113
+ return (0, _extends2.default)({}, prevZoomData, {
114
+ start,
115
+ end
116
+ });
117
+ });
118
+ });
119
+ const onPointerUp = function onPointerUp(pointerUpEvent) {
120
+ rect.releasePointerCapture(pointerUpEvent.pointerId);
121
+ rect.removeEventListener('pointermove', onPointerMove);
122
+ document.removeEventListener('pointerup', onPointerUp);
123
+ setIsSelecting(false);
124
+ onSelectEnd?.();
125
+ if (pointerMoved) {
126
+ return;
127
+ }
128
+
129
+ // If the pointer didn't move, we still need to respect the zoom constraints (minSpan, etc.)
130
+ // In that case, we assume the start to be the pointerZoom and calculate the end.
131
+ const pointerUpPoint = (0, _internals.getSVGPoint)(element, pointerUpEvent);
132
+ const zoomFromPointerUp = (0, _zoomUtils.calculateZoomFromPoint)(store.getSnapshot(), axisId, pointerUpPoint);
133
+ if (zoomFromPointerUp === null) {
134
+ return;
135
+ }
136
+ const zoomOptions = (0, _internals.selectorChartAxisZoomOptionsLookup)(store.getSnapshot(), axisId);
137
+ instance.setAxisZoomData(axisId, prev => (0, _extends2.default)({}, prev, {
138
+ start: zoomFromPointerUp,
139
+ end: (0, _zoomUtils.calculateZoomEnd)(zoomFromPointerUp, prev, zoomOptions)
140
+ }));
141
+ };
142
+ event.preventDefault();
143
+ event.stopPropagation();
144
+ rect.setPointerCapture(event.pointerId);
145
+ document.addEventListener('pointerup', onPointerUp);
146
+ rect.addEventListener('pointermove', onPointerMove);
147
+ onSelectStart?.();
148
+ setIsSelecting(true);
149
+ instance.setAxisZoomData(axisId, prev => (0, _extends2.default)({}, prev, {
150
+ start: zoomFromPointerDown,
151
+ end: zoomFromPointerDown
152
+ }));
153
+ };
154
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderTrack, (0, _extends2.default)({
155
+ ref: ref,
156
+ onPointerDown: onPointerDown,
157
+ axisDirection: axisDirection,
158
+ isSelecting: isSelecting
159
+ }, other));
160
+ }
@@ -0,0 +1,5 @@
1
+ export declare const ZOOM_SLIDER_TRACK_SIZE = 8;
2
+ export declare const ZOOM_SLIDER_ACTIVE_TRACK_SIZE = 10;
3
+ export declare const ZOOM_SLIDER_THUMB_HEIGHT = 20;
4
+ export declare const ZOOM_SLIDER_THUMB_WIDTH = 10;
5
+ export declare const ZOOM_SLIDER_SIZE: number;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ZOOM_SLIDER_TRACK_SIZE = exports.ZOOM_SLIDER_THUMB_WIDTH = exports.ZOOM_SLIDER_THUMB_HEIGHT = exports.ZOOM_SLIDER_SIZE = exports.ZOOM_SLIDER_ACTIVE_TRACK_SIZE = void 0;
7
+ const ZOOM_SLIDER_TRACK_SIZE = exports.ZOOM_SLIDER_TRACK_SIZE = 8;
8
+ const ZOOM_SLIDER_ACTIVE_TRACK_SIZE = exports.ZOOM_SLIDER_ACTIVE_TRACK_SIZE = 10;
9
+ const ZOOM_SLIDER_THUMB_HEIGHT = exports.ZOOM_SLIDER_THUMB_HEIGHT = 20;
10
+ const ZOOM_SLIDER_THUMB_WIDTH = exports.ZOOM_SLIDER_THUMB_WIDTH = 10;
11
+ const ZOOM_SLIDER_SIZE = exports.ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_TRACK_SIZE, ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH);
@@ -0,0 +1,4 @@
1
+ import { AxisId, ChartState, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
2
+ export declare function calculateZoomFromPoint(state: ChartState<any>, axisId: AxisId, point: DOMPoint): number | null;
3
+ export declare function calculateZoomStart(newStart: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'minStart' | 'minSpan' | 'maxSpan'>): number;
4
+ export declare function calculateZoomEnd(newEnd: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'maxEnd' | 'minSpan' | 'maxSpan'>): number;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calculateZoomEnd = calculateZoomEnd;
7
+ exports.calculateZoomFromPoint = calculateZoomFromPoint;
8
+ exports.calculateZoomStart = calculateZoomStart;
9
+ var _internals = require("@mui/x-charts/internals");
10
+ function calculateZoomFromPoint(state, axisId, point) {
11
+ const {
12
+ left,
13
+ top,
14
+ height,
15
+ width
16
+ } = (0, _internals.selectorChartDrawingArea)(state);
17
+ const axis = (0, _internals.selectorChartRawAxis)(state, axisId);
18
+ if (!axis) {
19
+ return null;
20
+ }
21
+ const axisDirection = axis.position === 'right' || axis.position === 'left' ? 'y' : 'x';
22
+ let pointerZoom;
23
+ if (axisDirection === 'x') {
24
+ pointerZoom = (point.x - left) / width * 100;
25
+ } else {
26
+ pointerZoom = (top + height - point.y) / height * 100;
27
+ }
28
+ if (axis.reverse) {
29
+ pointerZoom = 100 - pointerZoom;
30
+ }
31
+ return pointerZoom;
32
+ }
33
+ function calculateZoomStart(newStart, currentZoom, options) {
34
+ const {
35
+ minStart,
36
+ minSpan,
37
+ maxSpan
38
+ } = options;
39
+ return Math.max(minStart, currentZoom.end - maxSpan, Math.min(currentZoom.end - minSpan, newStart));
40
+ }
41
+ function calculateZoomEnd(newEnd, currentZoom, options) {
42
+ const {
43
+ maxEnd,
44
+ minSpan,
45
+ maxSpan
46
+ } = options;
47
+ return Math.min(maxEnd, currentZoom.start + maxSpan, Math.max(currentZoom.start + minSpan, newEnd));
48
+ }
@@ -1,2 +1,9 @@
1
+ import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
1
2
  import * as React from 'react';
2
- export declare function ChartsToolbarPro(): React.JSX.Element | null;
3
+ /**
4
+ * The chart toolbar component for the pro package.
5
+ */
6
+ export declare function ChartsToolbarPro(props: React.PropsWithChildren<ChartsToolbarProps>): React.JSX.Element | null;
7
+ export declare namespace ChartsToolbarPro {
8
+ var propTypes: any;
9
+ }
@@ -1,31 +1,65 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.ChartsToolbarPro = ChartsToolbarPro;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
10
  var _Toolbar = require("@mui/x-charts/Toolbar");
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
12
  var React = _interopRequireWildcard(require("react"));
10
13
  var _internals = require("@mui/x-charts/internals");
14
+ var _hooks = require("@mui/x-charts/hooks");
11
15
  var _useChartProZoom = require("../internals/plugins/useChartProZoom");
12
- var _ChartsToolbarZoomInButton = require("./internal/ChartsToolbarZoomInButton");
13
- var _ChartsToolbarZoomOutButton = require("./internal/ChartsToolbarZoomOutButton");
16
+ var _ChartsToolbarZoomInButton = require("./ChartsToolbarZoomInButton");
17
+ var _ChartsToolbarZoomOutButton = require("./ChartsToolbarZoomOutButton");
14
18
  var _jsxRuntime = require("react/jsx-runtime");
15
- function ChartsToolbarPro() {
19
+ /**
20
+ * The chart toolbar component for the pro package.
21
+ */
22
+ function ChartsToolbarPro(props) {
23
+ const {
24
+ slots,
25
+ slotProps
26
+ } = (0, _internals.useChartsSlots)();
16
27
  const {
17
28
  store
18
29
  } = (0, _internals.useChartContext)();
30
+ const {
31
+ localeText
32
+ } = (0, _hooks.useChartsLocalization)();
19
33
  const isZoomEnabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartZoomIsEnabled);
20
34
  const children = [];
21
35
  if (isZoomEnabled) {
22
- children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomInButton.ChartsToolbarZoomInButton, {}, "zoom-in"));
23
- children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomOutButton.ChartsToolbarZoomOutButton, {}, "zoom-out"));
36
+ const Tooltip = slots.baseTooltip;
37
+ const ZoomOutIcon = slots.zoomOutIcon;
38
+ const ZoomInIcon = slots.zoomInIcon;
39
+ children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
40
+ title: localeText.zoomIn,
41
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomInButton.ChartsToolbarZoomInButton, {
42
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomInIcon, (0, _extends2.default)({}, slotProps.zoomInIcon))
43
+ })
44
+ }), "zoom-in"));
45
+ children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
46
+ title: localeText.zoomOut,
47
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomOutButton.ChartsToolbarZoomOutButton, {
48
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomOutIcon, (0, _extends2.default)({}, slotProps.zoomOutIcon))
49
+ })
50
+ }), "zoom-out"));
24
51
  }
25
52
  if (children.length === 0) {
26
53
  return null;
27
54
  }
28
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, {
55
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, (0, _extends2.default)({}, props, {
29
56
  children: children
30
- });
31
- }
57
+ }));
58
+ }
59
+ process.env.NODE_ENV !== "production" ? ChartsToolbarPro.propTypes = {
60
+ // ----------------------------- Warning --------------------------------
61
+ // | These PropTypes are generated from the TypeScript type definitions |
62
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
63
+ // ----------------------------------------------------------------------
64
+ className: _propTypes.default.string
65
+ } : void 0;
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { ChartsSlotProps } from '@mui/x-charts/internals';
3
+ import { RenderProp } from '@mui/x-internals/useComponentRenderer';
4
+ interface ChartsToolbarZoomInButtonProps {
5
+ /**
6
+ * A function to customize the rendering of the component.
7
+ */
8
+ render?: RenderProp<ChartsSlotProps['baseIconButton']>;
9
+ }
10
+ /**
11
+ * The zoom-in button for the chart toolbar.
12
+ */
13
+ declare const ChartsToolbarZoomInButton: React.ForwardRefExoticComponent<ChartsToolbarZoomInButtonProps & {
14
+ children?: React.ReactNode | undefined;
15
+ } & React.RefAttributes<HTMLButtonElement>>;
16
+ export { ChartsToolbarZoomInButton };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.ChartsToolbarZoomInButton = void 0;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _internals = require("@mui/x-charts/internals");
15
+ var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
16
+ var _useChartProZoom = require("../internals/plugins/useChartProZoom");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["render"];
19
+ /**
20
+ * The zoom-in button for the chart toolbar.
21
+ */
22
+ const ChartsToolbarZoomInButton = exports.ChartsToolbarZoomInButton = /*#__PURE__*/React.forwardRef(function ChartsToolbarZoomInButton(_ref, ref) {
23
+ let {
24
+ render
25
+ } = _ref,
26
+ other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
27
+ const {
28
+ slots,
29
+ slotProps
30
+ } = (0, _internals.useChartsSlots)();
31
+ const {
32
+ instance,
33
+ store
34
+ } = (0, _internals.useChartContext)();
35
+ const disabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartCanZoomIn);
36
+ const element = (0, _useComponentRenderer.useComponentRenderer)(slots.baseIconButton, render, (0, _extends2.default)({}, slotProps?.baseIconButton, {
37
+ onClick: () => instance.zoomIn(),
38
+ disabled
39
+ }, other, {
40
+ ref
41
+ }));
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
43
+ children: element
44
+ });
45
+ });
46
+ if (process.env.NODE_ENV !== "production") ChartsToolbarZoomInButton.displayName = "ChartsToolbarZoomInButton";
47
+ process.env.NODE_ENV !== "production" ? ChartsToolbarZoomInButton.propTypes = {
48
+ // ----------------------------- Warning --------------------------------
49
+ // | These PropTypes are generated from the TypeScript type definitions |
50
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
51
+ // ----------------------------------------------------------------------
52
+ /**
53
+ * A function to customize the rendering of the component.
54
+ */
55
+ render: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func])
56
+ } : void 0;
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { ChartsSlotProps } from '@mui/x-charts/internals';
3
+ import { RenderProp } from '@mui/x-internals/useComponentRenderer';
4
+ interface ChartsToolbarZoomOutButtonProps {
5
+ /**
6
+ * A function to customize the rendering of the component.
7
+ */
8
+ render?: RenderProp<ChartsSlotProps['baseIconButton']>;
9
+ }
10
+ /**
11
+ * The zoom-out button for the chart toolbar.
12
+ */
13
+ declare const ChartsToolbarZoomOutButton: React.ForwardRefExoticComponent<ChartsToolbarZoomOutButtonProps & {
14
+ children?: React.ReactNode | undefined;
15
+ } & React.RefAttributes<HTMLButtonElement>>;
16
+ export { ChartsToolbarZoomOutButton };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.ChartsToolbarZoomOutButton = void 0;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _internals = require("@mui/x-charts/internals");
15
+ var _useComponentRenderer = require("@mui/x-internals/useComponentRenderer");
16
+ var _useChartProZoom = require("../internals/plugins/useChartProZoom");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["render"];
19
+ /**
20
+ * The zoom-out button for the chart toolbar.
21
+ */
22
+ const ChartsToolbarZoomOutButton = exports.ChartsToolbarZoomOutButton = /*#__PURE__*/React.forwardRef(function ChartsToolbarZoomOutButton(_ref, ref) {
23
+ let {
24
+ render
25
+ } = _ref,
26
+ other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
27
+ const {
28
+ slots,
29
+ slotProps
30
+ } = (0, _internals.useChartsSlots)();
31
+ const {
32
+ instance,
33
+ store
34
+ } = (0, _internals.useChartContext)();
35
+ const disabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartCanZoomOut);
36
+ const element = (0, _useComponentRenderer.useComponentRenderer)(slots.baseIconButton, render, (0, _extends2.default)({}, slotProps?.baseIconButton, {
37
+ onClick: () => instance.zoomOut(),
38
+ disabled
39
+ }, other, {
40
+ ref
41
+ }));
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(React.Fragment, {
43
+ children: element
44
+ });
45
+ });
46
+ if (process.env.NODE_ENV !== "production") ChartsToolbarZoomOutButton.displayName = "ChartsToolbarZoomOutButton";
47
+ process.env.NODE_ENV !== "production" ? ChartsToolbarZoomOutButton.propTypes = {
48
+ // ----------------------------- Warning --------------------------------
49
+ // | These PropTypes are generated from the TypeScript type definitions |
50
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
51
+ // ----------------------------------------------------------------------
52
+ /**
53
+ * A function to customize the rendering of the component.
54
+ */
55
+ render: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func])
56
+ } : void 0;
@@ -1 +1,3 @@
1
- export * from "./ChartsToolbarPro.js";
1
+ export * from "./ChartsToolbarPro.js";
2
+ export * from "./ChartsToolbarZoomInButton.js";
3
+ export * from "./ChartsToolbarZoomOutButton.js";
@@ -13,4 +13,26 @@ Object.keys(_ChartsToolbarPro).forEach(function (key) {
13
13
  return _ChartsToolbarPro[key];
14
14
  }
15
15
  });
16
+ });
17
+ var _ChartsToolbarZoomInButton = require("./ChartsToolbarZoomInButton");
18
+ Object.keys(_ChartsToolbarZoomInButton).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _ChartsToolbarZoomInButton[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _ChartsToolbarZoomInButton[key];
25
+ }
26
+ });
27
+ });
28
+ var _ChartsToolbarZoomOutButton = require("./ChartsToolbarZoomOutButton");
29
+ Object.keys(_ChartsToolbarZoomOutButton).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _ChartsToolbarZoomOutButton[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _ChartsToolbarZoomOutButton[key];
36
+ }
37
+ });
16
38
  });
@@ -7,7 +7,8 @@ import { FunnelSeriesType } from "./funnel.types.js";
7
7
  import { ChartContainerProProps } from "../ChartContainerPro/index.js";
8
8
  import { FunnelChartSlotExtension } from "./funnelSlots.types.js";
9
9
  import { CategoryAxis } from "./categoryAxis.types.js";
10
- export interface FunnelChartProps extends Omit<ChartContainerProProps<'funnel'>, 'series' | 'plugins' | 'zAxis' | 'zoom' | 'onZoomChange' | 'dataset' | 'yAxis' | 'xAxis' | 'rotationAxis' | 'radiusAxis'>, Omit<FunnelPlotProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'>, FunnelChartSlotExtension {
10
+ import { FunnelChartPluginsSignatures } from "./FunnelChart.plugins.js";
11
+ export interface FunnelChartProps extends Omit<ChartContainerProProps<'funnel', FunnelChartPluginsSignatures>, 'series' | 'plugins' | 'zAxis' | 'zoom' | 'onZoomChange' | 'dataset' | 'yAxis' | 'xAxis' | 'rotationAxis' | 'radiusAxis' | 'slots' | 'slotProps'>, Omit<FunnelPlotProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'>, FunnelChartSlotExtension {
11
12
  /**
12
13
  * The series to display in the funnel chart.
13
14
  * An array of [[FunnelSeriesType]] objects.
@@ -67,8 +67,7 @@ process.env.NODE_ENV !== "production" ? FunnelChart.propTypes = {
67
67
  apiRef: _propTypes.default.shape({
68
68
  current: _propTypes.default.shape({
69
69
  exportAsImage: _propTypes.default.func.isRequired,
70
- exportAsPrint: _propTypes.default.func.isRequired,
71
- setZoomData: _propTypes.default.func.isRequired
70
+ exportAsPrint: _propTypes.default.func.isRequired
72
71
  })
73
72
  }),
74
73
  /**
@@ -207,15 +206,6 @@ process.env.NODE_ENV !== "production" ? FunnelChart.propTypes = {
207
206
  * If you don't provide this prop. It falls back to a randomly generated id.
208
207
  */
209
208
  id: _propTypes.default.string,
210
- /**
211
- * The list of zoom data related to each axis.
212
- * Used to initialize the zoom in a specific configuration without controlling it.
213
- */
214
- initialZoom: _propTypes.default.arrayOf(_propTypes.default.shape({
215
- axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
216
- end: _propTypes.default.number.isRequired,
217
- start: _propTypes.default.number.isRequired
218
- })),
219
209
  /**
220
210
  * If `true`, a loading overlay is displayed.
221
211
  * @default false
@@ -282,13 +272,5 @@ process.env.NODE_ENV !== "production" ? FunnelChart.propTypes = {
282
272
  /**
283
273
  * The width of the chart in px. If not defined, it takes the width of the parent element.
284
274
  */
285
- width: _propTypes.default.number,
286
- /**
287
- * The list of zoom data related to each axis.
288
- */
289
- zoomData: _propTypes.default.arrayOf(_propTypes.default.shape({
290
- axisId: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
291
- end: _propTypes.default.number.isRequired,
292
- start: _propTypes.default.number.isRequired
293
- }))
275
+ width: _propTypes.default.number
294
276
  } : void 0;
@@ -0,0 +1,4 @@
1
+ import { ConvertSignaturesIntoPlugins, UseChartCartesianAxisSignature, UseChartHighlightSignature, UseChartInteractionSignature } from '@mui/x-charts/internals';
2
+ import { UseChartProExportSignature } from "../internals/plugins/useChartProExport/index.js";
3
+ export type FunnelChartPluginsSignatures = [UseChartCartesianAxisSignature, UseChartInteractionSignature, UseChartHighlightSignature, UseChartProExportSignature];
4
+ export declare const FUNNEL_CHART_PLUGINS: ConvertSignaturesIntoPlugins<FunnelChartPluginsSignatures>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FUNNEL_CHART_PLUGINS = void 0;
7
+ var _internals = require("@mui/x-charts/internals");
8
+ var _useChartProExport = require("../internals/plugins/useChartProExport");
9
+ const FUNNEL_CHART_PLUGINS = exports.FUNNEL_CHART_PLUGINS = [_internals.useChartCartesianAxis, _internals.useChartInteraction, _internals.useChartHighlight, _useChartProExport.useChartProExport];
@@ -1,10 +1,11 @@
1
1
  import { ChartsOverlaySlotProps, ChartsOverlaySlots } from '@mui/x-charts/ChartsOverlay';
2
2
  import { ChartsTooltipSlotProps, ChartsTooltipSlots } from '@mui/x-charts/ChartsTooltip';
3
- import { ChartsAxisSlotProps, ChartsAxisSlots } from '@mui/x-charts/internals';
3
+ import { ChartsAxisSlotProps, ChartsAxisSlots, ChartsSlotProps, ChartsSlots } from '@mui/x-charts/internals';
4
4
  import { ChartsLegendSlotProps, ChartsLegendSlots } from '@mui/x-charts/ChartsLegend';
5
+ import { ChartsToolbarSlotProps, ChartsToolbarSlots } from '@mui/x-charts/Toolbar';
5
6
  import { FunnelPlotSlotProps, FunnelPlotSlots } from "./funnelPlotSlots.types.js";
6
- export interface FunnelChartSlots extends ChartsAxisSlots, FunnelPlotSlots, ChartsLegendSlots, ChartsTooltipSlots, ChartsOverlaySlots, ChartsAxisSlots {}
7
- export interface FunnelChartSlotProps extends ChartsAxisSlotProps, FunnelPlotSlotProps, ChartsLegendSlotProps, ChartsTooltipSlotProps, ChartsOverlaySlotProps, ChartsAxisSlotProps {}
7
+ export interface FunnelChartSlots extends ChartsAxisSlots, FunnelPlotSlots, ChartsLegendSlots, ChartsTooltipSlots, ChartsOverlaySlots, ChartsAxisSlots, ChartsToolbarSlots, Partial<ChartsSlots> {}
8
+ export interface FunnelChartSlotProps extends ChartsAxisSlotProps, FunnelPlotSlotProps, ChartsLegendSlotProps, ChartsTooltipSlotProps, ChartsOverlaySlotProps, ChartsAxisSlotProps, ChartsToolbarSlotProps, Partial<ChartsSlotProps> {}
8
9
  export interface FunnelChartSlotExtension {
9
10
  /**
10
11
  * Overridable component slots.
@@ -3,6 +3,7 @@ import { ChartsAxisProps } from '@mui/x-charts/ChartsAxis';
3
3
  import { ChartsLegendSlotExtension } from '@mui/x-charts/ChartsLegend';
4
4
  import { ChartsWrapperProps } from '@mui/x-charts/internals';
5
5
  import { ChartsAxisHighlightProps } from '@mui/x-charts/ChartsAxisHighlight';
6
+ import { FunnelChartPluginsSignatures } from "./FunnelChart.plugins.js";
6
7
  import { FunnelPlotProps } from "./FunnelPlot.js";
7
8
  import type { FunnelChartProps } from "./FunnelChart.js";
8
9
  import { ChartContainerProProps } from "../ChartContainerPro/index.js";
@@ -14,7 +15,7 @@ import { ChartContainerProProps } from "../ChartContainerPro/index.js";
14
15
  * @returns An object with props for the children components of FunnelChart
15
16
  */
16
17
  export declare const useFunnelChartProps: (props: FunnelChartProps) => {
17
- chartContainerProps: ChartContainerProProps<"funnel">;
18
+ chartContainerProps: ChartContainerProProps<"funnel", FunnelChartPluginsSignatures>;
18
19
  funnelPlotProps: FunnelPlotProps;
19
20
  overlayProps: ChartsOverlayProps;
20
21
  chartsAxisProps: ChartsAxisProps;
@@ -12,6 +12,7 @@ var _constants = require("@mui/x-charts/constants");
12
12
  var _internals = require("@mui/x-charts/internals");
13
13
  var _warning = require("@mui/x-internals/warning");
14
14
  var _colorPalettes = require("@mui/x-charts/colorPalettes");
15
+ var _FunnelChart = require("./FunnelChart.plugins");
15
16
  const _excluded = ["categoryAxis", "series", "width", "height", "margin", "colors", "sx", "children", "slots", "slotProps", "skipAnimation", "loading", "onItemClick", "highlightedItem", "onHighlightChange", "className", "hideLegend", "axisHighlight", "apiRef", "gap"];
16
17
  function getCategoryAxisConfig(categoryAxis, series, isHorizontal, direction) {
17
18
  const maxSeriesLength = Math.max(...series.map(s => (s.data ?? []).length), 0);
@@ -119,7 +120,8 @@ const useFunnelChartProps = props => {
119
120
  highlightedItem,
120
121
  onHighlightChange,
121
122
  className,
122
- apiRef
123
+ apiRef,
124
+ plugins: _FunnelChart.FUNNEL_CHART_PLUGINS
123
125
  });
124
126
  const funnelPlotProps = {
125
127
  gap,