export function getMouseAxisOptions()

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;
}