alazyload
Version:
lazyload plugin for image galleries
1 lines • 2.21 kB
JavaScript
!function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(1)},function(t,e){var i=function(t,e,i){function o(){return+new Date}var n=[].slice,r=200,l=function(t,e,i){i="undefined"==typeof i?!1:Boolean(i);for(var o in e)!i&&o in t||(t[o]=e[o]);return t},s=function(t,e){var i,r,l,s=null,a=0,c=function(){a=o(),s=null,l=t.apply(i,r),r=null};return function(d){var u=o();i=d,r=n.call(arguments,1),a||(a=u);var m=e-(u-a);0>=m||m>e?(s&&clearTimeout(s),s=null,a=u,l=t.apply(i,r),r=null):s=setTimeout(c,m)}},a=function(t,i){var o=n.call(arguments,1),r={item:".lazy-img",dataSrc:"data-img",offset:0};if(!o){if("object"!=typeof t||null===t)throw new Error("need opts arguments here.");i=t,t=null}this.opts=l(i,r),this.element="string"==typeof(t=t||i.element)?e.querySelector(t):t,this.items=this.element.querySelectorAll(this.opts.itemClass),this.init()};return a.prototype={constructor:a,init:function(){var t=this;this._loadImgsWithinView();var e=s(this._loadImgsWithinView,r);this._optimizedLoadImgsWithinView=function(i){e.call(this,t)},this._addScrollHandler()},_loadImgsWithinView:function(){var t="number"!=typeof(t=this.opts.offset)?parseInt(t,10):t,i=window.innerWidth||e.documentElement.clientWidth,o=window.innerHeight||e.documentElement.clientHeight,r={top:-t,left:-t,bottom:o+t,right:i+t};this.items=n.call(this.items);for(var l,s,a,c=0,d=this.items.length;d>c;c++)s=this.items[c],l=s.getBoundingClientRect(),a=l.top<=r.bottom&&l.bottom>=r.top&&l.left<=r.right&&l.right>=r.left,console.log("isInViewport: ",a),a&&(console.log("load img: ",s),this._loadImgItem(s),this.items.splice(c,1),c--,d--);0===d&&this._removeScrollHandler()},_loadImgItem:function(t){var e=this.opts.dataSrc,i=t.getAttribute(e);t.removeAttribute(e),i&&t.setAttribute("src",i)},_removeScrollHandler:function(){e.removeEventListener("scroll",this._optimizedLoadImgsWithinView)},_addScrollHandler:function(){e.addEventListener("scroll",this._optimizedLoadImgsWithinView)}},a}(window,window.document,void 0);"object"==typeof t&&t.exports?t.exports=i:window.ALazyload=i}]);