ng-lazyload-image-angular-universal
Version:
This is an extension from ng-lazyload-image, made available for Angular Universal.
98 lines • 7.47 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @return {?}
*/
export function isWindowDefined() {
return typeof window !== 'undefined';
}
/**
* @param {?} element
* @return {?}
*/
export function isChildOfPicture(element) {
return Boolean(element.parentElement && element.parentElement.nodeName.toLowerCase() === 'picture');
}
/**
* @param {?} element
* @return {?}
*/
export function isImageElement(element) {
return element.nodeName.toLowerCase() === 'img';
}
/**
* @param {?} element
* @param {?} imagePath
* @param {?} useSrcset
* @return {?}
*/
export function setImage(element, imagePath, useSrcset) {
if (isImageElement(element)) {
if (useSrcset) {
element.srcset = imagePath;
}
else {
element.src = imagePath;
}
}
else {
element.style.backgroundImage = "url('" + imagePath + "')";
}
return element;
}
/**
* @param {?} attrName
* @return {?}
*/
function setSources(attrName) {
return (/**
* @param {?} image
* @return {?}
*/
function (image) {
/** @type {?} */
var sources = image.parentElement.getElementsByTagName('source');
for (var i = 0; i < sources.length; i++) {
/** @type {?} */
var attrValue = sources[i].getAttribute(attrName);
if (attrValue) {
sources[i].srcset = attrValue;
}
}
});
}
/** @type {?} */
var setSourcesToDefault = setSources('defaultImage');
/** @type {?} */
export var setSourcesToLazy = setSources('lazyLoad');
/** @type {?} */
var setSourcesToError = setSources('errorImage');
/**
* @param {?} setSourcesFn
* @return {?}
*/
function setImageAndSources(setSourcesFn) {
return (/**
* @param {?} element
* @param {?} imagePath
* @param {?} useSrcset
* @return {?}
*/
function (element, imagePath, useSrcset) {
if (isImageElement(element) && isChildOfPicture(element)) {
setSourcesFn(element);
}
if (imagePath) {
setImage(element, imagePath, useSrcset);
}
});
}
/** @type {?} */
export var setImageAndSourcesToDefault = setImageAndSources(setSourcesToDefault);
/** @type {?} */
export var setImageAndSourcesToLazy = setImageAndSources(setSourcesToLazy);
/** @type {?} */
export var setImageAndSourcesToError = setImageAndSources(setSourcesToError);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWxhenlsb2FkLWltYWdlLWFuZ3VsYXItdW5pdmVyc2FsLyIsInNvdXJjZXMiOlsibGliL3V0aWwvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDdkMsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBMEM7SUFDekUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUN0RyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBMEM7SUFDdkUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQztBQUNsRCxDQUFDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUEwQyxFQUFFLFNBQWlCLEVBQUUsU0FBa0I7SUFDeEcsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7U0FDekI7S0FDRjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsVUFBUSxTQUFTLE9BQUksQ0FBQztLQUN2RDtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7Ozs7O0FBRUQsU0FBUyxVQUFVLENBQUMsUUFBZ0I7SUFDbEM7Ozs7SUFBTyxVQUFDLEtBQXVCOztZQUN2QixPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2dCQUNqQyxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDbkQsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDL0I7U0FDRjtJQUNILENBQUMsRUFBQztBQUNKLENBQUM7O0lBRUssbUJBQW1CLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQzs7QUFDdEQsTUFBTSxLQUFPLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7O0lBQ2hELGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7Ozs7O0FBRWxELFNBQVMsa0JBQWtCLENBQUMsWUFBK0M7SUFDekU7Ozs7OztJQUFPLFVBQUMsT0FBMEMsRUFBRSxTQUFpQixFQUFFLFNBQWtCO1FBQ3ZGLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDLEVBQUM7QUFDSixDQUFDOztBQUVELE1BQU0sS0FBTywyQkFBMkIsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQzs7QUFDbEYsTUFBTSxLQUFPLHdCQUF3QixHQUFHLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDOztBQUM1RSxNQUFNLEtBQU8seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dEZWZpbmVkKCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NoaWxkT2ZQaWN0dXJlKGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihlbGVtZW50LnBhcmVudEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdwaWN0dXJlJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ltYWdlRWxlbWVudChlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQpOiBlbGVtZW50IGlzIEhUTUxJbWFnZUVsZW1lbnQge1xuICByZXR1cm4gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW1nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEltYWdlKGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCwgaW1hZ2VQYXRoOiBzdHJpbmcsIHVzZVNyY3NldDogYm9vbGVhbikge1xuICBpZiAoaXNJbWFnZUVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBpZiAodXNlU3Jjc2V0KSB7XG4gICAgICBlbGVtZW50LnNyY3NldCA9IGltYWdlUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5zcmMgPSBpbWFnZVBhdGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnJHtpbWFnZVBhdGh9JylgO1xuICB9XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBzZXRTb3VyY2VzKGF0dHJOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChpbWFnZTogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZXMgPSBpbWFnZS5wYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzb3VyY2UnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IHNvdXJjZXNbaV0uZ2V0QXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICAgIGlmIChhdHRyVmFsdWUpIHtcbiAgICAgICAgc291cmNlc1tpXS5zcmNzZXQgPSBhdHRyVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBzZXRTb3VyY2VzVG9EZWZhdWx0ID0gc2V0U291cmNlcygnZGVmYXVsdEltYWdlJyk7XG5leHBvcnQgY29uc3Qgc2V0U291cmNlc1RvTGF6eSA9IHNldFNvdXJjZXMoJ2xhenlMb2FkJyk7XG5jb25zdCBzZXRTb3VyY2VzVG9FcnJvciA9IHNldFNvdXJjZXMoJ2Vycm9ySW1hZ2UnKTtcblxuZnVuY3Rpb24gc2V0SW1hZ2VBbmRTb3VyY2VzKHNldFNvdXJjZXNGbjogKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50KSA9PiB2b2lkKSB7XG4gIHJldHVybiAoZWxlbWVudDogSFRNTEltYWdlRWxlbWVudCB8IEhUTUxEaXZFbGVtZW50LCBpbWFnZVBhdGg6IHN0cmluZywgdXNlU3Jjc2V0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGlzSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmIGlzQ2hpbGRPZlBpY3R1cmUoZWxlbWVudCkpIHtcbiAgICAgIHNldFNvdXJjZXNGbihlbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKGltYWdlUGF0aCkge1xuICAgICAgc2V0SW1hZ2UoZWxlbWVudCwgaW1hZ2VQYXRoLCB1c2VTcmNzZXQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHNldEltYWdlQW5kU291cmNlc1RvRGVmYXVsdCA9IHNldEltYWdlQW5kU291cmNlcyhzZXRTb3VyY2VzVG9EZWZhdWx0KTtcbmV4cG9ydCBjb25zdCBzZXRJbWFnZUFuZFNvdXJjZXNUb0xhenkgPSBzZXRJbWFnZUFuZFNvdXJjZXMoc2V0U291cmNlc1RvTGF6eSk7XG5leHBvcnQgY29uc3Qgc2V0SW1hZ2VBbmRTb3VyY2VzVG9FcnJvciA9IHNldEltYWdlQW5kU291cmNlcyhzZXRTb3VyY2VzVG9FcnJvcik7XG4iXX0=