UNPKG

@bigfishtv/cockpit

Version:

56 lines (41 loc) 1.53 kB
'use strict'; exports.__esModule = true; exports.scroll = undefined; exports.addListener = addListener; exports.removeListener = removeListener; var _jquery = require('jquery'); var _jquery2 = _interopRequireDefault(_jquery); var _throttle2 = require('lodash/throttle'); var _throttle3 = _interopRequireDefault(_throttle2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // @refactor to not use jquery and maybe move this to Section component // and add multiple listeners directly to document? is this method slower/faster? var $window = (0, _jquery2.default)(window); var $document = (0, _jquery2.default)(document); var listeners = []; var scroll = exports.scroll = $document.scrollTop(); function addListener(func) { if (listeners.indexOf(func) < 0) listeners.push(func); } function removeListener(func) { var index = listeners.indexOf(func); if (index >= 0) listeners.splice(index, 1); } function handleScroll() { exports.scroll = scroll = $document.scrollTop(); var windowHeight = $window.height(); for (var _iterator = listeners, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var func = _ref; func(scroll, windowHeight); } } $document.on('scroll', (0, _throttle3.default)(handleScroll, 1000 / 20));