ng-lazyload-image-angular-universal
Version:
This is an extension from ng-lazyload-image, made available for Angular Universal.
109 lines • 8.74 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 {?} */
var end = (/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var element = _a.element;
return addCssClassName(element, cssClassNames.loaded);
});
var ɵ0 = end;
/** @type {?} */
export var loadImage = (/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var element = _a.element, useSrcset = _a.useSrcset, imagePath = _a.imagePath;
/** @type {?} */
var img;
if (isImageElement(element) && isChildOfPicture(element)) {
/** @type {?} */
var 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 {?}
*/
function (observer) {
img.onload = (/**
* @return {?}
*/
function () {
observer.next(imagePath);
observer.complete();
});
img.onerror = (/**
* @param {?} err
* @return {?}
*/
function (err) {
observer.error(null);
});
}));
});
/** @type {?} */
var setErrorImage = (/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var element = _a.element, errorImagePath = _a.errorImagePath, useSrcset = _a.useSrcset;
setImageAndSourcesToError(element, errorImagePath, useSrcset);
addCssClassName(element, cssClassNames.failed);
});
var ɵ1 = setErrorImage;
/** @type {?} */
var setLoadedImage = (/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var element = _a.element, imagePath = _a.imagePath, useSrcset = _a.useSrcset;
setImageAndSourcesToLazy(element, imagePath, useSrcset);
});
var ɵ2 = setLoadedImage;
/** @type {?} */
var setup = (/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var element = _a.element, defaultImagePath = _a.defaultImagePath, useSrcset = _a.useSrcset;
setImageAndSourcesToDefault(element, defaultImagePath, useSrcset);
if (hasCssClassName(element, cssClassNames.loaded)) {
removeCssClassName(element, cssClassNames.loaded);
}
});
var ɵ3 = setup;
/** @type {?} */
export var sharedPreset = {
finally: end,
loadImage: loadImage,
setErrorImage: setErrorImage,
setLoadedImage: setLoadedImage,
setup: setup
};
export { ɵ0, ɵ1, ɵ2, ɵ3 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctbGF6eWxvYWQtaW1hZ2UtYW5ndWxhci11bml2ZXJzYWwvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkLXByZXNldC9wcmVzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUNMLGFBQWEsRUFDYixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QiwyQkFBMkIsR0FDNUIsTUFBTSxTQUFTLENBQUM7O0lBU1gsR0FBRzs7OztBQUFjLFVBQUMsRUFBVztRQUFULG9CQUFPO0lBQU8sT0FBQSxlQUFlLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFBOUMsQ0FBOEMsQ0FBQTs7O0FBRXRGLE1BQU0sS0FBTyxTQUFTOzs7O0FBQWdCLFVBQUMsRUFBaUM7UUFBL0Isb0JBQU8sRUFBRSx3QkFBUyxFQUFFLHdCQUFTOztRQUNoRSxHQUFxQjtJQUN6QixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRTs7WUFDbEQsV0FBVyxHQUFHLG1CQUFBLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFzQjtRQUM1RSxHQUFHLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3JDO1NBQU07UUFDTCxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDeEI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO1NBQ3JCO0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQyxNQUFNOzs7O0lBQUMsVUFBQSxRQUFRO1FBQy9CLEdBQUcsQ0FBQyxNQUFNOzs7UUFBRztZQUNYLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQSxDQUFDO1FBQ0YsR0FBRyxDQUFDLE9BQU87Ozs7UUFBRyxVQUFBLEdBQUc7WUFDZixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQSxDQUFDO0lBQ0osQ0FBQyxFQUFDLENBQUM7QUFDTCxDQUFDLENBQUE7O0lBRUssYUFBYTs7OztBQUFvQixVQUFDLEVBQXNDO1FBQXBDLG9CQUFPLEVBQUUsa0NBQWMsRUFBRSx3QkFBUztJQUMxRSx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELGVBQWUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQTs7O0lBRUssY0FBYzs7OztBQUFxQixVQUFDLEVBQWlDO1FBQS9CLG9CQUFPLEVBQUUsd0JBQVMsRUFBRSx3QkFBUztJQUN2RSx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQTs7O0lBRUssS0FBSzs7OztBQUFZLFVBQUMsRUFBd0M7UUFBdEMsb0JBQU8sRUFBRSxzQ0FBZ0IsRUFBRSx3QkFBUztJQUM1RCwyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFbEUsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNsRCxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ25EO0FBQ0gsQ0FBQyxDQUFBOzs7QUFFRCxNQUFNLEtBQU8sWUFBWSxHQUFHO0lBQzFCLE9BQU8sRUFBRSxHQUFHO0lBQ1osU0FBUyxXQUFBO0lBQ1QsYUFBYSxlQUFBO0lBQ2IsY0FBYyxnQkFBQTtJQUNkLEtBQUssT0FBQTtDQUNOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY3NzQ2xhc3NOYW1lcyxcbiAgaGFzQ3NzQ2xhc3NOYW1lLFxuICByZW1vdmVDc3NDbGFzc05hbWUsXG4gIGFkZENzc0NsYXNzTmFtZSxcbiAgaXNJbWFnZUVsZW1lbnQsXG4gIGlzQ2hpbGRPZlBpY3R1cmUsXG4gIHNldFNvdXJjZXNUb0xhenksXG4gIHNldEltYWdlLFxuICBzZXRJbWFnZUFuZFNvdXJjZXNUb0Vycm9yLFxuICBzZXRJbWFnZUFuZFNvdXJjZXNUb0xhenksXG4gIHNldEltYWdlQW5kU291cmNlc1RvRGVmYXVsdCxcbn0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge1xuICBGaW5hbGx5Rm4sXG4gIExvYWRJbWFnZUZuLFxuICBTZXRFcnJvckltYWdlRm4sXG4gIFNldExvYWRlZEltYWdlRm4sXG4gIFNldHVwRm5cbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBlbmQ6IEZpbmFsbHlGbiA9ICh7IGVsZW1lbnQgfSkgPT4gYWRkQ3NzQ2xhc3NOYW1lKGVsZW1lbnQsIGNzc0NsYXNzTmFtZXMubG9hZGVkKTtcblxuZXhwb3J0IGNvbnN0IGxvYWRJbWFnZTogTG9hZEltYWdlRm4gPSAoeyBlbGVtZW50LCB1c2VTcmNzZXQsIGltYWdlUGF0aCB9KSA9PiB7XG4gIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQ7XG4gIGlmIChpc0ltYWdlRWxlbWVudChlbGVtZW50KSAmJiBpc0NoaWxkT2ZQaWN0dXJlKGVsZW1lbnQpKSB7XG4gICAgY29uc3QgcGFyZW50Q2xvbmUgPSBlbGVtZW50LnBhcmVudE5vZGUuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxQaWN0dXJlRWxlbWVudDtcbiAgICBpbWcgPSBwYXJlbnRDbG9uZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF07XG4gICAgc2V0U291cmNlc1RvTGF6eShpbWcpO1xuICAgIHNldEltYWdlKGltZywgaW1hZ2VQYXRoLCB1c2VTcmNzZXQpO1xuICB9IGVsc2Uge1xuICAgIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIGlmIChpc0ltYWdlRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50LnNpemVzKSB7XG4gICAgICBpbWcuc2l6ZXMgPSBlbGVtZW50LnNpemVzO1xuICAgIH1cbiAgICBpZiAodXNlU3Jjc2V0KSB7XG4gICAgICBpbWcuc3Jjc2V0ID0gaW1hZ2VQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbWcuc3JjID0gaW1hZ2VQYXRoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvYnNlcnZlciA9PiB7XG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQoaW1hZ2VQYXRoKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICBpbWcub25lcnJvciA9IGVyciA9PiB7XG4gICAgICBvYnNlcnZlci5lcnJvcihudWxsKTtcbiAgICB9O1xuICB9KTtcbn07XG5cbmNvbnN0IHNldEVycm9ySW1hZ2U6IFNldEVycm9ySW1hZ2VGbiA9ICh7IGVsZW1lbnQsIGVycm9ySW1hZ2VQYXRoLCB1c2VTcmNzZXQgfSkgPT4ge1xuICBzZXRJbWFnZUFuZFNvdXJjZXNUb0Vycm9yKGVsZW1lbnQsIGVycm9ySW1hZ2VQYXRoLCB1c2VTcmNzZXQpO1xuICBhZGRDc3NDbGFzc05hbWUoZWxlbWVudCwgY3NzQ2xhc3NOYW1lcy5mYWlsZWQpO1xufTtcblxuY29uc3Qgc2V0TG9hZGVkSW1hZ2U6IFNldExvYWRlZEltYWdlRm4gPSAoeyBlbGVtZW50LCBpbWFnZVBhdGgsIHVzZVNyY3NldCB9KSA9PiB7XG4gIHNldEltYWdlQW5kU291cmNlc1RvTGF6eShlbGVtZW50LCBpbWFnZVBhdGgsIHVzZVNyY3NldCk7XG59O1xuXG5jb25zdCBzZXR1cDogU2V0dXBGbiA9ICh7IGVsZW1lbnQsIGRlZmF1bHRJbWFnZVBhdGgsIHVzZVNyY3NldCB9KSA9PiB7XG4gIHNldEltYWdlQW5kU291cmNlc1RvRGVmYXVsdChlbGVtZW50LCBkZWZhdWx0SW1hZ2VQYXRoLCB1c2VTcmNzZXQpO1xuXG4gIGlmIChoYXNDc3NDbGFzc05hbWUoZWxlbWVudCwgY3NzQ2xhc3NOYW1lcy5sb2FkZWQpKSB7XG4gICAgcmVtb3ZlQ3NzQ2xhc3NOYW1lKGVsZW1lbnQsIGNzc0NsYXNzTmFtZXMubG9hZGVkKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFByZXNldCA9IHtcbiAgZmluYWxseTogZW5kLFxuICBsb2FkSW1hZ2UsXG4gIHNldEVycm9ySW1hZ2UsXG4gIHNldExvYWRlZEltYWdlLFxuICBzZXR1cFxufTtcbiJdfQ==