overscroll
Version:
45 lines (35 loc) • 1.72 kB
JavaScript
;
exports.__esModule = true;
exports.handleInit = exports.handleScroll = exports.handleAfterScroll = exports.handleBeforeScroll = exports.handleDestroy = undefined;
exports.handler = handler;
var _object = require('object.pick');
var _object2 = _interopRequireDefault(_object);
var _compose = require('./utils/compose');
var _compose2 = _interopRequireDefault(_compose);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var noop = function noop() {};
function handler(name) {
return function (scope) {
var mode = scope.mode;
var wrap = function wrap(func) {
return function () {
func.call(scope.target, (0, _object2['default'])(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 (0, _compose2['default'])(function (callback) {
scope.handleCache[name] = scope.handleCache[name] !== noop ? (0, _compose2['default'])(callback, scope.handleCache[name]) : callback;
}, wrap);
};
}
var handleDestroy = exports.handleDestroy = handler('onDestroy');
var handleBeforeScroll = exports.handleBeforeScroll = handler('onBeforeScroll');
var handleAfterScroll = exports.handleAfterScroll = handler('onAfterScroll');
var handleScroll = exports.handleScroll = handler('onScroll');
var handleInit = exports.handleInit = handler('onInit');