UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

47 lines (46 loc) 1.4 kB
"use strict"; 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 }; }