@mui/x-charts
Version:
The community edition of MUI X Charts components.
44 lines (43 loc) • 1.48 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useTheme } from '@mui/material/styles';
import { useFocusedItem } from "../hooks/useFocusedItem.js";
import { getValueToPositionMapper, useScatterSeriesContext, useXAxes, useYAxes } from "../hooks/index.js";
import { jsx as _jsx } from "react/jsx-runtime";
export function FocusedScatterMark(props) {
const theme = useTheme();
const focusedItem = useFocusedItem();
const scatterSeries = useScatterSeriesContext();
const {
xAxis,
xAxisIds
} = useXAxes();
const {
yAxis,
yAxisIds
} = useYAxes();
if (focusedItem === null || focusedItem.type !== 'scatter' || !scatterSeries) {
return null;
}
const series = scatterSeries?.series[focusedItem.seriesId];
const xAxisId = series.xAxisId ?? xAxisIds[0];
const yAxisId = series.yAxisId ?? yAxisIds[0];
const getXPosition = getValueToPositionMapper(xAxis[xAxisId].scale);
const getYPosition = getValueToPositionMapper(yAxis[yAxisId].scale);
const scatterPoint = series.data[focusedItem.dataIndex];
const x = getXPosition(scatterPoint.x);
const y = getYPosition(scatterPoint.y);
const size = series.markerSize + 3;
return /*#__PURE__*/_jsx("rect", _extends({
fill: "none",
stroke: (theme.vars ?? theme).palette.text.primary,
strokeWidth: 2,
x: x - size,
y: y - size,
width: 2 * size,
height: 2 * size,
rx: 3,
ry: 3
}, props));
}