UNPKG

late-images

Version:

Lightweight javascript library to lazy load images as enter viewport

1 lines 1.95 kB
!function(a,b){"function"==typeof define&&define.amd?define(["when-in-viewport"],b):"object"==typeof module&&module.exports?module.exports=b(require("when-in-viewport")):a.LateImage=b(a.WhenInViewport)}(this,function(a){function b(d,f){this.el=d,f=e({},b.defaults,f,{context:this}),f.enableViewportCheck?this.inViewportListener=new a(d,function(){c(d,f)},{threshold:f.threshold}):c(d,f)}function c(a,b){var c=a.getAttribute(b.srcAttribute);b.loadingCallback&&b.loadingCallback(a,b.context),h(a,b.loadingClass,!0),d(c,function(d){a.setAttribute("src",c),h(a,b.loadingClass,!1),h(a,b.loadedClass,!0),a.getAttribute(b.altAttribute)&&a.setAttribute("alt",a.getAttribute(b.altAttribute)),b.doneCallback&&b.doneCallback(a,d,b.context)},function(c){h(a,b.loadingClass,!1),h(a,b.errorClass,!0),b.failCallback&&b.failCallback(a,c,b.context)})}function d(a,b,c){var d=new Image;d.onload=b,d.onerror=c,d.src=a}function e(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];if(c)for(var d in c)c.hasOwnProperty(d)&&void 0!==c[d]&&(a[d]=c[d])}return a}function f(a,b){for(var c=0;c<a.length;c++)b(a[c],c)}function g(a){var b=[];return f(a,function(a){a&&b.push(a)}),b}function h(a,c,d){if(b.toggleClass)return b.toggleClass(a,c,d);var e=g((a.className||"").split(" ")),h=g(c.split(" ")),i=[];f(d?h:e,function(a){(d?e:h).indexOf(a)<0&&i.push(a)}),a.setAttribute("class",i.join(" "))}b.defaults={srcAttribute:"data-src",altAttribute:"data-alt",loadingCallback:null,doneCallback:null,failCallback:null,threshold:0,loadingClass:"lateImageLoading",loadedClass:"lateImageLoaded",errorClass:"lateImageError",enableViewportCheck:!0},b.prototype.destroy=function(){this.inViewportListener&&this.inViewportListener.stopListening()},b.registerAsJqueryPlugin=function(a){a.fn.lateImages=function(c){return this.each(function(){a.data(this,"lateImage")||a.data(this,"lateImage",new b(this,c))})}};var i=window.jQuery||window.$;return i&&b.registerAsJqueryPlugin(i),b});