-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathlazy-load.min.js
1 lines (1 loc) · 1.44 KB
/
lazy-load.min.js
1
'use strict';var _extends=Object.assign||function(a){for(var c,b=1;b<arguments.length;b++)for(var d in c=arguments[b],c)Object.prototype.hasOwnProperty.call(c,d)&&(a[d]=c[d]);return a},defaults={imageLoadedClass:'js-lazy-image--handled',imageSelector:'.js-lazy-image',rootMargin:'50px 0px',threshold:0.01},config=void 0,images=void 0,imageCount=void 0,observer=void 0;Object.defineProperty(exports,'__esModule',{value:!0});function fetchImage(a){return new Promise(function(b,c){var d=new Image;d.src=a,d.onload=b,d.onerror=c})}function preloadImage(a){var b=a.dataset.original;return b?fetchImage(b).then(function(){applyImage(a,b)}):void 0}function loadImagesImmediately(a){for(var c,b=0;b<a.length;b++)c=a[b],preloadImage(c)}function disconnect(){observer&&observer.disconnect()}function onIntersection(a){if(0===imageCount)return void disconnect();for(var c,b=0;b<a.length;b++)c=a[b],0<c.intersectionRatio&&(imageCount--,observer.unobserve(c.target),preloadImage(c.target))}function applyImage(a,b){a.classList.add(config.imageLoadedClass),a.src=b}var LazyLoad={init:function init(a){if(config=_extends({},defaults,a),images=document.querySelectorAll(config.imageSelector),imageCount=images.length,!('IntersectionObserver'in window))loadImagesImmediately(images);else{observer=new IntersectionObserver(onIntersection,config);for(var c,b=0;b<images.length;b++)(c=images[b],!c.classList.contains(config.imageLoadedClass))&&observer.observe(c)}}};exports.default=LazyLoad;