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