{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","runningOnBrowser","window","isBot","navigator","test","userAgent","supportsIntersectionObserver","supportsClassList","createElement","elements_selector","container","defaultSettings","document","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","class_loading","class_loaded","class_error","load_delay","auto_unobserve","callback_enter","callback_exit","callback_reveal","callback_loaded","callback_error","createInstance","classObj","options","event","instance","detail","err","createEvent","eventString","getData","element","attribute","getAttribute","setData","value","attrName","timeoutDataName","removeAttribute","getWasProcessedData","setTimeoutData","setAttribute","safeCallback","callback","arg1","arg2","arg3","getTimeoutData","purgeProcessedElements","updateLoadingCount","plusMinus","_loadingCount","_elements","length","purgeOneElement","_settings","elements","getSourceTags","parentTag","sourceTags","childTag","i","push","setAttributeIfValue","settings","sourceTag","IMG","parent","tagName","forEach","setImageAttributes","setSourcesImg","load","setSourcesBgImage","elementToPurge","srcDataValue","bgDataValue","setSourcesFunction","setSourcesFunctions","backgroundImage","setWasProcessedData","style","concat","className","IFRAME","classList","setSourcesIframe","removeClass","remove","RegExp","replace","add","handler","addEventListener","eventName","removeEventListener","removeEventListeners","loadHandler","errorHandler","genericLoadEventName","mediaLoadEventName","success","target","addEventListeners","eventHandler","observer","_observer","revealElement","unobserve","delayLoad","timeoutId","loadDelay","setTimeout","revealAndUnobserve","cancelDelayLoad","force","managedTags","indexOf","addOneShotEventListeners","addClass","callback_set","setObserver","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","onEnter","onExit","root","nativeLazyTags","getElements","resetWasProcessedData","querySelectorAll","queryElements","prototype","nodeSet","retryLazyLoad","_toConsumableArray","getObserverSettings","dataPrefix","customSettings","use_native","_extends","update","nodeSetToArray","_this","HTMLImageElement","shouldUseNative","observe","errorElements","destroy","_this2","loadAll","getInstanceSettings","_this3","optionsItem","dispatchEvent","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 runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\n\t(typeof navigator !== \"undefined\" &&\n\t\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 defaultSettings = {\n\telements_selector: \"img\",\n\tcontainer: isBot || runningOnBrowser ? document : null,\n\tthreshold: 300,\n\tthresholds: null,\n\tdata_src: \"src\",\n\tdata_srcset: \"srcset\",\n\tdata_sizes: \"sizes\",\n\tdata_bg: \"bg\",\n\tclass_loading: \"loading\",\n\tclass_loaded: \"loaded\",\n\tclass_error: \"error\",\n\tload_delay: 0,\n\tauto_unobserve: true,\n\tcallback_enter: null,\n\tcallback_exit: null,\n\tcallback_reveal: null,\n\tcallback_loaded: null,\n\tcallback_error: null,\n\tcallback_finish: null,\n\tuse_native: false\n};\n\nvar getInstanceSettings = customSettings => {\n\treturn Object.assign({}, defaultSettings, customSettings);\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 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 resetWasProcessedData = element =>\n\tsetData(element, processedDataName, null);\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\nconst purgeProcessedElements = elements => {\n\treturn elements.filter(element => !getWasProcessedData(element));\n};\n\nconst purgeOneElement = (elements, elementToPurge) => {\n\treturn elements.filter(element => element !== elementToPurge);\n};\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst updateLoadingCount = (instance, plusMinus) => {\n\tinstance._loadingCount += plusMinus;\n\tif (instance._elements.length === 0 && instance._loadingCount === 0) {\n\t\tsafeCallback(instance._settings.callback_finish, instance);\n\t}\n};\n\nconst getSourceTags = parentTag => {\n\tlet sourceTags = [];\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n\t\tif (childTag.tagName === \"SOURCE\") {\n\t\t\tsourceTags.push(childTag);\n\t\t}\n\t}\n\treturn sourceTags;\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n\tif (!value) {\n\t\treturn;\n\t}\n\telement.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n\tsetAttributeIfValue(\n\t\telement,\n\t\t\"sizes\",\n\t\tgetData(element, settings.data_sizes)\n\t);\n\tsetAttributeIfValue(\n\t\telement,\n\t\t\"srcset\",\n\t\tgetData(element, settings.data_srcset)\n\t);\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (element, settings) => {\n\tconst parent = element.parentNode;\n\n\tif (parent && parent.tagName === \"PICTURE\") {\n\t\tlet sourceTags = getSourceTags(parent);\n\t\tsourceTags.forEach(sourceTag => {\n\t\t\tsetImageAttributes(sourceTag, settings);\n\t\t});\n\t}\n\n\tsetImageAttributes(element, settings);\n};\n\nconst setSourcesIframe = (element, settings) => {\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n};\n\nconst setSourcesVideo = (element, settings) => {\n\tlet sourceTags = getSourceTags(element);\n\tsourceTags.forEach(sourceTag => {\n\t\tsetAttributeIfValue(\n\t\t\tsourceTag,\n\t\t\t\"src\",\n\t\t\tgetData(sourceTag, settings.data_src)\n\t\t);\n\t});\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\n\telement.load();\n};\n\nconst setSourcesBgImage = (element, settings) => {\n\tconst srcDataValue = getData(element, settings.data_src);\n\tconst bgDataValue = getData(element, settings.data_bg);\n\n\tif (srcDataValue) {\n\t\telement.style.backgroundImage = `url(\"${srcDataValue}\")`;\n\t}\n\n\tif (bgDataValue) {\n\t\telement.style.backgroundImage = bgDataValue;\n\t}\n};\n\nconst setSourcesFunctions = {\n\tIMG: setSourcesImg,\n\tIFRAME: setSourcesIframe,\n\tVIDEO: setSourcesVideo\n};\n\nconst setSources = (element, instance) => {\n\tconst settings = instance._settings;\n\tconst tagName = element.tagName;\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\n\tif (setSourcesFunction) {\n\t\tsetSourcesFunction(element, settings);\n\t\tupdateLoadingCount(instance, 1);\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\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 genericLoadEventName = \"load\";\nconst mediaLoadEventName = \"loadeddata\";\nconst errorEventName = \"error\";\n\nconst addEventListener = (element, eventName, handler) => {\n\telement.addEventListener(eventName, handler);\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n\telement.removeEventListener(eventName, handler);\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n\taddEventListener(element, genericLoadEventName, loadHandler);\n\taddEventListener(element, mediaLoadEventName, loadHandler);\n\taddEventListener(element, errorEventName, errorHandler);\n};\n\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\n\tremoveEventListener(element, errorEventName, errorHandler);\n};\n\nconst eventHandler = function(event, success, instance) {\n\tvar settings = instance._settings;\n\tconst className = success ? settings.class_loaded : settings.class_error;\n\tconst callback = success\n\t\t? settings.callback_loaded\n\t\t: settings.callback_error;\n\tconst element = event.target;\n\n\tremoveClass(element, settings.class_loading);\n\taddClass(element, className);\n\tsafeCallback(callback, element, instance);\n\n\tupdateLoadingCount(instance, -1);\n};\n\nconst addOneShotEventListeners = (element, instance) => {\n\tconst loadHandler = event => {\n\t\teventHandler(event, true, instance);\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\n\t};\n\tconst errorHandler = event => {\n\t\teventHandler(event, false, instance);\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\n\t};\n\taddEventListeners(element, loadHandler, errorHandler);\n};\n\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst onEnter = (element, entry, instance) => {\n\tconst settings = instance._settings;\n\tsafeCallback(settings.callback_enter, element, entry, instance);\n\tif (!settings.load_delay) {\n\t\trevealAndUnobserve(element, instance);\n\t\treturn;\n\t}\n\tdelayLoad(element, instance);\n};\n\nconst revealAndUnobserve = (element, instance) => {\n\tvar observer = instance._observer;\n\trevealElement(element, instance);\n\tif (observer && instance._settings.auto_unobserve) {\n\t\tobserver.unobserve(element);\n\t}\n};\n\nconst onExit = (element, entry, instance) => {\n\tconst settings = instance._settings;\n\tsafeCallback(settings.callback_exit, element, entry, instance);\n\tif (!settings.load_delay) {\n\t\treturn;\n\t}\n\tcancelDelayLoad(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, instance) => {\n\tvar loadDelay = instance._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\trevealAndUnobserve(element, instance);\n\t\tcancelDelayLoad(element);\n\t}, loadDelay);\n\tsetTimeoutData(element, timeoutId);\n};\n\nconst revealElement = (element, instance, force) => {\n\tvar settings = instance._settings;\n\tif (!force && getWasProcessedData(element)) {\n\t\treturn; // element has already been processed and force wasn't true\n\t}\n\tif (managedTags.indexOf(element.tagName) > -1) {\n\t\taddOneShotEventListeners(element, instance);\n\t\taddClass(element, settings.class_loading);\n\t}\n\tsetSources(element, instance);\n\tsetWasProcessedData(element);\n\tsafeCallback(settings.callback_reveal, element, instance);\n\tsafeCallback(settings.callback_set, element, instance);\n};\n\nconst isIntersecting = entry =>\n\tentry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = settings => ({\n\troot: settings.container === document ? null : settings.container,\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst setObserver = instance => {\n\tif (!supportsIntersectionObserver) {\n\t\treturn false;\n\t}\n\tinstance._observer = new IntersectionObserver(entries => {\n\t\tentries.forEach(entry =>\n\t\t\tisIntersecting(entry)\n\t\t\t\t? onEnter(entry.target, entry, instance)\n\t\t\t\t: onExit(entry.target, entry, instance)\n\t\t);\n\t}, getObserverSettings(instance._settings));\n\treturn true;\n};\n\nconst nativeLazyTags = [\"IMG\", \"IFRAME\"];\n\nconst shouldUseNative = settings =>\n\tsettings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = instance => {\n\tinstance._elements.forEach(element => {\n\t\tif (nativeLazyTags.indexOf(element.tagName) === -1) {\n\t\t\treturn;\n\t\t}\n\t\telement.setAttribute(\"loading\", \"lazy\");\n\t\trevealElement(element, instance);\n\t});\n};\n\nconst nodeSetToArray = nodeSet => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = settings =>\n\tsettings.container.querySelectorAll(settings.elements_selector);\n\nconst getElements = (elements, settings) =>\n\tpurgeProcessedElements(nodeSetToArray(elements || queryElements(settings)));\n\nconst retryLazyLoad = instance => {\n\tvar settings = instance._settings;\n\tvar errorElements = settings.container.querySelectorAll(\n\t\t\".\" + settings.class_error\n\t);\n\t[...errorElements].forEach(element => {\n\t\tremoveClass(element, settings.class_error);\n\t\tresetWasProcessedData(element);\n\t});\n\tinstance.update();\n};\n\nconst setOnlineCheck = instance => {\n\tif (!runningOnBrowser) {\n\t\treturn;\n\t}\n\twindow.addEventListener(\"online\", event => {\n\t\tretryLazyLoad(instance);\n\t});\n};\n\nconst LazyLoad = function(customSettings, elements) {\n\tthis._settings = getInstanceSettings(customSettings);\n\tthis._loadingCount = 0;\n\tsetObserver(this);\n\tthis.update(elements);\n\tsetOnlineCheck(this);\n};\n\nLazyLoad.prototype = {\n\tupdate: function(elements) {\n\t\tvar settings = this._settings;\n\t\tthis._elements = getElements(elements, settings);\n\t\tif (isBot || !this._observer) {\n\t\t\tthis.loadAll();\n\t\t\treturn;\n\t\t}\n\t\tif (shouldUseNative(settings)) {\n\t\t\tloadAllNative(this);\n\t\t\tthis._elements = getElements(elements, settings);\n\t\t}\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\tthis._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, force);\n\t},\n\n\tloadAll: function() {\n\t\tthis._elements.forEach(element => {\n\t\t\trevealAndUnobserve(element, this);\n\t\t});\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"]}