smooth-scrollbar
Version:
Customize scrollbar in modern browsers with smooth scrolling experience.
13 lines • 1.05 kB
JavaScript
import clamp from 'lodash.clamp';
export function scrollIntoView(scrollbar, elem, _a) {
var _b = _a === void 0 ? {} : _a, _c = _b.alignToTop, alignToTop = _c === void 0 ? true : _c, _d = _b.onlyScrollIfNeeded, onlyScrollIfNeeded = _d === void 0 ? false : _d, _e = _b.offsetTop, offsetTop = _e === void 0 ? 0 : _e, _f = _b.offsetLeft, offsetLeft = _f === void 0 ? 0 : _f, _g = _b.offsetBottom, offsetBottom = _g === void 0 ? 0 : _g;
var containerEl = scrollbar.containerEl, bounding = scrollbar.bounding, offset = scrollbar.offset, limit = scrollbar.limit;
if (!elem || !containerEl.contains(elem))
return;
var targetBounding = elem.getBoundingClientRect();
if (onlyScrollIfNeeded && scrollbar.isVisible(elem))
return;
var delta = alignToTop ? targetBounding.top - bounding.top - offsetTop : targetBounding.bottom - bounding.bottom + offsetBottom;
scrollbar.setMomentum(targetBounding.left - bounding.left - offsetLeft, clamp(delta, -offset.y, limit.y - offset.y));
}
//# sourceMappingURL=scroll-into-view.js.map