{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","runningOnBrowser","window","isBot","test","defaultSettings","elements_selector","container","threshold","thresholds","IntersectionObserverEntry","prototype","data_src","data_sizes","data_bg","document","createElement","class_loaded","class_error","load_delay","auto_unobserve","callback_enter","callback_exit","callback_reveal","callback_loaded","callback_error","callback_finish","use_native","getInstanceSettings","createInstance","instance","event","classObj","options","initCustomEvent","detail","createEvent","dispatchEvent","getData","element","attribute","getAttribute","setData","value","attrName","setAttribute","removeAttribute","setWasProcessedData","timeoutDataName","setTimeoutData","getWasProcessedData","getTimeoutData","purgeProcessedElements","argument","callback","purgeOneElement","_loadingCount","plusMinus","elementToPurge","length","callbackIfSet","_settings","getSourceTags","parentTag","childTag","i","children","tagName","sourceTags","push","setAttributeIfValue","setImageAttributes","settings","data_srcset","backgroundImage","IMG","parent","parentNode","sourceTag","IFRAME","VIDEO","forEach","setSourcesIframe","elements","setSourcesVideo","setSourcesFunction","setSourcesFunctions","updateLoadingCount","_elements","bgDataValue","srcDataValue","concat","style","addClass","className","supportsClassList","classList","add","addEventListener","eventName","handler","genericLoadEventName","removeEventListener","loadHandler","errorHandler","errorEventName","success","eventHandler","remove","replace","RegExp","removeClass","addOneShotEventListeners","removeEventListeners","addEventListeners","revealAndUnobserve","observer","_observer","delayLoad","unobserve","cancelDelayLoad","timeoutId","loadDelay","clearTimeout","revealElement","force","setTimeout","class_loading","callback_set","setObserver","setSources","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","managedTags","onEnter","target","onExit","root","getObserverSettings","rootMargin","getElements","nodeSet","querySelectorAll","queryElements","Array","slice","call","loadAllNative","customSettings","_extends","nativeLazyTags","update","destroy","supportsIntersectionObserver","_this","nodeSetToArray","HTMLImageElement","indexOf","loadAll","_this2","load","_this3","autoInitialize","optionsItem","observe"],"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 &&\n\t\"IntersectionObserver\" in window &&\n\t\"IntersectionObserverEntry\" in window &&\n\t\"intersectionRatio\" in window.IntersectionObserverEntry.prototype &&\n\t\"isIntersecting\" in window.IntersectionObserverEntry.prototype;\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 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 callbackIfSet = (callback, argument) => {\n\tif (callback) {\n\t\tcallback(argument);\n\t}\n};\n\nconst updateLoadingCount = (instance, plusMinus) => {\n\tinstance._loadingCount += plusMinus;\n\tif (instance._elements.length === 0 && instance._loadingCount === 0) {\n\t\tcallbackIfSet(instance._settings.callback_finish);\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\tcallbackIfSet(callback, element);\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, instance) => {\n\tconst settings = instance._settings;\n\tcallbackIfSet(settings.callback_enter, element);\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, instance) => {\n\tconst settings = instance._settings;\n\tcallbackIfSet(settings.callback_exit, element);\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\tcallbackIfSet(settings.callback_reveal, element);\n\tcallbackIfSet(settings.callback_set, element);\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, instance)\n\t\t\t\t: onExit(entry.target, 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 LazyLoad = function(customSettings, elements) {\n\tthis._settings = getInstanceSettings(customSettings);\n\tthis._loadingCount = 0;\n\tsetObserver(this);\n\tthis.update(elements);\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"]}