UNPKG

overscroll

Version:
33 lines (28 loc) 1.16 kB
import pick from 'object.pick'; import compose from './utils/compose'; var noop = function noop() {}; export function handler(name) { return function (scope) { var mode = scope.mode; var wrap = function wrap(func) { return function () { func.call(scope.target, pick(scope.overscroll, ['scrollTop', 'scrollLeft', 'scrollHeight', 'scrollWidth', 'clientHeight', 'clientWidth'].concat(mode === 'scroll' ? [] : ['section', 'positions']))); }; }; scope.handleCache = scope.handleCache || {}; scope.handleCache[name] = noop; var initialHandler = scope[name] ? scope[name] : noop; scope[name] = function () { scope.handleCache[name](); wrap(initialHandler)(); }; return compose(function (callback) { scope.handleCache[name] = scope.handleCache[name] !== noop ? compose(callback, scope.handleCache[name]) : callback; }, wrap); }; } export var handleDestroy = handler('onDestroy'); export var handleBeforeScroll = handler('onBeforeScroll'); export var handleAfterScroll = handler('onAfterScroll'); export var handleScroll = handler('onScroll'); export var handleInit = handler('onInit');