UNPKG

@data-ui/sparkline

Version:

React + d3 library for creating sparklines

32 lines (27 loc) 1.06 kB
"use strict"; exports.__esModule = true; exports.default = findClosestDatum; var _d3Array = require("d3-array"); var _localPoint = _interopRequireDefault(require("@vx/event/build/localPoint")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 = (0, _d3Array.bisector)(getX).right; var svgCoords = (0, _localPoint.default)(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 }; }