UNPKG

@codeurs/react-simple-wheel-picker

Version:

- This package is simple and flexible wheel picker for React - This package move like same as native applications picker - This package support accessibility

46 lines 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var easeOutCubic = function (t, b, c, d) { t /= d; t--; return c * (t * t * t + 1) + b; }; exports.setScrollAnimation = function (root, currentPosition, changingValue) { var start = 1; var isStop = false; var animation = function () { if (isStop) return; var offset = easeOutCubic(start / 100, currentPosition, changingValue, 0.1); requestAnimationFrame(animation); root.scrollTo(0, offset); var target = currentPosition + changingValue; start += 1; isStop = offset === target; }; return animation; }; var useScrollAnimation = function (root, refs) { var timer = react_1.useRef(null); var onScroll = function (data, itemID) { if (timer.current) { clearTimeout(timer.current); } var firstID = data[0].id; var basicElm = refs[firstID].current; var currentElm = refs[itemID || firstID].current; var _root = root.current; if (_root && basicElm && currentElm) { timer.current = setTimeout(function () { var basicOffsetTop = basicElm.offsetTop; var targetOffsetTop = currentElm.offsetTop - basicOffsetTop; var animation = exports.setScrollAnimation(_root, _root.scrollTop, targetOffsetTop - _root.scrollTop); requestAnimationFrame(animation); }, 500); } }; return onScroll; }; exports.default = useScrollAnimation; //# sourceMappingURL=useScrollAnimation.js.map