@mui/x-charts-pro 8.3.1 → 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 (206) hide show
  1. package/BarChartPro/BarChartPro.d.ts +13 -5
  2. package/BarChartPro/BarChartPro.js +56 -21
  3. package/CHANGELOG.md +213 -0
  4. package/ChartContainerPro/ChartContainerPro.d.ts +0 -1
  5. package/ChartContainerPro/ChartContainerPro.js +1 -0
  6. package/ChartContainerPro/ChartProApi.d.ts +26 -0
  7. package/ChartContainerPro/ChartProApi.js +5 -0
  8. package/ChartContainerPro/index.d.ts +2 -1
  9. package/ChartContainerPro/index.js +11 -0
  10. package/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
  11. package/ChartDataProviderPro/ChartDataProviderPro.js +19 -3
  12. package/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
  13. package/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
  14. package/ChartZoomSlider/index.d.ts +1 -1
  15. package/ChartZoomSlider/index.js +4 -4
  16. package/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
  17. package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +31 -287
  18. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +24 -0
  19. package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +251 -0
  20. package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
  21. package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +92 -0
  22. package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
  23. package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +160 -0
  24. package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
  25. package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +58 -0
  26. package/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
  27. package/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +6 -6
  28. package/ChartZoomSlider/internals/constants.d.ts +5 -0
  29. package/ChartZoomSlider/internals/constants.js +11 -0
  30. package/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
  31. package/ChartZoomSlider/internals/zoom-utils.js +48 -0
  32. package/ChartsToolbarPro/ChartsToolbarPro.d.ts +8 -1
  33. package/ChartsToolbarPro/ChartsToolbarPro.js +42 -8
  34. package/ChartsToolbarPro/ChartsToolbarZoomInButton.d.ts +16 -0
  35. package/ChartsToolbarPro/ChartsToolbarZoomInButton.js +56 -0
  36. package/ChartsToolbarPro/ChartsToolbarZoomOutButton.d.ts +16 -0
  37. package/ChartsToolbarPro/ChartsToolbarZoomOutButton.js +56 -0
  38. package/ChartsToolbarPro/index.d.ts +3 -1
  39. package/ChartsToolbarPro/index.js +22 -0
  40. package/FunnelChart/FunnelChart.d.ts +2 -1
  41. package/FunnelChart/FunnelChart.js +6 -23
  42. package/FunnelChart/FunnelChart.plugins.d.ts +4 -0
  43. package/FunnelChart/FunnelChart.plugins.js +9 -0
  44. package/FunnelChart/FunnelPlot.js +2 -0
  45. package/FunnelChart/FunnelSection.js +2 -1
  46. package/FunnelChart/curves/curve.types.d.ts +4 -0
  47. package/FunnelChart/curves/pyramid.d.ts +3 -1
  48. package/FunnelChart/curves/pyramid.js +37 -10
  49. package/FunnelChart/curves/step-pyramid.d.ts +10 -2
  50. package/FunnelChart/curves/step-pyramid.js +96 -20
  51. package/FunnelChart/curves/step.d.ts +5 -1
  52. package/FunnelChart/curves/step.js +20 -2
  53. package/FunnelChart/funnel.types.d.ts +7 -0
  54. package/FunnelChart/funnelSlots.types.d.ts +4 -3
  55. package/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
  56. package/FunnelChart/useFunnelChartProps.d.ts +2 -1
  57. package/FunnelChart/useFunnelChartProps.js +3 -1
  58. package/Heatmap/Heatmap.d.ts +18 -5
  59. package/Heatmap/Heatmap.js +64 -26
  60. package/Heatmap/Heatmap.plugins.d.ts +2 -1
  61. package/Heatmap/Heatmap.plugins.js +2 -1
  62. package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
  63. package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +27 -0
  64. package/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
  65. package/Heatmap/HeatmapTooltip/HeatmapTooltip.js +4 -102
  66. package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
  67. package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +5 -0
  68. package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
  69. package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +96 -0
  70. package/Heatmap/HeatmapTooltip/index.d.ts +3 -1
  71. package/Heatmap/HeatmapTooltip/index.js +11 -0
  72. package/LineChartPro/LineChartPro.d.ts +13 -5
  73. package/LineChartPro/LineChartPro.js +56 -21
  74. package/RadarChartPro/RadarChartPro.d.ts +15 -0
  75. package/RadarChartPro/RadarChartPro.js +202 -0
  76. package/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
  77. package/RadarChartPro/RadarChartPro.plugins.js +9 -0
  78. package/RadarChartPro/index.d.ts +1 -0
  79. package/RadarChartPro/index.js +16 -0
  80. package/ScatterChartPro/ScatterChartPro.d.ts +13 -5
  81. package/ScatterChartPro/ScatterChartPro.js +57 -22
  82. package/context/index.d.ts +1 -0
  83. package/context/index.js +16 -0
  84. package/context/useChartApiContext.d.ts +9 -0
  85. package/context/useChartApiContext.js +17 -0
  86. package/esm/BarChartPro/BarChartPro.d.ts +13 -5
  87. package/esm/BarChartPro/BarChartPro.js +54 -19
  88. package/esm/ChartContainerPro/ChartContainerPro.d.ts +0 -1
  89. package/esm/ChartContainerPro/ChartContainerPro.js +1 -0
  90. package/esm/ChartContainerPro/ChartProApi.d.ts +26 -0
  91. package/esm/ChartContainerPro/ChartProApi.js +1 -0
  92. package/esm/ChartContainerPro/index.d.ts +2 -1
  93. package/esm/ChartContainerPro/index.js +2 -1
  94. package/esm/ChartDataProviderPro/ChartDataProviderPro.d.ts +11 -1
  95. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +20 -4
  96. package/esm/ChartDataProviderPro/useChartDataProviderProProps.d.ts +2 -0
  97. package/esm/ChartDataProviderPro/useChartDataProviderProProps.js +5 -1
  98. package/esm/ChartZoomSlider/index.d.ts +1 -1
  99. package/esm/ChartZoomSlider/index.js +1 -1
  100. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.d.ts +1 -3
  101. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +30 -283
  102. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.d.ts +24 -0
  103. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +243 -0
  104. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
  105. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +85 -0
  106. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.d.ts +18 -0
  107. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +152 -0
  108. package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
  109. package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +52 -0
  110. package/esm/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
  111. package/esm/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +4 -4
  112. package/esm/ChartZoomSlider/internals/constants.d.ts +5 -0
  113. package/esm/ChartZoomSlider/internals/constants.js +5 -0
  114. package/esm/ChartZoomSlider/internals/zoom-utils.d.ts +4 -0
  115. package/esm/ChartZoomSlider/internals/zoom-utils.js +40 -0
  116. package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +8 -1
  117. package/esm/ChartsToolbarPro/ChartsToolbarPro.js +42 -9
  118. package/esm/ChartsToolbarPro/ChartsToolbarZoomInButton.d.ts +16 -0
  119. package/esm/ChartsToolbarPro/ChartsToolbarZoomInButton.js +50 -0
  120. package/esm/ChartsToolbarPro/ChartsToolbarZoomOutButton.d.ts +16 -0
  121. package/esm/ChartsToolbarPro/ChartsToolbarZoomOutButton.js +50 -0
  122. package/esm/ChartsToolbarPro/index.d.ts +3 -1
  123. package/esm/ChartsToolbarPro/index.js +3 -1
  124. package/esm/FunnelChart/FunnelChart.d.ts +2 -1
  125. package/esm/FunnelChart/FunnelChart.js +6 -23
  126. package/esm/FunnelChart/FunnelChart.plugins.d.ts +4 -0
  127. package/esm/FunnelChart/FunnelChart.plugins.js +3 -0
  128. package/esm/FunnelChart/FunnelPlot.js +2 -0
  129. package/esm/FunnelChart/FunnelSection.js +1 -0
  130. package/esm/FunnelChart/curves/curve.types.d.ts +4 -0
  131. package/esm/FunnelChart/curves/pyramid.d.ts +3 -1
  132. package/esm/FunnelChart/curves/pyramid.js +37 -10
  133. package/esm/FunnelChart/curves/step-pyramid.d.ts +10 -2
  134. package/esm/FunnelChart/curves/step-pyramid.js +96 -20
  135. package/esm/FunnelChart/curves/step.d.ts +5 -1
  136. package/esm/FunnelChart/curves/step.js +20 -2
  137. package/esm/FunnelChart/funnel.types.d.ts +7 -0
  138. package/esm/FunnelChart/funnelSlots.types.d.ts +4 -3
  139. package/esm/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
  140. package/esm/FunnelChart/useFunnelChartProps.d.ts +2 -1
  141. package/esm/FunnelChart/useFunnelChartProps.js +3 -1
  142. package/esm/Heatmap/Heatmap.d.ts +18 -5
  143. package/esm/Heatmap/Heatmap.js +62 -24
  144. package/esm/Heatmap/Heatmap.plugins.d.ts +2 -1
  145. package/esm/Heatmap/Heatmap.plugins.js +2 -1
  146. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
  147. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +19 -0
  148. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
  149. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.js +5 -103
  150. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
  151. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +1 -0
  152. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
  153. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +89 -0
  154. package/esm/Heatmap/HeatmapTooltip/index.d.ts +3 -1
  155. package/esm/Heatmap/HeatmapTooltip/index.js +3 -1
  156. package/esm/LineChartPro/LineChartPro.d.ts +13 -5
  157. package/esm/LineChartPro/LineChartPro.js +54 -19
  158. package/esm/RadarChartPro/RadarChartPro.d.ts +15 -0
  159. package/esm/RadarChartPro/RadarChartPro.js +195 -0
  160. package/esm/RadarChartPro/RadarChartPro.plugins.d.ts +4 -0
  161. package/esm/RadarChartPro/RadarChartPro.plugins.js +3 -0
  162. package/esm/RadarChartPro/index.d.ts +1 -0
  163. package/esm/RadarChartPro/index.js +1 -0
  164. package/esm/ScatterChartPro/ScatterChartPro.d.ts +13 -5
  165. package/esm/ScatterChartPro/ScatterChartPro.js +55 -20
  166. package/esm/context/index.d.ts +1 -0
  167. package/esm/context/index.js +1 -0
  168. package/esm/context/useChartApiContext.d.ts +9 -0
  169. package/esm/context/useChartApiContext.js +11 -0
  170. package/esm/hooks/index.d.ts +2 -1
  171. package/esm/hooks/index.js +2 -1
  172. package/esm/index.d.ts +2 -1
  173. package/esm/index.js +2 -1
  174. package/esm/internals/material/index.d.ts +1 -0
  175. package/esm/internals/plugins/useChartProExport/exportImage.js +1 -1
  176. package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +12 -2
  177. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
  178. package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +15 -1
  179. package/esm/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
  180. package/esm/models/index.d.ts +1 -1
  181. package/hooks/index.d.ts +2 -1
  182. package/hooks/index.js +21 -10
  183. package/index.d.ts +2 -1
  184. package/index.js +12 -1
  185. package/internals/material/index.d.ts +1 -0
  186. package/internals/plugins/useChartProExport/exportImage.js +1 -1
  187. package/internals/plugins/useChartProZoom/useChartProZoom.js +12 -2
  188. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +358 -0
  189. package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +16 -2
  190. package/internals/plugins/useChartProZoom/useChartProZoom.types.d.ts +7 -0
  191. package/models/index.d.ts +1 -1
  192. package/package.json +5 -5
  193. package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
  194. package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -92
  195. package/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
  196. package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
  197. package/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -36
  198. package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
  199. package/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -36
  200. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
  201. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -85
  202. package/esm/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
  203. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.d.ts +0 -13
  204. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomInButton.js +0 -29
  205. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.d.ts +0 -13
  206. package/esm/ChartsToolbarPro/internal/ChartsToolbarZoomOutButton.js +0 -29
@@ -5,11 +5,15 @@ export const useChartDataProviderProProps = props => {
5
5
  const {
6
6
  chartProviderProps,
7
7
  localeText,
8
+ slots,
9
+ slotProps,
8
10
  children
9
11
  } = useChartDataProviderProps(props);
10
12
  return {
11
13
  children,
12
14
  localeText,
13
- chartProviderProps
15
+ chartProviderProps,
16
+ slots,
17
+ slotProps
14
18
  };
15
19
  };
@@ -1,2 +1,2 @@
1
1
  export * from "./ChartZoomSlider.js";
2
- export { type ChartAxisZoomSliderHandleClasses, type ChartAxisZoomSliderHandleClassKey, chartAxisZoomSliderHandleClasses } from "./internals/chartAxisZoomSliderHandleClasses.js";
2
+ export { type ChartAxisZoomSliderThumbClasses, type ChartAxisZoomSliderThumbClassKey, chartAxisZoomSliderThumbClasses } from "./internals/chartAxisZoomSliderThumbClasses.js";
@@ -1,2 +1,2 @@
1
1
  export * from "./ChartZoomSlider.js";
2
- export { chartAxisZoomSliderHandleClasses } from "./internals/chartAxisZoomSliderHandleClasses.js";
2
+ export { chartAxisZoomSliderThumbClasses } from "./internals/chartAxisZoomSliderThumbClasses.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { AxisId, DefaultizedZoomOptions, ZoomData } from '@mui/x-charts/internals';
2
+ import { AxisId } from '@mui/x-charts/internals';
3
3
  interface ChartZoomSliderProps {
4
4
  /**
5
5
  * The ID of the axis this overview refers to.
@@ -18,6 +18,4 @@ export declare function ChartAxisZoomSlider({
18
18
  axisDirection,
19
19
  axisId
20
20
  }: ChartZoomSliderProps): React.JSX.Element | null;
21
- export declare function calculateZoomStart(newStart: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'minStart' | 'minSpan' | 'maxSpan'>): number;
22
- export declare function calculateZoomEnd(newEnd: number, currentZoom: ZoomData, options: Pick<DefaultizedZoomOptions, 'maxEnd' | 'minSpan' | 'maxSpan'>): number;
23
21
  export {};
@@ -1,35 +1,13 @@
1
1
  'use client';
2
2
 
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
3
  import * as React from 'react';
5
- import { getSVGPoint, selectorChartAxisZoomOptionsLookup, selectorChartDrawingArea, useChartContext, useDrawingArea, useSelector, useStore, ZOOM_SLIDER_MARGIN } from '@mui/x-charts/internals';
6
- import { styled } from '@mui/material/styles';
4
+ import { DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP, useDrawingArea, useSelector, useStore, ZOOM_SLIDER_MARGIN } from '@mui/x-charts/internals';
7
5
  import { useXAxes, useYAxes } from '@mui/x-charts/hooks';
8
- import { rafThrottle } from '@mui/x-internals/rafThrottle';
6
+ import { ZOOM_SLIDER_SIZE, ZOOM_SLIDER_TRACK_SIZE } from "./constants.js";
9
7
  import { selectorChartAxisZoomData } from "../../internals/plugins/useChartProZoom/index.js";
10
- import { ChartAxisZoomSliderHandle } from "./ChartAxisZoomSliderHandle.js";
8
+ import { ChartAxisZoomSliderTrack } from "./ChartAxisZoomSliderTrack.js";
9
+ import { ChartAxisZoomSliderActiveTrack } from "./ChartAxisZoomSliderActiveTrack.js";
11
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- const BackgroundRect = styled('rect')(({
13
- theme
14
- }) => ({
15
- '&': {
16
- fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300]
17
- }
18
- }));
19
- const ZoomRangePreviewRect = styled('rect')(({
20
- theme
21
- }) => ({
22
- '&': {
23
- fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
24
- cursor: 'grab'
25
- }
26
- }));
27
- const ZOOM_SLIDER_BACKGROUND_SIZE = 8;
28
- const ZOOM_SLIDER_FOREGROUND_SIZE = 10;
29
- const ZOOM_SLIDER_HANDLE_HEIGHT = 20;
30
- const ZOOM_SLIDER_HANDLE_WIDTH = 10;
31
- const ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_BACKGROUND_SIZE, ZOOM_SLIDER_FOREGROUND_SIZE, ZOOM_SLIDER_HANDLE_HEIGHT, ZOOM_SLIDER_HANDLE_WIDTH);
32
-
33
11
  /**
34
12
  * Renders the zoom slider for a specific axis.
35
13
  * @internal
@@ -41,6 +19,7 @@ export function ChartAxisZoomSlider({
41
19
  const store = useStore();
42
20
  const drawingArea = useDrawingArea();
43
21
  const zoomData = useSelector(store, selectorChartAxisZoomData, axisId);
22
+ const [showTooltip, setShowTooltip] = React.useState(false);
44
23
  const {
45
24
  xAxis
46
25
  } = useXAxes();
@@ -53,287 +32,55 @@ export function ChartAxisZoomSlider({
53
32
  let x;
54
33
  let y;
55
34
  let reverse;
35
+ let axisPosition;
36
+ let tooltipConditions;
56
37
  if (axisDirection === 'x') {
57
38
  const axis = xAxis[axisId];
58
- if (!axis) {
39
+ if (!axis || axis.position === 'none') {
59
40
  return null;
60
41
  }
61
42
  const axisSize = axis.height;
62
43
  x = drawingArea.left;
63
44
  y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN;
64
45
  reverse = axis.reverse ?? false;
46
+ axisPosition = axis.position ?? 'bottom';
47
+ tooltipConditions = axis.zoom?.slider?.showTooltip ?? DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
65
48
  } else {
66
49
  const axis = yAxis[axisId];
67
- if (!axis) {
50
+ if (!axis || axis.position === 'none') {
68
51
  return null;
69
52
  }
70
53
  const axisSize = axis.width;
71
54
  x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN;
72
55
  y = drawingArea.top;
73
56
  reverse = axis.reverse ?? false;
57
+ axisPosition = axis.position ?? 'left';
58
+ tooltipConditions = axis.zoom?.slider?.showTooltip ?? DEFAULT_ZOOM_SLIDER_SHOW_TOOLTIP;
74
59
  }
75
- const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_BACKGROUND_SIZE) / 2;
60
+ const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_TRACK_SIZE) / 2;
76
61
  return /*#__PURE__*/_jsxs("g", {
77
62
  transform: `translate(${x} ${y})`,
78
- children: [/*#__PURE__*/_jsx(BackgroundRect, {
63
+ children: [/*#__PURE__*/_jsx(ChartAxisZoomSliderTrack, {
79
64
  x: axisDirection === 'x' ? 0 : backgroundRectOffset,
80
65
  y: axisDirection === 'x' ? backgroundRectOffset : 0,
81
- height: axisDirection === 'x' ? ZOOM_SLIDER_BACKGROUND_SIZE : drawingArea.height,
82
- width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_BACKGROUND_SIZE,
83
- rx: ZOOM_SLIDER_BACKGROUND_SIZE / 2,
84
- ry: ZOOM_SLIDER_BACKGROUND_SIZE / 2
85
- }), /*#__PURE__*/_jsx(ChartAxisZoomSliderSpan, {
66
+ height: axisDirection === 'x' ? ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
67
+ width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_TRACK_SIZE,
68
+ rx: ZOOM_SLIDER_TRACK_SIZE / 2,
69
+ ry: ZOOM_SLIDER_TRACK_SIZE / 2,
70
+ axisId: axisId,
71
+ axisDirection: axisDirection,
72
+ reverse: reverse,
73
+ onSelectStart: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
74
+ onSelectEnd: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
75
+ }), /*#__PURE__*/_jsx(ChartAxisZoomSliderActiveTrack, {
86
76
  zoomData: zoomData,
87
77
  axisId: axisId,
78
+ axisPosition: axisPosition,
88
79
  axisDirection: axisDirection,
89
- reverse: reverse
80
+ reverse: reverse,
81
+ showTooltip: showTooltip && tooltipConditions !== 'never' || tooltipConditions === 'always',
82
+ onPointerEnter: tooltipConditions === 'hover' ? () => setShowTooltip(true) : undefined,
83
+ onPointerLeave: tooltipConditions === 'hover' ? () => setShowTooltip(false) : undefined
90
84
  })]
91
85
  });
92
- }
93
- function ChartAxisZoomSliderSpan({
94
- axisId,
95
- axisDirection,
96
- zoomData,
97
- reverse
98
- }) {
99
- const {
100
- instance,
101
- svgRef
102
- } = useChartContext();
103
- const store = useStore();
104
- const drawingArea = useDrawingArea();
105
- const activePreviewRectRef = React.useRef(null);
106
- const previewHandleWidth = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_WIDTH : ZOOM_SLIDER_HANDLE_HEIGHT;
107
- const previewHandleHeight = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_HEIGHT : ZOOM_SLIDER_HANDLE_WIDTH;
108
- React.useEffect(() => {
109
- const activePreviewRect = activePreviewRectRef.current;
110
- if (!activePreviewRect) {
111
- return;
112
- }
113
-
114
- /* min and max values of zoom to ensure the pointer anchor in the slider is maintained */
115
- let pointerZoomMin;
116
- let pointerZoomMax;
117
- let prevPointerZoom = 0;
118
- const onPointerMove = rafThrottle(event => {
119
- const {
120
- left,
121
- top,
122
- height,
123
- width
124
- } = selectorChartDrawingArea(store.getSnapshot());
125
- const axisZoomData = selectorChartAxisZoomData(store.getSnapshot(), axisId);
126
- const element = svgRef.current;
127
- if (!axisZoomData || !element) {
128
- return;
129
- }
130
- const point = getSVGPoint(element, event);
131
- let pointerZoom;
132
- if (axisDirection === 'x') {
133
- pointerZoom = (point.x - left) / width * 100;
134
- } else {
135
- pointerZoom = (top + height - point.y) / height * 100;
136
- }
137
- if (reverse) {
138
- pointerZoom = 100 - pointerZoom;
139
- }
140
- pointerZoom = Math.max(pointerZoomMin, Math.min(pointerZoomMax, pointerZoom));
141
- const deltaZoom = pointerZoom - prevPointerZoom;
142
- prevPointerZoom = pointerZoom;
143
- instance.moveZoomRange(axisId, deltaZoom);
144
- });
145
- const onPointerUp = () => {
146
- activePreviewRect.removeEventListener('pointermove', onPointerMove);
147
- activePreviewRect.removeEventListener('pointerup', onPointerUp);
148
- };
149
- const onPointerDown = event => {
150
- // Prevent text selection when dragging
151
- event.preventDefault();
152
- activePreviewRect.setPointerCapture(event.pointerId);
153
- const {
154
- left,
155
- top,
156
- height,
157
- width
158
- } = selectorChartDrawingArea(store.getSnapshot());
159
- const axisZoomData = selectorChartAxisZoomData(store.getSnapshot(), axisId);
160
- const element = svgRef.current;
161
- if (!axisZoomData || !element) {
162
- return;
163
- }
164
- const point = getSVGPoint(element, event);
165
-
166
- // The corresponding value of zoom where the pointer was pressed
167
- let pointerDownZoom;
168
- if (axisDirection === 'x') {
169
- pointerDownZoom = (point.x - left) / width * 100;
170
- } else {
171
- pointerDownZoom = (top + height - point.y) / height * 100;
172
- }
173
- if (reverse) {
174
- pointerDownZoom = 100 - pointerDownZoom;
175
- }
176
- prevPointerZoom = pointerDownZoom;
177
- pointerZoomMin = pointerDownZoom - axisZoomData.start;
178
- pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
179
- activePreviewRect.addEventListener('pointerup', onPointerUp);
180
- activePreviewRect.addEventListener('pointermove', onPointerMove);
181
- };
182
- activePreviewRect.addEventListener('pointerdown', onPointerDown);
183
-
184
- // eslint-disable-next-line consistent-return
185
- return () => {
186
- activePreviewRect.removeEventListener('pointerdown', onPointerDown);
187
- onPointerMove.clear();
188
- };
189
- }, [axisDirection, axisId, instance, reverse, store, svgRef]);
190
- const onResizeStart = event => {
191
- const element = svgRef.current;
192
- if (!element) {
193
- return;
194
- }
195
- const point = getSVGPoint(element, event);
196
- instance.setZoomData(prevZoomData => {
197
- const {
198
- left,
199
- top,
200
- width,
201
- height
202
- } = selectorChartDrawingArea(store.value);
203
- const zoomOptions = selectorChartAxisZoomOptionsLookup(store.value, axisId);
204
- return prevZoomData.map(zoom => {
205
- if (zoom.axisId === axisId) {
206
- let newStart;
207
- if (axisDirection === 'x') {
208
- newStart = (point.x - left) / width * 100;
209
- } else {
210
- newStart = (top + height - point.y) / height * 100;
211
- }
212
- if (reverse) {
213
- newStart = 100 - newStart;
214
- }
215
- return _extends({}, zoom, {
216
- start: calculateZoomStart(newStart, zoom, zoomOptions)
217
- });
218
- }
219
- return zoom;
220
- });
221
- });
222
- };
223
- const onResizeEnd = event => {
224
- const element = svgRef.current;
225
- if (!element) {
226
- return;
227
- }
228
- const point = getSVGPoint(element, event);
229
- instance.setZoomData(prevZoomData => {
230
- const {
231
- left,
232
- top,
233
- width,
234
- height
235
- } = selectorChartDrawingArea(store.value);
236
- const zoomOptions = selectorChartAxisZoomOptionsLookup(store.value, axisId);
237
- return prevZoomData.map(zoom => {
238
- if (zoom.axisId === axisId) {
239
- let newEnd;
240
- if (axisDirection === 'x') {
241
- newEnd = (point.x - left) / width * 100;
242
- } else {
243
- newEnd = (top + height - point.y) / height * 100;
244
- }
245
- if (reverse) {
246
- newEnd = 100 - newEnd;
247
- }
248
- return _extends({}, zoom, {
249
- end: calculateZoomEnd(newEnd, zoom, zoomOptions)
250
- });
251
- }
252
- return zoom;
253
- });
254
- });
255
- };
256
- let previewX;
257
- let previewY;
258
- let previewWidth;
259
- let previewHeight;
260
- let startHandleX;
261
- let startHandleY;
262
- let endHandleX;
263
- let endHandleY;
264
- if (axisDirection === 'x') {
265
- previewX = zoomData.start / 100 * drawingArea.width;
266
- previewY = 0;
267
- previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
268
- previewHeight = ZOOM_SLIDER_FOREGROUND_SIZE;
269
- startHandleX = zoomData.start / 100 * drawingArea.width;
270
- startHandleY = 0;
271
- endHandleX = zoomData.end / 100 * drawingArea.width;
272
- endHandleY = 0;
273
- if (reverse) {
274
- previewX = drawingArea.width - previewX - previewWidth;
275
- startHandleX = drawingArea.width - startHandleX;
276
- endHandleX = drawingArea.width - endHandleX;
277
- }
278
- startHandleX -= previewHandleWidth / 2;
279
- endHandleX -= previewHandleWidth / 2;
280
- } else {
281
- previewX = 0;
282
- previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
283
- previewWidth = ZOOM_SLIDER_FOREGROUND_SIZE;
284
- previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
285
- startHandleX = 0;
286
- startHandleY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
287
- endHandleX = 0;
288
- endHandleY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
289
- if (reverse) {
290
- previewY = drawingArea.height - previewY - previewHeight;
291
- startHandleY = drawingArea.height - startHandleY;
292
- endHandleY = drawingArea.height - endHandleY;
293
- }
294
- startHandleY -= previewHandleHeight / 2;
295
- endHandleY -= previewHandleHeight / 2;
296
- }
297
- const previewOffset = (ZOOM_SLIDER_HANDLE_HEIGHT - ZOOM_SLIDER_FOREGROUND_SIZE) / 2;
298
- return /*#__PURE__*/_jsxs(React.Fragment, {
299
- children: [/*#__PURE__*/_jsx(ZoomRangePreviewRect, {
300
- ref: activePreviewRectRef,
301
- x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
302
- y: previewY + (axisDirection === 'x' ? previewOffset : 0),
303
- width: previewWidth,
304
- height: previewHeight
305
- }), /*#__PURE__*/_jsx(ChartAxisZoomSliderHandle, {
306
- x: startHandleX,
307
- y: startHandleY,
308
- width: previewHandleWidth,
309
- height: previewHandleHeight,
310
- orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
311
- onResize: onResizeStart,
312
- placement: "start"
313
- }), /*#__PURE__*/_jsx(ChartAxisZoomSliderHandle, {
314
- x: endHandleX,
315
- y: endHandleY,
316
- width: previewHandleWidth,
317
- height: previewHandleHeight,
318
- orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
319
- onResize: onResizeEnd,
320
- placement: "end"
321
- })]
322
- });
323
- }
324
- export function calculateZoomStart(newStart, currentZoom, options) {
325
- const {
326
- minStart,
327
- minSpan,
328
- maxSpan
329
- } = options;
330
- return Math.max(minStart, currentZoom.end - maxSpan, Math.min(currentZoom.end - minSpan, newStart));
331
- }
332
- export function calculateZoomEnd(newEnd, currentZoom, options) {
333
- const {
334
- maxEnd,
335
- minSpan,
336
- maxSpan
337
- } = options;
338
- return Math.min(maxEnd, currentZoom.start + maxSpan, Math.max(currentZoom.start + minSpan, newEnd));
339
86
  }
@@ -0,0 +1,24 @@
1
+ import { AxisId, ZoomData } from '@mui/x-charts/internals';
2
+ import * as React from 'react';
3
+ export interface ChartAxisZoomSliderActiveTrackProps {
4
+ axisId: AxisId;
5
+ axisDirection: 'x' | 'y';
6
+ axisPosition: 'top' | 'bottom' | 'left' | 'right';
7
+ zoomData: ZoomData;
8
+ reverse?: boolean;
9
+ valueFormatter?: (value: number) => string;
10
+ showTooltip: boolean;
11
+ onPointerEnter?: () => void;
12
+ onPointerLeave?: () => void;
13
+ }
14
+ export declare function ChartAxisZoomSliderActiveTrack({
15
+ axisId,
16
+ axisDirection,
17
+ axisPosition,
18
+ zoomData,
19
+ reverse,
20
+ valueFormatter,
21
+ showTooltip,
22
+ onPointerEnter,
23
+ onPointerLeave
24
+ }: ChartAxisZoomSliderActiveTrackProps): React.JSX.Element;
@@ -0,0 +1,243 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { styled } from '@mui/material/styles';
3
+ import { getSVGPoint, selectorChartAxisZoomOptionsLookup, selectorChartDrawingArea, useChartContext, useDrawingArea, useStore } from '@mui/x-charts/internals';
4
+ import * as React from 'react';
5
+ import { rafThrottle } from '@mui/x-internals/rafThrottle';
6
+ import { selectorChartAxisZoomData } from "../../internals/plugins/useChartProZoom/index.js";
7
+ import { ChartAxisZoomSliderThumb } from "./ChartAxisZoomSliderThumb.js";
8
+ import { ChartsTooltipZoomSliderValue } from "./ChartsTooltipZoomSliderValue.js";
9
+ import { calculateZoomEnd, calculateZoomFromPoint, calculateZoomStart } from "./zoom-utils.js";
10
+ import { ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH } from "./constants.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ const ZoomSliderActiveTrackRect = styled('rect')(({
13
+ theme
14
+ }) => ({
15
+ '&': {
16
+ fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[500] : (theme.vars || theme).palette.grey[600],
17
+ cursor: 'grab'
18
+ }
19
+ }));
20
+ const formatter = Intl.NumberFormat(undefined, {
21
+ maximumFractionDigits: 0
22
+ });
23
+ const zoomValueFormatter = value => formatter.format(value);
24
+ export function ChartAxisZoomSliderActiveTrack({
25
+ axisId,
26
+ axisDirection,
27
+ axisPosition,
28
+ zoomData,
29
+ reverse,
30
+ valueFormatter = zoomValueFormatter,
31
+ showTooltip,
32
+ onPointerEnter,
33
+ onPointerLeave
34
+ }) {
35
+ const {
36
+ instance,
37
+ svgRef
38
+ } = useChartContext();
39
+ const store = useStore();
40
+ const drawingArea = useDrawingArea();
41
+ const activePreviewRectRef = React.useRef(null);
42
+ const [startThumbEl, setStartThumbEl] = React.useState(null);
43
+ const [endThumbEl, setEndThumbEl] = React.useState(null);
44
+ const previewThumbWidth = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_WIDTH : ZOOM_SLIDER_THUMB_HEIGHT;
45
+ const previewThumbHeight = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_HEIGHT : ZOOM_SLIDER_THUMB_WIDTH;
46
+ React.useEffect(() => {
47
+ const activePreviewRect = activePreviewRectRef.current;
48
+ if (!activePreviewRect) {
49
+ return;
50
+ }
51
+
52
+ /* min and max values of zoom to ensure the pointer anchor in the slider is maintained */
53
+ let pointerZoomMin;
54
+ let pointerZoomMax;
55
+ let prevPointerZoom = 0;
56
+ const onPointerMove = rafThrottle(event => {
57
+ const element = svgRef.current;
58
+ if (!element) {
59
+ return;
60
+ }
61
+ const point = getSVGPoint(element, event);
62
+ let pointerZoom = calculateZoomFromPoint(store.getSnapshot(), axisId, point);
63
+ if (pointerZoom === null) {
64
+ return;
65
+ }
66
+ pointerZoom = Math.max(pointerZoomMin, Math.min(pointerZoomMax, pointerZoom));
67
+ const deltaZoom = pointerZoom - prevPointerZoom;
68
+ prevPointerZoom = pointerZoom;
69
+ instance.moveZoomRange(axisId, deltaZoom);
70
+ });
71
+ const onPointerUp = () => {
72
+ activePreviewRect.removeEventListener('pointermove', onPointerMove);
73
+ document.removeEventListener('pointerup', onPointerUp);
74
+ };
75
+ const onPointerDown = event => {
76
+ // Prevent text selection when dragging
77
+ event.preventDefault();
78
+ activePreviewRect.setPointerCapture(event.pointerId);
79
+ const axisZoomData = selectorChartAxisZoomData(store.getSnapshot(), axisId);
80
+ const element = svgRef.current;
81
+ if (!axisZoomData || !element) {
82
+ return;
83
+ }
84
+ const point = getSVGPoint(element, event);
85
+ const pointerDownZoom = calculateZoomFromPoint(store.getSnapshot(), axisId, point);
86
+ if (pointerDownZoom === null) {
87
+ return;
88
+ }
89
+ prevPointerZoom = pointerDownZoom;
90
+ pointerZoomMin = pointerDownZoom - axisZoomData.start;
91
+ pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
92
+ document.addEventListener('pointerup', onPointerUp);
93
+ activePreviewRect.addEventListener('pointermove', onPointerMove);
94
+ };
95
+ activePreviewRect.addEventListener('pointerdown', onPointerDown);
96
+
97
+ // eslint-disable-next-line consistent-return
98
+ return () => {
99
+ activePreviewRect.removeEventListener('pointerdown', onPointerDown);
100
+ onPointerMove.clear();
101
+ };
102
+ }, [axisDirection, axisId, instance, reverse, store, svgRef]);
103
+ const onStartThumbMove = event => {
104
+ const element = svgRef.current;
105
+ if (!element) {
106
+ return;
107
+ }
108
+ const point = getSVGPoint(element, event);
109
+ instance.setZoomData(prevZoomData => {
110
+ const zoomOptions = selectorChartAxisZoomOptionsLookup(store.getSnapshot(), axisId);
111
+ return prevZoomData.map(zoom => {
112
+ if (zoom.axisId === axisId) {
113
+ const newStart = calculateZoomFromPoint(store.getSnapshot(), axisId, point);
114
+ if (newStart === null) {
115
+ return zoom;
116
+ }
117
+ return _extends({}, zoom, {
118
+ start: calculateZoomStart(newStart, zoom, zoomOptions)
119
+ });
120
+ }
121
+ return zoom;
122
+ });
123
+ });
124
+ };
125
+ const onEndThumbMove = event => {
126
+ const element = svgRef.current;
127
+ if (!element) {
128
+ return;
129
+ }
130
+ const point = getSVGPoint(element, event);
131
+ instance.setZoomData(prevZoomData => {
132
+ const {
133
+ left,
134
+ top,
135
+ width,
136
+ height
137
+ } = selectorChartDrawingArea(store.getSnapshot());
138
+ const zoomOptions = selectorChartAxisZoomOptionsLookup(store.getSnapshot(), axisId);
139
+ return prevZoomData.map(zoom => {
140
+ if (zoom.axisId === axisId) {
141
+ let newEnd;
142
+ if (axisDirection === 'x') {
143
+ newEnd = (point.x - left) / width * 100;
144
+ } else {
145
+ newEnd = (top + height - point.y) / height * 100;
146
+ }
147
+ if (reverse) {
148
+ newEnd = 100 - newEnd;
149
+ }
150
+ return _extends({}, zoom, {
151
+ end: calculateZoomEnd(newEnd, zoom, zoomOptions)
152
+ });
153
+ }
154
+ return zoom;
155
+ });
156
+ });
157
+ };
158
+ let previewX;
159
+ let previewY;
160
+ let previewWidth;
161
+ let previewHeight;
162
+ let startThumbX;
163
+ let startThumbY;
164
+ let endThumbX;
165
+ let endThumbY;
166
+ if (axisDirection === 'x') {
167
+ previewX = zoomData.start / 100 * drawingArea.width;
168
+ previewY = 0;
169
+ previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
170
+ previewHeight = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
171
+ startThumbX = zoomData.start / 100 * drawingArea.width;
172
+ startThumbY = 0;
173
+ endThumbX = zoomData.end / 100 * drawingArea.width;
174
+ endThumbY = 0;
175
+ if (reverse) {
176
+ previewX = drawingArea.width - previewX - previewWidth;
177
+ startThumbX = drawingArea.width - startThumbX;
178
+ endThumbX = drawingArea.width - endThumbX;
179
+ }
180
+ startThumbX -= previewThumbWidth / 2;
181
+ endThumbX -= previewThumbWidth / 2;
182
+ } else {
183
+ previewX = 0;
184
+ previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
185
+ previewWidth = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
186
+ previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
187
+ startThumbX = 0;
188
+ startThumbY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
189
+ endThumbX = 0;
190
+ endThumbY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
191
+ if (reverse) {
192
+ previewY = drawingArea.height - previewY - previewHeight;
193
+ startThumbY = drawingArea.height - startThumbY;
194
+ endThumbY = drawingArea.height - endThumbY;
195
+ }
196
+ startThumbY -= previewThumbHeight / 2;
197
+ endThumbY -= previewThumbHeight / 2;
198
+ }
199
+ const previewOffset = (ZOOM_SLIDER_THUMB_HEIGHT - ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
200
+ return /*#__PURE__*/_jsxs(React.Fragment, {
201
+ children: [/*#__PURE__*/_jsx(ZoomSliderActiveTrackRect, {
202
+ ref: activePreviewRectRef,
203
+ x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
204
+ y: previewY + (axisDirection === 'x' ? previewOffset : 0),
205
+ width: previewWidth,
206
+ height: previewHeight,
207
+ onPointerEnter: onPointerEnter,
208
+ onPointerLeave: onPointerLeave
209
+ }), /*#__PURE__*/_jsx(ChartAxisZoomSliderThumb, {
210
+ ref: setStartThumbEl,
211
+ x: startThumbX,
212
+ y: startThumbY,
213
+ width: previewThumbWidth,
214
+ height: previewThumbHeight,
215
+ orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
216
+ onMove: onStartThumbMove,
217
+ onPointerEnter: onPointerEnter,
218
+ onPointerLeave: onPointerLeave,
219
+ placement: "start"
220
+ }), /*#__PURE__*/_jsx(ChartAxisZoomSliderThumb, {
221
+ ref: setEndThumbEl,
222
+ x: endThumbX,
223
+ y: endThumbY,
224
+ width: previewThumbWidth,
225
+ height: previewThumbHeight,
226
+ orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
227
+ onMove: onEndThumbMove,
228
+ onPointerEnter: onPointerEnter,
229
+ onPointerLeave: onPointerLeave,
230
+ placement: "end"
231
+ }), /*#__PURE__*/_jsx(ChartsTooltipZoomSliderValue, {
232
+ anchorEl: startThumbEl,
233
+ open: showTooltip,
234
+ placement: axisPosition,
235
+ children: valueFormatter(zoomData.start)
236
+ }), /*#__PURE__*/_jsx(ChartsTooltipZoomSliderValue, {
237
+ anchorEl: endThumbEl,
238
+ open: showTooltip,
239
+ placement: axisPosition,
240
+ children: valueFormatter(zoomData.end)
241
+ })]
242
+ });
243
+ }
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ export interface ChartZoomSliderThumbOwnerState {
3
+ onMove: (event: PointerEvent) => void;
4
+ orientation: 'horizontal' | 'vertical';
5
+ placement: 'start' | 'end';
6
+ }
7
+ export interface ChartZoomSliderThumbProps extends Omit<React.ComponentProps<'rect'>, 'orientation'>, ChartZoomSliderThumbOwnerState {}
8
+ /**
9
+ * Renders the zoom slider thumb, which is responsible for resizing the zoom range.
10
+ * @internal
11
+ */
12
+ export declare const ChartAxisZoomSliderThumb: React.ForwardRefExoticComponent<Omit<ChartZoomSliderThumbProps, "ref"> & React.RefAttributes<SVGRectElement>>;