@fancyapps/ui
Version:
Robust JavaScript UI Component Library
1 lines • 2.09 kB
JavaScript
!/*! License details at fancyapps.com/license */function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).window=e.window||{})}(this,function(e){"use strict";let t={showLoading:!0,preload:1},a="is-lazyloading",s="is-lazyloaded";e.Lazyload=()=>{let e;function o(){let a=e?.getOptions().Lazyload;return"object"==typeof a&&null!==a&&a.constructor===Object&&"[object Object]"===Object.prototype.toString.call(a)?{...t,...a}:t}function l(){if(!e)return;let t=[...e.getVisibleSlides()],l=o().preload;if(l>0){let a=e.getPosition(),s=e.getViewportDim();t.push(...e.getVisibleSlides(a+s*l),...e.getVisibleSlides(a-s*l))}for(let l of t)!function(t){let l=t.el;if(!l)return;let i="[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]",d=Array.from(l.querySelectorAll(i));for(let n of(l.matches(i)&&d.push(l),d)){let l=n.dataset.lazySrc,i=n.dataset.lazySrcset,d=n.dataset.lazySizes,r=n.dataset.lazyBg,c=(n instanceof HTMLImageElement||n instanceof HTMLSourceElement)&&(l||i),f=n instanceof HTMLElement&&r;if(!(c||f))continue;let y=l||i||r;if(y){if(c&&y){let r=n.parentElement?.classList.contains("f-panzoom__wrapper");o().showLoading&&e?.showLoading(t),n.addEventListener("load",()=>{e?.hideLoading(t),n instanceof HTMLImageElement?n.decode().then(()=>{n.classList.remove(a),n.classList.add(s)}):(n.classList.remove(a),n.classList.add(s)),r||e?.emit("lazyLoad:loaded",t,n,y)}),n.addEventListener("error",()=>{e?.hideLoading(t),n.classList.remove(a),n.classList.add("has-lazyerror"),r||e?.emit("lazyLoad:error",t,n,y)}),n.classList.add("f-lazyload"),n.classList.add(a),r||e?.emit("lazyLoad:load",t,n,y),l&&(n.src=l),i&&(n.srcset=i),d&&(n.sizes=d)}else f&&(document.body.contains(n)||(document.createElement("img").src=r),n.style.backgroundImage=`url('${r}')`);delete n.dataset.lazySrc,delete n.dataset.lazySrcset,delete n.dataset.lazySizes,delete n.dataset.lazyBg}}}(l)}return{init:function(t){(e=t).on("render",l)},destroy:function(){e?.off("render",l),e=void 0}}}});