UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 22.2 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as e}from"../utils/isPlainObject.js";import{isNode as t}from"../utils/isNode.js";import{isString as n}from"../utils/isString.js";import{getScrollableParent as i}from"../utils/getScrollableParent.js";import{getDirectChildren as o}from"../utils/getDirectChildren.js";import{extend as s}from"../utils/extend.js";import{map as r}from"../utils/map.js";import{stringToHtml as l}from"../utils/strToHtml.js";import{clamp as a}from"../utils/clamp.js";import{addClass as c}from"../utils/addClass.js";import{removeClass as d}from"../utils/removeClass.js";import{toggleClass as u}from"../utils/toggleClass.js";import{Tween as f}from"../libs/tween.js";import{Gestures as v}from"../libs/gestures.js";import{en_EN as p}from"./l10n/en_EN.js";const g=e=>{e.cancelable&&e.preventDefault()},m={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:!1,infinite:!0,initialPage:0,l10n:p,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};let h,b=0;const E=(p,x={},y={})=>{b++;let w,M,S,j,P,L=0,T=Object.assign({},m),O=Object.assign({},m),A={},R=null,V=null,C=!1,H=!1,D=!1,$=!1,z="height",q=0,F=!0,I=0,k=0,B=0,N=0,_="*",G=[],X=[];const Y=new Set;let W=[],J=[],K=0,Q=0,U=0;function Z(e,...t){let n=O[e];return n&&n instanceof Function?n(He,...t):n}function ee(e,t=[]){const n=Z("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))}const te=new Map;function ne(e,...t){const n=[...te.get(e)||[]];O.on&&n.push(O.on[e]);for(const e of n)e&&e instanceof Function&&e(He,...t);"*"!==e&&ne("*",e,...t)}function ie(){var t,n;const i=s({},m,T);s(i,m,T);let r="";const l=T.breakpoints||{};if(l)for(const[e,t]of Object.entries(l))window.matchMedia(e).matches&&(r+=e,s(i,t));if(void 0===P||r!==P){if(P=r,0!==L){let e=null===(n=null===(t=J[I])||void 0===t?void 0:t.slides[0])||void 0===n?void 0:n.index;void 0===e&&(e=O.initialSlide),i.initialSlide=e,i.slides=[];for(const e of G)e.isVirtual&&i.slides.push(e)}Re(),O=i,!1!==O.enabled&&(L=0,ne("init"),function(){for(const[e,t]of Object.entries(Object.assign(Object.assign({},y),O.plugins||{})))if(e&&!A[e]&&t instanceof Function){const n=t();n.init(He,E),A[e]=n}ne("initPlugins")}(),function(){if(!R)return;const t=Z("classes")||{};c(R,t.container),c(R,t.isEnabled);const n=Z("style");if(n&&e(n))for(const[e,t]of Object.entries(n))R.style.setProperty(e,t);V=R.querySelector(`.${t.viewport}`),V||(V=document.createElement("div"),c(V,t.viewport),V.append(...o(R,`.${t.slide}`)),R.insertAdjacentElement("afterbegin",V)),R.carousel=He,ne("initLayout")}(),function(){if(!V)return;const e=Z("classes")||{};G=[],[...o(V,`.${e.slide}`)].forEach((e=>{e.parentElement&&G.push(me(Object.assign({el:e,isVirtual:!1},e.dataset||{})))})),ge(Z("slides"));for(const e of G)ne("addSlide",e);for(const e of G){const t=e.el;(null==t?void 0:t.parentElement)&&(c(t,O.classes.slide),c(t,e.class),Te(e),ne("attachSlideEl",e))}ne("initSlides")}(),ye(),function(){if(R&&(R.addEventListener("click",je,{passive:!1}),document.addEventListener("mousemove",oe),!S)){let e=null;S=new ResizeObserver((t=>{e||(e=requestAnimationFrame((()=>{!function(e){var t;if(!R)return;if(0===L){const n=null===(t=e[0])||void 0===t?void 0:t.contentBoxSize[0],i=(null==n?void 0:n.blockSize)||0,o=(null==n?void 0:n.inlineSize)||0;return K=i,Q=o,L=1,M=f().on("start",(()=>{w&&w.isPointerDown()||(le(),Ae())})).on("step",(e=>{const t=q;q=e.pos,q!==t&&(F=!1,Ae())})).on("end",(e=>{(null==w?void 0:w.isPointerDown())||(q=e.pos,M&&!H&&(q<B||q>N)?M.spring({clamp:!0,mass:1,tension:200,friction:25,velocity:0,restDelta:1,restSpeed:1}).from({pos:q}).to({pos:a(B,q,N)}).start():F||(F=!0,ne("settle")))})),se(),Ae(),ae(),void ne("ready")}if(1!==L)return;const n=J.length;ye(),se();const i=R.getBoundingClientRect(),o=i.height,s=i.width;n>1&&($&&Math.abs(o-K)<.5||!$&&Math.abs(s-Q)<.5)||(K=o,Q=s,$&&!o||!$&&!s||R&&V&&(n===J.length&&(null==w?void 0:w.isPointerDown())||(Z("dragFree")&&(H||q>B&&q<N)?(le(),Ae()):Oe(I,{transition:!1}))))}(t),e=null})))})),S.observe(R)}}())}}function oe(e){h=e}function se(){if(!V)return;const e=Z("gestures");!1!==e?w||(w=v(V,e).on("start",(e=>{var t,n;if(!M)return;const{srcEvent:o}=e;$&&i(o.target),M.pause(),M.getCurrentVelocities().pos=0;const s=null===(t=J[I])||void 0===t?void 0:t.slides[0];if(s&&Y.has(s.index)&&s.el&&(q=s.offset||0,q+=(function(e){const t=window.getComputedStyle(e),n=new DOMMatrixReadOnly(t.transform);return{width:n.m41||0,height:n.m42||0}}(s.el)[z]||0)*(D&&!$?1:-1)),Me(),!H){(q<B||q>N)&&M.spring({clamp:!0,mass:1,tension:500,friction:25,velocity:(null===(n=M.getCurrentVelocities())||void 0===n?void 0:n.pos)||0,restDelta:1,restSpeed:1}).from({pos:q}).to({pos:a(B,q,N)}).start()}})).on("move",(e=>{const{srcEvent:t,axis:n}=e,o=e.srcEvent.target;o&&i(o)||(n||(t.stopPropagation(),t.stopImmediatePropagation()),("y"===n&&$||"x"===n&&!$)&&(g(t),t.stopPropagation()))})).on("panstart",(e=>{(null==e?void 0:e.axis)===($?"y":"x")&&c(V,"is-dragging")})).on("panend",(()=>{d(V,"is-dragging")})).on("pan",(e=>{var t;const{deltaX:n,deltaY:i,currentTouch:o,axis:s}=e;if(!M)return;if(o.length>1)return;if("y"===s&&!$||"x"===s&&$)return;const r=D&&!$?1:-1;let l=$?i:n,a=(null==M?void 0:M.isRunning())?M.getEndValues().pos:q,c=1;H||(a<=B&&l*r<0?(c=Math.max(.01,1-Math.abs(1/fe()*Math.abs(a-B))),c*=.2):a>=N&&l*r>0&&(c=Math.max(.01,1-Math.abs(1/fe()*Math.abs(a-N))),c*=.2)),a+=l*c*r,M.spring({clamp:!0,mass:1,tension:700,friction:25,velocity:(null===(t=M.getCurrentVelocities())||void 0===t?void 0:t.pos)||0,restDelta:1,restSpeed:1}).from({pos:q}).to({pos:a}).start()})).on("end",(e=>{var t,n;const{axis:i,velocityX:o,velocityY:s,currentTouch:r}=e,l=J.length,c=Z("dragFree");if(r.length>0||!M)return;if(!l)return;const d=Z("vertical")?s:o;let u=(null==M?void 0:M.isRunning())?M.getEndValues().pos:q;const f=D&&!$?1:-1;if(u+=d*(c?5:1)*f,!H&&(d*f<=0&&u<B||d*f>=0&&u>N)){let e=0;return Math.abs(d)>0&&(e=2*Math.abs(d),e=Math.min(.3*fe(),e)),u=a(B+-1*e,u,N+e),void M.spring({clamp:!0,mass:1,tension:380,friction:25,velocity:-1*d,restDelta:1,restSpeed:1}).from({pos:q}).to({pos:u}).start()}if(c||(null===(t=A.Autoscroll)||void 0===t?void 0:t.isEnabled()))return void(Math.abs(d)>10?M.spring({clamp:!0,mass:1,tension:150,friction:25,velocity:-1*d,restDelta:1,restSpeed:1}).from({pos:q}).to({pos:u}).start():M.isRunning()||F||(F=!0,ne("settle")));if(!c&&!(null===(n=A.Autoscroll)||void 0===n?void 0:n.isEnabled())&&(!e.offsetX&&!e.offsetY||"y"===i&&!$||"x"===i&&$))return void Oe(I,{transition:"tween"});let v=de(u);Math.abs(d)>10&&v===I&&(v+=d>0?D&&!$?1:-1:D&&!$?-1:1),Oe(v,{transition:"tween",tween:{velocity:-1*d}})})).init()):w&&(w.destroy(),w=void 0)}function re(e="*"){var t;const n=[];for(const i of G)("*"===e||i.class&&i.class.includes(e)||i.el&&(null===(t=i.el)||void 0===t?void 0:t.classList.contains(e)))&&n.push(i);j=void 0,_=e,X=[...n]}function le(){if(!M)return;const e=de((null==M?void 0:M.isRunning())?M.getEndValues().pos:q);e!==I&&(j=I,I=e,Te(),ae(),ce(),ne("change",I,j))}function ae(){var e;if(!R)return;u(V,"is-draggable",!!w&&J.length>0);for(const e of R.querySelectorAll("[data-carousel-index]"))e.innerHTML=I+"";for(const e of R.querySelectorAll("[data-carousel-page]"))e.innerHTML=I+1+"";for(const e of R.querySelectorAll("[data-carousel-pages]"))e.innerHTML=J.length+"";for(const e of R.querySelectorAll("[data-carousel-go-prev]"))e.toggleAttribute("aria-disabled",!Ve());for(const e of R.querySelectorAll("[data-carousel-go-next]"))e.toggleAttribute("aria-disabled",!Ce());let t=!1;const n=null===(e=J[I])||void 0===e?void 0:e.slides[0];n&&(n.downloadSrc||"image"===n.type&&n.src)&&(t=!0);for(const e of R.querySelectorAll("[data-carousel-download]"))e.toggleAttribute("aria-disabled",!t)}function ce(e){var t;if(!R)return;e||(e=null===(t=J[I])||void 0===t?void 0:t.slides[0]);const n=e.el;if(n)for(const t of n.querySelectorAll("[data-slide-index]"))t.innerHTML=e.index+1+""}function de(e){var t,n,i;if(!J.length||!M)return 0;const o=ve();let s=e;H?s-=Math.floor((e-(null===(t=J[0])||void 0===t?void 0:t.pos))/o)*o:s=a(null===(n=J[0])||void 0===n?void 0:n.pos,e,null===(i=J[J.length-1])||void 0===i?void 0:i.pos);const r=new Map;let l=0;for(const e of J){const t=Math.abs(e.pos-s),n=Math.abs(e.pos-s-o),i=Math.abs(e.pos-s+o),a=Math.min(t,n,i);r.set(l,a),l++}const c=r.size>0?[...r.entries()].reduce(((e,t)=>t[1]<e[1]?t:e)):[I,0];return parseInt(c[0])}function ue(){return U}function fe(){return V&&V.getBoundingClientRect()[z]||0}function ve(e=!0){return X.reduce(((e,t)=>e+t.dim),0)+(X.length-(H&&e?0:1))*U}function pe(e){const t=ve();let n=fe();if(!V)return[];const i=[];if(!t||!n)return[];e=void 0===e?q:e,H&&(e-=Math.floor(e/t)*t);let o=0,s=0;if(C){const e=V.getBoundingClientRect();o=Math.abs(e.left),s=Math.abs(window.innerWidth-e.right)}let r=0;for(let l of X){const a=(t=0)=>{i.indexOf(l)>-1||(l.pos=r-e+t||0,l.offset+t>e-l.dim-o+.51&&l.offset+t<e+n+s-.51&&i.push(l))};if(l.offset=r,H)for(let e=-1;e<=1;e++)a(t*e);else a();r+=l.dim+U}return i}function ge(e,t){const n=[];for(const t of Array.isArray(e)?e:[e]){const e=me(Object.assign(Object.assign({},t),{isVirtual:!0}));n.push(e)}G.splice(void 0===t?G.length:t,0,...n),xe();for(const e of n)he(e);return re(_),n}function me(e){return(n(e)||e instanceof HTMLElement)&&(e={html:e}),Object.assign({index:-1,el:void 0,class:"",isVirtual:!0,dim:0,pos:0,offset:0,html:"",src:""},e)}function he(e){if(!e)return;let t=e.el;t||(t=document.createElement("div"),e.el=t);const n=e.html?e.html instanceof HTMLElement?e.html:l(e.html):void 0;n&&(c(n,"f-html"),e.htmlEl=n,c(t,"has-html"),t.append(n),ne("contentReady",e))}function be(e){if(!V||!e)return;let t=e.el;if(t){if(t.setAttribute("index",e.index+""),t.parentElement!==V){let n;c(t,O.classes.slide),c(t,e.class),Te(e);for(const t of G)if(t.index>e.index){n=t.el;break}V.insertBefore(t,n&&V.contains(n)?n:null),ne("attachSlideEl",e)}return t}}function Ee(e){const t=null==e?void 0:e.el;t&&(t.remove(),we(t),ne("detachSlideEl",e))}function xe(){for(let e=0;e<G.length;e++){const t=G[e],n=t.el;n&&(t.index!==e&&we(n),n.setAttribute("index",`${e}`)),t.index=e}}function ye(){var e,n,i,o,s;if(!R||!V)return;D=Z("rtl"),$=Z("vertical"),z=$?"height":"width";const r=Z("classes");u(R,r.isLTR,!D),u(R,r.isRTL,D),u(R,r.isHorizontal,!$),u(R,r.isVertical,$),u(R,r.hasAdaptiveHeight,Z("adaptiveHeight")),C="visible"===window.getComputedStyle(V).getPropertyValue("overflow-"+($?"y":"x"));const l=V.getBoundingClientRect();if(!l.width&&!l.height)return;U=V&&parseFloat(getComputedStyle(V).getPropertyValue("--f-carousel-gap"))||0;const d=function(){let e=0;if(V){let t=document.createElement("div");c(t,O.classes.slide),V.appendChild(t),e=t.getBoundingClientRect()[z],t.remove(),t=void 0}return e}();for(const n of X){const i=n.el;let o=0;if(!n.isVirtual&&i&&t(i)){let t=!1;i.parentElement&&i.parentElement===V||(V.appendChild(i),t=!0),o=i.getBoundingClientRect()[z],t&&(null===(e=i.parentElement)||void 0===e||e.removeChild(i))}else o=d;n.dim=o}if(H=!1,Z("infinite")){H=!0;const e=ve();let t=fe();if(C){const e=V.getBoundingClientRect();t+=e.left,t+=e.right-e.width}for(let i=0;i<X.length;i++){const o=(null===(n=X[i])||void 0===n?void 0:n.dim)+U;if(e-o<t&&e-o-t<o){H=!1;break}}}if(function(){var e;if(!R)return;xe();const t=fe(),n=ve(!1);let i=Z("slidesPerPage");i="auto"===i?1/0:parseFloat(i+""),J=[];let o=0,s=0;for(const n of X)(!J.length||o+n.dim-t>.05||s>=i)&&(J.push({index:J.length,slides:[],dim:0,offset:0,pos:0}),o=0,s=0),null===(e=J[J.length-1])||void 0===e||e.slides.push(n),o+=n.dim+U,s++;const r=Z("center"),l=Z("fill");let c=0;for(const e of J){e.dim=(e.slides.length-1)*U;for(const t of e.slides)e.dim+=t.dim;e.offset=c,e.pos=c,!1!==r&&(e.pos-=.5*(t-e.dim)),l&&!H&&n>t&&(e.pos=a(0,e.pos,n-t)),c+=e.dim+U}const d=[];let u;for(const e of J){const t=Object.assign({},e);u&&t.pos===u.pos?(u.dim+=t.dim,u.slides=[...u.slides,...t.slides]):(u=t,t.index=d.length,d.push(t))}J=d,ae()}(),B=(null===(i=J[0])||void 0===i?void 0:i.pos)||0,N=(null===(o=J[J.length-1])||void 0===o?void 0:o.pos)||0,0===L)!function(){var e;j=void 0,I=Z("initialPage");const t=Z("initialSlide")||void 0;void 0!==t&&(I=He.getPageIndex(t)||0),I=a(0,I,J.length-1),q=(null===(e=J[I])||void 0===e?void 0:e.pos)||0,k=q}();else{const e=(null==M?void 0:M.isRunning())?M.getEndValues().pos:q;(e<B||e>N)&&(I=a(0,I,J.length-1),k=(null===(s=J[I||0])||void 0===s?void 0:s.pos)||0)}ne("refresh")}function we(e){if(!e||!t(e))return;const n=parseInt(e.getAttribute("index")||"-1");let i="";for(const t of Array.from(e.classList)){const e=t.match(/^f-(\w+)(Out|In)$/);e&&e[1]&&(i=e[1]+"")}if(!e||!i)return;const o=[`f-${i}Out`,`f-${i}In`,"to-prev","to-next","from-prev","from-next"];e.removeEventListener("animationend",Se),d(e,o.join(" ")),Y.delete(n)}function Me(){if(!V)return;const e=Y.size;for(const e of X)we(e.el);Y.clear(),e&&Ae()}function Se(e){"f-"===e.animationName.substring(0,2)&&(we(e.target),Y.size||(d(R,"in-transition"),!F&&Math.abs(He.getPosition(!0)-k)<.5&&(F=!0,ne("settle"))),Ae())}function je(e){var t;if(e.defaultPrevented)return;const n=e.composedPath()[0];if(n.closest("[data-carousel-go-prev]"))return g(e),void He.prev();if(n.closest("[data-carousel-go-next]"))return g(e),void He.next();const i=n.closest("[data-carousel-go-to]");if(i)return g(e),void He.goTo(parseFloat(i.dataset.carouselGoTo||"")||0);if(n.closest("[data-carousel-download]")){g(e);const n=null===(t=J[I])||void 0===t?void 0:t.slides[0];if(n&&(n.downloadSrc||"image"===n.type&&n.src)){const e=n.downloadFilename,t=document.createElement("a"),i=n.downloadSrc||n.src||"";t.href=i,t.target="_blank",t.download=e||i,t.click()}}else ne("click",e)}function Pe(e){var t;const n=e.el;n&&(null===(t=n.querySelector(".f-spinner"))||void 0===t||t.remove(),d(n,"is-loading"))}function Le(e){var t;const n=e.el;n&&(null===(t=n.querySelector(".f-html.is-error"))||void 0===t||t.remove(),d(n,"has-error"))}function Te(e){var t;e||(e=null===(t=J[I])||void 0===t?void 0:t.slides[0]);const i=null==e?void 0:e.el;if(!i)return;let o=Z("formatCaption",e);void 0===o&&(o=e.caption),o=o||"";const s=Z("captionEl");if(s&&s instanceof HTMLElement){if(e.index!==I)return;if(n(o)&&(s.innerHTML=ee(o+"")),o instanceof HTMLElement){if(o.parentElement===s)return;s.innerHTML="",o.parentElement&&(o=o.cloneNode(!0)),s.append(o)}return}if(!o)return;let r=e.captionEl||i.querySelector(".f-caption");!r&&o instanceof HTMLElement&&o.classList.contains("f-caption")&&(r=o),r||(r=document.createElement("div"),c(r,"f-caption"),n(o)?r.innerHTML=ee(o+""):o instanceof HTMLElement&&(o.parentElement&&(o=o.cloneNode(!0)),r.append(o)));const l=`f-caption-${b}_${e.index}`;r.setAttribute("id",l),r.dataset.selectable="true",c(i,"has-caption"),i.setAttribute("aria-labelledby",l),e.captionEl=r,i.insertAdjacentElement("beforeend",r)}function Oe(t,i={}){var o,r;let{transition:l,tween:u}=Object.assign({transition:O.transition,tween:O.tween},i||{});if(!R||!M)return;const f=J.length;if(!f)return;if(function(e,t){var i,o,s,r;if(!(R&&M&&t&&n(t)&&"tween"!==t))return!1;if((null===(i=J[I])||void 0===i?void 0:i.slides.length)>1)return!1;const l=J.length;let u=e>I?1:-1;e=H?(e%l+l)%l:a(0,e,l-1),D&&(u*=-1);const f=null===(o=J[I])||void 0===o?void 0:o.slides[0],v=null==f?void 0:f.index,p=null===(s=J[e])||void 0===s?void 0:s.slides[0],g=null==p?void 0:p.index,m=null===(r=J[e])||void 0===r?void 0:r.pos;if(void 0===g||void 0===v||v===g||q===m||Math.abs(fe()-((null==p?void 0:p.dim)||0))>1)return!1;F=!1,M.pause(),Me(),c(R,"in-transition"),q=k=m;const h=be(f),b=be(p);return le(),h&&(Y.add(v),h.style.transform="",h.addEventListener("animationend",Se),d(h,O.classes.isSelected),c(h,`f-${t}Out to-${u>0?"next":"prev"}`)),b&&(Y.add(g),b.style.transform="",b.addEventListener("animationend",Se),c(b,O.classes.isSelected),c(b,`f-${t}In from-${u>0?"prev":"next"}`)),Ae(),!0}(t,l))return;t=H?(t%f+f)%f:a(0,t,f-1),k=(null===(o=J[t||0])||void 0===o?void 0:o.pos)||0;const v=M.isRunning()?M.getEndValues().pos:q;if(Math.abs(k-v)<1)return q=k,I!==t&&(Te(),ae(),ce(),j=I,I=t,ne("change",I,j)),Ae(),void(F||(F=!0,ne("settle")));if(M.pause(),Me(),H){const e=ve(),t=Math.floor((v-(null===(r=J[0])||void 0===r?void 0:r.pos))/e),n=k+t*e;k=[n+e,n,n-e].reduce((function(e,t){return Math.abs(t-v)<Math.abs(e-v)?t:e}))}!1!==l&&e(u)?M.spring(s({},O.tween,u)).from({pos:q}).to({pos:k}).start():(q=k,le(),Ae(),F||(F=!0,ne("settle")))}function Ae(){var e;if(!R||!V)return;const t=J[I];W=pe();const n=new Set;let i;const s=[];for(const o of X){if(o.isVirtual&&!Y.has(o.index)&&W.indexOf(o)<0)continue;let r=be(o);if(!r)continue;s.push(o);const l=(null===(e=null==t?void 0:t.slides)||void 0===e?void 0:e.indexOf(o))>-1;if(l&&n.add(r),Z("adaptiveHeight")&&l){const e=(r.firstElementChild||r).getBoundingClientRect().height;i=null==i?e:Math.max(i,e)}}V&&i&&(V.style.height=`${i}px`),[...o(V,`.${O.classes.slide}`)].forEach((e=>{const t=parseInt(e.getAttribute("index")||"-1"),i=G[t];if(i||e.remove(),u(e,O.classes.isSelected,n.has(e)),i.isVirtual&&!Y.has(i.index)&&W.indexOf(i)<0)return void Ee(i);let o=i.pos?Math.round(1e4*i.pos)/1e4:0,s=0,l=0,a=0,c=0,d=O.setTransform||void 0;Y.has(i.index)||(s=$?0:D?-1*o:o,l=$?o:0,a=r(s,0,i.dim,0,100),c=r(l,0,i.dim,0,100)),d instanceof Function&&!Y.has(i.index)?d(He,i,{x:s,y:l,xPercent:a,yPercent:c}):e.style.transform=s||l?`translate3d(${a}%, ${c}%,0)`:""})),ne("render",s)}function Re(){var e;null==R||R.removeEventListener("click",je),Me(),document.removeEventListener("mousemove",oe),null==S||S.disconnect(),S=void 0;for(const n of G)n.el&&t(n.el)&&(n.state=void 0,Pe(n),Le(n),Ee(n),n.isVirtual?(null===(e=n.el)||void 0===e||e.remove(),n.el=void 0):(n.el.style.transform="",null==V||V.appendChild(n.el)));for(const e of Object.values(A))null==e||e.destroy();A={},null==w||w.destroy(),w=void 0,null==M||M.destroy(),M=void 0;for(const[e,t]of Object.entries(O.classes||{}))"container"!==e&&d(R,t);d(V,"is-draggable")}function Ve(){return H||I>0}function Ce(){return H||I<J.length-1}const He={add:function(e,t){var n,i;let o=q;const s=I,r=ve(),l=(null==M?void 0:M.isRunning())?M.getEndValues().pos:q,a=Math.floor((l-(null===(n=J[0])||void 0===n?void 0:n.pos))/r),c=ge(e,t);for(const e of c)ne("addSlide",e);return re(_),ye(),M&&(s===I&&(o-=a*r),k=(null===(i=J[I||0])||void 0===i?void 0:i.pos)||0,o===k?q=k:M.spring({clamp:!0,mass:1,tension:300,friction:25,restDelta:1,restSpeed:1}).from({pos:o}).to({pos:k}).start()),Ae(),He},canGoPrev:Ve,canGoNext:Ce,destroy:function(){return ne("destroy"),window.removeEventListener("resize",ie),Re(),te.clear(),R=null,J=[],G=[],O=Object.assign({},m),A={},X=[],P="",_="*",L=2,He},emit:ne,filter:function(e="*"){return re(e),ye(),Ae(),ne("filter",e),He},getContainer:function(){return R},getGapDim:ue,getGestures:function(){return w},getLastMouseMove:function(){return h},getOption:function(e){return Z(e)},getOptions:function(){return O},getPage:function(){return J[I]},getPageIndex:function(e){if(void 0!==e){for(const t of J||[])for(const n of t.slides)if(n.index===e)return t.index;return-1}return I},getPageProgress:function(e,t){var n;void 0===e&&(e=I);const i=J[e];if(!i)return e>I?-1:1;const o=ve(),s=ue();let r=i.pos,l=He.getPosition();if(H&&!0!==t){const e=Math.floor((l-(null===(n=J[0])||void 0===n?void 0:n.pos))/o);l-=e*o,r=[r+o,r,r-o].reduce((function(e,t){return Math.abs(t-l)<Math.abs(e-l)?t:e}))}return(l-r)/(i.dim+s)},getPageVisibility:function(e){var t;void 0===e&&(e=I);const n=J[e];if(!n)return e>I?-1:1;const i=He.getPosition(),o=fe();let s=n.pos;if(H){const e=He.getPosition(),n=ve(),i=s+Math.floor((e-(null===(t=J[0])||void 0===t?void 0:t.pos))/n)*n;s=[i+n,i,i-n].reduce((function(t,n){return Math.abs(n-e)<Math.abs(t-e)?n:t}))}return s>i&&s+n.dim<i+o?1:s<i?(s+n.dim-i)/n.dim:s+n.dim>i+o?(i+o-s)/n.dim:0},getPages:function(){return J},getPlugins:function(){return A},getPosition:function(e){var t;let n=q;if(H&&!0!==e){const e=ve();n-=Math.floor((q-(null===(t=J[0])||void 0===t?void 0:t.pos)||0)/e)*e}return n},getSlides:function(){return G},getState:function(){return L},getTotalSlideDim:ve,getTween:function(){return M},getViewport:function(){return V},getViewportDim:fe,getVisibleSlides:function(e){return void 0===e?W:pe(e)},goTo:Oe,hasNavigated:function(){return void 0!==j},hideError:Le,hideLoading:Pe,init:function(){if(!p||!t(p))throw new Error("No Element found");return 0!==L&&(Re(),L=0),R=p,T=x,window.removeEventListener("resize",ie),T.breakpoints&&window.addEventListener("resize",ie),ie(),He},isInfinite:function(){return H},isInTransition:function(){return Y.size>0},isRTL:function(){return D},isSettled:function(){return F},isVertical:function(){return $},localize:function(e,t=[]){return ee(e,t)},next:function(e={}){return Oe(I+1,e),He},off:function(e,t){for(const n of e instanceof Array?e:[e])te.has(n)&&te.set(n,te.get(n).filter((e=>e!==t)));return He},on:function(e,t){for(const n of e instanceof Array?e:[e])te.set(n,[...te.get(n)||[],t]);return He},prev:function(e={}){return Oe(I-1,e),He},remove:function(e){void 0===e&&(e=G.length-1);const t=G[e];return t&&(ne("removeSlide",t),t.el&&(we(t.el),t.el.remove(),t.el=void 0),G.splice(e,1),re(_),ye(),Ae()),He},setPosition:function(e){q=e,le(),Ae()},showError:function(e,t){Pe(e),Le(e);const n=e.el;if(n){const i=document.createElement("div");c(i,"f-html"),c(i,"is-error"),i.innerHTML=ee(t||"<p>{{ERROR}}</p>"),e.htmlEl=i,c(n,"has-html"),c(n,"has-error"),n.insertAdjacentElement("afterbegin",i),ne("contentReady",e)}return He},showLoading:function(e){const t=e.el,n=null==t?void 0:t.querySelector(".f-spinner");if(!t||n)return He;const i=Z("spinnerTpl"),o=l(i);return o&&(c(o,"f-spinner"),c(t,"is-loading"),t.insertAdjacentElement("beforeend",o)),He},version:"6.0.25"};return He};E.l10n={en_EN:p},E.getDefaults=()=>m;export{E as Carousel};