UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

2 lines 2.15 kB
/*! License details at fancyapps.com/license */ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.window=e.window||{}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.add(t)})},n=e=>typeof e==`object`&&!!e&&e.constructor===Object&&Object.prototype.toString.call(e)===`[object Object]`,r=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.remove(t)})},i={showLoading:!0,preload:1},a=`is-lazyloading`,o=`is-lazyloaded`,s=`has-lazyerror`;e.Lazyload=()=>{let e;function c(){let t=e?.getOptions().Lazyload;return n(t)?{...i,...t}:i}function l(n){let i=n.el;if(!i)return;let l=c(),u=`[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]`,d=Array.from(i.querySelectorAll(u));i.matches(u)&&d.push(i);for(let i of d){let c=i.dataset.lazySrc,u=i.dataset.lazySrcset,d=i.dataset.lazySizes,f=i.dataset.lazyBg,p=(i instanceof HTMLImageElement||i instanceof HTMLSourceElement)&&(c||u),m=!!f;if(!(p||m))continue;let h=c||u||f;if(h){if(p){let f=i.parentElement?.classList.contains(`f-panzoom__wrapper`);l.showLoading&&e?.showLoading(n),i.addEventListener(`load`,()=>{e?.hideLoading(n),r(i,s),i instanceof HTMLImageElement?i.decode().finally(()=>{r(i,a),t(i,o)}).catch(()=>void 0):(r(i,a),t(i,o)),f||e?.emit(`lazyLoad:loaded`,n,i,h)}),i.addEventListener(`error`,()=>{e?.hideLoading(n),r(i,a),t(i,s),f||e?.emit(`lazyLoad:error`,n,i,h)}),i.classList.add(`f-lazyload`),i.classList.add(a),f||e?.emit(`lazyLoad:load`,n,i,h),c&&(i.src=c),u&&(i.srcset=u),d&&(i.sizes=d)}else m&&(i.style.backgroundImage=`url('${f}')`);delete i.dataset.lazySrc,delete i.dataset.lazySrcset,delete i.dataset.lazySizes,delete i.dataset.lazyBg}}}function u(){if(!e)return;let t=[...e.getVisibleSlides()],n=c().preload;if(n>0){let r=e.getPosition(),i=e.getViewportDim();t.push(...e.getVisibleSlides(r+i*n),...e.getVisibleSlides(r-i*n))}for(let e of t)l(e)}return{init:function(t){e=t,e.on(`render`,u)},destroy:function(){e?.off(`render`,u),e=void 0}}}});