UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 1.93 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as e}from"../utils/isPlainObject.js";const a={showLoading:!0,preload:1},t="is-lazyloading",s="is-lazyloaded",l=()=>{let l;function n(){const t=null==l?void 0:l.getOptions().Lazyload;return e(t)?Object.assign(Object.assign({},a),t):a}function o(e){const a=e.el;if(!a)return;const o="[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]",d=Array.from(a.querySelectorAll(o));a.matches(o)&&d.push(a);for(const a of d){const o=a.dataset.lazySrc,d=a.dataset.lazySrcset,i=a.dataset.lazySizes,c=a.dataset.lazyBg,r=(a instanceof HTMLImageElement||a instanceof HTMLSourceElement)&&(o||d),f=a instanceof HTMLElement&&c;if(!r&&!f)continue;const u=o||d||c;if(u){if(r&&u)n().showLoading&&(null==l||l.showLoading(e)),a.addEventListener("load",(()=>{null==l||l.hideLoading(e),a instanceof HTMLImageElement?a.decode().then((()=>{a.classList.remove(t),a.classList.add(s)})):(a.classList.remove(t),a.classList.add(s)),null==l||l.emit("lazyLoad:loaded",e,a,u)})),a.addEventListener("error",(()=>{null==l||l.hideLoading(e),a.classList.remove(t),a.classList.add("has-lazyerror"),null==l||l.emit("lazyLoad:error",e,a,u)})),a.classList.add("f-lazyload"),a.classList.add(t),null==l||l.emit("lazyLoad:load",e,a,u),o&&(a.src=o),d&&(a.srcset=d),i&&(a.sizes=i);else if(f){if(!document.body.contains(a)){document.createElement("img").src=c}a.style.backgroundImage=`url('${c}')`}delete a.dataset.lazySrc,delete a.dataset.lazySrcset,delete a.dataset.lazySizes}}}function d(){var e;if(!l)return;const a=n().preload,t=l.getPages(),s=t.length,d=l.getPageIndex();for(let l=d-a;l<=d+a;l++){const a=(l%s+s)%s;for(const s of(null===(e=t[a])||void 0===e?void 0:e.slides)||[])o(s)}}function i(e,a){o(a)}return{init:function(e){l=e,l.on(["ready","change"],d),l.on("attachSlideEl",i)},destroy:function(){null==l||l.off(["ready","change"],d),null==l||l.off("attachSlideEl",i),l=void 0}}};export{l as Lazyload};