(function(){"use strict";var keyCounter=0;var allWaypoints={};function Waypoint(options){if(!options){throw new Error("No options passed to Waypoint constructor")}if(!options.element){throw new Error("No element option passed to Waypoint constructor")}if(!options.handler){throw new Error("No handler option passed to Waypoint constructor")}this.key="waypoint-"+keyCounter;this.options=Waypoint.Adapter.extend({},Waypoint.defaults,options);this.element=this.options.element;this.adapter=new Waypoint.Adapter(this.element);this.callback=options.handler;this.axis=this.options.horizontal?"horizontal":"vertical";this.enabled=this.options.enabled;this.triggerPoint=null;this.group=Waypoint.Group.findOrCreate({name:this.options.group,axis:this.axis});this.context=Waypoint.Context.findOrCreateByElement(this.options.context);if(Waypoint.offsetAliases[this.options.offset]){this.options.offset=Waypoint.offsetAliases[this.options.offset]}this.group.add(this);this.context.add(this);allWaypoints[this.key]=this;keyCounter+=1}Waypoint.prototype.queueTrigger=function(direction){this.group.queueTrigger(this,direction)};Waypoint.prototype.trigger=function(args){if(!this.enabled){return}if(this.callback){this.callback.apply(this,args)}};Waypoint.prototype.destroy=function(){this.context.remove(this);this.group.remove(this);delete allWaypoints[this.key]};Waypoint.prototype.disable=function(){this.enabled=false;return this};Waypoint.prototype.enable=function(){this.context.refresh();this.enabled=true;return this};Waypoint.prototype.next=function(){return this.group.next(this)};Waypoint.prototype.previous=function(){return this.group.previous(this)};Waypoint.invokeAll=function(method){var allWaypointsArray=[];for(var waypointKey in allWaypoints){allWaypointsArray.push(allWaypoints[waypointKey])}for(var i=0,end=allWaypointsArray.length;i<end;i++){allWaypointsArray[i][method]()}};Waypoint.destroyAll=function(){Waypoint.invokeAll("destroy")};Waypoint.disableAll=function(){Waypoint.invokeAll("disable")};Waypoint.enableAll=function(){Waypoint.Context.refreshAll();for(var waypointKey in allWaypoints){allWaypoints[waypointKey].enabled=true}return this};Waypoint.refreshAll=function(){Waypoint.Context.refreshAll()};Waypoint.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight};Waypoint.viewportWidth=function(){return document.documentElement.clientWidth};Waypoint.adapters=[];Waypoint.defaults={context:window,continuous:true,enabled:true,group:"default",horizontal:false,offset:0};Waypoint.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}};window.Waypoint=Waypoint})();(function(){"use strict";function requestAnimationFrameShim(callback){window.setTimeout(callback,1e3/60)}var keyCounter=0;var contexts={};var Waypoint=window.Waypoint;var oldWindowLoad=window.onload;function Context(element){this.element=element;this.Adapter=Waypoint.Adapter;this.adapter=new this.Adapter(element);this.key="waypoint-context-"+keyCounter;this.didScroll=false;this.didResize=false;this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()};this.waypoints={vertical:{},horizontal:{}};element.waypointContextKey=this.key;contexts[element.waypointContextKey]=this;keyCounter+=1;if(!Waypoint.windowContext){Waypoint.windowContext=true;Waypoint.windowContext=new Context(window)}this.createThrottledScrollHandler();this.createThrottledResizeHandler()}Context.prototype.add=function(waypoint){var axis=waypoint.options.horizontal?"horizontal":"vertical";this.waypoints[axis][waypoint.key]=waypoint;this.refresh()};Context.prototype.checkEmpty=function(){var horizontalEmpty=this.Adapter.isEmptyObject(this.waypoints.horizontal);var verticalEmpty=this.Adapter.isEmptyObject(this.waypoints.vertical);var isWindow=this.element==this.element.window;if(horizontalEmpty&&verticalEmpty&&!isWindow){this.adapter.off(".waypoints");delete contexts[this.key]}};Context.prototype.createThrottledResizeHandler=function(){var self=this;function resizeHandler(){self.handleResize();self.didResize=false}this.adapter.on("resize.waypoints",function(){if(!self.didResize){self.didResize=true;Waypoint.requestAnimationFrame(resizeHandler)}})};Context.prototype.createThrottledScrollHandler=function(){var self=this;function scrollHandler(){self.handleScroll();self.didScroll=false}this.adapter.on("scroll.waypoints",function(){if(!self.didScroll||Waypoint.isTouch){self.didScroll=true;Waypoint.requestAnimationFrame(scrollHandler)}})};Context.prototype.handleResize=function(){Waypoint.Context.refreshAll()};Context.prototype.handleScroll=function(){var triggeredGroups={};var axes={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var axisKey in axes){var axis=axes[axisKey];var isForward=axis.newScroll>axis.oldScroll;var direction=isForward?axis.forward:axis.backward;for(var waypointKey in this.waypoints[axisKey]){var waypoint=this.waypoints[axisKey][waypointKey];if(waypoint.triggerPoint===null){continue}var wasBeforeTriggerPoint=axis.oldScroll<waypoint.triggerPoint;var nowAfterTriggerPoint=axis.newScroll>=waypoint.triggerPoint;var crossedForward=wasBeforeTriggerPoint&&nowAfterTriggerPoint;var crossedBackward=!wasBeforeTriggerPoint&&!nowAfterTriggerPoint;if(crossedForward||crossedBackward){waypoint.queueTrigger(direction);triggeredGroups[waypoint.group.id]=waypoint.group}}}for(var groupKey in triggeredGroups){triggeredGroups[groupKey].flushTriggers()}this.oldScroll={x:axes.horizontal.newScroll,y:axes.vertical.newScroll}};Context.prototype.innerHeight=function(){if(this.element==this.element.window){return Waypoint.viewportHeight()}return this.adapter.innerHeight()};Context.prototype.remove=function(waypoint){delete this.waypoints[waypoint.axis][waypoint.key];this.checkEmpty()};Context.prototype.innerWidth=function(){if(this.element==this.element.window){return Waypoint.viewportWidth()}return this.adapter.innerWidth()};Context.prototype.destroy=function(){var allWaypoints=[];for(var axis in this.waypoints){for(var waypointKey in this.waypoints[axis]){allWaypoints.push(this.waypoints[axis][waypointKey])}}for(var i=0,end=allWaypoints.length;i<end;i++){allWaypoints[i].destroy()}};Context.prototype.refresh=function(){var isWindow=this.element==this.element.window;var contextOffset=isWindow?undefined:this.adapter.offset();var triggeredGroups={};var axes;this.handleScroll();axes={horizontal:{contextOffset:isWindow?0:contextOffset.left,contextScroll:isWindow?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:isWindow?0:contextOffset.top,contextScroll:isWindow?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var axisKey in axes){var axis=axes[axisKey];for(var waypointKey in this.waypoints[axisKey]){var waypoint=this.waypoints[axisKey][waypointKey];var adjustment=waypoint.options.offset;var oldTriggerPoint=waypoint.triggerPoint;var elementOffset=0;var freshWaypoint=oldTriggerPoint==null;var contextModifier,wasBeforeScroll,nowAfterScroll;var triggeredBackward,triggeredForward;if(waypoint.element!==waypoint.element.window){elementOffset=waypoint.adapter.offset()[axis.offsetProp]}if(typeof adjustment==="function"){adjustment=adjustment.apply(waypoint)}else if(typeof adjustment==="string"){adjustment=parseFloat(adjustment);if(waypoint.options.offset.indexOf("%")>-1){adjustment=Math.ceil(axis.contextDimension*adjustment/100)}}contextModifier=axis.contextScroll-axis.contextOffset;waypoint.triggerPoint=Math.floor(elementOffset+contextModifier-adjustment);wasBeforeScroll=oldTriggerPoint<axis.oldScroll;nowAfterScroll=waypoint.triggerPoint>=axis.oldScroll;triggeredBackward=wasBeforeScroll&&nowAfterScroll;triggeredForward=!wasBeforeScroll&&!nowAfterScroll;if(!freshWaypoint&&triggeredBackward){waypoint.queueTrigger(axis.backward);triggeredGroups[waypoint.group.id]=waypoint.group}else if(!freshWaypoint&&triggeredForward){waypoint.queueTrigger(axis.forward);triggeredGroups[waypoint.group.id]=waypoint.group}else if(freshWaypoint&&axis.oldScroll>=waypoint.triggerPoint){waypoint.queueTrigger(axis.forward);triggeredGroups[waypoint.group.id]=waypoint.group}}}Waypoint.requestAnimationFrame(function(){for(var groupKey in triggeredGroups){triggeredGroups[groupKey].flushTriggers()}});return this};Context.findOrCreateByElement=function(element){return Context.findByElement(element)||new Context(element)};Context.refreshAll=function(){for(var contextId in contexts){contexts[contextId].refresh()}};Context.findByElement=function(element){return contexts[element.waypointContextKey]};window.onload=function(){if(oldWindowLoad){oldWindowLoad()}Context.refreshAll()};Waypoint.requestAnimationFrame=function(callback){var requestFn=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||requestAnimationFrameShim;requestFn.call(window,callback)};Waypoint.Context=Context})();(function(){"use strict";function byTriggerPoint(a,b){return a.triggerPoint-b.triggerPoint}function byReverseTriggerPoint(a,b){return b.triggerPoint-a.triggerPoint}var groups={vertical:{},horizontal:{}};var Waypoint=window.Waypoint;function Group(options){this.name=options.name;this.axis=options.axis;this.id=this.name+"-"+this.axis;this.waypoints=[];this.clearTriggerQueues();groups[this.axis][this.name]=this}Group.prototype.add=function(waypoint){this.waypoints.push(waypoint)};Group.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}};Group.prototype.flushTriggers=function(){for(var direction in this.triggerQueues){var waypoints=this.triggerQueues[direction];var reverse=direction==="up"||direction==="left";waypoints.sort(reverse?byReverseTriggerPoint:byTriggerPoint);for(var i=0,end=waypoints.length;i<end;i+=1){var waypoint=waypoints[i];if(waypoint.options.continuous||i===waypoints.length-1){waypoint.trigger([direction])}}}this.clearTriggerQueues()};Group.prototype.next=function(waypoint){this.waypoints.sort(byTriggerPoint);var index=Waypoint.Adapter.inArray(waypoint,this.waypoints);var isLast=index===this.waypoints.length-1;return isLast?null:this.waypoints[index+1]};Group.prototype.previous=function(waypoint){this.waypoints.sort(byTriggerPoint);var index=Waypoint.Adapter.inArray(waypoint,this.waypoints);return index?this.waypoints[index-1]:null};Group.prototype.queueTrigger=function(waypoint,direction){this.triggerQueues[direction].push(waypoint)};Group.prototype.remove=function(waypoint){var index=Waypoint.Adapter.inArray(waypoint,this.waypoints);if(index>-1){this.waypoints.splice(index,1)}};Group.prototype.first=function(){return this.waypoints[0]};Group.prototype.last=function(){return this.waypoints[this.waypoints.length-1]};Group.findOrCreate=function(options){return groups[options.axis][options.name]||new Group(options)};Waypoint.Group=Group})();(function(){"use strict";var $=window.jQuery;var Waypoint=window.Waypoint;function JQueryAdapter(element){this.$element=$(element)}$.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(i,method){JQueryAdapter.prototype[method]=function(){var args=Array.prototype.slice.call(arguments);return this.$element[method].apply(this.$element,args)}});$.each(["extend","inArray","isEmptyObject"],function(i,method){JQueryAdapter[method]=$[method]});Waypoint.adapters.push({name:"jquery",Adapter:JQueryAdapter});Waypoint.Adapter=JQueryAdapter})();(function(){"use strict";var Waypoint=window.Waypoint;function createExtension(framework){return function(){var waypoints=[];var overrides=arguments[0];if(framework.isFunction(arguments[0])){overrides=framework.extend({},arguments[1]);overrides.handler=arguments[0]}this.each(function(){var options=framework.extend({},overrides,{element:this});if(typeof options.context==="string"){options.context=framework(this).closest(options.context)[0]}waypoints.push(new Waypoint(options))});return waypoints}}if(window.jQuery){window.jQuery.fn.waypoint=createExtension(window.jQuery)}if(window.Zepto){window.Zepto.fn.waypoint=createExtension(window.Zepto)}})();
(function (global, factory){
typeof exports==='object'&&typeof module!=='undefined' ? module.exports=factory() :
typeof define==='function'&&define.amd ? define(factory) :
(global=typeof globalThis!=='undefined' ? globalThis:global||self, global.LazyLoad=factory());
}(this, (function (){ 'use strict';
function _extends(){
_extends=Object.assign||function (target){
for (var i=1; i < arguments.length; i++){
var source=arguments[i];
for (var key in source){
if(Object.prototype.hasOwnProperty.call(source, key)){
target[key]=source[key];
}}
}
return target;
};
return _extends.apply(this, arguments);
}
var runningOnBrowser=typeof window!=="undefined";
var isBot=runningOnBrowser&&!("onscroll" in window)||typeof navigator!=="undefined"&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);
var supportsIntersectionObserver=runningOnBrowser&&"IntersectionObserver" in window;
var supportsClassList=runningOnBrowser&&"classList" in document.createElement("p");
var isHiDpi=runningOnBrowser&&window.devicePixelRatio > 1;
var defaultSettings={
elements_selector: ".lazy",
container: isBot||runningOnBrowser ? document:null,
threshold: 300,
thresholds: null,
data_src: "src",
data_srcset: "srcset",
data_sizes: "sizes",
data_bg: "bg",
data_bg_hidpi: "bg-hidpi",
data_bg_multi: "bg-multi",
data_bg_multi_hidpi: "bg-multi-hidpi",
data_bg_set: "bg-set",
data_poster: "poster",
class_applied: "applied",
class_loading: "loading",
class_loaded: "loaded",
class_error: "error",
class_entered: "entered",
class_exited: "exited",
unobserve_completed: true,
unobserve_entered: false,
cancel_on_exit: true,
callback_enter: null,
callback_exit: null,
callback_applied: null,
callback_loading: null,
callback_loaded: null,
callback_error: null,
callback_finish: null,
callback_cancel: null,
use_native: false,
restore_on_error: false
};
var getExtendedSettings=function getExtendedSettings(customSettings){
return _extends({}, defaultSettings, customSettings);
};
var createInstance=function createInstance(classObj, options){
var event;
var eventString="LazyLoad::Initialized";
var instance=new classObj(options);
try {
event=new CustomEvent(eventString, {
detail: {
instance: instance
}});
} catch (err){
event=document.createEvent("CustomEvent");
event.initCustomEvent(eventString, false, false, {
instance: instance
});
}
window.dispatchEvent(event);
};
var autoInitialize=function autoInitialize(classObj, options){
if(!options){
return;
}
if(!options.length){
createInstance(classObj, options);
}else{
for (var i=0, optionsItem; optionsItem=options[i]; i +=1){
createInstance(classObj, optionsItem);
}}
};
var SRC="src";
var SRCSET="srcset";
var SIZES="sizes";
var POSTER="poster";
var ORIGINALS="llOriginalAttrs";
var DATA="data";
var statusLoading="loading";
var statusLoaded="loaded";
var statusApplied="applied";
var statusEntered="entered";
var statusError="error";
var statusNative="native";
var dataPrefix="data-";
var statusDataName="ll-status";
var getData=function getData(element, attribute){
return element.getAttribute(dataPrefix + attribute);
};
var setData=function setData(element, attribute, value){
var attrName=dataPrefix + attribute;
if(value===null){
element.removeAttribute(attrName);
return;
}
element.setAttribute(attrName, value);
};
var getStatus=function getStatus(element){
return getData(element, statusDataName);
};
var setStatus=function setStatus(element, status){
return setData(element, statusDataName, status);
};
var resetStatus=function resetStatus(element){
return setStatus(element, null);
};
var hasEmptyStatus=function hasEmptyStatus(element){
return getStatus(element)===null;
};
var hasStatusLoading=function hasStatusLoading(element){
return getStatus(element)===statusLoading;
};
var hasStatusError=function hasStatusError(element){
return getStatus(element)===statusError;
};
var hasStatusNative=function hasStatusNative(element){
return getStatus(element)===statusNative;
};
var statusesAfterLoading=[statusLoading, statusLoaded, statusApplied, statusError];
var hadStartedLoading=function hadStartedLoading(element){
return statusesAfterLoading.indexOf(getStatus(element)) >=0;
};
var safeCallback=function safeCallback(callback, arg1, arg2, arg3){
if(!callback){
return;
}
if(arg3!==undefined){
callback(arg1, arg2, arg3);
return;
}
if(arg2!==undefined){
callback(arg1, arg2);
return;
}
callback(arg1);
};
var addClass=function addClass(element, className){
if(supportsClassList){
element.classList.add(className);
return;
}
element.className +=(element.className ? " ":"") + className;
};
var removeClass=function removeClass(element, className){
if(supportsClassList){
element.classList.remove(className);
return;
}
element.className=element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "");
};
var addTempImage=function addTempImage(element){
element.llTempImage=document.createElement("IMG");
};
var deleteTempImage=function deleteTempImage(element){
delete element.llTempImage;
};
var getTempImage=function getTempImage(element){
return element.llTempImage;
};
var unobserve=function unobserve(element, instance){
if(!instance) return;
var observer=instance._observer;
if(!observer) return;
observer.unobserve(element);
};
var resetObserver=function resetObserver(observer){
observer.disconnect();
};
var unobserveEntered=function unobserveEntered(element, settings, instance){
if(settings.unobserve_entered) unobserve(element, instance);
};
var updateLoadingCount=function updateLoadingCount(instance, delta){
if(!instance) return;
instance.loadingCount +=delta;
};
var decreaseToLoadCount=function decreaseToLoadCount(instance){
if(!instance) return;
instance.toLoadCount -=1;
};
var setToLoadCount=function setToLoadCount(instance, value){
if(!instance) return;
instance.toLoadCount=value;
};
var isSomethingLoading=function isSomethingLoading(instance){
return instance.loadingCount > 0;
};
var haveElementsToLoad=function haveElementsToLoad(instance){
return instance.toLoadCount > 0;
};
var getSourceTags=function getSourceTags(parentTag){
var sourceTags=[];
for (var i=0, childTag; childTag=parentTag.children[i]; i +=1){
if(childTag.tagName==="SOURCE"){
sourceTags.push(childTag);
}}
return sourceTags;
};
var forEachPictureSource=function forEachPictureSource(element, fn){
var parent=element.parentNode;
if(!parent||parent.tagName!=="PICTURE"){
return;
}
var sourceTags=getSourceTags(parent);
sourceTags.forEach(fn);
};
var forEachVideoSource=function forEachVideoSource(element, fn){
var sourceTags=getSourceTags(element);
sourceTags.forEach(fn);
};
var attrsSrc=[SRC];
var attrsSrcPoster=[SRC, POSTER];
var attrsSrcSrcsetSizes=[SRC, SRCSET, SIZES];
var attrsData=[DATA];
var hasOriginalAttrs=function hasOriginalAttrs(element){
return !!element[ORIGINALS];
};
var getOriginalAttrs=function getOriginalAttrs(element){
return element[ORIGINALS];
};
var deleteOriginalAttrs=function deleteOriginalAttrs(element){
return delete element[ORIGINALS];
};
var setOriginalsObject=function setOriginalsObject(element, attributes){
if(hasOriginalAttrs(element)){
return;
}
var originals={};
attributes.forEach(function (attribute){
originals[attribute]=element.getAttribute(attribute);
});
element[ORIGINALS]=originals;
};
var saveOriginalBackgroundStyle=function saveOriginalBackgroundStyle(element){
if(hasOriginalAttrs(element)){
return;
}
element[ORIGINALS]={
backgroundImage: element.style.backgroundImage
};};
var setOrResetAttribute=function setOrResetAttribute(element, attrName, value){
if(!value){
element.removeAttribute(attrName);
return;
}
element.setAttribute(attrName, value);
};
var restoreOriginalAttrs=function restoreOriginalAttrs(element, attributes){
if(!hasOriginalAttrs(element)){
return;
}
var originals=getOriginalAttrs(element);
attributes.forEach(function (attribute){
setOrResetAttribute(element, attribute, originals[attribute]);
});
};
var restoreOriginalBgImage=function restoreOriginalBgImage(element){
if(!hasOriginalAttrs(element)){
return;
}
var originals=getOriginalAttrs(element);
element.style.backgroundImage=originals.backgroundImage;
};
var manageApplied=function manageApplied(element, settings, instance){
addClass(element, settings.class_applied);
setStatus(element, statusApplied);
if(!instance) return;
if(settings.unobserve_completed){
unobserve(element, settings);
}
safeCallback(settings.callback_applied, element, instance);
};
var manageLoading=function manageLoading(element, settings, instance){
addClass(element, settings.class_loading);
setStatus(element, statusLoading);
if(!instance) return;
updateLoadingCount(instance, +1);
safeCallback(settings.callback_loading, element, instance);
};
var setAttributeIfValue=function setAttributeIfValue(element, attrName, value){
if(!value){
return;
}
element.setAttribute(attrName, value);
};
var setImageAttributes=function setImageAttributes(element, settings){
setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));
setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));
setAttributeIfValue(element, SRC, getData(element, settings.data_src));
};
var setSourcesImg=function setSourcesImg(imgEl, settings){
forEachPictureSource(imgEl, function (sourceTag){
setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);
setImageAttributes(sourceTag, settings);
});
setOriginalsObject(imgEl, attrsSrcSrcsetSizes);
setImageAttributes(imgEl, settings);
};
var setSourcesIframe=function setSourcesIframe(iframe, settings){
setOriginalsObject(iframe, attrsSrc);
setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));
};
var setSourcesVideo=function setSourcesVideo(videoEl, settings){
forEachVideoSource(videoEl, function (sourceEl){
setOriginalsObject(sourceEl, attrsSrc);
setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));
});
setOriginalsObject(videoEl, attrsSrcPoster);
setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));
setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));
videoEl.load();
};
var setSourcesObject=function setSourcesObject(object, settings){
setOriginalsObject(object, attrsData);
setAttributeIfValue(object, DATA, getData(object, settings.data_src));
};
var setBackground=function setBackground(element, settings, instance){
var bg1xValue=getData(element, settings.data_bg);
var bgHiDpiValue=getData(element, settings.data_bg_hidpi);
var bgDataValue=isHiDpi&&bgHiDpiValue ? bgHiDpiValue:bg1xValue;
if(!bgDataValue) return;
element.style.backgroundImage="url(\"".concat(bgDataValue, "\")");
getTempImage(element).setAttribute(SRC, bgDataValue);
manageLoading(element, settings, instance);
};
var setMultiBackground=function setMultiBackground(element, settings, instance){
var bg1xValue=getData(element, settings.data_bg_multi);
var bgHiDpiValue=getData(element, settings.data_bg_multi_hidpi);
var bgDataValue=isHiDpi&&bgHiDpiValue ? bgHiDpiValue:bg1xValue;
if(!bgDataValue){
return;
}
element.style.backgroundImage=bgDataValue;
manageApplied(element, settings, instance);
};
var setImgsetBackground=function setImgsetBackground(element, settings, instance){
var bgImgSetDataValue=getData(element, settings.data_bg_set);
if(!bgImgSetDataValue){
return;
}
var imgSetValues=bgImgSetDataValue.split("|");
var bgImageValues=imgSetValues.map(function (value){
return "image-set(".concat(value, ")");
});
element.style.backgroundImage=bgImageValues.join();
if(element.style.backgroundImage===''){
bgImageValues=imgSetValues.map(function (value){
return "-webkit-image-set(".concat(value, ")");
});
element.style.backgroundImage=bgImageValues.join();
}
manageApplied(element, settings, instance);
};
var setSourcesFunctions={
IMG: setSourcesImg,
IFRAME: setSourcesIframe,
VIDEO: setSourcesVideo,
OBJECT: setSourcesObject
};
var setSourcesNative=function setSourcesNative(element, settings){
var setSourcesFunction=setSourcesFunctions[element.tagName];
if(!setSourcesFunction){
return;
}
setSourcesFunction(element, settings);
};
var setSources=function setSources(element, settings, instance){
var setSourcesFunction=setSourcesFunctions[element.tagName];
if(!setSourcesFunction){
return;
}
setSourcesFunction(element, settings);
manageLoading(element, settings, instance);
};
var elementsWithLoadEvent=["IMG", "IFRAME", "VIDEO", "OBJECT"];
var hasLoadEvent=function hasLoadEvent(element){
return elementsWithLoadEvent.indexOf(element.tagName) > -1;
};
var checkFinish=function checkFinish(settings, instance){
if(instance&&!isSomethingLoading(instance)&&!haveElementsToLoad(instance)){
safeCallback(settings.callback_finish, instance);
}};
var addEventListener=function addEventListener(element, eventName, handler){
element.addEventListener(eventName, handler);
element.llEvLisnrs[eventName]=handler;
};
var removeEventListener=function removeEventListener(element, eventName, handler){
element.removeEventListener(eventName, handler);
};
var hasEventListeners=function hasEventListeners(element){
return !!element.llEvLisnrs;
};
var addEventListeners=function addEventListeners(element, loadHandler, errorHandler){
if(!hasEventListeners(element)) element.llEvLisnrs={};
var loadEventName=element.tagName==="VIDEO" ? "loadeddata":"load";
addEventListener(element, loadEventName, loadHandler);
addEventListener(element, "error", errorHandler);
};
var removeEventListeners=function removeEventListeners(element){
if(!hasEventListeners(element)){
return;
}
var eventListeners=element.llEvLisnrs;
for (var eventName in eventListeners){
var handler=eventListeners[eventName];
removeEventListener(element, eventName, handler);
}
delete element.llEvLisnrs;
};
var doneHandler=function doneHandler(element, settings, instance){
deleteTempImage(element);
updateLoadingCount(instance, -1);
decreaseToLoadCount(instance);
removeClass(element, settings.class_loading);
if(settings.unobserve_completed){
unobserve(element, instance);
}};
var loadHandler=function loadHandler(event, element, settings, instance){
var goingNative=hasStatusNative(element);
doneHandler(element, settings, instance);
addClass(element, settings.class_loaded);
setStatus(element, statusLoaded);
safeCallback(settings.callback_loaded, element, instance);
if(!goingNative) checkFinish(settings, instance);
};
var errorHandler=function errorHandler(event, element, settings, instance){
var goingNative=hasStatusNative(element);
doneHandler(element, settings, instance);
addClass(element, settings.class_error);
setStatus(element, statusError);
safeCallback(settings.callback_error, element, instance);
if(settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);
if(!goingNative) checkFinish(settings, instance);
};
var addOneShotEventListeners=function addOneShotEventListeners(element, settings, instance){
var elementToListenTo=getTempImage(element)||element;
if(hasEventListeners(elementToListenTo)){
return;
}
var _loadHandler=function _loadHandler(event){
loadHandler(event, element, settings, instance);
removeEventListeners(elementToListenTo);
};
var _errorHandler=function _errorHandler(event){
errorHandler(event, element, settings, instance);
removeEventListeners(elementToListenTo);
};
addEventListeners(elementToListenTo, _loadHandler, _errorHandler);
};
var loadBackground=function loadBackground(element, settings, instance){
addTempImage(element);
addOneShotEventListeners(element, settings, instance);
saveOriginalBackgroundStyle(element);
setBackground(element, settings, instance);
setMultiBackground(element, settings, instance);
setImgsetBackground(element, settings, instance);
};
var loadRegular=function loadRegular(element, settings, instance){
addOneShotEventListeners(element, settings, instance);
setSources(element, settings, instance);
};
var load=function load(element, settings, instance){
if(hasLoadEvent(element)){
loadRegular(element, settings, instance);
}else{
loadBackground(element, settings, instance);
}};
var loadNative=function loadNative(element, settings, instance){
element.setAttribute("loading", "lazy");
addOneShotEventListeners(element, settings, instance);
setSourcesNative(element, settings);
setStatus(element, statusNative);
};
var removeImageAttributes=function removeImageAttributes(element){
element.removeAttribute(SRC);
element.removeAttribute(SRCSET);
element.removeAttribute(SIZES);
};
var resetSourcesImg=function resetSourcesImg(element){
forEachPictureSource(element, function (sourceTag){
removeImageAttributes(sourceTag);
});
removeImageAttributes(element);
};
var restoreImg=function restoreImg(imgEl){
forEachPictureSource(imgEl, function (sourceEl){
restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);
});
restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);
};
var restoreVideo=function restoreVideo(videoEl){
forEachVideoSource(videoEl, function (sourceEl){
restoreOriginalAttrs(sourceEl, attrsSrc);
});
restoreOriginalAttrs(videoEl, attrsSrcPoster);
videoEl.load();
};
var restoreIframe=function restoreIframe(iframeEl){
restoreOriginalAttrs(iframeEl, attrsSrc);
};
var restoreObject=function restoreObject(objectEl){
restoreOriginalAttrs(objectEl, attrsData);
};
var restoreFunctions={
IMG: restoreImg,
IFRAME: restoreIframe,
VIDEO: restoreVideo,
OBJECT: restoreObject
};
var restoreAttributes=function restoreAttributes(element){
var restoreFunction=restoreFunctions[element.tagName];
if(!restoreFunction){
restoreOriginalBgImage(element);
return;
}
restoreFunction(element);
};
var resetClasses=function resetClasses(element, settings){
if(hasEmptyStatus(element)||hasStatusNative(element)){
return;
}
removeClass(element, settings.class_entered);
removeClass(element, settings.class_exited);
removeClass(element, settings.class_applied);
removeClass(element, settings.class_loading);
removeClass(element, settings.class_loaded);
removeClass(element, settings.class_error);
};
var restore=function restore(element, settings){
restoreAttributes(element);
resetClasses(element, settings);
resetStatus(element);
deleteOriginalAttrs(element);
};
var cancelLoading=function cancelLoading(element, entry, settings, instance){
if(!settings.cancel_on_exit) return;
if(!hasStatusLoading(element)) return;
if(element.tagName!=="IMG") return;
removeEventListeners(element);
resetSourcesImg(element);
restoreImg(element);
removeClass(element, settings.class_loading);
updateLoadingCount(instance, -1);
resetStatus(element);
safeCallback(settings.callback_cancel, element, entry, instance);
};
var onEnter=function onEnter(element, entry, settings, instance){
var dontLoad=hadStartedLoading(element);
setStatus(element, statusEntered);
addClass(element, settings.class_entered);
removeClass(element, settings.class_exited);
unobserveEntered(element, settings, instance);
safeCallback(settings.callback_enter, element, entry, instance);
if(dontLoad) return;
load(element, settings, instance);
};
var onExit=function onExit(element, entry, settings, instance){
if(hasEmptyStatus(element)) return;
addClass(element, settings.class_exited);
cancelLoading(element, entry, settings, instance);
safeCallback(settings.callback_exit, element, entry, instance);
};
var tagsWithNativeLazy=["IMG", "IFRAME", "VIDEO"];
var shouldUseNative=function shouldUseNative(settings){
return settings.use_native&&"loading" in HTMLImageElement.prototype;
};
var loadAllNative=function loadAllNative(elements, settings, instance){
elements.forEach(function (element){
if(tagsWithNativeLazy.indexOf(element.tagName)===-1){
return;
}
loadNative(element, settings, instance);
});
setToLoadCount(instance, 0);
};
var isIntersecting=function isIntersecting(entry){
return entry.isIntersecting||entry.intersectionRatio > 0;
};
var getObserverSettings=function getObserverSettings(settings){
return {
root: settings.container===document ? null:settings.container,
rootMargin: settings.thresholds||settings.threshold + "px"
};};
var intersectionHandler=function intersectionHandler(entries, settings, instance){
entries.forEach(function (entry){
return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance):onExit(entry.target, entry, settings, instance);
});
};
var observeElements=function observeElements(observer, elements){
elements.forEach(function (element){
observer.observe(element);
});
};
var updateObserver=function updateObserver(observer, elementsToObserve){
resetObserver(observer);
observeElements(observer, elementsToObserve);
};
var setObserver=function setObserver(settings, instance){
if(!supportsIntersectionObserver||shouldUseNative(settings)){
return;
}
instance._observer=new IntersectionObserver(function (entries){
intersectionHandler(entries, settings, instance);
}, getObserverSettings(settings));
};
var toArray=function toArray(nodeSet){
return Array.prototype.slice.call(nodeSet);
};
var queryElements=function queryElements(settings){
return settings.container.querySelectorAll(settings.elements_selector);
};
var excludeManagedElements=function excludeManagedElements(elements){
return toArray(elements).filter(hasEmptyStatus);
};
var hasError=function hasError(element){
return hasStatusError(element);
};
var filterErrorElements=function filterErrorElements(elements){
return toArray(elements).filter(hasError);
};
var getElementsToLoad=function getElementsToLoad(elements, settings){
return excludeManagedElements(elements||queryElements(settings));
};
var retryLazyLoad=function retryLazyLoad(settings, instance){
var errorElements=filterErrorElements(queryElements(settings));
errorElements.forEach(function (element){
removeClass(element, settings.class_error);
resetStatus(element);
});
instance.update();
};
var setOnlineCheck=function setOnlineCheck(settings, instance){
if(!runningOnBrowser){
return;
}
instance._onlineHandler=function (){
retryLazyLoad(settings, instance);
};
window.addEventListener("online", instance._onlineHandler);
};
var resetOnlineCheck=function resetOnlineCheck(instance){
if(!runningOnBrowser){
return;
}
window.removeEventListener("online", instance._onlineHandler);
};
var LazyLoad=function LazyLoad(customSettings, elements){
var settings=getExtendedSettings(customSettings);
this._settings=settings;
this.loadingCount=0;
setObserver(settings, this);
setOnlineCheck(settings, this);
this.update(elements);
};
LazyLoad.prototype={
update: function update(givenNodeset){
var settings=this._settings;
var elementsToLoad=getElementsToLoad(givenNodeset, settings);
setToLoadCount(this, elementsToLoad.length);
if(isBot||!supportsIntersectionObserver){
this.loadAll(elementsToLoad);
return;
}
if(shouldUseNative(settings)){
loadAllNative(elementsToLoad, settings, this);
return;
}
updateObserver(this._observer, elementsToLoad);
},
destroy: function destroy(){
if(this._observer){
this._observer.disconnect();
}
resetOnlineCheck(this);
queryElements(this._settings).forEach(function (element){
deleteOriginalAttrs(element);
});
delete this._observer;
delete this._settings;
delete this._onlineHandler;
delete this.loadingCount;
delete this.toLoadCount;
},
loadAll: function loadAll(elements){
var _this=this;
var settings=this._settings;
var elementsToLoad=getElementsToLoad(elements, settings);
elementsToLoad.forEach(function (element){
unobserve(element, _this);
load(element, settings, _this);
});
},
restoreAll: function restoreAll(){
var settings=this._settings;
queryElements(settings).forEach(function (element){
restore(element, settings);
});
}};
LazyLoad.load=function (element, customSettings){
var settings=getExtendedSettings(customSettings);
load(element, settings);
};
LazyLoad.resetStatus=function (element){
resetStatus(element);
};
if(runningOnBrowser){
autoInitialize(LazyLoad, window.lazyLoadOptions);
}
return LazyLoad;
})));