@mui/x-charts 8.0.0-beta.1 → 8.0.0-beta.2

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 (132) hide show
  1. package/BarChart/useBarChartProps.d.ts +2 -1
  2. package/BarChart/useBarChartProps.js +20 -13
  3. package/CHANGELOG.md +94 -0
  4. package/ChartsAxisHighlight/ChartsXAxisHighlight.js +8 -8
  5. package/ChartsAxisHighlight/ChartsYAxisHighlight.js +8 -8
  6. package/ChartsOverlay/ChartsLoadingOverlay.js +1 -1
  7. package/ChartsOverlay/ChartsNoDataOverlay.js +1 -1
  8. package/ChartsTooltip/ChartsTooltipContainer.js +2 -1
  9. package/ChartsTooltip/useAxisTooltip.js +2 -2
  10. package/LineChart/CircleMarkElement.js +2 -2
  11. package/LineChart/LineHighlightPlot.js +2 -2
  12. package/LineChart/MarkElement.js +2 -2
  13. package/LineChart/useLineChartProps.d.ts +2 -1
  14. package/LineChart/useLineChartProps.js +7 -4
  15. package/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.js +9 -5
  16. package/RadarChart/RadarGrid/RadarGrid.d.ts +1 -1
  17. package/RadarChart/RadarGrid/RadarGrid.js +5 -1
  18. package/RadarChart/RadarGrid/useRadarGridData.d.ts +1 -1
  19. package/RadarChart/RadarGrid/useRadarGridData.js +3 -0
  20. package/RadarChart/RadarSeriesPlot/useRadarSeriesData.js +2 -2
  21. package/ScatterChart/useScatterChartProps.d.ts +2 -1
  22. package/ScatterChart/useScatterChartProps.js +6 -3
  23. package/esm/BarChart/useBarChartProps.d.ts +2 -1
  24. package/esm/BarChart/useBarChartProps.js +19 -13
  25. package/esm/ChartsAxisHighlight/ChartsXAxisHighlight.js +8 -8
  26. package/esm/ChartsAxisHighlight/ChartsYAxisHighlight.js +8 -8
  27. package/esm/ChartsOverlay/ChartsLoadingOverlay.js +1 -1
  28. package/esm/ChartsOverlay/ChartsNoDataOverlay.js +1 -1
  29. package/esm/ChartsTooltip/ChartsTooltipContainer.js +2 -1
  30. package/esm/ChartsTooltip/useAxisTooltip.js +1 -1
  31. package/esm/LineChart/CircleMarkElement.js +1 -1
  32. package/esm/LineChart/LineHighlightPlot.js +1 -1
  33. package/esm/LineChart/MarkElement.js +1 -1
  34. package/esm/LineChart/useLineChartProps.d.ts +2 -1
  35. package/esm/LineChart/useLineChartProps.js +6 -4
  36. package/esm/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.js +9 -5
  37. package/esm/RadarChart/RadarGrid/RadarGrid.d.ts +1 -1
  38. package/esm/RadarChart/RadarGrid/RadarGrid.js +5 -1
  39. package/esm/RadarChart/RadarGrid/useRadarGridData.d.ts +1 -1
  40. package/esm/RadarChart/RadarGrid/useRadarGridData.js +3 -0
  41. package/esm/RadarChart/RadarSeriesPlot/useRadarSeriesData.js +2 -2
  42. package/esm/ScatterChart/useScatterChartProps.d.ts +2 -1
  43. package/esm/ScatterChart/useScatterChartProps.js +5 -3
  44. package/esm/hooks/useAxis.d.ts +5 -5
  45. package/esm/hooks/useScale.d.ts +2 -2
  46. package/esm/hooks/useScale.js +2 -2
  47. package/esm/index.js +1 -1
  48. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.d.ts +8 -6
  49. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +28 -22
  50. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.ts +1 -0
  51. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/index.js +1 -0
  52. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +9 -42
  53. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +1 -0
  54. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.js +41 -0
  55. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js +7 -20
  56. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +36 -242
  57. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js +4 -10
  58. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.types.d.ts +9 -15
  59. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.d.ts +12 -0
  60. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.js +8 -0
  61. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.d.ts +6 -4
  62. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.js +18 -13
  63. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +16 -32
  64. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +3669 -0
  65. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js +22 -0
  66. package/hooks/useAxis.d.ts +5 -5
  67. package/hooks/useScale.d.ts +2 -2
  68. package/hooks/useScale.js +2 -2
  69. package/index.js +1 -1
  70. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.d.ts +8 -6
  71. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +29 -22
  72. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.ts +1 -0
  73. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.js +12 -0
  74. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +7 -40
  75. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +1 -0
  76. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.js +47 -0
  77. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js +7 -20
  78. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +36 -242
  79. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js +5 -11
  80. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.types.d.ts +9 -15
  81. package/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.d.ts +12 -0
  82. package/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.js +17 -0
  83. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.d.ts +6 -4
  84. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.js +19 -13
  85. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +16 -32
  86. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +3669 -0
  87. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js +28 -0
  88. package/modern/BarChart/useBarChartProps.d.ts +2 -1
  89. package/modern/BarChart/useBarChartProps.js +19 -13
  90. package/modern/ChartsAxisHighlight/ChartsXAxisHighlight.js +8 -8
  91. package/modern/ChartsAxisHighlight/ChartsYAxisHighlight.js +8 -8
  92. package/modern/ChartsOverlay/ChartsLoadingOverlay.js +1 -1
  93. package/modern/ChartsOverlay/ChartsNoDataOverlay.js +1 -1
  94. package/modern/ChartsTooltip/ChartsTooltipContainer.js +2 -1
  95. package/modern/ChartsTooltip/useAxisTooltip.js +1 -1
  96. package/modern/LineChart/CircleMarkElement.js +1 -1
  97. package/modern/LineChart/LineHighlightPlot.js +1 -1
  98. package/modern/LineChart/MarkElement.js +1 -1
  99. package/modern/LineChart/useLineChartProps.d.ts +2 -1
  100. package/modern/LineChart/useLineChartProps.js +6 -4
  101. package/modern/RadarChart/RadarAxisHighlight/useRadarAxisHighlight.js +9 -5
  102. package/modern/RadarChart/RadarGrid/RadarGrid.d.ts +1 -1
  103. package/modern/RadarChart/RadarGrid/RadarGrid.js +5 -1
  104. package/modern/RadarChart/RadarGrid/useRadarGridData.d.ts +1 -1
  105. package/modern/RadarChart/RadarGrid/useRadarGridData.js +3 -0
  106. package/modern/RadarChart/RadarSeriesPlot/useRadarSeriesData.js +2 -2
  107. package/modern/ScatterChart/useScatterChartProps.d.ts +2 -1
  108. package/modern/ScatterChart/useScatterChartProps.js +5 -3
  109. package/modern/hooks/useAxis.d.ts +5 -5
  110. package/modern/hooks/useScale.d.ts +2 -2
  111. package/modern/hooks/useScale.js +2 -2
  112. package/modern/index.js +1 -1
  113. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.d.ts +8 -6
  114. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +28 -22
  115. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.ts +1 -0
  116. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/index.js +1 -0
  117. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +9 -42
  118. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +1 -0
  119. package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.js +41 -0
  120. package/modern/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.js +7 -20
  121. package/modern/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +36 -242
  122. package/modern/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js +4 -10
  123. package/modern/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.types.d.ts +9 -15
  124. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.d.ts +12 -0
  125. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/coordinateTransformation.js +8 -0
  126. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.d.ts +6 -4
  127. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/getAxisValue.js +18 -13
  128. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +16 -32
  129. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +3669 -0
  130. package/modern/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js +22 -0
  131. package/package.json +2 -2
  132. package/tsconfig.build.tsbuildinfo +1 -1
@@ -3,9 +3,9 @@ import { clampAngleRad } from "../../../clampAngle.js";
3
3
 
4
4
  /**
5
5
  * For a pointer coordinate, this function returns the value and dataIndex associated.
6
- * Returns `null` if the coordinate is outside of values.
6
+ * Returns `-1` if the coordinate does not match a value.
7
7
  */
8
- export function getAxisValue(axisConfig, pointerValue) {
8
+ export function getAxisIndex(axisConfig, pointerValue) {
9
9
  const {
10
10
  scale,
11
11
  data: axisData,
@@ -14,20 +14,25 @@ export function getAxisValue(axisConfig, pointerValue) {
14
14
  if (!isBandScale(scale)) {
15
15
  throw new Error('MUI X: getAxisValue is not implemented for polare continuous axes.');
16
16
  }
17
+ if (!axisData) {
18
+ return -1;
19
+ }
17
20
  const angleGap = clampAngleRad(pointerValue - Math.min(...scale.range()));
18
21
  const dataIndex = scale.bandwidth() === 0 ? Math.floor((angleGap + scale.step() / 2) / scale.step()) % axisData.length : Math.floor(angleGap / scale.step());
19
22
  if (dataIndex < 0 || dataIndex >= axisData.length) {
20
- return null;
23
+ return -1;
21
24
  }
22
- if (reverse) {
23
- const reverseIndex = axisData.length - 1 - dataIndex;
24
- return {
25
- index: reverseIndex,
26
- value: axisData[reverseIndex]
27
- };
25
+ return reverse ? axisData.length - 1 - dataIndex : dataIndex;
26
+ }
27
+
28
+ /**
29
+ * For a pointer coordinate, this function returns the value and dataIndex associated.
30
+ * Returns `null` if the coordinate is outside of values.
31
+ */
32
+ export function getAxisValue(axisConfig, pointerValue) {
33
+ const dataIndex = getAxisIndex(axisConfig, pointerValue);
34
+ if (dataIndex < 0) {
35
+ return null;
28
36
  }
29
- return {
30
- index: dataIndex,
31
- value: axisData[dataIndex]
32
- };
37
+ return axisConfig.data?.[dataIndex];
33
38
  }
@@ -6,10 +6,10 @@ import { warnOnce } from '@mui/x-internals/warning';
6
6
  import { useSelector } from "../../../store/useSelector.js";
7
7
  import { selectorChartDrawingArea } from "../../corePlugins/useChartDimensions/useChartDimensions.selectors.js";
8
8
  import { defaultizeAxis } from "./defaultizeAxis.js";
9
- import { getAxisValue } from "./getAxisValue.js";
10
9
  import { selectorChartsInteractionIsInitialized } from "../useChartInteraction/index.js";
11
10
  import { selectorChartPolarCenter, selectorChartRadiusAxis, selectorChartRotationAxis } from "./useChartPolarAxis.selectors.js";
12
11
  import { getSVGPoint } from "../../../getSVGPoint.js";
12
+ import { generatePolar2svg, generateSvg2polar, generateSvg2rotation } from "./coordinateTransformation.js";
13
13
  export const useChartPolarAxis = ({
14
14
  params,
15
15
  store,
@@ -56,14 +56,18 @@ export const useChartPolarAxis = ({
56
56
  })
57
57
  }));
58
58
  }, [seriesConfig, drawingArea, rotationAxis, radiusAxis, dataset, store]);
59
- const svg2rotation = React.useCallback((x, y) => Math.atan2(x - center.cx, center.cy - y), [center.cx, center.cy]);
60
- const svg2polar = React.useCallback((x, y) => {
61
- const angle = Math.atan2(x - center.cx, center.cy - y);
62
- return [Math.sqrt((x - center.cx) ** 2 + (center.cy - y) ** 2), angle];
63
- }, [center.cx, center.cy]);
64
- const polar2svg = React.useCallback((radius, rotation) => {
65
- return [center.cx + radius * Math.sin(rotation), center.cy - radius * Math.cos(rotation)];
66
- }, [center.cx, center.cy]);
59
+ const svg2rotation = React.useMemo(() => generateSvg2rotation({
60
+ cx: center.cx,
61
+ cy: center.cy
62
+ }), [center.cx, center.cy]);
63
+ const svg2polar = React.useMemo(() => generateSvg2polar({
64
+ cx: center.cx,
65
+ cy: center.cy
66
+ }), [center.cx, center.cy]);
67
+ const polar2svg = React.useMemo(() => generatePolar2svg({
68
+ cx: center.cx,
69
+ cy: center.cy
70
+ }), [center.cx, center.cy]);
67
71
  const usedRotationAxisId = rotationAxisIds[0];
68
72
  const usedRadiusAxisId = radiusAxisIds[0];
69
73
 
@@ -97,15 +101,7 @@ export const useChartPolarAxis = ({
97
101
  targetElement: event.target
98
102
  })) {
99
103
  if (mousePosition.current.isInChart) {
100
- store.update(prev => _extends({}, prev, {
101
- interaction: {
102
- item: null,
103
- axis: {
104
- x: null,
105
- y: null
106
- }
107
- }
108
- }));
104
+ instance?.cleanInteraction();
109
105
  mousePosition.current.isInChart = false;
110
106
  }
111
107
  return;
@@ -116,25 +112,13 @@ export const useChartPolarAxis = ({
116
112
  const maxRadius = radiusAxisWithScale[usedRadiusAxisId].scale.range()[1];
117
113
  if (radiusSquare > maxRadius ** 2) {
118
114
  if (mousePosition.current.isInChart) {
119
- store.update(prev => _extends({}, prev, {
120
- interaction: {
121
- item: null,
122
- axis: {
123
- x: null,
124
- y: null
125
- }
126
- }
127
- }));
115
+ instance?.cleanInteraction();
128
116
  mousePosition.current.isInChart = false;
129
117
  }
130
118
  return;
131
119
  }
132
120
  mousePosition.current.isInChart = true;
133
- const angle = svg2rotation(svgPoint.x, svgPoint.y);
134
- instance.setAxisInteraction?.({
135
- x: getAxisValue(rotationAxisWithScale[usedRotationAxisId], angle),
136
- y: null
137
- });
121
+ instance.setPointerCoordinate?.(svgPoint);
138
122
  };
139
123
  const handleDown = event => {
140
124
  const target = event.currentTarget;