ng-lazyload-image-angular-universal
Version:
This is an extension from ng-lazyload-image, made available for Angular Universal.
98 lines • 7.49 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 {?}
*/
(image) => {
/** @type {?} */
const sources = image.parentElement.getElementsByTagName('source');
for (let i = 0; i < sources.length; i++) {
/** @type {?} */
const attrValue = sources[i].getAttribute(attrName);
if (attrValue) {
sources[i].srcset = attrValue;
}
}
});
}
/** @type {?} */
const setSourcesToDefault = setSources('defaultImage');
/** @type {?} */
export const setSourcesToLazy = setSources('lazyLoad');
/** @type {?} */
const setSourcesToError = setSources('errorImage');
/**
* @param {?} setSourcesFn
* @return {?}
*/
function setImageAndSources(setSourcesFn) {
return (/**
* @param {?} element
* @param {?} imagePath
* @param {?} useSrcset
* @return {?}
*/
(element, imagePath, useSrcset) => {
if (isImageElement(element) && isChildOfPicture(element)) {
setSourcesFn(element);
}
if (imagePath) {
setImage(element, imagePath, useSrcset);
}
});
}
/** @type {?} */
export const setImageAndSourcesToDefault = setImageAndSources(setSourcesToDefault);
/** @type {?} */
export const setImageAndSourcesToLazy = setImageAndSources(setSourcesToLazy);
/** @type {?} */
export const setImageAndSourcesToError = setImageAndSources(setSourcesToError);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWxhenlsb2FkLWltYWdlLWFuZ3VsYXItdW5pdmVyc2FsLyIsInNvdXJjZXMiOlsibGliL3V0aWwvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDdkMsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBMEM7SUFDekUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUN0RyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBMEM7SUFDdkUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQztBQUNsRCxDQUFDOzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUEwQyxFQUFFLFNBQWlCLEVBQUUsU0FBa0I7SUFDeEcsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7U0FDekI7S0FDRjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsUUFBUSxTQUFTLElBQUksQ0FBQztLQUN2RDtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7Ozs7O0FBRUQsU0FBUyxVQUFVLENBQUMsUUFBZ0I7SUFDbEM7Ozs7SUFBTyxDQUFDLEtBQXVCLEVBQUUsRUFBRTs7Y0FDM0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1FBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztrQkFDakMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ25ELElBQUksU0FBUyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO2FBQy9CO1NBQ0Y7SUFDSCxDQUFDLEVBQUM7QUFDSixDQUFDOztNQUVLLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7O0FBQ3RELE1BQU0sT0FBTyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOztNQUNoRCxpQkFBaUIsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDOzs7OztBQUVsRCxTQUFTLGtCQUFrQixDQUFDLFlBQStDO0lBQ3pFOzs7Ozs7SUFBTyxDQUFDLE9BQTBDLEVBQUUsU0FBaUIsRUFBRSxTQUFrQixFQUFFLEVBQUU7UUFDM0YsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxTQUFTLEVBQUU7WUFDYixRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUMsRUFBQztBQUNKLENBQUM7O0FBRUQsTUFBTSxPQUFPLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDOztBQUNsRixNQUFNLE9BQU8sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7O0FBQzVFLE1BQU0sT0FBTyx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd0RlZmluZWQoKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hpbGRPZlBpY3R1cmUoZWxlbWVudDogSFRNTEltYWdlRWxlbWVudCB8IEhUTUxEaXZFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGVsZW1lbnQucGFyZW50RWxlbWVudCAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3BpY3R1cmUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1hZ2VFbGVtZW50KGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCk6IGVsZW1lbnQgaXMgSFRNTEltYWdlRWxlbWVudCB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0SW1hZ2UoZWxlbWVudDogSFRNTEltYWdlRWxlbWVudCB8IEhUTUxEaXZFbGVtZW50LCBpbWFnZVBhdGg6IHN0cmluZywgdXNlU3Jjc2V0OiBib29sZWFuKSB7XG4gIGlmIChpc0ltYWdlRWxlbWVudChlbGVtZW50KSkge1xuICAgIGlmICh1c2VTcmNzZXQpIHtcbiAgICAgIGVsZW1lbnQuc3Jjc2V0ID0gaW1hZ2VQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnNyYyA9IGltYWdlUGF0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCcke2ltYWdlUGF0aH0nKWA7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHNldFNvdXJjZXMoYXR0ck5hbWU6IHN0cmluZykge1xuICByZXR1cm4gKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc291cmNlcyA9IGltYWdlLnBhcmVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NvdXJjZScpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gc291cmNlc1tpXS5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgICAgaWYgKGF0dHJWYWx1ZSkge1xuICAgICAgICBzb3VyY2VzW2ldLnNyY3NldCA9IGF0dHJWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IHNldFNvdXJjZXNUb0RlZmF1bHQgPSBzZXRTb3VyY2VzKCdkZWZhdWx0SW1hZ2UnKTtcbmV4cG9ydCBjb25zdCBzZXRTb3VyY2VzVG9MYXp5ID0gc2V0U291cmNlcygnbGF6eUxvYWQnKTtcbmNvbnN0IHNldFNvdXJjZXNUb0Vycm9yID0gc2V0U291cmNlcygnZXJyb3JJbWFnZScpO1xuXG5mdW5jdGlvbiBzZXRJbWFnZUFuZFNvdXJjZXMoc2V0U291cmNlc0ZuOiAoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpID0+IHZvaWQpIHtcbiAgcmV0dXJuIChlbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTERpdkVsZW1lbnQsIGltYWdlUGF0aDogc3RyaW5nLCB1c2VTcmNzZXQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgaXNDaGlsZE9mUGljdHVyZShlbGVtZW50KSkge1xuICAgICAgc2V0U291cmNlc0ZuKGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoaW1hZ2VQYXRoKSB7XG4gICAgICBzZXRJbWFnZShlbGVtZW50LCBpbWFnZVBhdGgsIHVzZVNyY3NldCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc2V0SW1hZ2VBbmRTb3VyY2VzVG9EZWZhdWx0ID0gc2V0SW1hZ2VBbmRTb3VyY2VzKHNldFNvdXJjZXNUb0RlZmF1bHQpO1xuZXhwb3J0IGNvbnN0IHNldEltYWdlQW5kU291cmNlc1RvTGF6eSA9IHNldEltYWdlQW5kU291cmNlcyhzZXRTb3VyY2VzVG9MYXp5KTtcbmV4cG9ydCBjb25zdCBzZXRJbWFnZUFuZFNvdXJjZXNUb0Vycm9yID0gc2V0SW1hZ2VBbmRTb3VyY2VzKHNldFNvdXJjZXNUb0Vycm9yKTtcbiJdfQ==