@mui/x-charts 9.0.4 → 9.2.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 (195) hide show
  1. package/BarChart/BarChart.d.mts +1 -2
  2. package/BarChart/BarChart.d.ts +1 -2
  3. package/BarChart/BarChart.js +2 -913
  4. package/BarChart/BarChart.mjs +2 -913
  5. package/BarChart/seriesConfig/bar/seriesProcessor.js +2 -0
  6. package/BarChart/seriesConfig/bar/seriesProcessor.mjs +2 -0
  7. package/CHANGELOG.md +236 -0
  8. package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.d.mts +55 -0
  9. package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.d.ts +55 -0
  10. package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.js +94 -0
  11. package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.mjs +88 -0
  12. package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.d.mts +13 -0
  13. package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.d.ts +13 -0
  14. package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.js +86 -0
  15. package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.mjs +80 -0
  16. package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.d.mts +18 -0
  17. package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.d.ts +18 -0
  18. package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.js +26 -0
  19. package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.mjs +16 -0
  20. package/ChartsAxisHighlightValue/index.d.mts +1 -0
  21. package/ChartsAxisHighlightValue/index.d.ts +1 -0
  22. package/ChartsAxisHighlightValue/index.js +16 -0
  23. package/ChartsAxisHighlightValue/index.mjs +1 -0
  24. package/ChartsAxisHighlightValue/useAxisHighlightValue.d.mts +14 -0
  25. package/ChartsAxisHighlightValue/useAxisHighlightValue.d.ts +14 -0
  26. package/ChartsAxisHighlightValue/useAxisHighlightValue.js +130 -0
  27. package/ChartsAxisHighlightValue/useAxisHighlightValue.mjs +124 -0
  28. package/ChartsContainer/ChartsContainer.js +4 -1431
  29. package/ChartsContainer/ChartsContainer.mjs +4 -1431
  30. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.d.mts +15 -0
  31. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.d.ts +15 -0
  32. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.js +56 -0
  33. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.mjs +50 -0
  34. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.d.mts +6 -0
  35. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.d.ts +6 -0
  36. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.js +5 -0
  37. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.mjs +1 -0
  38. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.d.mts +11 -0
  39. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.d.ts +11 -0
  40. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.js +70 -0
  41. package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.mjs +64 -0
  42. package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.d.mts +9 -0
  43. package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.d.ts +9 -0
  44. package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.js +104 -0
  45. package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.mjs +98 -0
  46. package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.d.mts +9 -0
  47. package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.d.ts +9 -0
  48. package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.js +98 -0
  49. package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.mjs +92 -0
  50. package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.d.mts +7 -0
  51. package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.d.ts +7 -0
  52. package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.js +14 -0
  53. package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.mjs +6 -0
  54. package/ChartsRadialAxisHighlight/index.d.mts +5 -0
  55. package/ChartsRadialAxisHighlight/index.d.ts +5 -0
  56. package/ChartsRadialAxisHighlight/index.js +47 -0
  57. package/ChartsRadialAxisHighlight/index.mjs +4 -0
  58. package/ChartsRadiusAxis/ChartsRadiusAxis.d.mts +1 -47
  59. package/ChartsRadiusAxis/ChartsRadiusAxis.d.ts +1 -47
  60. package/ChartsRadiusAxis/ChartsRadiusAxis.js +20 -16
  61. package/ChartsRadiusAxis/ChartsRadiusAxis.mjs +21 -15
  62. package/ChartsRadiusAxis/index.d.mts +3 -2
  63. package/ChartsRadiusAxis/index.d.ts +3 -2
  64. package/ChartsRadiusAxis/index.mjs +3 -1
  65. package/ChartsRotationAxis/ChartsRotationAxis.d.mts +1 -47
  66. package/ChartsRotationAxis/ChartsRotationAxis.d.ts +1 -47
  67. package/ChartsRotationAxis/ChartsRotationAxis.js +16 -19
  68. package/ChartsRotationAxis/ChartsRotationAxis.mjs +17 -18
  69. package/ChartsRotationAxis/index.d.mts +3 -2
  70. package/ChartsRotationAxis/index.d.ts +3 -2
  71. package/ChartsRotationAxis/index.mjs +3 -1
  72. package/ChartsTooltip/useAxesTooltip.d.mts +1 -1
  73. package/ChartsTooltip/useAxesTooltip.d.ts +1 -1
  74. package/ChartsTooltip/useAxesTooltip.js +11 -2
  75. package/ChartsTooltip/useAxesTooltip.mjs +12 -3
  76. package/ChartsXAxis/useAxisTicksProps.d.mts +162 -81
  77. package/ChartsXAxis/useAxisTicksProps.d.ts +162 -81
  78. package/ChartsYAxis/useAxisTicksProps.d.mts +162 -81
  79. package/ChartsYAxis/useAxisTicksProps.d.ts +162 -81
  80. package/LICENSE +2 -0
  81. package/LineChart/LineChart.js +2 -913
  82. package/LineChart/LineChart.mjs +2 -913
  83. package/LineChart/seriesConfig/curveEvaluation.d.mts +19 -1
  84. package/LineChart/seriesConfig/curveEvaluation.d.ts +19 -1
  85. package/LineChart/seriesConfig/curveEvaluation.js +132 -0
  86. package/LineChart/seriesConfig/curveEvaluation.mjs +131 -0
  87. package/LineChart/seriesConfig/getSeriesWithDefaultValues.js +2 -1
  88. package/LineChart/seriesConfig/getSeriesWithDefaultValues.mjs +2 -1
  89. package/LineChart/seriesConfig/seriesProcessor.js +4 -0
  90. package/LineChart/seriesConfig/seriesProcessor.mjs +4 -0
  91. package/LineChart/useAreaPlotData.js +4 -0
  92. package/LineChart/useAreaPlotData.mjs +4 -0
  93. package/LineChart/useLinePlotData.js +2 -0
  94. package/LineChart/useLinePlotData.mjs +2 -0
  95. package/LineChart/useMarkPlotData.js +2 -0
  96. package/LineChart/useMarkPlotData.mjs +2 -0
  97. package/RadarChart/RadarGrid/CircularRadarStripes.js +2 -3
  98. package/RadarChart/RadarGrid/CircularRadarStripes.mjs +2 -3
  99. package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.js +1 -1
  100. package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.mjs +2 -2
  101. package/ScatterChart/FocusedScatterMark.js +10 -24
  102. package/ScatterChart/FocusedScatterMark.mjs +10 -24
  103. package/ScatterChart/HighlightedScatterMark.d.mts +11 -0
  104. package/ScatterChart/HighlightedScatterMark.d.ts +11 -0
  105. package/ScatterChart/HighlightedScatterMark.js +68 -0
  106. package/ScatterChart/HighlightedScatterMark.mjs +62 -0
  107. package/ScatterChart/ScatterChart.d.mts +1 -2
  108. package/ScatterChart/ScatterChart.d.ts +1 -2
  109. package/ScatterChart/ScatterChart.js +2 -913
  110. package/ScatterChart/ScatterChart.mjs +2 -913
  111. package/ScatterChart/index.d.mts +1 -0
  112. package/ScatterChart/index.d.ts +1 -0
  113. package/ScatterChart/index.js +12 -0
  114. package/ScatterChart/index.mjs +1 -0
  115. package/ScatterChart/scatterClasses.d.mts +3 -1
  116. package/ScatterChart/scatterClasses.d.ts +3 -1
  117. package/ScatterChart/scatterClasses.js +3 -2
  118. package/ScatterChart/scatterClasses.mjs +3 -2
  119. package/ScatterChart/useScatterChartProps.js +3 -1
  120. package/ScatterChart/useScatterChartProps.mjs +3 -1
  121. package/ScatterChart/useScatterItemPosition.d.mts +16 -0
  122. package/ScatterChart/useScatterItemPosition.d.ts +16 -0
  123. package/ScatterChart/useScatterItemPosition.js +47 -0
  124. package/ScatterChart/useScatterItemPosition.mjs +41 -0
  125. package/SparkLineChart/SparkLineChart.js +2 -913
  126. package/SparkLineChart/SparkLineChart.mjs +2 -913
  127. package/hooks/useAxis.d.mts +3 -3
  128. package/hooks/useAxis.d.ts +3 -3
  129. package/hooks/useAxisSystem.d.mts +1 -1
  130. package/hooks/useAxisSystem.d.ts +1 -1
  131. package/hooks/useAxisSystem.js +1 -1
  132. package/hooks/useAxisSystem.mjs +1 -1
  133. package/index.d.mts +2 -0
  134. package/index.d.ts +2 -0
  135. package/index.js +25 -1
  136. package/index.mjs +3 -1
  137. package/internals/getRingPath.d.mts +16 -0
  138. package/internals/getRingPath.d.ts +16 -0
  139. package/internals/getRingPath.js +39 -0
  140. package/internals/getRingPath.mjs +33 -0
  141. package/internals/index.d.mts +8 -1
  142. package/internals/index.d.ts +8 -1
  143. package/internals/index.js +67 -0
  144. package/internals/index.mjs +7 -1
  145. package/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.js +4 -2
  146. package/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.mjs +4 -2
  147. package/internals/plugins/corePlugins/useChartSeriesConfig/types/polarExtremumGetter.types.d.mts +2 -2
  148. package/internals/plugins/corePlugins/useChartSeriesConfig/types/polarExtremumGetter.types.d.ts +2 -2
  149. package/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.d.mts +3 -3
  150. package/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.d.ts +3 -3
  151. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.mts +1 -0
  152. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.ts +1 -0
  153. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.js +8 -0
  154. package/internals/plugins/featurePlugins/useChartCartesianAxis/index.mjs +1 -0
  155. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.mts +6 -1
  156. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +6 -1
  157. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +48 -36
  158. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.mjs +47 -36
  159. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.mts +77 -3
  160. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +77 -3
  161. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianHighlight.selectors.d.mts +152 -2
  162. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianHighlight.selectors.d.ts +152 -2
  163. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.mts +2 -2
  164. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +2 -2
  165. package/internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.d.mts +4 -7
  166. package/internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.d.ts +4 -7
  167. package/internals/plugins/featurePlugins/useChartPolarAxis/defaultizeAxis.d.mts +3 -2
  168. package/internals/plugins/featurePlugins/useChartPolarAxis/defaultizeAxis.d.ts +3 -2
  169. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisExtremum.d.mts +2 -2
  170. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisExtremum.d.ts +2 -2
  171. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.d.mts +7 -2
  172. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.d.ts +7 -2
  173. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.js +56 -6
  174. package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.mjs +54 -5
  175. package/internals/plugins/featurePlugins/useChartPolarAxis/index.d.mts +2 -1
  176. package/internals/plugins/featurePlugins/useChartPolarAxis/index.d.ts +2 -1
  177. package/internals/plugins/featurePlugins/useChartPolarAxis/index.js +12 -0
  178. package/internals/plugins/featurePlugins/useChartPolarAxis/index.mjs +2 -1
  179. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +1 -1
  180. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.mjs +2 -2
  181. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.mts +4 -4
  182. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.ts +4 -4
  183. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.mts +3 -3
  184. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +3 -3
  185. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.mts +23 -3
  186. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +23 -3
  187. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js +73 -12
  188. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.mjs +74 -12
  189. package/models/axis.d.mts +79 -31
  190. package/models/axis.d.ts +79 -31
  191. package/models/axis.js +5 -1
  192. package/models/axis.mjs +5 -1
  193. package/models/seriesType/line.d.mts +6 -6
  194. package/models/seriesType/line.d.ts +6 -6
  195. package/package.json +32 -4
@@ -17,12 +17,12 @@ var _chartsRotationAxisClasses = require("./chartsRotationAxisClasses");
17
17
  var _createGetLabelTextAnchors = require("../ChartsRadiusAxis/createGetLabelTextAnchors");
18
18
  var _getLabelTransform = require("./getLabelTransform");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- /* Gap between a tick and its label. */
21
- const TICK_LABEL_GAP = 3;
20
+ /* Gap between a tick and its label. */const TICK_LABEL_GAP = 3;
22
21
  const getLabelTextAnchors = (0, _createGetLabelTextAnchors.createGetLabelTextAnchors)(_getLabelTransform.getLabelTransform);
23
22
  function ChartsRotationAxis(props) {
23
+ const rotationAxis = (0, _useAxis.useRotationAxis)(props.axisId);
24
+ const settings = (0, _extends2.default)({}, rotationAxis, props);
24
25
  const {
25
- axisId,
26
26
  disableLine,
27
27
  disableTicks,
28
28
  position = 'outside',
@@ -31,7 +31,7 @@ function ChartsRotationAxis(props) {
31
31
  tickSize = 6,
32
32
  className,
33
33
  classes: classesProp
34
- } = props;
34
+ } = settings;
35
35
  const classes = (0, _chartsRotationAxisClasses.useUtilityClasses)({
36
36
  classes: classesProp
37
37
  });
@@ -43,7 +43,6 @@ function ChartsRotationAxis(props) {
43
43
  cx,
44
44
  cy
45
45
  } = store.use(_useChartPolarAxis.selectorChartPolarCenter);
46
- const rotationAxis = (0, _useAxis.useRotationAxis)(axisId);
47
46
  const radiusAxis = (0, _useAxis.useRadiusAxis)();
48
47
  const ticks = (0, _useTicks.useTicks)({
49
48
  scale: rotationAxis.scale,
@@ -53,7 +52,7 @@ function ChartsRotationAxis(props) {
53
52
  valueFormatter: rotationAxis?.valueFormatter,
54
53
  direction: 'rotation'
55
54
  });
56
- if (!rotationAxis || !radiusAxis) {
55
+ if (!rotationAxis || !radiusAxis || settings.position === 'none') {
57
56
  return null;
58
57
  }
59
58
  const radius = radiusAxis.scale.range()[position === 'inside' ? 0 : 1];
@@ -65,7 +64,6 @@ function ChartsRotationAxis(props) {
65
64
  x: cx + Math.sin(angle) * r,
66
65
  y: cy - Math.cos(angle) * r
67
66
  });
68
- const isFullCircle = Math.abs(endAngle - startAngle) > 2 * Math.PI - 0.01;
69
67
  const sweepFlag = endAngle - startAngle >= 0 ? 1 : 0;
70
68
  const start = angleToPoint(startAngle, radius);
71
69
  const end = angleToPoint(endAngle, radius);
@@ -73,7 +71,7 @@ function ChartsRotationAxis(props) {
73
71
  const arcPath = `M ${start.x} ${start.y} ` + `A ${radius} ${radius} 0 ${largeArcFlag} ${sweepFlag} ${end.x} ${end.y}`;
74
72
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
75
73
  className: (0, _clsx.default)(classes.root, className),
76
- children: [!disableLine && (isFullCircle ?
74
+ children: [!disableLine && (rotationAxis.isFullCircle ?
77
75
  /*#__PURE__*/
78
76
  // Use a circle to avoid degenerated arcs when start and end angles are the same or very close.
79
77
  (0, _jsxRuntime.jsx)("circle", {
@@ -90,6 +88,7 @@ function ChartsRotationAxis(props) {
90
88
  className: classes.line
91
89
  })), ticks.map(({
92
90
  offset: angle,
91
+ labelOffset,
93
92
  formattedValue
94
93
  }, index) => {
95
94
  if (!formattedValue) {
@@ -99,23 +98,21 @@ function ChartsRotationAxis(props) {
99
98
  // Convert "0 = up" convention to SVG math angle (0 = right, clockwise y-down).
100
99
  const dx = Math.sin(angle);
101
100
  const dy = -Math.cos(angle);
101
+ const labelDx = labelOffset === 0 ? dx : Math.sin(angle + labelOffset);
102
+ const labelDy = labelOffset === 0 ? dy : -Math.cos(angle + labelOffset);
102
103
  const tx = cx + dx * radius;
103
104
  const ty = cy + dy * radius;
104
105
  const tickDx = (tickPosition === 'after' ? 1 : -1) * dx * tickSize;
105
106
  const tickDy = (tickPosition === 'after' ? 1 : -1) * dy * tickSize;
106
- const tickLabelGapDx = (tickLabelPosition === 'after' ? 1 : -1) * dx * TICK_LABEL_GAP;
107
- const tickLabelGapDy = (tickLabelPosition === 'after' ? 1 : -1) * dy * TICK_LABEL_GAP;
108
-
109
- // Compute the label position.
110
- let labelX = tx;
111
- let labelY = ty;
112
- labelX += tickLabelGapDx;
113
- labelY += tickLabelGapDy;
107
+ let tickLabelRadius = radius + (tickLabelPosition === 'after' ? 1 : -1) * TICK_LABEL_GAP;
114
108
  if (tickLabelPosition === tickPosition && !disableTicks) {
115
109
  // Add the size of the tick if they are in the same direction.
116
- labelX += tickDx;
117
- labelY += tickDy;
110
+ tickLabelRadius += tickSize;
118
111
  }
112
+
113
+ // Compute the label position.
114
+ const labelX = cx + labelDx * tickLabelRadius;
115
+ const labelY = cy + labelDy * tickLabelRadius;
119
116
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
120
117
  className: classes.tickContainer,
121
118
  children: [!disableTicks && /*#__PURE__*/(0, _jsxRuntime.jsx)("line", {
@@ -132,7 +129,7 @@ function ChartsRotationAxis(props) {
132
129
  fontSize: 12,
133
130
  className: classes.tickLabel,
134
131
  pointerEvents: "none"
135
- }, getLabelTextAnchors(dx, dy, tickLabelPosition), {
132
+ }, getLabelTextAnchors(labelDx, labelDy, tickLabelPosition), {
136
133
  children: formattedValue
137
134
  }))]
138
135
  }, index);
@@ -10,13 +10,15 @@ import { selectorChartPolarCenter } from "../internals/plugins/featurePlugins/us
10
10
  import { useUtilityClasses } from "./chartsRotationAxisClasses.mjs";
11
11
  import { createGetLabelTextAnchors } from "../ChartsRadiusAxis/createGetLabelTextAnchors.mjs";
12
12
  import { getLabelTransform } from "./getLabelTransform.mjs";
13
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+
14
14
  /* Gap between a tick and its label. */
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
16
  const TICK_LABEL_GAP = 3;
16
17
  const getLabelTextAnchors = createGetLabelTextAnchors(getLabelTransform);
17
18
  export function ChartsRotationAxis(props) {
19
+ const rotationAxis = useRotationAxis(props.axisId);
20
+ const settings = _extends({}, rotationAxis, props);
18
21
  const {
19
- axisId,
20
22
  disableLine,
21
23
  disableTicks,
22
24
  position = 'outside',
@@ -25,7 +27,7 @@ export function ChartsRotationAxis(props) {
25
27
  tickSize = 6,
26
28
  className,
27
29
  classes: classesProp
28
- } = props;
30
+ } = settings;
29
31
  const classes = useUtilityClasses({
30
32
  classes: classesProp
31
33
  });
@@ -37,7 +39,6 @@ export function ChartsRotationAxis(props) {
37
39
  cx,
38
40
  cy
39
41
  } = store.use(selectorChartPolarCenter);
40
- const rotationAxis = useRotationAxis(axisId);
41
42
  const radiusAxis = useRadiusAxis();
42
43
  const ticks = useTicks({
43
44
  scale: rotationAxis.scale,
@@ -47,7 +48,7 @@ export function ChartsRotationAxis(props) {
47
48
  valueFormatter: rotationAxis?.valueFormatter,
48
49
  direction: 'rotation'
49
50
  });
50
- if (!rotationAxis || !radiusAxis) {
51
+ if (!rotationAxis || !radiusAxis || settings.position === 'none') {
51
52
  return null;
52
53
  }
53
54
  const radius = radiusAxis.scale.range()[position === 'inside' ? 0 : 1];
@@ -59,7 +60,6 @@ export function ChartsRotationAxis(props) {
59
60
  x: cx + Math.sin(angle) * r,
60
61
  y: cy - Math.cos(angle) * r
61
62
  });
62
- const isFullCircle = Math.abs(endAngle - startAngle) > 2 * Math.PI - 0.01;
63
63
  const sweepFlag = endAngle - startAngle >= 0 ? 1 : 0;
64
64
  const start = angleToPoint(startAngle, radius);
65
65
  const end = angleToPoint(endAngle, radius);
@@ -67,7 +67,7 @@ export function ChartsRotationAxis(props) {
67
67
  const arcPath = `M ${start.x} ${start.y} ` + `A ${radius} ${radius} 0 ${largeArcFlag} ${sweepFlag} ${end.x} ${end.y}`;
68
68
  return /*#__PURE__*/_jsxs("g", {
69
69
  className: clsx(classes.root, className),
70
- children: [!disableLine && (isFullCircle ?
70
+ children: [!disableLine && (rotationAxis.isFullCircle ?
71
71
  /*#__PURE__*/
72
72
  // Use a circle to avoid degenerated arcs when start and end angles are the same or very close.
73
73
  _jsx("circle", {
@@ -84,6 +84,7 @@ export function ChartsRotationAxis(props) {
84
84
  className: classes.line
85
85
  })), ticks.map(({
86
86
  offset: angle,
87
+ labelOffset,
87
88
  formattedValue
88
89
  }, index) => {
89
90
  if (!formattedValue) {
@@ -93,23 +94,21 @@ export function ChartsRotationAxis(props) {
93
94
  // Convert "0 = up" convention to SVG math angle (0 = right, clockwise y-down).
94
95
  const dx = Math.sin(angle);
95
96
  const dy = -Math.cos(angle);
97
+ const labelDx = labelOffset === 0 ? dx : Math.sin(angle + labelOffset);
98
+ const labelDy = labelOffset === 0 ? dy : -Math.cos(angle + labelOffset);
96
99
  const tx = cx + dx * radius;
97
100
  const ty = cy + dy * radius;
98
101
  const tickDx = (tickPosition === 'after' ? 1 : -1) * dx * tickSize;
99
102
  const tickDy = (tickPosition === 'after' ? 1 : -1) * dy * tickSize;
100
- const tickLabelGapDx = (tickLabelPosition === 'after' ? 1 : -1) * dx * TICK_LABEL_GAP;
101
- const tickLabelGapDy = (tickLabelPosition === 'after' ? 1 : -1) * dy * TICK_LABEL_GAP;
102
-
103
- // Compute the label position.
104
- let labelX = tx;
105
- let labelY = ty;
106
- labelX += tickLabelGapDx;
107
- labelY += tickLabelGapDy;
103
+ let tickLabelRadius = radius + (tickLabelPosition === 'after' ? 1 : -1) * TICK_LABEL_GAP;
108
104
  if (tickLabelPosition === tickPosition && !disableTicks) {
109
105
  // Add the size of the tick if they are in the same direction.
110
- labelX += tickDx;
111
- labelY += tickDy;
106
+ tickLabelRadius += tickSize;
112
107
  }
108
+
109
+ // Compute the label position.
110
+ const labelX = cx + labelDx * tickLabelRadius;
111
+ const labelY = cy + labelDy * tickLabelRadius;
113
112
  return /*#__PURE__*/_jsxs("g", {
114
113
  className: classes.tickContainer,
115
114
  children: [!disableTicks && /*#__PURE__*/_jsx("line", {
@@ -126,7 +125,7 @@ export function ChartsRotationAxis(props) {
126
125
  fontSize: 12,
127
126
  className: classes.tickLabel,
128
127
  pointerEvents: "none"
129
- }, getLabelTextAnchors(dx, dy, tickLabelPosition), {
128
+ }, getLabelTextAnchors(labelDx, labelDy, tickLabelPosition), {
130
129
  children: formattedValue
131
130
  }))]
132
131
  }, index);
@@ -1,2 +1,3 @@
1
- export { type ChartsRotationAxisProps, ChartsRotationAxis as Unstable_ChartsRotationAxis } from "./ChartsRotationAxis.mjs";
2
- export { type ChartsRadialAxisClasses, type ChartsRadialAxisClassKey, chartsRadialAxisClasses } from "./chartsRotationAxisClasses.mjs";
1
+ export { ChartsRotationAxis as Unstable_ChartsRotationAxis } from "./ChartsRotationAxis.mjs";
2
+ export { type ChartsRadialAxisClasses, type ChartsRadialAxisClassKey, chartsRadialAxisClasses } from "./chartsRotationAxisClasses.mjs";
3
+ export { type ChartsRotationAxisProps } from "../models/axis.mjs";
@@ -1,2 +1,3 @@
1
- export { type ChartsRotationAxisProps, ChartsRotationAxis as Unstable_ChartsRotationAxis } from "./ChartsRotationAxis.js";
2
- export { type ChartsRadialAxisClasses, type ChartsRadialAxisClassKey, chartsRadialAxisClasses } from "./chartsRotationAxisClasses.js";
1
+ export { ChartsRotationAxis as Unstable_ChartsRotationAxis } from "./ChartsRotationAxis.js";
2
+ export { type ChartsRadialAxisClasses, type ChartsRadialAxisClassKey, chartsRadialAxisClasses } from "./chartsRotationAxisClasses.js";
3
+ export { type ChartsRotationAxisProps } from "../models/axis.js";
@@ -1,2 +1,4 @@
1
1
  export { ChartsRotationAxis as Unstable_ChartsRotationAxis } from "./ChartsRotationAxis.mjs";
2
- export { chartsRadialAxisClasses } from "./chartsRotationAxisClasses.mjs";
2
+ export { chartsRadialAxisClasses } from "./chartsRotationAxisClasses.mjs";
3
+
4
+ // Re-export types
@@ -16,7 +16,7 @@ export interface UseAxesTooltipParams {
16
16
  * The axis directions to consider.
17
17
  * If not defined, all directions are considered
18
18
  */
19
- directions?: ('x' | 'y' | 'rotation')[];
19
+ directions?: ('x' | 'y' | 'rotation' | 'radius')[];
20
20
  }
21
21
  export interface SeriesItem<T extends CartesianChartSeriesType | PolarChartSeriesType> {
22
22
  seriesId: SeriesId;
@@ -16,7 +16,7 @@ export interface UseAxesTooltipParams {
16
16
  * The axis directions to consider.
17
17
  * If not defined, all directions are considered
18
18
  */
19
- directions?: ('x' | 'y' | 'rotation')[];
19
+ directions?: ('x' | 'y' | 'rotation' | 'radius')[];
20
20
  }
21
21
  export interface SeriesItem<T extends CartesianChartSeriesType | PolarChartSeriesType> {
22
22
  seriesId: SeriesId;
@@ -58,6 +58,7 @@ function useAxesTooltip(params) {
58
58
  const tooltipXAxes = store.use(_useChartCartesianAxis.selectorChartsInteractionTooltipXAxes);
59
59
  const tooltipYAxes = store.use(_useChartCartesianAxis.selectorChartsInteractionTooltipYAxes);
60
60
  const tooltipRotationAxes = store.use(_useChartPolarInteraction.selectorChartsInteractionTooltipRotationAxes);
61
+ const tooltipRadiusAxes = store.use(_useChartPolarInteraction.selectorChartsInteractionTooltipRadiusAxes);
61
62
  const series = (0, _useSeries.useSeries)();
62
63
  const {
63
64
  xAxis
@@ -77,7 +78,7 @@ function useAxesTooltip(params) {
77
78
  } = (0, _useAxis.useRadiusAxes)();
78
79
  const colorProcessors = (0, _useColorProcessor.useColorProcessor)();
79
80
  const isItemVisible = store.use(_useChartVisibilityManager.selectorIsItemVisibleGetter);
80
- if (tooltipXAxes.length === 0 && tooltipYAxes.length === 0 && tooltipRotationAxes.length === 0) {
81
+ if (tooltipXAxes.length === 0 && tooltipYAxes.length === 0 && tooltipRotationAxes.length === 0 && tooltipRadiusAxes.length === 0) {
81
82
  return null;
82
83
  }
83
84
  const tooltipAxes = [];
@@ -105,6 +106,14 @@ function useAxesTooltip(params) {
105
106
  tooltipAxes.push(defaultAxisTooltipConfig(rotationAxis[axisId], dataIndex, 'rotation'));
106
107
  });
107
108
  }
109
+ if (directions === undefined || directions.includes('radius')) {
110
+ tooltipRadiusAxes.forEach(({
111
+ axisId,
112
+ dataIndex
113
+ }) => {
114
+ tooltipAxes.push(defaultAxisTooltipConfig(radiusAxis[axisId], dataIndex, 'radius'));
115
+ });
116
+ }
108
117
  Object.keys(series).filter(seriesType => _composition.composableCartesianSeriesTypes.has(seriesType)).forEach(seriesType => {
109
118
  const seriesOfType = series[seriesType];
110
119
  if (!seriesOfType) {
@@ -202,7 +211,7 @@ function useAxesTooltip(params) {
202
211
  const tooltipItemIndex = tooltipAxes.findIndex(({
203
212
  axisDirection,
204
213
  axisId
205
- }) => axisDirection === 'rotation' && axisId === providedRotationAxisId);
214
+ }) => axisDirection === 'rotation' && axisId === providedRotationAxisId || axisDirection === 'radius' && axisId === providedRadiusAxisId);
206
215
  // Test if the series uses the default axis
207
216
  if (tooltipItemIndex >= 0) {
208
217
  const {
@@ -8,7 +8,7 @@ import { utcFormatter } from "./utils.mjs";
8
8
  import { useRadiusAxes, useRadiusAxis, useRotationAxes, useRotationAxis, useXAxes, useXAxis, useYAxes, useYAxis } from "../hooks/useAxis.mjs";
9
9
  import { useZAxes } from "../hooks/useZAxis.mjs";
10
10
  import { selectorChartsInteractionTooltipXAxes, selectorChartsInteractionTooltipYAxes } from "../internals/plugins/featurePlugins/useChartCartesianAxis/index.mjs";
11
- import { selectorChartsInteractionTooltipRotationAxes } from "../internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.mjs";
11
+ import { selectorChartsInteractionTooltipRadiusAxes, selectorChartsInteractionTooltipRotationAxes } from "../internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.mjs";
12
12
  import { isPolarSeriesType } from "../internals/isPolar.mjs";
13
13
  import { selectorIsItemVisibleGetter } from "../internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.mjs";
14
14
  import { composableCartesianSeriesTypes } from "../models/seriesType/composition.mjs";
@@ -53,6 +53,7 @@ export function useAxesTooltip(params) {
53
53
  const tooltipXAxes = store.use(selectorChartsInteractionTooltipXAxes);
54
54
  const tooltipYAxes = store.use(selectorChartsInteractionTooltipYAxes);
55
55
  const tooltipRotationAxes = store.use(selectorChartsInteractionTooltipRotationAxes);
56
+ const tooltipRadiusAxes = store.use(selectorChartsInteractionTooltipRadiusAxes);
56
57
  const series = useSeries();
57
58
  const {
58
59
  xAxis
@@ -72,7 +73,7 @@ export function useAxesTooltip(params) {
72
73
  } = useRadiusAxes();
73
74
  const colorProcessors = useColorProcessor();
74
75
  const isItemVisible = store.use(selectorIsItemVisibleGetter);
75
- if (tooltipXAxes.length === 0 && tooltipYAxes.length === 0 && tooltipRotationAxes.length === 0) {
76
+ if (tooltipXAxes.length === 0 && tooltipYAxes.length === 0 && tooltipRotationAxes.length === 0 && tooltipRadiusAxes.length === 0) {
76
77
  return null;
77
78
  }
78
79
  const tooltipAxes = [];
@@ -100,6 +101,14 @@ export function useAxesTooltip(params) {
100
101
  tooltipAxes.push(defaultAxisTooltipConfig(rotationAxis[axisId], dataIndex, 'rotation'));
101
102
  });
102
103
  }
104
+ if (directions === undefined || directions.includes('radius')) {
105
+ tooltipRadiusAxes.forEach(({
106
+ axisId,
107
+ dataIndex
108
+ }) => {
109
+ tooltipAxes.push(defaultAxisTooltipConfig(radiusAxis[axisId], dataIndex, 'radius'));
110
+ });
111
+ }
103
112
  Object.keys(series).filter(seriesType => composableCartesianSeriesTypes.has(seriesType)).forEach(seriesType => {
104
113
  const seriesOfType = series[seriesType];
105
114
  if (!seriesOfType) {
@@ -197,7 +206,7 @@ export function useAxesTooltip(params) {
197
206
  const tooltipItemIndex = tooltipAxes.findIndex(({
198
207
  axisDirection,
199
208
  axisId
200
- }) => axisDirection === 'rotation' && axisId === providedRotationAxisId);
209
+ }) => axisDirection === 'rotation' && axisId === providedRotationAxisId || axisDirection === 'radius' && axisId === providedRadiusAxisId);
201
210
  // Test if the series uses the default axis
202
211
  if (tooltipItemIndex >= 0) {
203
212
  const {