{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","setTimeoutData","elements","element","timeoutDataName","addOneShotEventListeners","settings","addClass","class_loading","setWasProcessedData","callbackIfSet","callback_set","setSources","isIntersecting","entry","defaultSettings","elements_selector","container","document","threshold","thresholds","data_src","data_srcset","data_sizes","class_loaded","class_error","load_delay","callback_load","callback_error","to_webp","customSettings","_extends","attribute","trueString","setData","getAttribute","dataPrefix","attrName","value","removeAttribute","getData","getWasProcessedData","getTimeoutData","createInstance","options","event","instance","purgeElements","CustomEvent","detail","err","createEvent","classObj","window","eventString","replaceExtToWebp","condition","detectWebp","canvas","runningOnBrowser","getContext","userAgent","supportsIntersectionObserver","supportsClassList","createElement","supportsWebp","optionsItem","toDataURL","indexOf","setSourcesInChildren","parentTag","dataAttrName","toWebpFlag","childTag","i","children","attrValue","setAttributeIfValue","setSourcesImg","setSourcesBgImage","srcDataValue","setValue","style","backgroundImage","VIDEO","IMG","parentNode","parent","tagName","sizesDataValue","srcsetDataValue","setSourcesIframe","IFRAME","setSourcesVideo","srcDataName","setSourcesFunction","setSourcesFunctions","className","add","removeClass","remove","replace","callback","RegExp","argument","genericLoadEventName","mediaLoadEventName","errorEventName","addEventListener","eventName","handler","loadHandler","removeAllEventListeners","removeEventListener","eventHandler","success","errorHandler","target","addAllEventListeners","managedTags","revealElement","timeoutId","observer","unobserve","clearTimeout","setTimeout","loadAndUnobserve","cancelDelayLoad","loadDelay","root","rootMargin","getObserverSettings","_settings","getInstanceSettings","_setObserver","prototype","_manageIntersection","delayLoad","_onIntersection","entries","bind","_elements","loadAll","IntersectionObserver","forEach","_this","load","update","nodeSet","isBot","_observer","Array","slice","call","destroy","observe","_this3","force","length","autoInitialize","lazyLoadOptions"],"mappings":"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","file":"lazyload.min.js","sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.LazyLoad = factory());\n}(this, (function () { 'use strict';\n\nconst defaultSettings = {\r\n\telements_selector: \"img\",\r\n\tcontainer: document,\r\n\tthreshold: 300,\r\n\tthresholds: null,\r\n\tdata_src: \"src\",\r\n\tdata_srcset: \"srcset\",\r\n\tdata_sizes: \"sizes\",\r\n\tclass_loading: \"loading\",\r\n\tclass_loaded: \"loaded\",\r\n\tclass_error: \"error\",\r\n\tload_delay: 0,\r\n\tcallback_load: null,\r\n\tcallback_error: null,\r\n\tcallback_set: null,\r\n\tcallback_enter: null,\r\n\tto_webp: false\r\n};\r\n\r\nvar getInstanceSettings = customSettings => {\r\n\treturn Object.assign({}, defaultSettings, customSettings);\r\n};\n\nconst dataPrefix = \"data-\";\r\nconst processedDataName = \"was-processed\";\r\nconst timeoutDataName = \"ll-timeout\";\r\nconst trueString = \"true\";\r\n\r\nconst getData = (element, attribute) => {\r\n\treturn element.getAttribute(dataPrefix + attribute);\r\n};\r\n\r\nconst setData = (element, attribute, value) => {\r\n\tvar attrName = dataPrefix + attribute;\r\n\tif (value === null) {\r\n\t\telement.removeAttribute(attrName);\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst setWasProcessedData = element =>\r\n\tsetData(element, processedDataName, trueString);\r\n\r\nconst getWasProcessedData = element =>\r\n\tgetData(element, processedDataName) === trueString;\r\n\r\nconst setTimeoutData = (element, value) =>\r\n\tsetData(element, timeoutDataName, value);\r\n\r\nconst getTimeoutData = element => getData(element, timeoutDataName);\n\nfunction purgeElements(elements) {\r\n\treturn elements.filter(element => !getWasProcessedData(element));\r\n}\n\n/* Creates instance and notifies it through the window element */\r\nconst createInstance = function(classObj, options) {\r\n\tvar event;\r\n\tlet eventString = \"LazyLoad::Initialized\";\r\n\tlet instance = new classObj(options);\r\n\ttry {\r\n\t\t// Works in modern browsers\r\n\t\tevent = new CustomEvent(eventString, { detail: { instance } });\r\n\t} catch (err) {\r\n\t\t// Works in Internet Explorer (all versions)\r\n\t\tevent = document.createEvent(\"CustomEvent\");\r\n\t\tevent.initCustomEvent(eventString, false, false, { instance });\r\n\t}\r\n\twindow.dispatchEvent(event);\r\n};\r\n\r\n/* Auto initialization of one or more instances of lazyload, depending on the \r\n options passed in (plain object or an array) */\r\nfunction autoInitialize(classObj, options) {\r\n\tif (!options) {\r\n\t\treturn;\r\n\t}\r\n\tif (!options.length) {\r\n\t\t// Plain object\r\n\t\tcreateInstance(classObj, options);\r\n\t} else {\r\n\t\t// Array of objects\r\n\t\tfor (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\r\n\t\t\tcreateInstance(classObj, optionsItem);\r\n\t\t}\r\n\t}\r\n}\n\nconst replaceExtToWebp = (value, condition) =>\r\n\tcondition ? value.replace(/\\.(jpe?g|png)/gi, \".webp\") : value;\r\n\r\nconst detectWebp = () => {\r\n\tvar webpString = \"image/webp\";\r\n\tvar canvas = document.createElement(\"canvas\");\r\n\r\n\tif (canvas.getContext && canvas.getContext(\"2d\")) {\r\n\t\treturn canvas.toDataURL(webpString).indexOf(`data:${webpString}`) === 0;\r\n\t}\r\n\r\n\treturn false;\r\n};\n\nconst runningOnBrowser = typeof window !== \"undefined\";\r\n\r\nconst isBot =\r\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\r\n\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\r\n\r\nconst supportsIntersectionObserver =\r\n\trunningOnBrowser && \"IntersectionObserver\" in window;\r\n\r\nconst supportsClassList =\r\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\r\n\r\nconst supportsWebp = runningOnBrowser && detectWebp();\n\nconst setSourcesInChildren = function(\r\n\tparentTag,\r\n\tattrName,\r\n\tdataAttrName,\r\n\ttoWebpFlag\r\n) {\r\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\r\n\t\tif (childTag.tagName === \"SOURCE\") {\r\n\t\t\tlet attrValue = getData(childTag, dataAttrName);\r\n\t\t\tsetAttributeIfValue(childTag, attrName, attrValue, toWebpFlag);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst setAttributeIfValue = function(\r\n\telement,\r\n\tattrName,\r\n\tvalue,\r\n\ttoWebpFlag\r\n) {\r\n\tif (!value) {\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, replaceExtToWebp(value, toWebpFlag));\r\n};\r\n\r\nconst setSourcesImg = (element, settings) => {\r\n\tconst toWebpFlag = supportsWebp && settings.to_webp;\r\n\tconst srcsetDataName = settings.data_srcset;\r\n\tconst parent = element.parentNode;\r\n\r\n\tif (parent && parent.tagName === \"PICTURE\") {\r\n\t\tsetSourcesInChildren(parent, \"srcset\", srcsetDataName, toWebpFlag);\r\n\t}\r\n\tconst sizesDataValue = getData(element, settings.data_sizes);\r\n\tsetAttributeIfValue(element, \"sizes\", sizesDataValue);\r\n\tconst srcsetDataValue = getData(element, srcsetDataName);\r\n\tsetAttributeIfValue(element, \"srcset\", srcsetDataValue, toWebpFlag);\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\tsetAttributeIfValue(element, \"src\", srcDataValue, toWebpFlag);\r\n};\r\n\r\nconst setSourcesIframe = (element, settings) => {\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\r\n\tsetAttributeIfValue(element, \"src\", srcDataValue);\r\n};\r\n\r\nconst setSourcesVideo = (element, settings) => {\r\n\tconst srcDataName = settings.data_src;\r\n\tconst srcDataValue = getData(element, srcDataName);\r\n\r\n\tsetSourcesInChildren(element, \"src\", srcDataName);\r\n\tsetAttributeIfValue(element, \"src\", srcDataValue);\r\n\telement.load();\r\n};\r\n\r\nconst setSourcesBgImage = (element, settings) => {\r\n\tconst toWebpFlag = supportsWebp && settings.to_webp;\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\r\n\tif (srcDataValue) {\r\n\t\tlet setValue = replaceExtToWebp(srcDataValue, toWebpFlag);\r\n\t\telement.style.backgroundImage = `url(\"${setValue}\")`;\r\n\t}\r\n};\r\n\r\nconst setSourcesFunctions = {\r\n\tIMG: setSourcesImg,\r\n\tIFRAME: setSourcesIframe,\r\n\tVIDEO: setSourcesVideo\r\n};\r\n\r\nconst setSources = (element, settings) => {\r\n\tconst tagName = element.tagName;\r\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\r\n\tif (setSourcesFunction) {\r\n\t\tsetSourcesFunction(element, settings);\r\n\t\treturn;\r\n\t}\r\n\tsetSourcesBgImage(element, settings);\r\n};\n\nconst addClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.add(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className += (element.className ? \" \" : \"\") + className;\r\n};\r\n\r\nconst removeClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.remove(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className = element.className.\r\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\r\n\t\treplace(/^\\s+/, \"\").\r\n\t\treplace(/\\s+$/, \"\");\r\n};\n\nconst callbackIfSet = (callback, argument) => {\r\n\tif (callback) {\r\n\t\tcallback(argument);\r\n\t}\r\n};\n\nconst genericLoadEventName = \"load\";\r\nconst mediaLoadEventName = \"loadeddata\";\r\nconst errorEventName = \"error\";\r\n\r\nconst addEventListener = (element, eventName, handler) => {\r\n\telement.addEventListener(eventName, handler);\r\n};\r\n\r\nconst removeEventListener = (element, eventName, handler) => {\r\n\telement.removeEventListener(eventName, handler);\r\n};\r\n\r\nconst addAllEventListeners = (element, loadHandler, errorHandler) => {\r\n\taddEventListener(element, genericLoadEventName, loadHandler);\r\n\taddEventListener(element, mediaLoadEventName, loadHandler);\r\n\taddEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst removeAllEventListeners = (element, loadHandler, errorHandler) => {\r\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\r\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\r\n\tremoveEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst eventHandler = function(event, success, settings) {\r\n\tconst className = success ? settings.class_loaded : settings.class_error;\r\n\tconst callback = success ? settings.callback_load : settings.callback_error;\r\n\tconst element = event.target;\r\n\r\n\tremoveClass(element, settings.class_loading);\r\n\taddClass(element, className);\r\n\tcallbackIfSet(callback, element);\r\n};\r\n\r\nconst addOneShotEventListeners = (element, settings) => {\r\n\tconst loadHandler = event => {\r\n\t\teventHandler(event, true, settings);\r\n\t\tremoveAllEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\tconst errorHandler = event => {\r\n\t\teventHandler(event, false, settings);\r\n\t\tremoveAllEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\taddAllEventListeners(element, loadHandler, errorHandler);\r\n};\n\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\r\n\r\nconst loadAndUnobserve = (element, observer, settings) => {\r\n\trevealElement(element, settings);\r\n\tobserver.unobserve(element);\r\n};\r\n\r\nconst cancelDelayLoad = element => {\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (!timeoutId) {\r\n\t\treturn; // do nothing if timeout doesn't exist\r\n\t}\r\n\tclearTimeout(timeoutId);\r\n\tsetTimeoutData(element, null);\r\n};\r\n\r\nconst delayLoad = (element, observer, settings) => {\r\n\tvar loadDelay = settings.load_delay;\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (timeoutId) {\r\n\t\treturn; // do nothing if timeout already set\r\n\t}\r\n\ttimeoutId = setTimeout(function() {\r\n\t\tloadAndUnobserve(element, observer, settings);\r\n\t\tcancelDelayLoad(element);\r\n\t}, loadDelay);\r\n\tsetTimeoutData(element, timeoutId);\r\n};\r\n\r\nfunction revealElement(element, settings, force) {\r\n\tif (!force && getWasProcessedData(element)) {\r\n\t\treturn; // element has already been processed and force wasn't true\r\n\t}\r\n\tcallbackIfSet(settings.callback_enter, element);\r\n\tif (managedTags.indexOf(element.tagName) > -1) {\r\n\t\taddOneShotEventListeners(element, settings);\r\n\t\taddClass(element, settings.class_loading);\r\n\t}\r\n\tsetSources(element, settings);\r\n\tsetWasProcessedData(element);\r\n\tcallbackIfSet(settings.callback_set, element);\r\n}\n\n/* entry.isIntersecting needs fallback because is null on some versions of MS Edge, and\r\n entry.intersectionRatio is not enough alone because it could be 0 on some intersecting elements */\r\nconst isIntersecting = entry =>\r\n\tentry.isIntersecting || entry.intersectionRatio > 0;\r\n\r\nconst getObserverSettings = settings => ({\r\n\troot: settings.container === document ? null : settings.container,\r\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\r\n});\n\nconst LazyLoad = function(customSettings, elements) {\r\n\tthis._settings = getInstanceSettings(customSettings);\r\n\tthis._setObserver();\r\n\tthis.update(elements);\r\n};\r\n\r\nLazyLoad.prototype = {\r\n\t_manageIntersection: function(entry) {\r\n\t\tvar observer = this._observer;\r\n\t\tvar settings = this._settings;\r\n\t\tvar loadDelay = this._settings.load_delay;\r\n\t\tvar element = entry.target;\r\n\t\tif (isIntersecting(entry)) {\r\n\t\t\tif (!loadDelay) {\r\n\t\t\t\tloadAndUnobserve(element, observer, settings);\r\n\t\t\t} else {\r\n\t\t\t\tdelayLoad(element, observer, settings);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Writes in and outs in a data-attribute\r\n\t\tif (!isIntersecting(entry)) {\r\n\t\t\tcancelDelayLoad(element);\r\n\t\t}\r\n\t},\r\n\t_onIntersection: function(entries) {\r\n\t\tentries.forEach(this._manageIntersection.bind(this));\r\n\t\tthis._elements = purgeElements(this._elements);\r\n\t},\r\n\t_setObserver: function() {\r\n\t\tif (!supportsIntersectionObserver) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._observer = new IntersectionObserver(\r\n\t\t\tthis._onIntersection.bind(this),\r\n\t\t\tgetObserverSettings(this._settings)\r\n\t\t);\r\n\t},\r\n\r\n\tloadAll: function() {\r\n\t\tthis._elements.forEach(element => {\r\n\t\t\tthis.load(element);\r\n\t\t});\r\n\t\tthis._elements = purgeElements(this._elements);\r\n\t},\r\n\r\n\tupdate: function(elements) {\r\n\t\tconst settings = this._settings;\r\n\t\tconst nodeSet =\r\n\t\t\telements ||\r\n\t\t\tsettings.container.querySelectorAll(settings.elements_selector);\r\n\r\n\t\tthis._elements = purgeElements(Array.prototype.slice.call(nodeSet)); // nodeset to array for IE compatibility\r\n\r\n\t\tif (isBot || !this._observer) {\r\n\t\t\tthis.loadAll();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._elements.forEach(element => {\r\n\t\t\tthis._observer.observe(element);\r\n\t\t});\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tif (this._observer) {\r\n\t\t\tpurgeElements(this._elements).forEach(element => {\r\n\t\t\t\tthis._observer.unobserve(element);\r\n\t\t\t});\r\n\t\t\tthis._observer = null;\r\n\t\t}\r\n\t\tthis._elements = null;\r\n\t\tthis._settings = null;\r\n\t},\r\n\r\n\tload: function(element, force) {\r\n\t\trevealElement(element, this._settings, force);\r\n\t}\r\n};\r\n\r\n/* Automatic instances creation if required (useful for async script loading) */\r\nif (runningOnBrowser) {\r\n\tautoInitialize(LazyLoad, window.lazyLoadOptions);\r\n}\n\nreturn LazyLoad;\n\n})));\n"]}