{"version":3,"sources":["lazyload.js"],"names":["global","factory","exports","_typeof","module","define","amd","LazyLoad","this","createInstance","element","classObj","isBelowViewport","eventString","container","threshold","isAboveViewport","isAtRightOfViewport","isAtLeftOfViewport","instanceSettings","settings","instance","_settings","force","_loadingCount","callbackIfSet","_previousLoopTime","callback_enter","managedTags","_loopTimeout","tagName","addOneShotEventListeners","handleScroll","addClass","class_loading","window","addEventListener","setWasProcessedData","callback_set","getDefaultSettings","elements_selector","throttle","data_src","data_srcset","data_sizes","data_bg","class_loaded","class_error","class_initial","skip_invisible","callback_load","callback_error","getData","attribute","dataPrefix","callback_finish","setData","value","attrName","removeAttribute","getWasProcessedData","purgeProcessedElements","processedDataName","elements","filter","purgeOneElement","elementToPurge","getTopOffset","getBoundingClientRect","top","pageYOffset","ownerDocument","documentElement","clientTop","fold","left","pageXOffset","getLeftOffset","documentWidth","innerWidth","offsetWidth","event","initCustomEvent","options","CustomEvent","dispatchEvent","detail","autoInitialize","document","createEvent","replaceExtToWebp","condition","replace","className","isBot","test","navigator","userAgent","supportsClassList","runningOnBrowser","removeClass","remove","getContext","createElement","detectWebp","classList","add","childTag","parentTag","children","setAttributeIfValue","RegExp","setSourcesInChildren","dataAttrName","toWebpFlag","parent","i","attrValue","setSourcesVideo","setSourcesFunction","setSourcesFunctions","to_webp","_updateLoadingCount","srcDataValue","setValue","setSourcesBgImage","callback","bgDataValue","argument","genericLoadEventName","IMG","srcDataName","parentNode","srcsetDataValue","srcsetDataName","backgroundImage","IFRAME","VIDEO","setSourcesImg","setSourcesIframe","setSources","removeEventListener","addAllEventListeners","_elements","loadHandler","eventName","handler","eventHandler","success","removeAllEventListeners","errorHandler","revealElement","length","splice","indexes","pop","_loopThroughElements","_extends","elementsLength","_queryOriginNode","_boundHandleScroll","offsetParent","_isFirstLoop","update","prototype","forceDownload","processedIndexes","push","removeFromArray","isFirstLoop","_startScrollHandler","_isHandlingScroll","remainingTime","_stopScrollHandler","loadAll","plusMinus","destroy","Date","now","clearTimeout","setTimeout","load","bind","nodeSet","querySelectorAll","Array","slice","call","optionsItem","webpString","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 getDefaultSettings = () => ({\n\telements_selector: \"img\",\n\tcontainer: window,\n\tthreshold: 300,\n\tthrottle: 150,\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\tclass_initial: \"initial\",\n\tskip_invisible: true,\n\tcallback_load: null,\n\tcallback_error: null,\n\tcallback_set: null,\n\tcallback_enter: null,\n\tcallback_finish: null,\n\tto_webp: false\n});\n\nconst dataPrefix = \"data-\";\nconst processedDataName = \"was-processed\";\nconst processedDataValue = \"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, processedDataValue);\n\nconst getWasProcessedData = element =>\n\tgetData(element, processedDataName) === processedDataValue;\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 getTopOffset = function(element) {\n\treturn (\n\t\telement.getBoundingClientRect().top +\n\t\twindow.pageYOffset -\n\t\telement.ownerDocument.documentElement.clientTop\n\t);\n};\n\nconst isBelowViewport = function(element, container, threshold) {\n\tconst fold =\n\t\tcontainer === window\n\t\t\t? window.innerHeight + window.pageYOffset\n\t\t\t: getTopOffset(container) + container.offsetHeight;\n\treturn fold <= getTopOffset(element) - threshold;\n};\n\nconst getLeftOffset = function(element) {\n\treturn (\n\t\telement.getBoundingClientRect().left +\n\t\twindow.pageXOffset -\n\t\telement.ownerDocument.documentElement.clientLeft\n\t);\n};\n\nconst isAtRightOfViewport = function(element, container, threshold) {\n\tconst documentWidth = window.innerWidth;\n\tconst fold =\n\t\tcontainer === window\n\t\t\t? documentWidth + window.pageXOffset\n\t\t\t: getLeftOffset(container) + documentWidth;\n\treturn fold <= getLeftOffset(element) - threshold;\n};\n\nconst isAboveViewport = function(element, container, threshold) {\n\tconst fold =\n\t\tcontainer === window ? window.pageYOffset : getTopOffset(container);\n\treturn fold >= getTopOffset(element) + threshold + element.offsetHeight;\n};\n\nconst isAtLeftOfViewport = function(element, container, threshold) {\n\tconst fold =\n\t\tcontainer === window ? window.pageXOffset : getLeftOffset(container);\n\treturn fold >= getLeftOffset(element) + threshold + element.offsetWidth;\n};\n\nfunction isInsideViewport(element, container, threshold) {\n\treturn (\n\t\t!isBelowViewport(element, container, threshold) &&\n\t\t!isAboveViewport(element, container, threshold) &&\n\t\t!isAtRightOfViewport(element, container, threshold) &&\n\t\t!isAtLeftOfViewport(element, container, threshold)\n\t);\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);\nconst supportsClassList =\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst supportsWebp = runningOnBrowser && detectWebp();\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 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\telement.load();\n};\n\nconst setSourcesBgImage = (element, settings) => {\n\tconst toWebpFlag = supportsWebp && settings.to_webp;\n\tconst srcDataValue = getData(element, settings.data_src);\n\tconst bgDataValue = getData(element, settings.data_bg);\n\n\tif (srcDataValue) {\n\t\tlet setValue = replaceExtToWebp(srcDataValue, toWebpFlag);\n\t\telement.style.backgroundImage = `url(\"${setValue}\")`;\n\t}\n\n\tif (bgDataValue) {\n\t\tlet setValue = replaceExtToWebp(bgDataValue, toWebpFlag);\n\t\telement.style.backgroundImage = setValue;\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\tinstance._updateLoadingCount(1);\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\n\t\treturn;\n\t}\n\tsetSourcesBgImage(element, settings);\n};\n\nconst callbackIfSet = function(callback, argument) {\n\tif (callback) {\n\t\tcallback(argument);\n\t}\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 addAllEventListeners = (element, loadHandler, errorHandler) => {\n\taddEventListener(element, genericLoadEventName, loadHandler);\n\taddEventListener(element, mediaLoadEventName, loadHandler);\n\taddEventListener(element, errorEventName, errorHandler);\n};\n\nconst removeAllEventListeners = (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 ? settings.callback_load : 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\tinstance._updateLoadingCount(-1);\n};\n\nconst addOneShotEventListeners = (element, instance) => {\n\tconst loadHandler = event => {\n\t\teventHandler(event, true, instance);\n\t\tremoveAllEventListeners(element, loadHandler, errorHandler);\n\t};\n\tconst errorHandler = event => {\n\t\teventHandler(event, false, instance);\n\t\tremoveAllEventListeners(element, loadHandler, errorHandler);\n\t};\n\taddAllEventListeners(element, loadHandler, errorHandler);\n};\n\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nfunction 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\tcallbackIfSet(settings.callback_enter, element);\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_set, element);\n}\n\nconst removeFromArray = (elements, indexes) => {\n\twhile (indexes.length) {\n\t\telements.splice(indexes.pop(), 1);\n\t}\n};\n\n/*\n * Constructor\n */\n\nconst LazyLoad = function(instanceSettings) {\n\tthis._settings = Object.assign({}, getDefaultSettings(), instanceSettings);\n\tthis._loadingCount = 0;\n\tthis._queryOriginNode =\n\t\tthis._settings.container === window\n\t\t\t? document\n\t\t\t: this._settings.container;\n\n\tthis._previousLoopTime = 0;\n\tthis._loopTimeout = null;\n\tthis._boundHandleScroll = this.handleScroll.bind(this);\n\n\tthis._isFirstLoop = true;\n\twindow.addEventListener(\"resize\", this._boundHandleScroll);\n\tthis.update();\n};\n\nLazyLoad.prototype = {\n\t_loopThroughElements: function(forceDownload) {\n\t\tconst settings = this._settings,\n\t\t\telements = this._elements,\n\t\t\telementsLength = !elements ? 0 : elements.length;\n\t\tlet i,\n\t\t\tprocessedIndexes = [],\n\t\t\tisFirstLoop = this._isFirstLoop;\n\n\t\tif (isFirstLoop) {\n\t\t\tthis._isFirstLoop = false;\n\t\t}\n\n\t\tif (elementsLength === 0) {\n\t\t\tthis._stopScrollHandler();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (i = 0; i < elementsLength; i++) {\n\t\t\tlet element = elements[i];\n\t\t\t/* If must skip_invisible and element is invisible, skip it */\n\t\t\tif (settings.skip_invisible && element.offsetParent === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tforceDownload ||\n\t\t\t\tisInsideViewport(\n\t\t\t\t\telement,\n\t\t\t\t\tsettings.container,\n\t\t\t\t\tsettings.threshold\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (isFirstLoop) {\n\t\t\t\t\taddClass(element, settings.class_initial);\n\t\t\t\t}\n\t\t\t\tthis.load(element);\n\t\t\t\tprocessedIndexes.push(i);\n\t\t\t}\n\t\t}\n\n\t\t// Removing processed elements from this._elements.\n\t\tremoveFromArray(elements, processedIndexes);\n\t},\n\n\t_startScrollHandler: function() {\n\t\tif (!this._isHandlingScroll) {\n\t\t\tthis._isHandlingScroll = true;\n\t\t\tthis._settings.container.addEventListener(\n\t\t\t\t\"scroll\",\n\t\t\t\tthis._boundHandleScroll\n\t\t\t);\n\t\t}\n\t},\n\n\t_stopScrollHandler: function() {\n\t\tif (this._isHandlingScroll) {\n\t\t\tthis._isHandlingScroll = false;\n\t\t\tthis._settings.container.removeEventListener(\n\t\t\t\t\"scroll\",\n\t\t\t\tthis._boundHandleScroll\n\t\t\t);\n\t\t}\n\t},\n\n\t_updateLoadingCount: function(plusMinus) {\n\t\tthis._loadingCount += plusMinus;\n\t\tif (this._elements.length === 0 && this._loadingCount === 0) {\n\t\t\tcallbackIfSet(this._settings.callback_finish);\n\t\t}\n\t},\n\n\thandleScroll: function() {\n\t\tconst throttle = this._settings.throttle;\n\n\t\tif (throttle !== 0) {\n\t\t\tlet now = Date.now();\n\t\t\tlet remainingTime = throttle - (now - this._previousLoopTime);\n\t\t\tif (remainingTime <= 0 || remainingTime > throttle) {\n\t\t\t\tif (this._loopTimeout) {\n\t\t\t\t\tclearTimeout(this._loopTimeout);\n\t\t\t\t\tthis._loopTimeout = null;\n\t\t\t\t}\n\t\t\t\tthis._previousLoopTime = now;\n\t\t\t\tthis._loopThroughElements();\n\t\t\t} else if (!this._loopTimeout) {\n\t\t\t\tthis._loopTimeout = setTimeout(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tthis._previousLoopTime = Date.now();\n\t\t\t\t\t\tthis._loopTimeout = null;\n\t\t\t\t\t\tthis._loopThroughElements();\n\t\t\t\t\t}.bind(this),\n\t\t\t\t\tremainingTime\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._loopThroughElements();\n\t\t}\n\t},\n\n\tloadAll: function() {\n\t\tthis._loopThroughElements(true);\n\t},\n\n\tupdate: function(elements) {\n\t\tconst settings = this._settings;\n\t\tconst nodeSet =\n\t\t\telements ||\n\t\t\tthis._queryOriginNode.querySelectorAll(settings.elements_selector);\n\n\t\tthis._elements = purgeProcessedElements(\n\t\t\tArray.prototype.slice.call(nodeSet) // NOTE: nodeset to array for IE compatibility\n\t\t);\n\n\t\tif (isBot) {\n\t\t\tthis.loadAll();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._loopThroughElements();\n\t\tthis._startScrollHandler();\n\t},\n\n\tdestroy: function() {\n\t\twindow.removeEventListener(\"resize\", this._boundHandleScroll);\n\t\tif (this._loopTimeout) {\n\t\t\tclearTimeout(this._loopTimeout);\n\t\t\tthis._loopTimeout = null;\n\t\t}\n\t\tthis._stopScrollHandler();\n\t\tthis._elements = null;\n\t\tthis._queryOriginNode = null;\n\t\tthis._settings = null;\n\t},\n\n\tload: function(element, force) {\n\t\trevealElement(element, this, 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"]}