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