UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

2 lines 31.3 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=>typeof e==`object`&&!!e&&e.constructor===Object&&Object.prototype.toString.call(e)===`[object Object]`,n=e=>e&&e!==null&&e instanceof Element&&`nodeType`in e,r=e=>typeof e==`string`,i=function(e){if(!(e&&e instanceof Element&&e.offsetParent))return!1;let t=!1,n=!1;if(e.scrollWidth>e.clientWidth){let n=window.getComputedStyle(e).overflowX,r=n.indexOf(`hidden`)!==-1,i=n.indexOf(`clip`)!==-1,a=n.indexOf(`visible`)!==-1;t=!r&&!i&&!a}if(e.scrollHeight>e.clientHeight){let t=window.getComputedStyle(e).overflowY,r=t.indexOf(`hidden`)!==-1,i=t.indexOf(`clip`)!==-1,a=t.indexOf(`visible`)!==-1;n=!r&&!i&&!a}return t||n},a=function(e,t=void 0){return!e||e===document.body||t&&e===t?null:i(e)?e:a(e.parentElement,t)},o=(e,t)=>{let n=[];return e.childNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(!t||e.matches(t))&&n.push(e)}),n},s=(e,...n)=>{let r=n.length;for(let i=0;i<r;i++){let r=n[i]||{};Object.entries(r).forEach(([n,r])=>{let i=Array.isArray(r)?[]:{};e[n]||Object.assign(e,{[n]:i}),t(r)?Object.assign(e[n],s(e[n],r)):Array.isArray(r)?Object.assign(e,{[n]:[...r]}):Object.assign(e,{[n]:r})})}return e},c=function(e=0,t=0,n=0){return Math.max(Math.min(t,n),e)},l=function(e=0,t=0,n=0,r=0,i=0,a=!1){let o=(e-t)/(n-t)*(i-r)+r;return a?r<i?c(r,o,i):c(i,o,r):o},u=function(e){var t=new DOMParser().parseFromString(e,`text/html`).body;if(t.childElementCount>1){for(var n=document.createElement(`div`);t.firstChild;)n.appendChild(t.firstChild);return n}let r=t.firstChild;if(r&&!(r instanceof HTMLElement)){var n=document.createElement(`div`);return n.appendChild(r),n}return r},d=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.add(t)})},f=(e,t=``)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.remove(t)})},p=(e,t=``,n)=>{e&&e.classList&&t.split(` `).forEach(t=>{t&&e.classList.toggle(t,n||!1)})};function m(e){return t(e)||Array.isArray(e)}function h(e,t){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>{let r=e[n],i=t[n];return typeof r==`function`?`${r}`==`${i}`:!m(r)||!m(i)?r===i:h(r,i)}):!1}let g=function(e){for(let t of b)t.getState()===_.Running&&t.tick(S?e-S:0);S=e,x=window.requestAnimationFrame(g)},_=function(e){return e[e.Initializing=0]=`Initializing`,e[e.Running=1]=`Running`,e[e.Paused=2]=`Paused`,e[e.Completed=3]=`Completed`,e[e.Destroyed=4]=`Destroyed`,e}({});var v=function(e){return e[e.Spring=0]=`Spring`,e[e.Ease=1]=`Ease`,e}(v||{});let y=function(e){return e[e.Loop=0]=`Loop`,e[e.Reverse=1]=`Reverse`,e}({}),b=new Set,x=null,S=0;function C(){let e=_.Initializing,t=v.Ease,n=0,r=0,i=C.Easings.Linear,a=500,o=0,s=0,l=0,u=0,d=1/0,f=.01,p=.01,m=!1,S={},w=null,T={},E={},D={},O=0,k=0,A=y.Loop,j=C.Easings.Linear,M=new Map;function N(e,t){M.set(e,[...M.get(e)||[],t])}function P(e,t){M.has(e)&&M.set(e,M.get(e).filter(e=>e!==t))}function F(e,...t){for(let n of M.get(e)||[])n(...t)}function ee(e){return r=0,e?w=setTimeout(()=>{I()},e):I(),B}function I(){e=_.Running,F(`start`,T,E)}function L(){return w&&=(clearTimeout(w),null),e===_.Running&&(e=_.Paused,F(`pause`,T)),B}function R(n){n>50&&(n=50),r+=n;let g=0,b=!1;if(e!==_.Running)return B;if(t===v.Ease){g=c(0,r/a,1),b=g===1;let e=A===y.Reverse?j:i;for(let t in T)T[t]=S[t]+(E[t]-S[t])*e(g)}if(t===v.Spring){let e=n*.001,t=0;for(let n in T){let r=E[n],i=T[n];if(!(typeof r==`number`&&!isNaN(r))||!(typeof i==`number`&&!isNaN(i)))continue;if(Math.abs(r-i)<=p){T[n]=r,D[n]=0;continue}D[n]||(typeof o==`object`&&typeof o[n]==`number`?D[n]=o[n]:typeof o==`number`?D[n]=o:D[n]=0);let a=D[n];a=c(Math.abs(d)*-1,a,Math.abs(d));let h=a*s*u,g=Math.abs(r-i)*l,_=((i>r?-1:1)*g-h)/s;a+=_*e,i+=a*e;let v=T[n]>r?i<r:i>r,y=Math.abs(a)<f&&Math.abs(r-i)<=p;m&&v&&(y=!0),y?(i=r,a=0):t++,T[n]=i,D[n]=a}b=!t}let x={...E};return F(`step`,T,S,E,g),b&&e===_.Running&&h(E,x)&&(e=_.Completed,z()),B}function z(){if(e=_.Completed,D={},F(`end`,T),e===_.Completed)if(n<O){if(n++,A===y.Reverse){let e={...S};S={...E},E=e}ee(k)}else n=0;return B}let B={getState:function(){return e},easing:function(e){return i=e,t=v.Ease,D={},B},duration:function(e){return a=e,B},spring:function(e={}){t=v.Spring;let{velocity:n,mass:r,tension:i,friction:a,restDelta:c,restSpeed:h,maxSpeed:g,clamp:_}={velocity:0,mass:1,tension:170,friction:26,restDelta:.1,restSpeed:.1,maxSpeed:1/0,clamp:!0,...e};return o=n,s=r,l=i,u=a,p=c,f=h,d=g,m=_,D={},B},isRunning:function(){return e===_.Running},isSpring:function(){return t===v.Spring},from:function(e){return T={...e},B},to:function(e){return E=e,B},repeat:function(e,t=0,n=y.Loop,r){return O=e,k=t,A=n,j=r||i,B},on:function(e,t){return N(e,t),B},off:function(e,t){return P(e,t),B},start:function(t){return h(T,E)||(e=_.Initializing,S={...T},b.add(this),x||=window.requestAnimationFrame(g),ee(t)),B},pause:L,end:z,tick:R,getStartValues:function(){return S},getCurrentValues:function(){return T},getCurrentVelocities:function(){return D},getEndValues:function(){return E},destroy:function(){e=_.Destroyed,w&&=(clearTimeout(w),null),S=T=E={},b.delete(this)}};return B}C.destroy=()=>{for(let e of b)e.destroy();x&&=(cancelAnimationFrame(x),null)},C.Easings={Linear:function(e){return e},EaseIn:function(e){return e===0?0:2**(10*e-10)},EaseOut:function(e){return e===1?1:1-2**(-10*e)},EaseInOut:function(e){return e===0?0:e===1?1:e<.5?2**(20*e-10)/2:(2-2**(-20*e+10))/2}};function w(e){return typeof TouchEvent<`u`&&e instanceof TouchEvent}function T(e,t){let n=[],r=w(e)?e[t]:e instanceof MouseEvent&&(t===`changedTouches`||e.type!==`mouseup`)?[e]:[];for(let e of r)n.push({x:e.clientX,y:e.clientY,ts:Date.now()});return n}function E(e){return T(e,`touches`)}function D(e){return T(e,`targetTouches`)}function O(e){return T(e,`changedTouches`)}function k(e){let t=e[0],n=e[1]||t;return{x:(t.x+n.x)/2,y:(t.y+n.y)/2,ts:n.ts}}function A(e){let t=e[0],n=e[1]||e[0];return t&&n?Math.sqrt((n.x-t.x)*(n.x-t.x)+(n.y-t.y)*(n.y-t.y))*-1:0}let j=e=>{e.cancelable&&e.preventDefault()},M={passive:!1},N={panThreshold:5,swipeThreshold:3,ignore:[`textarea`,`input`,`select`,`[contenteditable]`,`[data-selectable]`,`[data-draggable]`]},P=!1,F=!0,ee=(e,t)=>{let n={...N,...t},r,i=[],a=[],o=[],s=!1,c=!1,l=!1,u=!1,d=0,f=0,p,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x,S=[],C,w,T=new Map;function ee(e,t){T.set(e,[...T.get(e)||[],t])}function I(e){let t=A(a),n=A(o),l=t&&n?t/n:0,u={srcEvent:r,isPanRecognized:s,isSwipeRecognized:c,firstTouch:i,previousTouch:o,currentTouch:a,deltaX:m,deltaY:h,offsetX:g,offsetY:_,velocityX:v,velocityY:y,velocity:Math.abs(v)>Math.abs(y)?v:y,angle:b,axis:x,scale:l,center:p};for(let t of T.get(e)||[])t(u)}function L(e){let t=e.target,r=e.composedPath()[0],i=n.ignore.join(`,`),a=e=>e&&e instanceof HTMLElement&&(e.matches(i)||e.closest(i));if(a(t)||a(r))return!1}function R(e){let t=Date.now();if(S=S.filter(e=>!e.ts||e.ts>t-100),e&&S.push(e),v=0,y=0,S.length>3){let e=S[0],t=S[S.length-1];if(e&&t){let n=t.x-e.x,r=t.y-e.y,i=e.ts&&t.ts?t.ts-e.ts:0;i>0&&(v=Math.abs(n)>3?n/(i/30):0,y=Math.abs(r)>3?r/(i/30):0)}}}function z(e){if(L(e)===!1)return;if(typeof MouseEvent<`u`&&e instanceof MouseEvent){if(P)return}else P=!0;if(typeof MouseEvent<`u`&&e instanceof MouseEvent){if(!e.buttons||e.button!==0)return;j(e)}e instanceof MouseEvent&&(window.addEventListener(`mousemove`,B),window.addEventListener(`mouseup`,V)),window.addEventListener(`blur`,te),r=e,a=D(e),i=[...a],o=[],f=a.length,p=k(a),f===1&&(s=!1,c=!1,l=!1),f&&R(k(a));let t=Date.now(),n=t-(d||t);u=n>0&&n<=250&&f===1,d=t,clearTimeout(C),I(`start`)}function B(e){if(!i.length||e.defaultPrevented||L(e)===!1)return;r=e,o=[...a],a=E(e);let t=k(o),c=k(E(e));if(R(c),f=a.length,p=c,o.length===a.length?(m=c.x-t.x,h=c.y-t.y):(m=0,h=0),i.length){let e=k(i);g=c.x-e.x,_=c.y-e.y}if(a.length>1){let e=A(a),t=A(o);Math.abs(e-t)>=.1&&(l=!0,I(`pinch`))}s||(s=Math.abs(g)>=n.panThreshold||Math.abs(_)>=n.panThreshold,s&&(F=!1,clearTimeout(w),w=void 0,b=Math.abs(Math.atan2(_,g)*180/Math.PI),x=b>45&&b<135?`y`:`x`,i=[...a],o=[...a],g=0,_=0,m=0,h=0,window.getSelection()?.removeAllRanges(),I(`panstart`))),s&&(m||h)&&I(`pan`),I(`move`)}function V(e){if(r=e,!i.length)return;let t=D(e),d=O(e);if(f=t.length,p=k(d),d.length&&R(k(d)),o=[...a],a=[...t],i=[...t],f>0)I(`end`),s=!1,c=!1,S=[];else{let e=n.swipeThreshold;(Math.abs(v)>e||Math.abs(y)>e)&&(c=!0),s&&I(`panend`),c&&I(`swipe`),!s&&!c&&!l&&(I(`tap`),u?I(`doubleTap`):C=setTimeout(function(){I(`singleTap`)},250)),I(`end`),ne()}}function te(){clearTimeout(C),ne(),s&&I(`panend`),I(`end`)}function ne(){P=!1,s=!1,c=!1,u=!1,f=0,S=[],a=[],o=[],i=[],m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=void 0,window.removeEventListener(`mousemove`,B),window.removeEventListener(`mouseup`,V),window.removeEventListener(`blur`,te),!F&&!w&&(w=setTimeout(()=>{F=!0,w=void 0},100))}function re(e){let t=e.target;P=!1,!(!t||e.defaultPrevented)&&(F||(j(e),e.stopPropagation()))}function H(){return e&&(e.addEventListener(`click`,re,M),e.addEventListener(`mousedown`,z,M),e.addEventListener(`touchstart`,z,M),e.addEventListener(`touchmove`,B,M),e.addEventListener(`touchend`,V),e.addEventListener(`touchcancel`,V)),U}let U={init:H,on:function(e,t){return ee(e,t),U},off:function(e,t){return T.has(e)&&T.set(e,T.get(e).filter(e=>e!==t)),U},isPointerDown:()=>f>0,destroy:function(){clearTimeout(C),clearTimeout(w),w=void 0,e&&(e.removeEventListener(`click`,re,M),e.removeEventListener(`mousedown`,z,M),e.removeEventListener(`touchstart`,z,M),e.removeEventListener(`touchmove`,B,M),e.removeEventListener(`touchend`,V),e.removeEventListener(`touchcancel`,V)),e=null,ne()}};return U};ee.isClickAllowed=()=>F;let I={IMAGE_ERROR:`This image couldn't be loaded. <br /> Please try again later.`,MOVE_UP:`Move up`,MOVE_DOWN:`Move down`,MOVE_LEFT:`Move left`,MOVE_RIGHT:`Move right`,ZOOM_IN:`Zoom in`,ZOOM_OUT:`Zoom out`,TOGGLE_FULL:`Toggle zoom level`,TOGGLE_1TO1:`Toggle zoom level`,ITERATE_ZOOM:`Toggle zoom level`,ROTATE_CCW:`Rotate counterclockwise`,ROTATE_CW:`Rotate clockwise`,FLIP_X:`Flip horizontally`,FLIP_Y:`Flip vertically`,RESET:`Reset`,TOGGLE_FS:`Toggle fullscreen`,ERROR:`Something went wrong. <br /> Please try again later.`,NEXT:`Next page`,PREV:`Previous page`,GOTO:`Go to page #%d`,DOWNLOAD:`Download`,TOGGLE_FULLSCREEN:`Toggle full-screen mode`,TOGGLE_EXPAND:`Toggle full-size mode`,TOGGLE_THUMBS:`Toggle thumbnails`,TOGGLE_AUTOPLAY:`Toggle slideshow`},L=function(e){return e[e.Init=0]=`Init`,e[e.Ready=1]=`Ready`,e[e.Destroyed=2]=`Destroyed`,e}({}),R=function(e){return e[e.Loading=0]=`Loading`,e[e.Loaded=1]=`Loaded`,e[e.Error=2]=`Error`,e}({}),z=e=>{e.cancelable&&e.preventDefault()},B={adaptiveHeight:!1,center:!0,classes:{container:`f-carousel`,isEnabled:`is-enabled`,isLTR:`is-ltr`,isRTL:`is-rtl`,isHorizontal:`is-horizontal`,isVertical:`is-vertical`,hasAdaptiveHeight:`has-adaptive-height`,viewport:`f-carousel__viewport`,slide:`f-carousel__slide`,isSelected:`is-selected`},dragFree:!1,enabled:!0,errorTpl:`<div class="f-html">{{ERROR}}</div>`,fill:!0,infinite:!0,initialPage:0,l10n:I,rtl:!1,slides:[],slidesPerPage:`auto`,spinnerTpl:`<div class="f-spinner"></div>`,transition:`fade`,tween:{clamp:!0,mass:1,tension:160,friction:25,restDelta:1,restSpeed:1,velocity:0},vertical:!1},V=0,te,ne,re=(e,i={},m={})=>{V++;let h=L.Init,g={...B},_={...B},v={},y,b,x,S=null,T=null,E=0,D=0,O=0,k=!1,A=!1,j=!1,M=`height`,N=0,P=!0,F,I=0,R=0,H=0,U=0,ie,ae=`*`,W=[],G=[],K=new Set,oe=[],q=[],se=0,ce=0,J=0;function Y(e,...t){let n=_[e];return n&&n instanceof Function?n($,...t):n}function le(e,t=[]){let n=Y(`l10n`)||{};e=String(e).replace(/\{\{(\w+)\}\}/g,(e,t)=>n[t]||e);for(let n=0;n<t.length;n++)e=e.split(t[n][0]).join(t[n][1]);return e=e.replace(/\{\{(.*?)\}\}/g,(e,t)=>t),e}let ue=new Map;function X(e,...t){let n=[...ue.get(e)||[]];_.on&&n.push(_.on[e]);for(let e of n)e&&e instanceof Function&&e($,...t);e===`click`&&Je(t[0]),e!==`*`&&X(`*`,e,...t)}function de(e,t){for(let n of e instanceof Array?e:[e])ue.set(n,[...ue.get(n)||[],t]);return $}function fe(e,t){for(let n of e instanceof Array?e:[e])ue.has(n)&&ue.set(n,ue.get(n).filter(e=>e!==t));return $}function pe(){if(!e||!n(e))throw Error(`No Element found`);return h!==L.Init&&(it(),h=L.Init),S=e,g=i,window.removeEventListener(`resize`,he),g.breakpoints&&window.addEventListener(`resize`,he),he(),$}function me(e={},n){return it(),h=L.Init,ie=void 0,ae=`*`,i=e,g=e,t(n)&&(m=n),he(),$}function he(){let e=s({},B,g),t=``,n=g.breakpoints||{};for(let[r,i]of Object.entries(n))window.matchMedia(r).matches&&(t+=r,s(e,i));if(!(ie!==void 0&&t===ie)){if(ie=t,h!==L.Init){let t=q[I]?.slides[0]?.index;t===void 0&&(t=_.initialSlide),e.initialSlide=t,e.slides=[];for(let t of W)t.isVirtual&&e.slides.push(t)}it(),_=e,Y(`enabled`)!==!1&&ge()}}function ge(){h=L.Init,X(`init`),_e(),ve(),ye(),Ue(),h=L.Ready,d(S,(Y(`classes`)||{}).isEnabled||``),Q(),ke(),Ce(),Te(),be(),X(`ready`)}function _e(){for(let[e,t]of Object.entries({...m,..._.plugins||{}}))if(e&&!v[e]&&t instanceof Function){let n=t();n.init($,re),v[e]=n}X(`initPlugins`)}function ve(){if(!S)return;let e=Y(`classes`)||{};d(S,e.container);let n=Y(`style`);if(n&&t(n))for(let[e,t]of Object.entries(n))S.style.setProperty(e,t);T=Array.from(S.querySelectorAll(`.${e.viewport}`)).filter(t=>t.closest(`.${e.container}`)===S).pop()||null,T||(T=document.createElement(`div`),d(T,e.viewport),T.append(...o(S,`.${e.slide}`)),S.insertAdjacentElement(`afterbegin`,T)),S.carousel=$,X(`initLayout`)}function ye(){if(!T)return;let e=Y(`classes`)||{};W=[],[...o(T,`.${e.slide}`)].forEach(e=>{if(e.parentElement){let t=Re({el:e,isVirtual:!1,...e.dataset||{}});X(`createSlide`,t),W.push(t)}}),He();for(let e of W)X(`addSlide`,e);Le(Y(`slides`));for(let e of W){let t=e.el;t?.parentElement===T&&(d(t,_.classes.slide),d(t,e.class),$e(e),X(`attachSlideEl`,e))}X(`initSlides`)}function be(){if(!S||!T)return;S.addEventListener(`click`,qe),document.addEventListener(`mousemove`,xe),ne||(ne=function(e){let t=e.target?.dataset?.carouselTarget;t&&(document.getElementById(`${t.split(`#`).pop()}`)?.carousel)?.emit(`click`,e)},document.addEventListener(`click`,ne));let e=T.getBoundingClientRect();if(se=e.height,ce=e.width,!x){let e=null;x=new ResizeObserver(()=>{e||=requestAnimationFrame(()=>{Se(),e=null})}),x.observe(T)}}function xe(e){te=e}function Se(){if(h!==L.Ready||!T)return;let e=q.length,t=T.getBoundingClientRect(),n=t.height,r=t.width;e>1&&(j&&Math.abs(n-se)<.5||!j&&Math.abs(r-ce)<.5)||(Ue(),Te(),se=n,ce=r,!(j&&!se||!j&&!ce)&&(!S||!T||(e!==q.length||!y?.isPointerDown())&&(Y(`dragFree`)&&(k||N>H&&N<U)?(Oe(),Q()):tt(I,{transition:!1}))))}function Ce(){b=C().on(`start`,()=>{(!y||!y.isPointerDown())&&(Oe(),Q())}).on(`step`,e=>{let t=N;N=e.pos,N!==t&&(P=!1,Q())}).on(`end`,e=>{y?.isPointerDown()||(N=e.pos,b&&!k&&(N<H||N>U)?b.spring({clamp:!0,mass:1,tension:200,friction:25,velocity:0,restDelta:1,restSpeed:1}).from({pos:N}).to({pos:c(H,N,U)}).start():P||(P=!0,X(`settle`)))})}function we(){let e=Y(`gestures`);y||e===!1||!T||(y=ee(T,e).on(`start`,e=>{if(!b||Y(`gestures`,e)===!1)return;let{srcEvent:t}=e;j&&w(t)&&!a(t.target)&&z(t),b.pause(),b.getCurrentVelocities().pos=0;function n(e){let t=window.getComputedStyle(e),n=new DOMMatrixReadOnly(t.transform);return{width:n.m41||0,height:n.m42||0}}let r=q[I]?.slides[0],i=r?.el;r&&K.has(r.index)&&i&&(N=r.offset||0,N+=(n(i)[M]||0)*(A&&!j?1:-1)),Ge(),k||(N<H||N>U)&&b.spring({clamp:!0,mass:1,tension:500,friction:25,velocity:b.getCurrentVelocities()?.pos||0,restDelta:1,restSpeed:1}).from({pos:N}).to({pos:c(H,N,U)}).start()}).on(`move`,e=>{if(Y(`gestures`,e)===!1)return;let{srcEvent:t,axis:n,deltaX:r,deltaY:i}=e;if(w(t)&&t.touches?.length>1)return;let o=t.target,s=a(o),c=s?s.scrollHeight>s.clientHeight?`y`:`x`:void 0;if(s&&s!==T&&(!n||n===c))return;if(!n){z(t),t.stopPropagation(),t.stopImmediatePropagation();return}if(n===`y`&&!j||n===`x`&&j||(z(t),t.stopPropagation(),!b))return;let l=A&&!j?1:-1,u=j?i:r,d=b?.isRunning()?b.getEndValues().pos:N,f=1;k||(d<=H&&u*l<0?(f=Math.max(.01,1-(Math.abs(1/Ne()*Math.abs(d-H))||0)),f*=.2):d>=U&&u*l>0&&(f=Math.max(.01,1-(Math.abs(1/Ne()*Math.abs(d-U))||0)),f*=.2)),d+=u*f*l,b.spring({clamp:!0,mass:1,tension:700,friction:25,velocity:b.getCurrentVelocities()?.pos||0,restDelta:1,restSpeed:1}).from({pos:N}).to({pos:d}).start()}).on(`panstart`,e=>{Y(`gestures`,e)!==!1&&e?.axis===(j?`y`:`x`)&&d(T,`is-dragging`)}).on(`panend`,e=>{Y(`gestures`,e)!==!1&&f(T,`is-dragging`)}).on(`end`,e=>{if(Y(`gestures`,e)===!1)return;let{srcEvent:t,axis:n,velocityX:r,velocityY:i,currentTouch:o}=e;if(o.length>0||!b)return;let s=t.target,l=a(s),u=l?l.scrollHeight>l.clientHeight?`y`:`x`:void 0,d=l&&(!n||n===u);j&&w(t)&&!n&&qe(t);let f=q.length,p=Y(`dragFree`);if(!f)return;let m=d?0:Y(`vertical`)?i:r;n!==(j?`y`:`x`)&&(m=0);let h=b?.isRunning()?b.getEndValues().pos:N,g=A&&!j?1:-1;if(d||(h+=m*(p?5:1)*g),!k&&(m*g<=0&&h<H||m*g>=0&&h>U)){let e=0;Math.abs(m)>0&&(e=Math.abs(m)*2,e=Math.min(Ne()*.3,e)),h=c(H+e*-1,h,U+e),b.spring({clamp:!0,mass:1,tension:380,friction:25,velocity:m*-1,restDelta:1,restSpeed:1}).from({pos:N}).to({pos:h}).start();return}if(p||v.Autoscroll?.isEnabled()){Math.abs(m)>10?b.spring({clamp:!0,mass:1,tension:150,friction:25,velocity:m*-1,restDelta:1,restSpeed:1}).from({pos:N}).to({pos:h}).start():b.isRunning()||P||(P=!0,X(`settle`));return}if(!(p||v.Autoscroll?.isEnabled())&&(!(e.offsetX||e.offsetY)||n===`y`&&!j||n===`x`&&j)){tt(I,{transition:`tween`});return}let _=je(h);Math.abs(m)>10&&_===I&&(m>0?_+=A&&!j?1:-1:_+=A&&!j?-1:1),tt(_,{transition:`tween`,tween:{velocity:m*-1}})}).init())}function Te(){Y(`gestures`)===!1?y&&=(y.destroy(),void 0):y||we(),p(T,`is-draggable`,!!y&&q.length>0)}function Ee(e=`*`){let t=[];for(let n of W)(e===`*`||n.class&&n.class.includes(e)||n.el&&n.el?.classList.contains(e))&&t.push(n);F=void 0,ae=e,G=[...t]}function De(){F=void 0,I=Y(`initialPage`);let e=Y(`initialSlide`)||void 0;e!==void 0&&(I=$.getPageIndex(e)||0),I=c(0,I,q.length-1),N=q[I]?.pos||0,R=N}function Oe(){if(!b)return;let e=je(b?.isRunning()?b.getEndValues().pos:N);e!==I&&(F=I,I=e,$e(),ke(),Ae(),X(`change`,I,F))}function ke(){if(!S)return;for(let e of S.querySelectorAll(`[data-carousel-index]`))e.innerHTML=I+``;for(let e of S.querySelectorAll(`[data-carousel-page]`))e.innerHTML=I+1+``;for(let e of S.querySelectorAll(`[data-carousel-pages]`))e.innerHTML=q.length+``;let e=Y(`classes`)||{},t=Array.from(S.querySelectorAll(`[data-carousel-go-to]`)).filter(t=>t.closest(`.${e.container}`)===S);for(let e of t)parseInt(e.dataset?.carouselGoTo||`-1`,10)===I?e.setAttribute(`aria-current`,`true`):e.removeAttribute(`aria-current`);for(let e of S.querySelectorAll(`[data-carousel-go-prev]`))e.toggleAttribute(`aria-disabled`,!at()),at()?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,`-1`);for(let e of S.querySelectorAll(`[data-carousel-go-next]`))e.toggleAttribute(`aria-disabled`,!ot()),ot()?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,`-1`);let n=!1,r=q[I]?.slides[0];r&&(r.downloadSrc||r.type===`image`&&r.src)&&(n=!0);for(let e of S.querySelectorAll(`[data-carousel-download]`))e.toggleAttribute(`aria-disabled`,!n)}function Ae(e){e||=q[I]?.slides[0];let t=e?.el;if(t)for(let n of t.querySelectorAll(`[data-slide-index]`))n.innerHTML=e.index+1+``}function je(e){if(!q.length)return 0;let t=Z(),n=e;k?n-=Math.floor((e-q[0]?.pos)/t)*t||0:n=c(q[0]?.pos,e,q[q.length-1]?.pos);let r=new Map,i=0;for(let e of q){let a=Math.abs(e.pos-n),o=Math.abs(e.pos-n-t),s=Math.abs(e.pos-n+t),c=Math.min(a,o,s);r.set(i,c),i++}let a=r.size>0?[...r.entries()].reduce((e,t)=>t[1]<e[1]?t:e):[I,0];return parseInt(a[0])}function Me(){return J}function Ne(){return E}function Pe(){let e=0;if(T){let t=document.createElement(`div`);t.style.display=`block`,d(t,_.classes.slide),T.appendChild(t),e=t.getBoundingClientRect()[M],t.remove(),t=void 0}return e}function Z(e=!0){return G.length?G.reduce((e,t)=>e+t.dim,0)+(G.length-(k&&e?0:1))*J:0}function Fe(e){let t=Z(),n=Ne();if(!t||!T||!n)return[];let r=[];e=e===void 0?N:e,k&&(e-=Math.floor(e/t)*t||0);let i=0;for(let a of G){let o=(t=0)=>{r.indexOf(a)>-1||(a.pos=i-e+t||0,a.offset+t>e-a.dim-D+.51&&a.offset+t<e+n+O-.51&&r.push(a))};a.offset=i,k&&(o(t),o(t*-1)),o(),i+=a.dim+J}return r}function Ie(){if(!S)return;let e=Ne(),t=Z(!1),n=Y(`slidesPerPage`);n=n===`auto`?1/0:parseFloat(n+``),q=[];let r=0,i=0;for(let t of G)(!q.length||r+t.dim-e>.05||i>=n)&&(q.push({index:q.length,slides:[],dim:0,offset:0,pos:0}),r=0,i=0),q[q.length-1]?.slides.push(t),r+=t.dim+J,i++;let a=Y(`center`),o=Y(`fill`),s=0;for(let n of q){n.dim=(n.slides.length-1)*J;for(let e of n.slides)n.dim+=e.dim;n.offset=s,n.pos=s,a!==!1&&(n.pos-=(e-n.dim)*.5),o&&!k&&t>e&&(n.pos=c(0,n.pos,t-e)),s+=n.dim+J}let l=[],u;for(let e of q){let t={...e};u&&Math.abs(t.pos-u.pos)<.1?(u.dim+=t.dim,u.slides=[...u.slides,...t.slides]):(u=t,t.index=l.length,l.push(t))}q=l,I=c(0,I,q.length-1)}function Le(e,t){let n=[];for(let t of Array.isArray(e)?e:[e]){let e=Re({...t,isVirtual:!0});e.el||=document.createElement(`div`),X(`createSlide`,e),n.push(e)}W.splice(t===void 0?W.length:t,0,...n),He();for(let e of n)X(`addSlide`,e),ze(e);return Ee(ae),n}function Re(e){return(r(e)||e instanceof HTMLElement)&&(e={html:e}),{index:-1,el:void 0,class:``,isVirtual:!0,dim:0,pos:0,offset:0,html:``,src:``,...e}}function ze(e){let t=e.el;if(!e||!t)return;let n=e.html?e.html instanceof HTMLElement?e.html:u(e.html):void 0;n&&(d(n,`f-html`),e.htmlEl=n,d(t,`has-html`),t.append(n),X(`contentReady`,e))}function Be(e){if(!T||!e)return;let t=e.el;if(t){if(t.setAttribute(`index`,e.index+``),t.parentElement!==T){d(t,_.classes.slide),d(t,e.class),$e(e);let n;for(let t of W)if(t.index>e.index){n=t.el;break}T.insertBefore(t,n&&T.contains(n)?n:null),X(`attachSlideEl`,e)}return Ae(e),t}}function Ve(e){let t=e?.el;t&&(t.remove(),We(t),X(`detachSlideEl`,e))}function He(){for(let e=0;e<W.length;e++){let t=W[e],n=t.el;n&&(t.index!==e&&We(n),n.setAttribute(`index`,`${e}`)),t.index=e}}function Ue(){if(!S||!T)return;A=Y(`rtl`),j=Y(`vertical`),M=j?`height`:`width`;let e=Y(`classes`);if(p(S,e.isLTR,!A),p(S,e.isRTL,A),p(S,e.isHorizontal,!j),p(S,e.isVertical,j),p(S,e.hasAdaptiveHeight,Y(`adaptiveHeight`)),E=0,D=0,O=0,J=0,T){T.childElementCount||(T.style.display=`grid`);let e=T.getBoundingClientRect();E=T.getBoundingClientRect()[M]||0;let t=window.getComputedStyle(T);J=parseFloat(t.getPropertyValue(`--f-carousel-gap`))||0,t.getPropertyValue(`overflow-`+(j?`y`:`x`))===`visible`&&(D=Math.abs(e[j?`top`:`left`]),O=Math.abs(window[j?`innerHeight`:`innerWidth`]-e[j?`bottom`:`right`])),T.style.display=``}if(!E)return;let t=Pe();for(let e of G){let r=e.el,i=0;if(e.isVirtual||!r||!n(r))i=t;else{let e=!1;(!r.parentElement||r.parentElement!==T)&&(T.appendChild(r),e=!0),i=r.getBoundingClientRect()[M],e&&r.parentElement?.removeChild(r)}e.dim=i}if(k=!1,Y(`infinite`)){k=!0;let e=Z(),t=E+D+O;for(let n=0;n<G.length;n++){let r=G[n]?.dim+J;if(e-r<t&&e-r-t<r){k=!1;break}}}Ie(),H=q[0]?.pos||0,U=q[q.length-1]?.pos||0,h===L.Init?De():R=q[I||0]?.pos||0,X(`refresh`),ke()}function We(e){if(!e||!n(e))return;let t=parseInt(e.getAttribute(`index`)||`-1`),r=``;for(let t of Array.from(e.classList)){let e=t.match(/^f-(\w+)(Out|In)$/);e&&e[1]&&(r=e[1]+``)}if(!e||!r)return;let i=[`f-${r}Out`,`f-${r}In`,`to-prev`,`to-next`,`from-prev`,`from-next`];e.removeEventListener(`animationend`,Ke),f(e,i.join(` `)),K.delete(t)}function Ge(){if(!T)return;let e=K.size>0;for(let e of G)We(e.el);K.clear(),e&&Q()}function Ke(e){e.animationName?.substring(0,2)===`f-`&&(We(e.target),K.size||(f(S,`in-transition`),!P&&Math.abs($.getPosition(!0)-R)<.5&&(P=!0,X(`settle`))),Q())}function qe(e){Je(e),X(`click`,e)}function Je(e){if(e.defaultPrevented)return;let t=e.composedPath()[0];if(t.closest(`[data-carousel-go-prev]`)){z(e),$.prev();return}if(t.closest(`[data-carousel-go-next]`)){z(e),$.next();return}let n=t.closest(`[data-carousel-go-to]`);if(n){z(e),$.goTo(parseFloat(n.dataset.carouselGoTo||``)||0);return}if(t.closest(`[data-carousel-download]`)){z(e);let t=q[I]?.slides[0];if(t&&(t.downloadSrc||t.type===`image`&&t.src)){let e=t.downloadFilename,n=document.createElement(`a`),r=t.downloadSrc||t.src||``;n.href=r,n.target=`_blank`,n.download=e||r,n.click()}return}}function Ye(e){let t=e.el,n=t?.querySelector(`.f-spinner`);if(!t||n)return $;let r=u(Y(`spinnerTpl`));return r&&(d(r,`f-spinner`),t.insertAdjacentElement(`beforeend`,r)),$}function Xe(e){let t=e.el;t&&t.querySelector(`.f-spinner`)?.remove()}function Ze(e,t){if(h===L.Ready){Xe(e),Qe(e);let n=e.el;if(n){let r=document.createElement(`div`);d(r,`f-html`),d(r,`is-error`),r.innerHTML=le(t||`<p>{{ERROR}}</p>`),e.htmlEl=r,d(n,`has-html has-error`),n.insertAdjacentElement(`afterbegin`,r),X(`contentReady`,e)}}return $}function Qe(e){let t=e.el;t&&(t.querySelector(`.f-html.is-error`)?.remove(),f(t,`has-error`))}function $e(e){e||=q[I]?.slides[0];let t=e?.el;if(!t)return;let n=Y(`formatCaption`,e);n===void 0&&(n=e.caption),n||=``;let i=Y(`captionEl`);if(i&&i instanceof HTMLElement){if(e.index!==I)return;if(r(n)&&(i.innerHTML=le(n+``)),n instanceof HTMLElement){if(n.parentElement===i)return;i.innerHTML=``,n.parentElement&&(n=n.cloneNode(!0)),i.append(n)}return}if(!n)return;let a=e.captionEl||t.querySelector(`.f-caption`);!a&&n instanceof HTMLElement&&n.classList.contains(`f-caption`)&&(a=n),a||(a=document.createElement(`div`),d(a,`f-caption`),r(n)?a.innerHTML=le(n+``):n instanceof HTMLElement&&(n.parentElement&&(n=n.cloneNode(!0)),a.append(n)));let o=`f-caption-${V}_${e.index}`;a.setAttribute(`id`,o),a.dataset.selectable=`true`,d(t,`has-caption`),t.setAttribute(`aria-labelledby`,o),e.captionEl=a,t.insertAdjacentElement(`beforeend`,a)}function et(e,t){if(!S||!E||!b||!t||!r(t)||t===`tween`)return!1;for(let e of oe)if(E-e.dim>.5)return!1;if(D>.5||O>.5)return;let n=q.length,i=e>I?1:-1;e=k?(e%n+n)%n:c(0,e,n-1),A&&(i*=-1);let a=q[I]?.slides[0],o=a?.index,s=q[e]?.slides[0],l=s?.index,u=q[e]?.pos;if(l===void 0||o===void 0||o===l||N===u||Math.abs(E-(s?.dim||0))>1)return!1;P=!1,b.pause(),Ge(),d(S,`in-transition`),N=R=u;let p=Be(a),m=Be(s);return Oe(),p&&(K.add(o),p.style.transform=``,p.addEventListener(`animationend`,Ke),f(p,_.classes.isSelected),p.inert=!1,d(p,`f-${t}Out to-${i>0?`next`:`prev`}`)),m&&(K.add(l),m.style.transform=``,m.addEventListener(`animationend`,Ke),d(m,_.classes.isSelected),m.inert=!1,d(m,`f-${t}In from-${i>0?`prev`:`next`}`)),Q(),!0}function tt(e,n={}){let{transition:r,tween:i}={transition:_.transition,tween:_.tween,...n||{}};if(!S||!b)return;let a=q.length;if(!a||et(e,r))return;e=k?(e%a+a)%a:c(0,e,a-1),R=q[e||0]?.pos||0;let o=b.isRunning()?b.getEndValues().pos:N;if(Math.abs(R-o)<1){N=R,I!==e&&($e(),F=I,I=e,ke(),Ae(),X(`change`,I,F)),Q(),P||(P=!0,X(`settle`));return}if(b.pause(),Ge(),k){let e=Z(),t=Math.floor((o-q[0]?.pos)/e)||0,n=R+t*e,r=n-e;R=[n+e,n,r].reduce(function(e,t){return Math.abs(t-o)<Math.abs(e-o)?t:e})}if(r!==!1&&t(i)){b.spring(s({},_.tween,i)).from({pos:N}).to({pos:R}).start();return}N=R,Oe(),Q(),P||(P=!0,X(`settle`))}function nt(e){let t=N;if(k&&e!==!0){let e=Z(),n=Math.floor((N-q[0]?.pos||0)/e)||0;t-=n*e}return t}function rt(e){N=e,Oe(),Q()}function Q(){if(!S||!T)return;oe=Fe();let e=new Set,t=[],n=q[I],r=_.setTransform,i;for(let r of G){let a=K.has(r.index),o=oe.indexOf(r)>-1,s=n?.slides?.indexOf(r)>-1;if(r.isVirtual&&!a&&!o)continue;let c=Be(r);if(c&&(t.push(r),s&&e.add(c),Y(`adaptiveHeight`)&&s)){let e=(c.lastElementChild||c).getBoundingClientRect().height;i=i==null?e:Math.max(i,e)}}T&&i&&(T.style.height=`${i}px`),[...o(T,`.${_.classes.slide}`)].forEach(t=>{p(t,_.classes.isSelected,e.has(t));let n=W[parseInt(t.getAttribute(`index`)||`-1`)];if(!n){t.remove(),We(t);return}let i=K.has(n.index),a=oe.indexOf(n)>-1;if(n.isVirtual&&!i&&!a){Ve(n);return}if(t.inert=!a,r===!1)return;let o=n.pos?Math.round(n.pos*1e4)/1e4:0,s=0,c=0,u=0,d=0;i||(s=j?0:A?o*-1:o,c=j?o:0,u=l(s,0,n.dim,0,100),d=l(c,0,n.dim,0,100)),r instanceof Function&&!i?r($,n,{x:s,y:c,xPercent:u,yPercent:d}):t.style.transform=s||c?`translate3d(${u}%, ${d}%,0)`:``}),X(`render`,t)}function it(){S?.removeEventListener(`click`,qe),document.removeEventListener(`mousemove`,xe),K.clear(),x?.disconnect(),x=void 0;for(let e of W){let t=e.el;t&&n(t)&&(e.state=void 0,Xe(e),Qe(e),e.isVirtual?(Ve(e),e.el=void 0):(We(t),t.style.transform=``,T&&!T.contains(t)&&T.appendChild(t)))}for(let e of Object.values(v))e?.destroy();v={},y?.destroy(),y=void 0,b?.destroy(),b=void 0;for(let[e,t]of Object.entries(_.classes||{}))e!==`container`&&f(S,t);f(T,`is-draggable`)}function at(){return k||I>0}function ot(){return k||I<q.length-1}let $={add:function(e,t){let n=N,r=I,i=Z(),a=b?.isRunning()?b.getEndValues().pos:N,o=i&&Math.floor((a-(q[0]?.pos||0))/i)||0;return Le(e,t),Ee(ae),Ue(),b&&i&&(r===I&&(n-=o*i),n===R?N=R:b.spring({clamp:!0,mass:1,tension:300,friction:25,restDelta:1,restSpeed:1}).from({pos:n}).to({pos:R}).start()),Q(),$},canGoPrev:at,canGoNext:ot,destroy:function(){return X(`destroy`),window.removeEventListener(`resize`,he),it(),ue.clear(),S=null,q=[],W=[],_={...B},v={},G=[],ie=void 0,ae=`*`,h=L.Destroyed,$},emit:X,filter:function(e=`*`){return Ee(e),Ue(),N=c(H,N,U),Q(),X(`filter`,e),$},getContainer:function(){return S},getGapDim:Me,getGestures:function(){return y},getLastMouseMove:function(){return te},getOption:function(e){return Y(e)},getOptions:function(){return _},getPage:function(){return q[I]},getPageIndex:function(e){if(e!==void 0){for(let t of q||[])for(let n of t.slides)if(n.index===e)return t.index;return-1}return I},getPageIndexFromPosition:je,getPageProgress:function(e,t){e===void 0&&(e=I);let n=q[e];if(!n)return e>I?-1:1;let r=Z(),i=Me(),a=n.pos,o=nt();if(k&&t!==!0){let e=Math.floor((o-q[0]?.pos)/r)||0;o-=e*r,a=[a+r,a,a-r].reduce(function(e,t){return Math.abs(t-o)<Math.abs(e-o)?t:e})}return(o-a)/(n.dim+i)||0},getPageVisibility:function(e){e===void 0&&(e=I);let t=q[e];if(!t)return e>I?-1:1;let n=nt(),r=Ne(),i=t.pos;if(k){let e=Z(),t=Math.floor((n-q[0]?.pos)/e)||0,r=i+t*e,a=r-e;i=[r+e,r,a].reduce(function(e,t){return Math.abs(t-n)<Math.abs(e-n)?t:e})}return i>n&&i+t.dim<n+r?1:i<n?(i+t.dim-n)/t.dim||0:i+t.dim>n+r&&(n+r-i)/t.dim||0},getPages:function(){return q},getPlugins:function(){return v},getPosition:nt,getSlides:function(){return W},getState:function(){return h},getTotalSlideDim:Z,getTween:function(){return b},getViewport:function(){return T},getViewportDim:Ne,getVisibleSlides:function(e){return e===void 0?oe:Fe(e)},goTo:tt,hasNavigated:function(){return F!==void 0},hideError:Qe,hideLoading:Xe,init:pe,isInfinite:function(){return k},isInTransition:function(){return K.size>0},isRTL:function(){return A},isSettled:function(){return P},isVertical:function(){return j},localize:le,next:function(e={}){return tt(I+1,e),$},off:fe,on:de,prev:function(e={}){return tt(I-1,e),$},reInit:me,remove:function(e){e===void 0&&(e=W.length-1);let t=W[e];return t&&(X(`removeSlide`,t),t.el&&=(We(t.el),t.el.remove(),void 0),W.splice(e,1),Ee(ae),Ue(),N=c(H,N,U),Q()),$},setPosition:rt,showError:Ze,showLoading:Ye,version:`6.1.14`};return $};re.l10n={en_EN:I},re.getDefaults=()=>B,e.Carousel=re,e.CarouselSlideContentState=R,e.CarouselState=L});