@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.
- package/BarChart/BarChart.d.mts +1 -2
- package/BarChart/BarChart.d.ts +1 -2
- package/BarChart/BarChart.js +2 -913
- package/BarChart/BarChart.mjs +2 -913
- package/BarChart/seriesConfig/bar/seriesProcessor.js +2 -0
- package/BarChart/seriesConfig/bar/seriesProcessor.mjs +2 -0
- package/CHANGELOG.md +236 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.d.mts +55 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.d.ts +55 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.js +94 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValue.mjs +88 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.d.mts +13 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.d.ts +13 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.js +86 -0
- package/ChartsAxisHighlightValue/ChartsAxisHighlightValueItem.mjs +80 -0
- package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.d.mts +18 -0
- package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.d.ts +18 -0
- package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.js +26 -0
- package/ChartsAxisHighlightValue/chartsAxisHighlightValueClasses.mjs +16 -0
- package/ChartsAxisHighlightValue/index.d.mts +1 -0
- package/ChartsAxisHighlightValue/index.d.ts +1 -0
- package/ChartsAxisHighlightValue/index.js +16 -0
- package/ChartsAxisHighlightValue/index.mjs +1 -0
- package/ChartsAxisHighlightValue/useAxisHighlightValue.d.mts +14 -0
- package/ChartsAxisHighlightValue/useAxisHighlightValue.d.ts +14 -0
- package/ChartsAxisHighlightValue/useAxisHighlightValue.js +130 -0
- package/ChartsAxisHighlightValue/useAxisHighlightValue.mjs +124 -0
- package/ChartsContainer/ChartsContainer.js +4 -1431
- package/ChartsContainer/ChartsContainer.mjs +4 -1431
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.d.mts +15 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.d.ts +15 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.js +56 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.mjs +50 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.d.mts +6 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.d.ts +6 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.js +5 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlight.types.mjs +1 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.d.mts +11 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.d.ts +11 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.js +70 -0
- package/ChartsRadialAxisHighlight/ChartsRadialAxisHighlightPath.mjs +64 -0
- package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.d.mts +9 -0
- package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.d.ts +9 -0
- package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.js +104 -0
- package/ChartsRadialAxisHighlight/ChartsRadiusAxisHighlight.mjs +98 -0
- package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.d.mts +9 -0
- package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.d.ts +9 -0
- package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.js +98 -0
- package/ChartsRadialAxisHighlight/ChartsRotationAxisHighlight.mjs +92 -0
- package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.d.mts +7 -0
- package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.d.ts +7 -0
- package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.js +14 -0
- package/ChartsRadialAxisHighlight/chartsRadialAxisHighlightClasses.mjs +6 -0
- package/ChartsRadialAxisHighlight/index.d.mts +5 -0
- package/ChartsRadialAxisHighlight/index.d.ts +5 -0
- package/ChartsRadialAxisHighlight/index.js +47 -0
- package/ChartsRadialAxisHighlight/index.mjs +4 -0
- package/ChartsRadiusAxis/ChartsRadiusAxis.d.mts +1 -47
- package/ChartsRadiusAxis/ChartsRadiusAxis.d.ts +1 -47
- package/ChartsRadiusAxis/ChartsRadiusAxis.js +20 -16
- package/ChartsRadiusAxis/ChartsRadiusAxis.mjs +21 -15
- package/ChartsRadiusAxis/index.d.mts +3 -2
- package/ChartsRadiusAxis/index.d.ts +3 -2
- package/ChartsRadiusAxis/index.mjs +3 -1
- package/ChartsRotationAxis/ChartsRotationAxis.d.mts +1 -47
- package/ChartsRotationAxis/ChartsRotationAxis.d.ts +1 -47
- package/ChartsRotationAxis/ChartsRotationAxis.js +16 -19
- package/ChartsRotationAxis/ChartsRotationAxis.mjs +17 -18
- package/ChartsRotationAxis/index.d.mts +3 -2
- package/ChartsRotationAxis/index.d.ts +3 -2
- package/ChartsRotationAxis/index.mjs +3 -1
- package/ChartsTooltip/useAxesTooltip.d.mts +1 -1
- package/ChartsTooltip/useAxesTooltip.d.ts +1 -1
- package/ChartsTooltip/useAxesTooltip.js +11 -2
- package/ChartsTooltip/useAxesTooltip.mjs +12 -3
- package/ChartsXAxis/useAxisTicksProps.d.mts +162 -81
- package/ChartsXAxis/useAxisTicksProps.d.ts +162 -81
- package/ChartsYAxis/useAxisTicksProps.d.mts +162 -81
- package/ChartsYAxis/useAxisTicksProps.d.ts +162 -81
- package/LICENSE +2 -0
- package/LineChart/LineChart.js +2 -913
- package/LineChart/LineChart.mjs +2 -913
- package/LineChart/seriesConfig/curveEvaluation.d.mts +19 -1
- package/LineChart/seriesConfig/curveEvaluation.d.ts +19 -1
- package/LineChart/seriesConfig/curveEvaluation.js +132 -0
- package/LineChart/seriesConfig/curveEvaluation.mjs +131 -0
- package/LineChart/seriesConfig/getSeriesWithDefaultValues.js +2 -1
- package/LineChart/seriesConfig/getSeriesWithDefaultValues.mjs +2 -1
- package/LineChart/seriesConfig/seriesProcessor.js +4 -0
- package/LineChart/seriesConfig/seriesProcessor.mjs +4 -0
- package/LineChart/useAreaPlotData.js +4 -0
- package/LineChart/useAreaPlotData.mjs +4 -0
- package/LineChart/useLinePlotData.js +2 -0
- package/LineChart/useLinePlotData.mjs +2 -0
- package/LineChart/useMarkPlotData.js +2 -0
- package/LineChart/useMarkPlotData.mjs +2 -0
- package/RadarChart/RadarGrid/CircularRadarStripes.js +2 -3
- package/RadarChart/RadarGrid/CircularRadarStripes.mjs +2 -3
- package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.js +1 -1
- package/RadarChart/RadarSeriesPlot/useRadarRotationIndex.mjs +2 -2
- package/ScatterChart/FocusedScatterMark.js +10 -24
- package/ScatterChart/FocusedScatterMark.mjs +10 -24
- package/ScatterChart/HighlightedScatterMark.d.mts +11 -0
- package/ScatterChart/HighlightedScatterMark.d.ts +11 -0
- package/ScatterChart/HighlightedScatterMark.js +68 -0
- package/ScatterChart/HighlightedScatterMark.mjs +62 -0
- package/ScatterChart/ScatterChart.d.mts +1 -2
- package/ScatterChart/ScatterChart.d.ts +1 -2
- package/ScatterChart/ScatterChart.js +2 -913
- package/ScatterChart/ScatterChart.mjs +2 -913
- package/ScatterChart/index.d.mts +1 -0
- package/ScatterChart/index.d.ts +1 -0
- package/ScatterChart/index.js +12 -0
- package/ScatterChart/index.mjs +1 -0
- package/ScatterChart/scatterClasses.d.mts +3 -1
- package/ScatterChart/scatterClasses.d.ts +3 -1
- package/ScatterChart/scatterClasses.js +3 -2
- package/ScatterChart/scatterClasses.mjs +3 -2
- package/ScatterChart/useScatterChartProps.js +3 -1
- package/ScatterChart/useScatterChartProps.mjs +3 -1
- package/ScatterChart/useScatterItemPosition.d.mts +16 -0
- package/ScatterChart/useScatterItemPosition.d.ts +16 -0
- package/ScatterChart/useScatterItemPosition.js +47 -0
- package/ScatterChart/useScatterItemPosition.mjs +41 -0
- package/SparkLineChart/SparkLineChart.js +2 -913
- package/SparkLineChart/SparkLineChart.mjs +2 -913
- package/hooks/useAxis.d.mts +3 -3
- package/hooks/useAxis.d.ts +3 -3
- package/hooks/useAxisSystem.d.mts +1 -1
- package/hooks/useAxisSystem.d.ts +1 -1
- package/hooks/useAxisSystem.js +1 -1
- package/hooks/useAxisSystem.mjs +1 -1
- package/index.d.mts +2 -0
- package/index.d.ts +2 -0
- package/index.js +25 -1
- package/index.mjs +3 -1
- package/internals/getRingPath.d.mts +16 -0
- package/internals/getRingPath.d.ts +16 -0
- package/internals/getRingPath.js +39 -0
- package/internals/getRingPath.mjs +33 -0
- package/internals/index.d.mts +8 -1
- package/internals/index.d.ts +8 -1
- package/internals/index.js +67 -0
- package/internals/index.mjs +7 -1
- package/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.js +4 -2
- package/internals/plugins/corePlugins/useChartInteractionListener/useChartInteractionListener.mjs +4 -2
- package/internals/plugins/corePlugins/useChartSeriesConfig/types/polarExtremumGetter.types.d.mts +2 -2
- package/internals/plugins/corePlugins/useChartSeriesConfig/types/polarExtremumGetter.types.d.ts +2 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.d.mts +3 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/createZoomLookup.d.ts +3 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.mts +1 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/index.d.ts +1 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/index.js +8 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/index.mjs +1 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.mts +6 -1
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +6 -1
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +48 -36
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.mjs +47 -36
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.mts +77 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +77 -3
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianHighlight.selectors.d.mts +152 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianHighlight.selectors.d.ts +152 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.mts +2 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +2 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.d.mts +4 -7
- package/internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.d.ts +4 -7
- package/internals/plugins/featurePlugins/useChartPolarAxis/defaultizeAxis.d.mts +3 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/defaultizeAxis.d.ts +3 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisExtremum.d.mts +2 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisExtremum.d.ts +2 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.d.mts +7 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.d.ts +7 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.js +56 -6
- package/internals/plugins/featurePlugins/useChartPolarAxis/getAxisIndex.mjs +54 -5
- package/internals/plugins/featurePlugins/useChartPolarAxis/index.d.mts +2 -1
- package/internals/plugins/featurePlugins/useChartPolarAxis/index.d.ts +2 -1
- package/internals/plugins/featurePlugins/useChartPolarAxis/index.js +12 -0
- package/internals/plugins/featurePlugins/useChartPolarAxis/index.mjs +2 -1
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +1 -1
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.mjs +2 -2
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.mts +4 -4
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.ts +4 -4
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.mts +3 -3
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +3 -3
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.mts +23 -3
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +23 -3
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.js +73 -12
- package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.mjs +74 -12
- package/models/axis.d.mts +79 -31
- package/models/axis.d.ts +79 -31
- package/models/axis.js +5 -1
- package/models/axis.mjs +5 -1
- package/models/seriesType/line.d.mts +6 -6
- package/models/seriesType/line.d.ts +6 -6
- 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
|
-
} =
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
} =
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
128
|
+
}, getLabelTextAnchors(labelDx, labelDy, tickLabelPosition), {
|
|
130
129
|
children: formattedValue
|
|
131
130
|
}))]
|
|
132
131
|
}, index);
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export {
|
|
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 {
|
|
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";
|
|
@@ -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 {
|