@fancyapps/ui
Version:
Robust JavaScript UI Component Library
1 lines • 1.98 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",o="is-lazyloaded";e.Lazyload=()=>{let e;function s(){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=s().preload,l=[...e.getVisibleSlides()],d=e.getPosition(),i=e.getViewportDim();for(let n of(l.push(...e.getVisibleSlides(d+i*t),...e.getVisibleSlides(d-i*t)),l||[]))!function(t){let l=t.el;if(!l)return;let d="[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]",i=Array.from(l.querySelectorAll(d));for(let n of(l.matches(d)&&i.push(l),i)){let l=n.dataset.lazySrc,d=n.dataset.lazySrcset,i=n.dataset.lazySizes,r=n.dataset.lazyBg,c=(n instanceof HTMLImageElement||n instanceof HTMLSourceElement)&&(l||d),f=n instanceof HTMLElement&&r;if(!(c||f))continue;let y=l||d||r;y&&(c&&y?(s().showLoading&&e?.showLoading(t),n.addEventListener("load",()=>{e?.hideLoading(t),n instanceof HTMLImageElement?n.decode().then(()=>{n.classList.remove(a),n.classList.add(o)}):(n.classList.remove(a),n.classList.add(o)),e?.emit("lazyLoad:loaded",t,n,y)}),n.addEventListener("error",()=>{e?.hideLoading(t),n.classList.remove(a),n.classList.add("has-lazyerror"),e?.emit("lazyLoad:error",t,n,y)}),n.classList.add("f-lazyload"),n.classList.add(a),e?.emit("lazyLoad:load",t,n,y),l&&(n.src=l),d&&(n.srcset=d),i&&(n.sizes=i)):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)}}(n)}return{init:function(t){(e=t).on("render",l)},destroy:function(){e?.off("render",l),e=void 0}}}});