@fancyapps/ui
Version:
Robust JavaScript UI Component Library
1 lines • 2.03 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 l(){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 s(t){let s=t.el;if(!s)return;let d="[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]",n=Array.from(s.querySelectorAll(d));for(let i of(s.matches(d)&&n.push(s),n)){let s=i.dataset.lazySrc,d=i.dataset.lazySrcset,n=i.dataset.lazySizes,r=i.dataset.lazyBg,c=(i instanceof HTMLImageElement||i instanceof HTMLSourceElement)&&(s||d),f=i instanceof HTMLElement&&r;if(!(c||f))continue;let y=s||d||r;y&&(c&&y?(l().showLoading&&e?.showLoading(t),i.addEventListener("load",()=>{e?.hideLoading(t),i instanceof HTMLImageElement?i.decode().then(()=>{i.classList.remove(a),i.classList.add(o)}):(i.classList.remove(a),i.classList.add(o)),e?.emit("lazyLoad:loaded",t,i,y)}),i.addEventListener("error",()=>{e?.hideLoading(t),i.classList.remove(a),i.classList.add("has-lazyerror"),e?.emit("lazyLoad:error",t,i,y)}),i.classList.add("f-lazyload"),i.classList.add(a),e?.emit("lazyLoad:load",t,i,y),s&&(i.src=s),d&&(i.srcset=d),n&&(i.sizes=n)):f&&(document.body.contains(i)||(document.createElement("img").src=r),i.style.backgroundImage=`url('${r}')`),delete i.dataset.lazySrc,delete i.dataset.lazySrcset,delete i.dataset.lazySizes)}}function d(){if(!e)return;let t=l().preload,a=e.getPages(),o=a.length,d=e.getPageIndex();for(let e=d-t;e<=d+t;e++){let t=(e%o+o)%o;for(let e of a[t]?.slides||[])s(e)}}function n(e,t){s(t)}return{init:function(t){(e=t).on(["ready","change"],d),e.on("attachSlideEl",n)},destroy:function(){e?.off(["ready","change"],d),e?.off("attachSlideEl",n),e=void 0}}}});