@mui/x-charts
Version:
The community edition of MUI X Charts components.
47 lines (46 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useScatterItemPosition = useScatterItemPosition;
var _hooks = require("../hooks");
/**
* Resolves a scatter item identifier to its on-screen position and the owning
* series. Shared by `FocusedScatterMark`, `HighlightedScatterMark`, and other
* overlay components that need to draw an SVG element at a specific scatter point.
*
* Returns `null` if the identifier is missing, the identifier doesn't point to
* a scatter series, or the referenced point can't be resolved.
*/
function useScatterItemPosition(item) {
const scatterSeries = (0, _hooks.useScatterSeriesContext)();
const {
xAxis,
xAxisIds
} = (0, _hooks.useXAxes)();
const {
yAxis,
yAxisIds
} = (0, _hooks.useYAxes)();
if (!item || !scatterSeries) {
return null;
}
const series = scatterSeries.series[item.seriesId];
if (!series || series.hidden) {
return null;
}
const scatterPoint = series.data[item.dataIndex];
if (!scatterPoint) {
return null;
}
const xAxisId = series.xAxisId ?? xAxisIds[0];
const yAxisId = series.yAxisId ?? yAxisIds[0];
const cx = (0, _hooks.getValueToPositionMapper)(xAxis[xAxisId].scale)(scatterPoint.x);
const cy = (0, _hooks.getValueToPositionMapper)(yAxis[yAxisId].scale)(scatterPoint.y);
return {
cx,
cy,
series,
scatterPoint
};
}