ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
30 lines (26 loc) • 893 B
JavaScript
export default (function (isScrollAtTop, isScrollAtBottom) {
// Do lock for a wheel when scrolling
var lock = false;
var lockTimeout = null;
function lockScroll() {
clearTimeout(lockTimeout);
lock = true;
lockTimeout = setTimeout(function () {
lock = false;
}, 50);
}
return function (deltaY) {
var smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var originScroll = // Pass origin wheel when on the top
deltaY < 0 && isScrollAtTop.value || // Pass origin wheel when on the bottom
deltaY > 0 && isScrollAtBottom.value;
if (smoothOffset && originScroll) {
// No need lock anymore when it's smooth offset from touchMove interval
clearTimeout(lockTimeout);
lock = false;
} else if (!originScroll || lock) {
lockScroll();
}
return !lock && originScroll;
};
});