in src/utils/Axis.js [122:160]
export function getMouseAxisOptions(axisType, event, scale) {
invariant(
axisType === 'x' || axisType === 'y',
'axisType should be either x or y.',
);
const axisBoundingBox = event.currentTarget.getBoundingClientRect();
const scaleType = inferScaleType(scale);
const outerY = Math.round(event.clientY - axisBoundingBox.top);
const outerX = Math.round(event.clientX - axisBoundingBox.left);
const isYAxis = axisType === 'y';
const mousePos = isYAxis ? outerY : outerX;
const boundingBoxLimit = isYAxis
? axisBoundingBox.height
: axisBoundingBox.width;
const value = !inRange(mousePos, 0, boundingBoxLimit)
? null
: scaleType === 'ordinal'
? invertPointScale(scale, mousePos)
: scale.invert(mousePos);
const mouseOptions = {
event,
outerX,
outerY,
};
if (isYAxis) {
mouseOptions.yValue = value;
mouseOptions.yScale = scale;
} else {
mouseOptions.xValue = value;
mouseOptions.xScale = scale;
}
return mouseOptions;
}