ng-lazyload-image-angular-universal
Version:
This is an extension from ng-lazyload-image, made available for Angular Universal.
102 lines • 8.43 kB
JavaScript
/**
* @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