@bigfishtv/cockpit
Version:
56 lines (41 loc) • 1.53 kB
JavaScript
;
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));