UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

44 lines (43 loc) 1.48 kB
'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)); }