@mui/x-charts
Version:
The community edition of MUI X Charts components.
48 lines (47 loc) • 1.1 kB
JavaScript
'use client';
import { getSVGPoint } from "../../../getSVGPoint.js";
export const useChartItemClick = ({
params,
store,
instance
}) => {
const {
onItemClick
} = params;
if (!onItemClick) {
return {
instance: {}
};
}
const getItemPosition = event => {
const svgPoint = getSVGPoint(event?.currentTarget, event);
if (!instance.isPointInside(svgPoint.x, svgPoint.y)) {
return undefined;
}
let item = undefined;
for (const seriesType of Object.keys(store.state.series.seriesConfig)) {
// @ts-ignore The type inference for store.state does not support generic yet
item = store.state.series.seriesConfig[seriesType].getItemAtPosition?.(store.state, {
x: svgPoint.x,
y: svgPoint.y
});
if (item) {
return item;
}
}
return item;
};
return {
instance: {
handleClick: event => {
const item = getItemPosition(event);
if (item !== undefined) {
onItemClick(event, item);
}
}
}
};
};
useChartItemClick.params = {
onItemClick: true
};