UNPKG

ng-lazyload-image-angular-universal

Version:

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

98 lines 7.49 kB
/** * @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==