@mui/x-charts
Version:
The community edition of MUI X Charts components.
65 lines (64 loc) • 2.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRadarAxisHighlight = useRadarAxisHighlight;
var _useAxis = require("../../hooks/useAxis");
var _useRadarSeries = require("../../hooks/useRadarSeries");
var _useScale = require("../../hooks/useScale");
var _useSelector = require("../../internals/store/useSelector");
var _useStore = require("../../internals/store/useStore");
var _useChartContext = require("../../context/ChartProvider/useChartContext");
var _useChartPolarAxis = require("../../internals/plugins/featurePlugins/useChartPolarAxis");
var _useChartPolarInteraction = require("../../internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors");
function useRadarAxisHighlight() {
const radarSeries = (0, _useRadarSeries.useRadarSeries)();
const rotationScale = (0, _useScale.useRotationScale)();
const {
radiusAxis,
radiusAxisIds
} = (0, _useAxis.useRadiusAxes)();
const {
instance
} = (0, _useChartContext.useChartContext)();
const store = (0, _useStore.useStore)();
const rotationAxisIndex = (0, _useSelector.useSelector)(store, _useChartPolarInteraction.selectorChartsInteractionRotationAxisIndex);
const rotationAxisValue = (0, _useSelector.useSelector)(store, _useChartPolarInteraction.selectorChartsInteractionRotationAxisValue);
const center = (0, _useSelector.useSelector)(store, _useChartPolarAxis.selectorChartPolarCenter);
const highlightedIndex = rotationAxisIndex;
if (!rotationScale) {
return null;
}
if (highlightedIndex === null || highlightedIndex === -1) {
return null;
}
if (radarSeries === undefined || radarSeries.length === 0) {
return null;
}
const metric = radiusAxisIds[highlightedIndex];
const radiusScale = radiusAxis[metric].scale;
const angle = rotationScale(rotationAxisValue);
const radius = radiusScale.range()[1];
return {
center,
radius,
instance,
highlightedIndex,
highlightedMetric: metric,
highlightedAngle: angle,
series: radarSeries,
points: radarSeries.map(series => {
const value = series.data[highlightedIndex];
const r = radiusScale(value);
const [x, y] = instance.polar2svg(r, angle);
const returnedValue = {
x,
y,
r,
angle,
value
};
return returnedValue;
})
};
}
;