UNPKG

ng-lazyload-image-angular-universal

Version:

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

102 lines 8.43 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Observable } from 'rxjs'; import { cssClassNames, hasCssClassName, removeCssClassName, addCssClassName, isImageElement, isChildOfPicture, setSourcesToLazy, setImage, setImageAndSourcesToError, setImageAndSourcesToLazy, setImageAndSourcesToDefault, } from '../util'; /** @type {?} */ const end = (/** * @param {?} __0 * @return {?} */ ({ element }) => addCssClassName(element, cssClassNames.loaded)); const ɵ0 = end; /** @type {?} */ export const loadImage = (/** * @param {?} __0 * @return {?} */ ({ element, useSrcset, imagePath }) => { /** @type {?} */ let img; if (isImageElement(element) && isChildOfPicture(element)) { /** @type {?} */ const parentClone = (/** @type {?} */ (element.parentNode.cloneNode(true))); img = parentClone.getElementsByTagName('img')[0]; setSourcesToLazy(img); setImage(img, imagePath, useSrcset); } else { img = new Image(); if (isImageElement(element) && element.sizes) { img.sizes = element.sizes; } if (useSrcset) { img.srcset = imagePath; } else { img.src = imagePath; } } return Observable.create((/** * @param {?} observer * @return {?} */ observer => { img.onload = (/** * @return {?} */ () => { observer.next(imagePath); observer.complete(); }); img.onerror = (/** * @param {?} err * @return {?} */ err => { observer.error(null); }); })); }); /** @type {?} */ const setErrorImage = (/** * @param {?} __0 * @return {?} */ ({ element, errorImagePath, useSrcset }) => { setImageAndSourcesToError(element, errorImagePath, useSrcset); addCssClassName(element, cssClassNames.failed); }); const ɵ1 = setErrorImage; /** @type {?} */ const setLoadedImage = (/** * @param {?} __0 * @return {?} */ ({ element, imagePath, useSrcset }) => { setImageAndSourcesToLazy(element, imagePath, useSrcset); }); const ɵ2 = setLoadedImage; /** @type {?} */ const setup = (/** * @param {?} __0 * @return {?} */ ({ element, defaultImagePath, useSrcset }) => { setImageAndSourcesToDefault(element, defaultImagePath, useSrcset); if (hasCssClassName(element, cssClassNames.loaded)) { removeCssClassName(element, cssClassNames.loaded); } }); const ɵ3 = setup; /** @type {?} */ export const sharedPreset = { finally: end, loadImage, setErrorImage, setLoadedImage, setup }; export { ɵ0, ɵ1, ɵ2, ɵ3 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbGF6eWxvYWQtaW1hZ2UtYW5ndWxhci11bml2ZXJzYWwvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkLXByZXNldC9wcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUNMLGFBQWEsRUFDYixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QiwyQkFBMkIsR0FDNUIsTUFBTSxTQUFTLENBQUM7O01BU1gsR0FBRzs7OztBQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7OztBQUV0RixNQUFNLE9BQU8sU0FBUzs7OztBQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFOztRQUN0RSxHQUFxQjtJQUN6QixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRTs7Y0FDbEQsV0FBVyxHQUFHLG1CQUFBLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFzQjtRQUM1RSxHQUFHLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3JDO1NBQU07UUFDTCxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDeEI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO1NBQ3JCO0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQyxNQUFNOzs7O0lBQUMsUUFBUSxDQUFDLEVBQUU7UUFDbEMsR0FBRyxDQUFDLE1BQU07OztRQUFHLEdBQUcsRUFBRTtZQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUEsQ0FBQztRQUNGLEdBQUcsQ0FBQyxPQUFPOzs7O1FBQUcsR0FBRyxDQUFDLEVBQUU7WUFDbEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUEsQ0FBQztJQUNKLENBQUMsRUFBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBOztNQUVLLGFBQWE7Ozs7QUFBb0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNoRix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELGVBQWUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQTs7O01BRUssY0FBYzs7OztBQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzdFLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFBOzs7TUFFSyxLQUFLOzs7O0FBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2xFLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2xELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkQ7QUFDSCxDQUFDLENBQUE7OztBQUVELE1BQU0sT0FBTyxZQUFZLEdBQUc7SUFDMUIsT0FBTyxFQUFFLEdBQUc7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLGNBQWM7SUFDZCxLQUFLO0NBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjc3NDbGFzc05hbWVzLFxuICBoYXNDc3NDbGFzc05hbWUsXG4gIHJlbW92ZUNzc0NsYXNzTmFtZSxcbiAgYWRkQ3NzQ2xhc3NOYW1lLFxuICBpc0ltYWdlRWxlbWVudCxcbiAgaXNDaGlsZE9mUGljdHVyZSxcbiAgc2V0U291cmNlc1RvTGF6eSxcbiAgc2V0SW1hZ2UsXG4gIHNldEltYWdlQW5kU291cmNlc1RvRXJyb3IsXG4gIHNldEltYWdlQW5kU291cmNlc1RvTGF6eSxcbiAgc2V0SW1hZ2VBbmRTb3VyY2VzVG9EZWZhdWx0LFxufSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7XG4gIEZpbmFsbHlGbixcbiAgTG9hZEltYWdlRm4sXG4gIFNldEVycm9ySW1hZ2VGbixcbiAgU2V0TG9hZGVkSW1hZ2VGbixcbiAgU2V0dXBGblxufSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGVuZDogRmluYWxseUZuID0gKHsgZWxlbWVudCB9KSA9PiBhZGRDc3NDbGFzc05hbWUoZWxlbWVudCwgY3NzQ2xhc3NOYW1lcy5sb2FkZWQpO1xuXG5leHBvcnQgY29uc3QgbG9hZEltYWdlOiBMb2FkSW1hZ2VGbiA9ICh7IGVsZW1lbnQsIHVzZVNyY3NldCwgaW1hZ2VQYXRoIH0pID0+IHtcbiAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudDtcbiAgaWYgKGlzSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmIGlzQ2hpbGRPZlBpY3R1cmUoZWxlbWVudCkpIHtcbiAgICBjb25zdCBwYXJlbnRDbG9uZSA9IGVsZW1lbnQucGFyZW50Tm9kZS5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTFBpY3R1cmVFbGVtZW50O1xuICAgIGltZyA9IHBhcmVudENsb25lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKVswXTtcbiAgICBzZXRTb3VyY2VzVG9MYXp5KGltZyk7XG4gICAgc2V0SW1hZ2UoaW1nLCBpbWFnZVBhdGgsIHVzZVNyY3NldCk7XG4gIH0gZWxzZSB7XG4gICAgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgaWYgKGlzSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmIGVsZW1lbnQuc2l6ZXMpIHtcbiAgICAgIGltZy5zaXplcyA9IGVsZW1lbnQuc2l6ZXM7XG4gICAgfVxuICAgIGlmICh1c2VTcmNzZXQpIHtcbiAgICAgIGltZy5zcmNzZXQgPSBpbWFnZVBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGltZy5zcmMgPSBpbWFnZVBhdGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG9ic2VydmVyID0+IHtcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIubmV4dChpbWFnZVBhdGgpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9O1xuICAgIGltZy5vbmVycm9yID0gZXJyID0+IHtcbiAgICAgIG9ic2VydmVyLmVycm9yKG51bGwpO1xuICAgIH07XG4gIH0pO1xufTtcblxuY29uc3Qgc2V0RXJyb3JJbWFnZTogU2V0RXJyb3JJbWFnZUZuID0gKHsgZWxlbWVudCwgZXJyb3JJbWFnZVBhdGgsIHVzZVNyY3NldCB9KSA9PiB7XG4gIHNldEltYWdlQW5kU291cmNlc1RvRXJyb3IoZWxlbWVudCwgZXJyb3JJbWFnZVBhdGgsIHVzZVNyY3NldCk7XG4gIGFkZENzc0NsYXNzTmFtZShlbGVtZW50LCBjc3NDbGFzc05hbWVzLmZhaWxlZCk7XG59O1xuXG5jb25zdCBzZXRMb2FkZWRJbWFnZTogU2V0TG9hZGVkSW1hZ2VGbiA9ICh7IGVsZW1lbnQsIGltYWdlUGF0aCwgdXNlU3Jjc2V0IH0pID0+IHtcbiAgc2V0SW1hZ2VBbmRTb3VyY2VzVG9MYXp5KGVsZW1lbnQsIGltYWdlUGF0aCwgdXNlU3Jjc2V0KTtcbn07XG5cbmNvbnN0IHNldHVwOiBTZXR1cEZuID0gKHsgZWxlbWVudCwgZGVmYXVsdEltYWdlUGF0aCwgdXNlU3Jjc2V0IH0pID0+IHtcbiAgc2V0SW1hZ2VBbmRTb3VyY2VzVG9EZWZhdWx0KGVsZW1lbnQsIGRlZmF1bHRJbWFnZVBhdGgsIHVzZVNyY3NldCk7XG5cbiAgaWYgKGhhc0Nzc0NsYXNzTmFtZShlbGVtZW50LCBjc3NDbGFzc05hbWVzLmxvYWRlZCkpIHtcbiAgICByZW1vdmVDc3NDbGFzc05hbWUoZWxlbWVudCwgY3NzQ2xhc3NOYW1lcy5sb2FkZWQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2hhcmVkUHJlc2V0ID0ge1xuICBmaW5hbGx5OiBlbmQsXG4gIGxvYWRJbWFnZSxcbiAgc2V0RXJyb3JJbWFnZSxcbiAgc2V0TG9hZGVkSW1hZ2UsXG4gIHNldHVwXG59O1xuIl19