UNPKG

ng-lazyload-image-angular-universal

Version:

This is an extension from ng-lazyload-image, made available for Angular Universal.

62 lines 5.87 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { empty, Observable } from 'rxjs'; import { sampleTime, share, startWith } from 'rxjs/operators'; import { isWindowDefined } from '../util'; /** @type {?} */ var scrollListeners = new WeakMap(); /** * @param {?} obs * @param {?=} scheduler * @return {?} */ export function sampleObservable(obs, scheduler) { return obs.pipe(sampleTime(100, scheduler), share(), startWith('')); } // Only create one scroll listener per target and share the observable. // Typical, there will only be one observable per application /** @type {?} */ export var getScrollListener = (/** * @param {?} scrollTarget * @return {?} */ function (scrollTarget) { if (!scrollTarget || typeof scrollTarget.addEventListener !== 'function') { if (isWindowDefined()) { console.warn('`addEventListener` on ' + scrollTarget + ' (scrollTarget) is not a function. Skipping this target'); } return empty(); } if (scrollListeners.has(scrollTarget)) { return scrollListeners.get(scrollTarget); } /** @type {?} */ var srollEvent = Observable.create((/** * @param {?} observer * @return {?} */ function (observer) { /** @type {?} */ var eventName = 'scroll'; /** @type {?} */ var handler = (/** * @param {?} event * @return {?} */ function (event) { return observer.next(event); }); /** @type {?} */ var options = { passive: true, capture: false }; scrollTarget.addEventListener(eventName, handler, options); return (/** * @return {?} */ function () { return scrollTarget.removeEventListener(eventName, handler, options); }); })); /** @type {?} */ var listener = sampleObservable(srollEvent); scrollListeners.set(scrollTarget, listener); return listener; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbGF6eWxvYWQtaW1hZ2UtYW5ndWxhci11bml2ZXJzYWwvIiwic291cmNlcyI6WyJsaWIvc2Nyb2xsLXByZXNldC9zY3JvbGwtbGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7O0lBRXBDLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBd0I7Ozs7OztBQUUzRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBb0IsRUFBRSxTQUFlO0lBQ3BFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FDYixVQUFVLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUMxQixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsRUFBRSxDQUFDLENBQ2QsQ0FBQztBQUNKLENBQUM7Ozs7QUFJRCxNQUFNLEtBQU8saUJBQWlCOzs7O0FBQUcsVUFBQyxZQUFZO0lBQzVDLElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxZQUFZLENBQUMsZ0JBQWdCLEtBQUssVUFBVSxFQUFFO1FBQ3hFLElBQUksZUFBZSxFQUFFLEVBQUU7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxZQUFZLEdBQUcseURBQXlELENBQUMsQ0FBQztTQUNuSDtRQUNELE9BQU8sS0FBSyxFQUFFLENBQUM7S0FDaEI7SUFDRCxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDckMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzFDOztRQUVLLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTTs7OztJQUFDLFVBQUEsUUFBUTs7WUFDckMsU0FBUyxHQUFHLFFBQVE7O1lBQ3BCLE9BQU87Ozs7UUFBRyxVQUFBLEtBQUssSUFBSSxPQUFBLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQXBCLENBQW9CLENBQUE7O1lBQ3ZDLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtRQUNqRCxZQUFZLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRDs7O1FBQU8sY0FBTSxPQUFBLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUE3RCxDQUE2RCxFQUFDO0lBQzdFLENBQUMsRUFBQzs7UUFFSSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO0lBQzdDLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzYW1wbGVUaW1lLCBzaGFyZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNXaW5kb3dEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmNvbnN0IHNjcm9sbExpc3RlbmVycyA9IG5ldyBXZWFrTWFwPGFueSwgT2JzZXJ2YWJsZTxhbnk+PigpO1xuXG5leHBvcnQgZnVuY3Rpb24gc2FtcGxlT2JzZXJ2YWJsZShvYnM6IE9ic2VydmFibGU8YW55Piwgc2NoZWR1bGVyPzogYW55KSB7XG4gIHJldHVybiBvYnMucGlwZShcbiAgICBzYW1wbGVUaW1lKDEwMCwgc2NoZWR1bGVyKSxcbiAgICBzaGFyZSgpLFxuICAgIHN0YXJ0V2l0aCgnJylcbiAgKTtcbn1cblxuLy8gT25seSBjcmVhdGUgb25lIHNjcm9sbCBsaXN0ZW5lciBwZXIgdGFyZ2V0IGFuZCBzaGFyZSB0aGUgb2JzZXJ2YWJsZS5cbi8vIFR5cGljYWwsIHRoZXJlIHdpbGwgb25seSBiZSBvbmUgb2JzZXJ2YWJsZSBwZXIgYXBwbGljYXRpb25cbmV4cG9ydCBjb25zdCBnZXRTY3JvbGxMaXN0ZW5lciA9IChzY3JvbGxUYXJnZXQpOiBPYnNlcnZhYmxlPEV2ZW50IHwgU3RyaW5nPiA9PiB7XG4gIGlmICghc2Nyb2xsVGFyZ2V0IHx8IHR5cGVvZiBzY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChpc1dpbmRvd0RlZmluZWQoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdgYWRkRXZlbnRMaXN0ZW5lcmAgb24gJyArIHNjcm9sbFRhcmdldCArICcgKHNjcm9sbFRhcmdldCkgaXMgbm90IGEgZnVuY3Rpb24uIFNraXBwaW5nIHRoaXMgdGFyZ2V0Jyk7XG4gICAgfVxuICAgIHJldHVybiBlbXB0eSgpO1xuICB9XG4gIGlmIChzY3JvbGxMaXN0ZW5lcnMuaGFzKHNjcm9sbFRhcmdldCkpIHtcbiAgICByZXR1cm4gc2Nyb2xsTGlzdGVuZXJzLmdldChzY3JvbGxUYXJnZXQpO1xuICB9XG5cbiAgY29uc3Qgc3JvbGxFdmVudCA9IE9ic2VydmFibGUuY3JlYXRlKG9ic2VydmVyID0+IHtcbiAgICBjb25zdCBldmVudE5hbWUgPSAnc2Nyb2xsJztcbiAgICBjb25zdCBoYW5kbGVyID0gZXZlbnQgPT4gb2JzZXJ2ZXIubmV4dChldmVudCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogZmFsc2UgfTtcbiAgICBzY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIHJldHVybiAoKSA9PiBzY3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICB9KTtcblxuICBjb25zdCBsaXN0ZW5lciA9IHNhbXBsZU9ic2VydmFibGUoc3JvbGxFdmVudCk7XG4gIHNjcm9sbExpc3RlbmVycy5zZXQoc2Nyb2xsVGFyZ2V0LCBsaXN0ZW5lcik7XG4gIHJldHVybiBsaXN0ZW5lcjtcbn07XG4iXX0=