UNPKG

@data-ui/sparkline

Version:

React + d3 library for creating sparklines

23 lines 843 B
import { bisector } from 'd3-array'; import localPoint from '@vx/event/build/localPoint'; export default function findClosestDatum(_ref) { var data = _ref.data, getX = _ref.getX, xScale = _ref.xScale, event = _ref.event, _ref$marginLeft = _ref.marginLeft, marginLeft = _ref$marginLeft === void 0 ? 0 : _ref$marginLeft; if (!event || !event.target || !event.target.ownerSVGElement) return {}; var bisect = bisector(getX).right; var svgCoords = localPoint(event.target.ownerSVGElement, event); var x = svgCoords.x - marginLeft; var dataX = xScale.invert(x); var index = bisect(data, dataX, 1); var d0 = data[index - 1]; var d1 = data[index]; var d = !d0 || Math.abs(dataX - getX(d0)) > Math.abs(dataX - getX(d1)) ? d1 : d0; return { datum: d, index: d === d0 ? index - 1 : index }; }