@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines • 106 kB
JavaScript
!/*! License details at fancyapps.com/license */function(e,t){"object"==typeof exports&&"u">typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="u">typeof globalThis?globalThis:e||self).window=e.window||{})}(this,function(e){"use strict";let t,n,o,i,r,l,a=e=>"string"==typeof e,s=e=>e&&null!==e&&e instanceof Element&&"nodeType"in e,c=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,o=-1!==n.indexOf("hidden"),i=-1!==n.indexOf("clip"),r=-1!==n.indexOf("visible");t=!o&&!i&&!r}if(e.scrollHeight>e.clientHeight){let t=window.getComputedStyle(e).overflowY,o=-1!==t.indexOf("hidden"),i=-1!==t.indexOf("clip"),r=-1!==t.indexOf("visible");n=!o&&!i&&!r}return t||n},u=function(e,t){return!e||e===document.body||t&&e===t?null:c(e)?e:u(e.parentElement,t)},d=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 o=t.firstChild;if(o&&!(o instanceof HTMLElement)){var n=document.createElement("div");return n.appendChild(o),n}return o},f=function(e=0,t=0,n=0){return Math.max(Math.min(t,n),e)},g=e=>"object"==typeof e&&null!==e&&e.constructor===Object&&"[object Object]"===Object.prototype.toString.call(e);function m(e){return g(e)||Array.isArray(e)}function p(e,t){let n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&n.every(n=>{let o=e[n],i=t[n];return"function"==typeof o?`${o}`==`${i}`:m(o)&&m(i)?p(o,i):o===i})}let h=1/60*3e3,y=function(e){for(let t of O)t.getState()===v.Running&&t.tick(z?e-z:0);z=e,I=window.requestAnimationFrame(y)},v=((b={})[b.Initializing=0]="Initializing",b[b.Running=1]="Running",b[b.Paused=2]="Paused",b[b.Completed=3]="Completed",b[b.Destroyed=4]="Destroyed",b);var b,E,w,x,M,L,S,T,R,P,A=((E=A||{})[E.Spring=0]="Spring",E[E.Ease=1]="Ease",E);let C=((w={})[w.Loop=0]="Loop",w[w.Reverse=1]="Reverse",w),O=new Set,I=null,z=0;function k(){let e=v.Initializing,t=A.Ease,n=0,o=0,i=k.Easings.Linear,r=500,l=0,a=0,s=0,c=0,u=1/0,d=.01,g=.01,m=!1,b={},E=null,w={},x={},M={},L=0,S=0,T=C.Loop,R=k.Easings.Linear,P=new Map;function z(e,...t){for(let n of P.get(e)||[])n(...t)}function F(e){return o=0,e?E=setTimeout(()=>{$()},e):$(),H}function $(){e=v.Running,z("start",w,x)}function _(){if(e=v.Completed,M={},z("end",w),e===v.Completed)if(n<L){if(n++,T===C.Reverse){let e={...b};b={...x},x=e}F(S)}else n=0;return H}let H={getState:function(){return e},easing:function(e){return i=e,t=A.Ease,M={},H},duration:function(e){return r=e,H},spring:function(e={}){t=A.Spring;let{velocity:n,mass:o,tension:i,friction:r,restDelta:f,restSpeed:p,maxSpeed:h,clamp:y}={velocity:0,mass:1,tension:170,friction:26,restDelta:.1,restSpeed:.1,maxSpeed:1/0,clamp:!0,...e};return l=n,a=o,s=i,c=r,g=f,d=p,u=h,m=y,M={},H},isRunning:function(){return e===v.Running},isSpring:function(){return t===A.Spring},from:function(e){return w={...e},H},to:function(e){return x=e,H},repeat:function(e,t=0,n=C.Loop,o){return L=e,S=t,T=n,R=o||i,H},on:function(e,t){return P.set(e,[...P.get(e)||[],t]),H},off:function(e,t){return P.has(e)&&P.set(e,P.get(e).filter(e=>e!==t)),H},start:function(t){return p(w,x)||(e=v.Initializing,b={...w},O.add(this),I||(I=window.requestAnimationFrame(y)),F(t)),H},pause:function(){return E&&(clearTimeout(E),E=null),e===v.Running&&(e=v.Paused,z("pause",w)),H},end:_,tick:function(n){n>h&&(n=h),o+=n;let y=0,E=!1;if(e!==v.Running)return H;if(t===A.Ease){E=1===(y=f(0,o/r,1));let e=T===C.Reverse?R:i;for(let t in w)w[t]=b[t]+(x[t]-b[t])*e(y)}if(t===A.Spring){let e=.001*n,t=0;for(let n in w){let o=x[n],i=w[n];if(!("number"==typeof o&&!isNaN(o))||!("number"==typeof i&&!isNaN(i)))continue;if(Math.abs(o-i)<=g){w[n]=o,M[n]=0;continue}M[n]||("object"==typeof l&&"number"==typeof l[n]?M[n]=l[n]:"number"==typeof l?M[n]=l:M[n]=0);let r=M[n],p=(r=f(-1*Math.abs(u),r,Math.abs(u)))*a*c,h=Math.abs(o-i)*s;r+=((i>o?-1:1)*h-p)/a*e,i+=r*e;let y=w[n]>o?i<o:i>o,v=Math.abs(r)<d&&Math.abs(o-i)<=g;m&&y&&(v=!0),v?(i=o,r=0):t++,w[n]=i,M[n]=r}E=!t}let L={...x};return z("step",w,b,x,y),E&&e===v.Running&&p(x,L)&&(e=v.Completed,_()),H},getStartValues:function(){return b},getCurrentValues:function(){return w},getCurrentVelocities:function(){return M},getEndValues:function(){return x},destroy:function(){e=v.Destroyed,E&&(clearTimeout(E),E=null),b=w=x={},O.delete(this)}};return H}function F(e){return"u">typeof TouchEvent&&e instanceof TouchEvent}function $(e,t){let n=[];for(let o of F(e)?e[t]:e instanceof MouseEvent&&("changedTouches"===t||"mouseup"!==e.type)?[e]:[])n.push({x:o.clientX,y:o.clientY,ts:Date.now()});return n}function _(e){return $(e,"touches")}function H(e){return $(e,"targetTouches")}function D(e){return $(e,"changedTouches")}function V(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 j(e){let t=e[0],n=e[1]||e[0];return t&&n?-1*Math.sqrt((n.x-t.x)*(n.x-t.x)+(n.y-t.y)*(n.y-t.y)):0}k.destroy=()=>{for(let e of O)e.destroy();I&&(cancelAnimationFrame(I),I=null)},k.Easings={Linear:function(e){return e},EaseIn:function(e){return 0===e?0:Math.pow(2,10*e-10)},EaseOut:function(e){return 1===e?1:1-Math.pow(2,-10*e)},EaseInOut:function(e){return 0===e?0:1===e?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2}};let q=e=>{e.cancelable&&e.preventDefault()},N={passive:!1},B={panThreshold:5,swipeThreshold:3,ignore:["textarea","input","select","[contenteditable]","[data-selectable]","[data-draggable]"]},W=!1,Z=!0,G=(e,t)=>{let n,o,i,r={...B,...t},l=[],a=[],s=[],c=!1,u=!1,d=!1,f=!1,g=0,m=0,p=0,h=0,y=0,v=0,b=0,E=0,w=0,x=[],M=0,L=0,S=new Map;function T(e){let t=j(a),r=j(s),d=Math.abs(b)>Math.abs(E)?b:E,f={srcEvent:i,isPanRecognized:c,isSwipeRecognized:u,firstTouch:l,previousTouch:s,currentTouch:a,deltaX:p,deltaY:h,offsetX:y,offsetY:v,velocityX:b,velocityY:E,velocity:d,angle:w,axis:o,scale:t&&r?t/r:0,center:n};for(let t of S.get(e)||[])t(f)}function R(e){let t=e.target,n=e.composedPath()[0],o=r.ignore.join(","),i=e=>e&&e instanceof HTMLElement&&(e.matches(o)||e.closest(o));if(i(t)||i(n))return!1}function P(e){let t=Date.now();if(x=x.filter(e=>!e.ts||e.ts>t-100),e&&x.push(e),b=0,E=0,x.length>3){let e=x[0],t=x[x.length-1];if(e&&t){let n=t.x-e.x,o=t.y-e.y,i=e.ts&&t.ts?t.ts-e.ts:0;i>0&&(b=Math.abs(n)>3?n/(i/30):0,E=Math.abs(o)>3?o/(i/30):0)}}}function A(e){if(!1===R(e))return;if("u">typeof MouseEvent&&e instanceof MouseEvent){if(W)return}else W=!0;if("u">typeof MouseEvent&&e instanceof MouseEvent){if(!e.buttons||0!==e.button)return;q(e)}e instanceof MouseEvent&&(window.addEventListener("mousemove",C),window.addEventListener("mouseup",O)),window.addEventListener("blur",I),i=e,l=[...a=H(e)],s=[],m=a.length,n=V(a),1===m&&(c=!1,u=!1,d=!1),m&&P(V(a));let t=Date.now(),o=t-(g||t);f=o>0&&o<=250&&1===m,g=t,clearTimeout(M),T("start")}function C(e){if(!l.length||e.defaultPrevented||!1===R(e))return;i=e,s=[...a],a=_(e);let t=V(s),u=V(_(e));if(P(u),m=a.length,n=u,s.length===a.length?(p=u.x-t.x,h=u.y-t.y):(p=0,h=0),l.length){let e=V(l);y=u.x-e.x,v=u.y-e.y}a.length>1&&Math.abs(j(a)-j(s))>=.1&&(d=!0,T("pinch")),!c&&(c=Math.abs(y)>r.panThreshold||Math.abs(v)>r.panThreshold)&&(Z=!1,clearTimeout(L),L=0,o=(w=Math.abs(180*Math.atan2(v,y)/Math.PI))>45&&w<135?"y":"x",l=[...a],s=[...a],y=0,v=0,p=0,h=0,window.getSelection()?.removeAllRanges(),T("panstart")),c&&(p||h)&&T("pan"),T("move")}function O(e){if(i=e,!l.length)return;let t=H(e),o=D(e);if(m=t.length,n=V(o),o.length&&P(V(o)),s=[...a],a=[...t],l=[...t],m>0)T("end"),c=!1,u=!1,x=[];else{let e=r.swipeThreshold;(Math.abs(b)>e||Math.abs(E)>e)&&(u=!0),c&&T("panend"),u&&T("swipe"),c||u||d||(T("tap"),f?T("doubleTap"):M=setTimeout(function(){T("singleTap")},250)),T("end"),z()}}function I(){clearTimeout(M),z(),c&&T("panend"),T("end")}function z(){W=!1,c=!1,u=!1,f=!1,m=0,x=[],a=[],s=[],l=[],p=0,h=0,y=0,v=0,b=0,E=0,w=0,o=void 0,window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",O),window.removeEventListener("blur",I),Z||L||(L=setTimeout(()=>{Z=!0,L=0},100))}function k(e){let t=e.target;W=!1,t&&!e.defaultPrevented&&(Z||(q(e),e.stopPropagation()))}let F={init:function(){return e&&(e.addEventListener("click",k,N),e.addEventListener("mousedown",A,N),e.addEventListener("touchstart",A,N),e.addEventListener("touchmove",C,N),e.addEventListener("touchend",O),e.addEventListener("touchcancel",O)),F},on:function(e,t){return S.set(e,[...S.get(e)||[],t]),F},off:function(e,t){return S.has(e)&&S.set(e,S.get(e).filter(e=>e!==t)),F},isPointerDown:()=>m>0,destroy:function(){clearTimeout(M),clearTimeout(L),L=0,e&&(e.removeEventListener("click",k,N),e.removeEventListener("mousedown",A,N),e.removeEventListener("touchstart",A,N),e.removeEventListener("touchmove",C,N),e.removeEventListener("touchend",O),e.removeEventListener("touchcancel",O)),e=null,z()}};return F};G.isClickAllowed=()=>Z;let U={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"},X=(e,t="")=>{e&&e.classList&&t.split(" ").forEach(t=>{t&&e.classList.add(t)})},Y=(e,t="")=>{e&&e.classList&&t.split(" ").forEach(t=>{t&&e.classList.remove(t)})},K=(e,t="",n)=>{e&&e.classList&&t.split(" ").forEach(t=>{t&&e.classList.toggle(t,n||!1)})},J=1e4,Q=e=>{e.cancelable&&e.preventDefault()},ee=(e,t=J)=>Math.round(((e=parseFloat(e+"")||0)+Number.EPSILON)*t)/t,et=((x={}).Reset="reset",x.Zoom="zoom",x.ZoomIn="zoomIn",x.ZoomOut="zoomOut",x.ZoomTo="zoomTo",x.ToggleCover="toggleCover",x.ToggleFull="toggleFull",x.ToggleMax="toggleMax",x.IterateZoom="iterateZoom",x.Pan="pan",x.Swipe="swipe",x.Move="move",x.MoveLeft="moveLeft",x.MoveRight="moveRight",x.MoveUp="moveUp",x.MoveDown="moveDown",x.RotateCCW="rotateCCW",x.RotateCW="rotateCW",x.FlipX="flipX",x.FlipY="flipY",x.ToggleFS="toggleFS",x),en=((M={}).Cover="cover",M.Full="full",M.Max="max",M),eo={x:0,y:0,scale:1,angle:0,flipX:1,flipY:1},ei=((L={})[L.Init=0]="Init",L[L.Loading=1]="Loading",L[L.Error=2]="Error",L[L.Ready=3]="Ready",L[L.Destroyed=4]="Destroyed",L),er={bounds:!0,classes:{container:"f-panzoom",wrapper:"f-panzoom__wrapper",content:"f-panzoom__content",viewport:"f-panzoom__viewport"},clickAction:et.ToggleFull,dblClickAction:!1,gestures:{},height:"auto",l10n:U,maxScale:4,minScale:1,mouseMoveFactor:1,panMode:"drag",protected:!1,singleClickAction:!1,spinnerTpl:'<div class="f-spinner"></div>',wheelAction:et.Zoom,width:"auto"},el=0,ea=0,es=0,ec=(e,n={},o={})=>{let i,r,l,c,g,m,h,y,v=ei.Init,b={...er,...n},E={},w={...eo},x={...eo},M=[];function L(e){let t=b[e];return t&&"function"==typeof t?t(eL):t}function S(){return e&&e.parentElement&&i&&v===ei.Ready}let T=new Map;function R(e,...t){let n=[...T.get(e)||[]];for(let o of(b.on&&n.push(b.on[e]),n))o&&o instanceof Function&&o(eL,...t);"*"!==e&&R("*",e,...t)}function P(e){if(!S()||u(e.target))return;let t=Date.now(),n=f(-1,[-e.deltaX||0,-e.deltaY||0,-e.detail||0].reduce(function(e,t){return Math.abs(t)>Math.abs(e)?t:e}),1);R("wheel",e,n);let o=L("wheelAction");if(!o||e.defaultPrevented)return;let i=x.scale,r=i*(n>0?1.5:.5);if(o===et.Zoom){let o=100>Math.abs(e.deltaY)&&100>Math.abs(e.deltaX);if(t-ea<(o?200:45))return void Q(e);ea=t;let l=N(),a=Z();if(ee(r)<ee(l)&&ee(i)<=ee(l)?(es+=Math.abs(n),r=l):ee(r)>ee(a)&&ee(i)>=ee(a)?(es+=Math.abs(n),r=a):(es=0,r=f(l,r,a)),es>7)return}switch(Q(e),o){case et.Pan:eu(o,{srcEvent:e,deltaX:-(2*e.deltaX),deltaY:-(2*e.deltaY)});break;case et.Zoom:eu(et.ZoomTo,{srcEvent:e,scale:r,center:{x:e.clientX,y:e.clientY}});break;default:eu(o,{srcEvent:e})}}function A(n){let o=n.composedPath()[0];if(!G.isClickAllowed()||!s(o)||n.defaultPrevented||!e?.contains(o)||o.hasAttribute("disabled")||o.hasAttribute("aria-disabled")||o.hasAttribute("data-carousel-go-prev")||o.hasAttribute("data-carousel-go-next"))return;let r=o.closest("[data-panzoom-action]"),l=r?.dataset?.panzoomAction,a=r?.dataset?.panzoomValue||"";if(l){switch(Q(n),l){case et.ZoomTo:case et.ZoomIn:case et.ZoomOut:eu(l,{scale:parseFloat(a||"")||void 0});break;case et.MoveLeft:case et.MoveRight:eu(l,{deltaX:parseFloat(a||"")||void 0});break;case et.MoveUp:case et.MoveDown:eu(l,{deltaY:parseFloat(a||"")||void 0});break;case et.ToggleFS:ex();break;default:eu(l)}return}if(!i?.contains(o))return;let c={srcEvent:n};if(eu(L("clickAction"),c),L("dblClickAction")){let e=Date.now(),n=e-(el||e);el=e,n>0&&n<=250?(t&&(clearTimeout(t),t=void 0),eu(L("dblClickAction"),c)):t=setTimeout(()=>{eu(L("singleClickAction"),c)},250)}}function C(e){if(y=e,!S()||!H()||w.scale<=1||x.scale<=1||(i?.dataset.animationName||"").indexOf("zoom")>-1)return;let t=j(x.scale);if(!t)return;let{x:n,y:o}=t;eu(et.Pan,{deltaX:n-x.x,deltaY:o-x.y})}function O(){e&&(Y(e,"is-loading"),e.querySelector(".f-spinner")?.remove())}function I(){if(!e||!r)return;if(O(),r instanceof HTMLImageElement&&!(r.complete&&r.naturalWidth)){v=ei.Error,i?.classList.add("has-error"),R("error");return}R("loaded");let{width:t,height:n}=$();r instanceof HTMLImageElement&&(r.setAttribute("width",t+""),r.setAttribute("height",n+"")),i&&(Y(i,"has-error"),r instanceof HTMLImageElement&&(i.setAttribute("width",t+""),i.setAttribute("height",n+""),i.style.aspectRatio=`${t/n||""}`)),m=k().on("start",(e,t)=>{void 0!==t.angle&&(t.angle=90*Math.round(t.angle/90)),void 0!==t.flipX&&(t.flipX=t.flipX>0?1:-1),void 0!==t.flipY&&(t.flipY=t.flipY>0?1:-1),x={...eo,...t},ec(),R("animationStart")}).on("pause",e=>{x={...eo,...e}}).on("step",e=>{if(!S())return void m?.end();if(w={...eo,...e},H()||!L("bounds")||eb()||x.scale>w.scale||x.scale<B())return void ed();let t=U(x.scale),n=!1,o=!1,i=!1,r=!1;w.x<t.x[0]&&(n=!0),w.x>t.x[1]&&(o=!0),w.y<t.y[0]&&(r=!0),w.y>t.y[1]&&(i=!0);let l=!1,a=!1,s=!1,c=!1;x.x<t.x[0]&&(l=!0),x.x>t.x[1]&&(a=!0),x.y<t.y[0]&&(c=!0),x.y>t.y[1]&&(s=!0);let u=!1;(o&&a||n&&l)&&(x.x=f(t.x[0],x.x,t.x[1]),u=!0),(i&&s||r&&c)&&(x.y=f(t.y[0],x.y,t.y[1]),u=!0),u&&m&&m.spring({tension:94,friction:17,maxSpeed:555*x.scale,restDelta:.1,restSpeed:.1,velocity:m.getCurrentVelocities()}).from(w).to(x).start(),ed()}).on("end",()=>{g?.isPointerDown()||en(),m?.isRunning()||(ec(),R("animationEnd"))}),function(){let e=L("gestures");if(!e||!c||!r)return;let t=!1;g=G(c,e).on("start",e=>{if(!L("gestures")||!m||!S()||H())return;let n=e.srcEvent;(w.scale>1||e.currentTouch.length>1)&&(n?.stopPropagation(),m.pause(),t=!0),1===e.currentTouch.length&&R("touchStart")}).on("move",e=>{t&&(1!==x.scale||e.currentTouch.length>1)&&(Q(e.srcEvent),e.srcEvent?.stopPropagation())}).on("pan",e=>{if(!t)return;let n=e.srcEvent;(1!==x.scale||e.currentTouch.length>1)&&(Q(n),eu(et.Pan,e))}).on("swipe",e=>{t&&x.scale>1&&eu(et.Swipe,e)}).on("tap",e=>{R("click",e)}).on("singleTap",e=>{R("singleClick",e)}).on("doubleTap",e=>{R("dblClick",e)}).on("pinch",e=>{t&&(e.scale>B()?eu(et.ZoomIn,e):e.scale<B()?eu(et.ZoomOut,e):eu(et.Pan,e))}).on("end",e=>{t&&(e.currentTouch.length?(e.srcEvent.stopPropagation(),Q(e.srcEvent),m?.end()):(t=!1,ec(),en(),R("touchEnd")))}).init()}(),c&&(c.addEventListener("wheel",P,{passive:!1}),M.push(()=>{c?.removeEventListener("wheel",P,{passive:!1})})),e?.addEventListener("click",A),document?.addEventListener("mousemove",C),M.push(()=>{e?.removeEventListener("click",A),document?.removeEventListener("mousemove",C)});let o=z();w={...o},x={...o},v=ei.Ready,ed(),ec(),R("ready"),requestAnimationFrame(()=>{v===ei.Ready&&(O(),c&&(c.style.visibility=""))})}function z(){let e={...L("startPos")||{}},t=e.scale,n=1;n="string"==typeof t?q(t):"number"==typeof t?t:B();let o={...eo,...e,scale:n},i=H()?j(n):void 0;if(i){let{x:e,y:t}=i;o.x=e,o.y=t}return o}function F(){let e={top:0,left:0,width:0,height:0};if(i){let t=i.getBoundingClientRect();x.angle%180==90?(e.top=t.top+.5*t.height-.5*t.width,e.left=t.left+.5*t.width-.5*t.height,e.width=t.height,e.height=t.width):(e.top=t.top,e.left=t.left,e.width=t.width,e.height=t.height)}return e}function $(){let e=L("width"),t=L("height");if(r&&"auto"===e){let t=r.getAttribute("width");e=t?parseFloat(t+""):void 0!==r.dataset.width?parseFloat(r.dataset.width+""):c instanceof HTMLImageElement?c.naturalWidth:r instanceof HTMLImageElement?r.naturalWidth:i?.getBoundingClientRect().width||0}else e=a(e)?parseFloat(e):e;if(r&&"auto"===t){let e=r.getAttribute("height");t=e?parseFloat(e+""):void 0!==r.dataset.height?parseFloat(r.dataset.height+""):c instanceof HTMLImageElement?c.naturalHeight:r instanceof HTMLImageElement?r.naturalHeight:i?.getBoundingClientRect().height||0}else t=a(t)?parseFloat(t):t;return{width:e,height:t}}function _(){let e=F();return{width:e.width,height:e.height}}function H(){return"mousemove"===L("panMode")&&matchMedia("(hover: hover)").matches}function j(e){let t=y||L("event"),n=i?.getBoundingClientRect();if(!t||!n||e<=1)return{x:0,y:0};let o=(t.clientX||0)-n.left,r=(t.clientY||0)-n.top,{width:l,height:a}=_(),s=U(e);if(e>1){let t=L("mouseMoveFactor");t>1&&(e*=t)}let c=l*e,u=a*e,d=(c-l)*.5-o/l*100/100*(c-l),g=(u-a)*.5-r/a*100/100*(u-a);return{x:d=f(s.x[0],d,s.x[1]),y:g=f(s.y[0],g,s.y[1])}}function q(t){if(!t)return x.scale;if(!e)return 1;let n=e.getBoundingClientRect(),o=F(),{width:i,height:r}=$(),l=e=>{if("number"==typeof e)return e;switch(e){case"min":case"base":return 1;case"cover":return Math.max(n.height/o.height,n.width/o.width)||1;case"full":case"max":{let e=x.angle%180==90?r:i;return e&&o.width?e/o.width:1}}},a=L("minScale"),s=L("maxScale"),c=Math.min(l("full"),l(a)),u="number"==typeof s?l("full")*s:Math.min(l("full"),l(s));switch(t){case"min":return c;case"base":return f(c,1,u);case"cover":return l("cover");case"full":return Math.min(u,l("full"));case"max":return u}}function N(){return q("min")}function B(){return q("base")}function W(){return q("full")}function Z(){return q("max")}function U(t){let n={x:[0,0],y:[0,0]},o=e?.getBoundingClientRect();if(!o)return n;let i=F(),r=o.width,l=o.height,a=i.width,s=i.height,c=t=void 0===t?x.scale:t,u=t;if(H()&&t>1){let e=L("mouseMoveFactor");e>1&&(a*t>r+.01&&(c*=e),s*t>l+.01&&(u*=e))}return a*=c,s*=u,t>1&&(a>r&&(n.x[0]=(r-a)*.5,n.x[1]=(a-r)*.5),n.x[0]-=(i.left-o.left)*.5,n.x[1]-=(i.left-o.left)*.5,n.x[0]-=(i.left+i.width-o.right)*.5,n.x[1]-=(i.left+i.width-o.right)*.5,s>l&&(n.y[0]=(l-s)*.5,n.y[1]=(s-l)*.5),n.y[0]-=(i.top-o.top)*.5,n.y[1]-=(i.top-o.top)*.5,n.y[0]-=(i.top+i.height-o.bottom)*.5,n.y[1]-=(i.top+i.height-o.bottom)*.5),n}function en(){if(!S()||!L("bounds")||!m)return;let e=N(),t=Z(),n=f(e,x.scale,t);if(x.scale<e-.01||x.scale>t+.01)return void eu(et.ZoomTo,{scale:n});if(m.isRunning()||eb())return;let o=U(n);x.x<o.x[0]||x.x>o.x[1]||x.y<o.y[0]||x.y>o.y[1]?(x.x=f(o.x[0],x.x,o.x[1]),x.y=f(o.y[0],x.y,o.y[1]),m.spring({tension:170,friction:17,restDelta:.001,restSpeed:.001,maxSpeed:1/0,velocity:m.getCurrentVelocities()}),m.from(w).to(x).start()):ed()}function ec(t){if(!S())return;let n=ev(),o=eb(),r=eE(),l=ew(),a=eg(),s=em();K(i,"is-fullsize",l),K(i,"is-expanded",r),K(i,"is-dragging",o),K(i,"can-drag",n),K(i,"will-zoom-in",a),K(i,"will-zoom-out",s);let c=eh(),u=ey(),d=ep(),f=!S();for(let n of(t||e)?.querySelectorAll("[data-panzoom-action]")||[]){let e=n.dataset.panzoomAction,t=!1;if(f)t=!0;else switch(e){case et.ZoomIn:c||(t=!0);break;case et.ZoomOut:d||(t=!0);break;case et.ToggleFull:{u||d||(t=!0);let e=n.querySelector("g");e&&(e.style.display=l&&!t?"none":"");break}case et.IterateZoom:{c||d||(t=!0);let e=n.querySelector("g");e&&(e.style.display=c||t?"":"none");break}case et.ToggleCover:case et.ToggleMax:c||d||(t=!0)}t?(n.setAttribute("aria-disabled",""),n.setAttribute("tabindex","-1")):(n.removeAttribute("aria-disabled"),n.removeAttribute("tabindex"))}}function eu(t,n){if(!t||!e||!r||!m||!S()||t===et.Swipe&&Math.abs(m.getCurrentVelocities().scale)>.01)return;let o={...x},i={...x},l=U(H()?o.scale:w.scale),a=m.getCurrentVelocities(),s=F();n=n||{};let c=(n.currentTouch?.length||0)>1,u=n.velocityX||0,d=n.velocityY||0,g=n.center;n.srcEvent&&(g=V(D(n.srcEvent)));let h=n.deltaX||0,y=n.deltaY||0;switch(t){case et.MoveRight:h=n.deltaX||100;break;case et.MoveLeft:h=n.deltaX||-100;break;case et.MoveUp:y=n.deltaY||-100;break;case et.MoveDown:y=n.deltaY||100}let v=[];if("number"==typeof t)i.scale=t;else switch(t){case et.Reset:(i={...eo}).scale=B();break;case et.ZoomTo:case et.ZoomIn:case et.ZoomOut:case et.ToggleCover:case et.ToggleFull:case et.ToggleMax:case et.IterateZoom:case et.Zoom:i.scale=ef(t,n);break;case et.Pan:case et.Move:case et.MoveLeft:case et.MoveRight:case et.MoveUp:case et.MoveDown:if(eb()){let e=1,t=1;i.x<=l.x[0]&&u<=0&&(e=.2*Math.max(.01,1-Math.abs(1/s.width*Math.abs(i.x-l.x[0])))),i.x>=l.x[1]&&u>=0&&(e=.2*Math.max(.01,1-Math.abs(1/s.width*Math.abs(i.x-l.x[1])))),i.y<=l.y[0]&&d<=0&&(t=.2*Math.max(.01,1-Math.abs(1/s.height*Math.abs(i.y-l.y[0])))),i.y>=l.y[1]&&d>=0&&(t=.2*Math.max(.01,1-Math.abs(1/s.height*Math.abs(i.y-l.y[1])))),i.x+=h*e,i.y+=y*t}else i.x=f(l.x[0],i.x+h,l.x[1]),i.y=f(l.y[0],i.y+y,l.y[1]);break;case et.Swipe:let b=(e=0)=>Math.sign(e)*Math.pow(Math.abs(e),1.5);i.x+=f(-1e3,b(u),1e3),i.y+=f(-1e3,b(d),1e3),d&&!u&&(i.x=f(l.x[0],i.x,l.x[1])),!d&&u&&(i.y=f(l.y[0],i.y,l.y[1])),a.x=u,a.y=d;break;case et.RotateCW:i.angle+=90;break;case et.RotateCCW:i.angle-=90;break;case et.FlipX:i.flipX*=-1;break;case et.FlipY:i.flipY*=-1}if(void 0!==w.angle&&Math.abs(w.angle)>=360&&(i.angle-=360*Math.floor(w.angle/360),w.angle-=360*Math.floor(w.angle/360)),v.length){let e=v.findIndex(e=>e>i.scale+1/J);i.scale=v[e]||v[0]}if(c&&(i.scale=f(N()*(c?.8:1),i.scale,Z()*(c?1.6:1))),H()){let e=j(i.scale);if(e){let{x:t,y:n}=e;i.x=t,i.y=n}}else if(Math.abs(i.scale-o.scale)>1e-4){let t=0,n=0;if(g)t=g.x,n=g.y;else{let o=e.getBoundingClientRect();t=o.x+.5*o.width,n=o.y+.5*o.height}let r=t-s.left,a=n-s.top;r-=.5*s.width,a-=.5*s.height;let u=(r-o.x)/o.scale,d=(a-o.y)/o.scale;i.x=r-u*i.scale,i.y=a-d*i.scale,!c&&L("bounds")&&(l=U(i.scale),i.x=f(l.x[0],i.x,l.x[1]),i.y=f(l.y[0],i.y,l.y[1]))}if(t===et.Swipe){let e=500*i.scale;m.spring({tension:94,friction:17,maxSpeed:e,restDelta:.1,restSpeed:.1,velocity:a})}else t===et.Pan||c?m.spring({tension:900,friction:17,restDelta:.01,restSpeed:.01,maxSpeed:1}):m.spring({tension:170,friction:17,restDelta:.001,restSpeed:.001,maxSpeed:1/0,velocity:a});if(0===n.velocity||p(w,i))w={...i},x={...i},m.end(),ed(),ec();else{if(p(x,i))return;m.from(w).to(i).start()}R("action",t)}function ed(){if(!r||!i||!c)return;let{width:t,height:n}=$();Object.assign(i.style,{maxWidth:`min(${t}px, 100%)`,maxHeight:`min(${n}px, 100%)`});let{x:o,y:l,width:a,height:s,scale:u,angle:d,flipX:f,flipY:g}=function(){let{width:t,height:n}=$(),{width:o,height:i}=_();if(!e)return{x:0,y:0,width:0,height:0,scale:0,flipX:0,flipY:0,angle:0,fitWidth:o,fitHeight:i,fullWidth:t,fullHeight:n};let{x:r,y:l,scale:a,angle:s,flipX:c,flipY:u}=w,d=1/W(),f=t,g=n,m=w.scale*d,p=x.scale*d,h=Math.max(o,i),y=Math.min(o,i);t>n?(f=h,g=y):(f=y,g=h),m=t>n?h*a/t||1:h*a/n||1;let v=f?t*p:0,b=g?n*p:0,E=f&&g?t*m/v:0;return{x:r=r+.5*f-.5*v,y:l=l+.5*g-.5*b,width:v,height:b,scale:E,flipX:c,flipY:u,angle:s,fitWidth:o,fitHeight:i,fullWidth:t,fullHeight:n}}(),m=`translate(${ee(o)}px, ${ee(l)}px)`;1!==f||1!==g?m+=` scaleX(${ee(u*f)}) scaleY(${ee(u*g)})`:m+=` scale(${ee(u)})`,0!==d&&(m+=` rotate(${d}deg)`),c.style.width=`${ee(a)}px`,c.style.height=`${ee(s)}px`,c.style.transform=`${m}`,R("render")}function ef(e=L("clickAction"),t={}){let n=x.scale,o=B(),i=[];if("number"==typeof e)o=e;else if(e){switch(e){case et.ZoomTo:o=t.scale||1;break;case et.ZoomIn:o=n*(t.scale||2);break;case et.ZoomOut:o=n*(t.scale||.5);break;case et.ToggleCover:i=[B(),q("cover")];break;case et.ToggleFull:i=[B(),W()];break;case et.ToggleMax:i=[B(),Z()];break;case et.IterateZoom:i=[B(),W(),Z()];break;case et.Zoom:let r=W();o=n>=r-.05?B():Math.min(r,n*(t.scale||2))}if(i.length){let e=i.findIndex(e=>e>n+1/J);o=i[e]||B()}}return e!==et.ZoomTo&&(o=f(N(),o,Z())),o}function eg(){return!!(S()&&ef()>x.scale)}function em(){return!!(S()&&ef()<x.scale)}function ep(){return!!(S()&&x.scale>N())}function eh(){return!!(S()&&x.scale<Z())}function ey(){return!!(S()&&x.scale<W())}function ev(){return!!(S()&&eE()&&g&&!H())}function eb(){return!!(S()&&g?.isPointerDown()&&!H())}function eE(){return!!(S()&&x.scale>B())}function ew(){return!!(S()&&x.scale>=W())}function ex(){let t="in-fullscreen",n="with-panzoom-in-fullscreen";e?.classList.toggle(t);let o=e?.classList.contains(t);o?(document.documentElement.classList.add(n),document.addEventListener("keydown",eM,!0)):(document.documentElement.classList.remove(n),document.removeEventListener("keydown",eM,!0)),ed(),R(o?"enterFS":"exitFS")}function eM(e){"Escape"!==e.key||e.defaultPrevented||ex()}let eL={canDrag:ev,canZoomIn:eh,canZoomOut:ep,canZoomToFull:ey,destroy:function(){for(let e of(R("destroy"),Object.values(E)))e?.destroy(eL);for(let e of M)e();return i&&(i.style.aspectRatio="",i.style.maxWidth="",i.style.maxHeight=""),c&&(c.style.width="",c.style.height="",c.style.transform=""),i=void 0,r=void 0,c=void 0,w={...eo},x={...eo},m?.destroy(),m=void 0,g?.destroy(),g=void 0,v=ei.Destroyed,eL},emit:R,execute:eu,getBoundaries:U,getContainer:function(){return e},getContent:function(){return r},getFullDim:$,getGestures:function(){return g},getMousemovePos:j,getOptions:function(){return b},getPlugins:function(){return E},getScale:q,getStartPosition:z,getState:function(){return v},getTransform:function(e){return!0===e?x:w},getTween:function(){return m},getViewport:function(){return c},getWrapper:function(){return i},init:function(){return v=ei.Init,R("init"),function(){for(let[e,t]of Object.entries({...o,...b.plugins||{}}))if(e&&!E[e]&&t instanceof Function){let n=t();n.init(eL),E[e]=n}R("initPlugins")}(),function(){let t={...er.classes,...L("classes")};if(!e)return;X(e,t.container);let n=t.content?.split(" ").shift();if(n&&(r=e.querySelector(`.${n}`)),!r)return;r.setAttribute("draggable","false");let o=t.wrapper?.split(" ").shift();o&&(i=e.querySelector(`.${o}`)),i||(X(i=document.createElement("div"),t.wrapper),r.insertAdjacentElement("beforebegin",i),i.insertAdjacentElement("afterbegin",r));let a=t.viewport?.split(" ").shift();if(a&&(c=e.querySelector(`.${a}`)),c||(X(c=document.createElement("div"),t.viewport),c.insertAdjacentElement("afterbegin",r),i.insertAdjacentElement("beforeend",c)),(l=r.cloneNode(!0)).removeAttribute("id"),i.insertAdjacentElement("afterbegin",l),r instanceof HTMLPictureElement&&(r=r.querySelector("img")),l instanceof HTMLPictureElement&&(l=l.querySelector("img")),c instanceof HTMLPictureElement&&(c=c.querySelector("img")),c&&(c.style.visibility="hidden",L("protected"))){c.addEventListener("contextmenu",e=>{Q(e)});let e=document.createElement("div");X(e,"f-panzoom__protected"),c.appendChild(e)}R("initLayout")}(),function(){if(e&&i&&!h){let e=null;(h=new ResizeObserver(()=>{S()&&(e=e||requestAnimationFrame(()=>{S()&&(ec(),en(),R("refresh")),e=null}))})).observe(i),M.push(()=>{h?.disconnect(),h=void 0,e&&(cancelAnimationFrame(e),e=null)})}}(),function(){if(!e||!r)return;if(!(r instanceof HTMLImageElement&&l instanceof HTMLImageElement))return I();let t=()=>{r&&r instanceof HTMLImageElement&&r.decode().then(()=>{I()}).catch(()=>{I()})};(v=ei.Loading,e.classList.add("is-loading"),R("loading"),l.src&&l.complete)?t():(function(){if(!e||e?.querySelector(".f-spinner"))return;let t=d(L("spinnerTpl"));t&&(t.classList.add("f-spinner"),e.classList.add("is-loading"),i?.insertAdjacentElement("afterbegin",t))}(),l.addEventListener("load",t,!1),l.addEventListener("error",t,!1),M.push(()=>{l?.removeEventListener("load",t,!1),l?.removeEventListener("error",t,!1)}))}(),eL},isDragging:eb,isExpanded:eE,isFullsize:ew,isMousemoveMode:H,localize:function(e,t=[]){let n=L("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.replace(/\{\{(.*?)\}\}/g,(e,t)=>t)},off:function(e,t){for(let n of e instanceof Array?e:[e])T.has(n)&&T.set(n,T.get(n).filter(e=>e!==t));return eL},on:function(e,t){for(let n of e instanceof Array?e:[e])T.set(n,[...T.get(n)||[],t]);return eL},toggleFS:ex,updateControls:ec,version:"6.1.12",willZoomIn:eg,willZoomOut:em};return eL};ec.l10n={en_EN:U},ec.getDefaults=()=>er;let eu=(e,t)=>{let n=[];return e.childNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(!t||e.matches(t))&&n.push(e)}),n},ed=(e,...t)=>{let n=t.length;for(let o=0;o<n;o++)Object.entries(t[o]||{}).forEach(([t,n])=>{let o=Array.isArray(n)?[]:{};e[t]||Object.assign(e,{[t]:o}),g(n)?Object.assign(e[t],ed(e[t],n)):Array.isArray(n)?Object.assign(e,{[t]:[...n]}):Object.assign(e,{[t]:n})});return e},ef=function(e=0,t=0,n=0,o=0,i=0,r=!1){let l=(e-t)/(n-t)*(i-o)+o;return r?o<i?f(o,l,i):f(i,l,o):l},eg={...U,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"},em=e=>{e.cancelable&&e.preventDefault()},ep=((S={})[S.Init=0]="Init",S[S.Ready=1]="Ready",S[S.Destroyed=2]="Destroyed",S),eh=((T={})[T.Loading=0]="Loading",T[T.Loaded=1]="Loaded",T[T.Error=2]="Error",T),ey={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:eg,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},ev=0,eb=(e,t={},o={})=>{let i,r,l,c,m;ev++;let p=ep.Init,h={...ey},y={...ey},v={},b=null,E=null,w=0,x=0,M=0,L=!1,S=!1,T=!1,R="height",P=0,A=!0,C=0,O=0,I=0,z=0,$="*",_=[],H=[],D=new Set,V=[],j=[],q=0,N=0,B=0;function W(e,...t){let n=y[e];return n&&n instanceof Function?n(e$,...t):n}function Z(e,t=[]){let n=W("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.replace(/\{\{(.*?)\}\}/g,(e,t)=>t)}let U=new Map;function J(e,...t){let n=[...U.get(e)||[]];for(let o of(y.on&&n.push(y.on[e]),n))o&&o instanceof Function&&o(e$,...t);"*"!==e&&J("*",e,...t)}function Q(){let e=ed({},ey,h);ed(e,ey,h);let t="",n=h.breakpoints||{};if(n)for(let[o,i]of Object.entries(n))window.matchMedia(o).matches&&(t+=o,ed(e,i));if(void 0===m||t!==m){if(m=t,p!==ep.Init){let t=j[C]?.slides[0]?.index;for(let n of(void 0===t&&(t=y.initialSlide),e.initialSlide=t,e.slides=[],_))n.isVirtual&&e.slides.push(n)}ez(),y=e,!1!==W("enabled")&&(p=ep.Init,J("init"),function(){for(let[e,t]of Object.entries({...o,...y.plugins||{}}))if(e&&!v[e]&&t instanceof Function){let n=t();n.init(e$,eb),v[e]=n}J("initPlugins")}(),function(){if(!b)return;let e=W("classes")||{};X(b,e.container);let t=W("style");if(t&&g(t))for(let[e,n]of Object.entries(t))b.style.setProperty(e,n);(E=b.querySelector(`.${e.viewport}`))||(X(E=document.createElement("div"),e.viewport),E.append(...eu(b,`.${e.slide}`)),b.insertAdjacentElement("afterbegin",E)),b.carousel=e$,J("initLayout")}(),function(){if(!E)return;let e=W("classes")||{};for(let t of(_=[],[...eu(E,`.${e.slide}`)].forEach(e=>{if(e.parentElement){let t=eg({el:e,isVirtual:!1,...e.dataset||{}});J("createSlide",t),_.push(t)}}),ew(),_))J("addSlide",t);for(let e of(ec(W("slides")),_)){let t=e.el;t?.parentElement===E&&(X(t,y.classes.slide),X(t,e.class),eA(e),J("attachSlideEl",e))}J("initSlides")}(),ex(),p=ep.Ready,X(b,(W("classes")||{}).isEnabled||""),eI(),ei(),r=k().on("start",()=>{i&&i.isPointerDown()||(eo(),eI())}).on("step",e=>{let t=P;(P=e.pos)!==t&&(A=!1,eI())}).on("end",e=>{!i?.isPointerDown()&&(P=e.pos,r&&!L&&(P<I||P>z)?r.spring({clamp:!0,mass:1,tension:200,friction:25,velocity:0,restDelta:1,restSpeed:1}).from({pos:P}).to({pos:f(I,P,z)}).start():A||(A=!0,J("settle")))}),et(),function(){if(!b||!E)return;b.addEventListener("click",eT),document.addEventListener("mousemove",ee);let e=E.getBoundingClientRect();if(q=e.height,N=e.width,!l){let e=null;(l=new ResizeObserver(()=>{e||(e=requestAnimationFrame(()=>{(function(){if(p!==ep.Ready||!E)return;let e=j.length,t=E.getBoundingClientRect(),n=t.height,o=t.width;e>1&&(T&&.5>Math.abs(n-q)||!T&&.5>Math.abs(o-N))||(ex(),et(),q=n,N=o,T&&!q||!T&&!N||b&&E&&(e===j.length&&i?.isPointerDown()||(W("dragFree")&&(L||P>I&&P<z)?(eo(),eI()):eC(C,{transition:!1}))))})(),e=null}))})).observe(E)}}(),J("ready"))}}function ee(e){n=e}function et(){if(!1===W("gestures"))i&&(i.destroy(),i=void 0);else{let e;i||(e=W("gestures"),!i&&!1!==e&&E&&(i=G(E,e).on("start",e=>{if(!r||!1===W("gestures",e))return;let{srcEvent:t}=e;T&&F(t)&&!u(t.target)&&em(t),r.pause(),r.getCurrentVelocities().pos=0;let n=j[C]?.slides[0],o=n?.el;if(n&&D.has(n.index)&&o){let e;P=(n.offset||0)+(({width:(e=new DOMMatrixReadOnly(window.getComputedStyle(o).transform)).m41||0,height:e.m42||0})[R]||0)*(S&&!T?1:-1)}eL(),!L&&(P<I||P>z)&&r.spring({clamp:!0,mass:1,tension:500,friction:25,velocity:r.getCurrentVelocities()?.pos||0,restDelta:1,restSpeed:1}).from({pos:P}).to({pos:f(I,P,z)}).start()}).on("move",e=>{if(!1===W("gestures",e))return;let{srcEvent:t,axis:n,deltaX:o,deltaY:i}=e;if(F(t)&&t.touches?.length>1)return;let l=u(t.target),a=l?l.scrollHeight>l.clientHeight?"y":"x":void 0;if(l&&l!==E&&(!n||n===a))return;if(!n){em(t),t.stopPropagation(),t.stopImmediatePropagation();return}if("y"===n&&!T||"x"===n&&T||(em(t),t.stopPropagation(),!r))return;let s=S&&!T?1:-1,c=T?i:o,d=r?.isRunning()?r.getEndValues().pos:P,f=1;!L&&(d<=I&&c*s<0?f=.2*Math.max(.01,1-(Math.abs(1/w*Math.abs(d-I))||0)):d>=z&&c*s>0&&(f=.2*Math.max(.01,1-(Math.abs(1/w*Math.abs(d-z))||0)))),d+=c*f*s,r.spring({clamp:!0,mass:1,tension:700,friction:25,velocity:r.getCurrentVelocities()?.pos||0,restDelta:1,restSpeed:1}).from({pos:P}).to({pos:d}).start()}).on("panstart",e=>{!1!==W("gestures",e)&&e?.axis===(T?"y":"x")&&X(E,"is-dragging")}).on("panend",e=>{!1!==W("gestures",e)&&Y(E,"is-dragging")}).on("end",e=>{if(!1===W("gestures",e))return;let{srcEvent:t,axis:n,velocityX:o,velocityY:i,currentTouch:l}=e;if(l.length>0||!r)return;let a=u(t.target),s=a?a.scrollHeight>a.clientHeight?"y":"x":void 0,c=a&&(!n||n===s);T&&F(t)&&!n&&eT(t);let d=j.length,g=W("dragFree");if(!d)return;let m=c?0:W("vertical")?i:o;n!==(T?"y":"x")&&(m=0);let p=r?.isRunning()?r.getEndValues().pos:P,h=S&&!T?1:-1;if(c||(p+=m*(g?5:1)*h),!L&&(m*h<=0&&p<I||m*h>=0&&p>z)){let e=0;Math.abs(m)>0&&(e=Math.min(.3*w,e=2*Math.abs(m))),p=f(I+-1*e,p,z+e),r.spring({clamp:!0,mass:1,tension:380,friction:25,velocity:-1*m,restDelta:1,restSpeed:1}).from({pos:P}).to({pos:p}).start();return}if(g||v.Autoscroll?.isEnabled())return void(Math.abs(m)>10?r.spring({clamp:!0,mass:1,tension:150,friction:25,velocity:-1*m,restDelta:1,restSpeed:1}).from({pos:P}).to({pos:p}).start():r.isRunning()||A||(A=!0,J("settle")));if(!(g||v.Autoscroll?.isEnabled())&&(!(e.offsetX||e.offsetY)||"y"===n&&!T||"x"===n&&T))return void eC(C,{transition:"tween"});let y=el(p);Math.abs(m)>10&&y===C&&(m>0?y+=S&&!T?1:-1:y+=S&&!T?-1:1),eC(y,{transition:"tween",tween:{velocity:-1*m}})}).init()))}K(E,"is-draggable",!!i&&j.length>0)}function en(e="*"){let t=[];for(let n of _)("*"===e||n.class&&n.class.includes(e)||n.el&&n.el?.classList.contains(e))&&t.push(n);c=void 0,$=e,H=[...t]}function eo(){if(!r)return;let e=el(r?.isRunning()?r.getEndValues().pos:P);e!==C&&(c=C,C=e,eA(),ei(),er(),J("change",C,c))}function ei(){if(!b)return;for(let e of b.querySelectorAll("[data-carousel-index]"))e.innerHTML=C+"";for(let e of b.querySelectorAll("[data-carousel-page]"))e.innerHTML=C+1+"";for(let e of b.querySelectorAll("[data-carousel-pages]"))e.innerHTML=j.length+"";for(let e of b.querySelectorAll("[data-carousel-go-to]"))parseInt(e.dataset?.carouselGoTo||"-1",10)===C?e.setAttribute("aria-current","true"):e.removeAttribute("aria-current");for(let e of b.querySelectorAll("[data-carousel-go-prev]"))e.toggleAttribute("aria-disabled",!ek()),ek()?e.removeAttribute("tabindex"):e.setAttribute("tabindex","-1");for(let e of b.querySelectorAll("[data-carousel-go-next]"))e.toggleAttribute("aria-disabled",!eF()),eF()?e.removeAttribute("tabindex"):e.setAttribute("tabindex","-1");let e=!1,t=j[C]?.slides[0];for(let n of(t&&(t.downloadSrc||"image"===t.type&&t.src)&&(e=!0),b.querySelectorAll("[data-carousel-download]")))n.toggleAttribute("aria-disabled",!e)}function er(e){e||(e=j[C]?.slides[0]);let t=e?.el;if(t)for(let n of t.querySelectorAll("[data-slide-index]"))n.innerHTML=e.index+1+""}function el(e){if(!j.length)return 0;let t=ea(),n=e;L?n-=Math.floor((e-j[0]?.pos)/t)*t||0:n=f(j[0]?.pos,e,j[j.length-1]?.pos);let o=new Map,i=0;for(let e of j){let r=Math.min(Math.abs(e.pos-n),Math.abs(e.pos-n-t),Math.abs(e.pos-n+t));o.set(i,r),i++}return parseInt((o.size>0?[...o.entries()].reduce((e,t)=>t[1]<e[1]?t:e):[C,0])[0])}function ea(e=!0){return H.length?H.reduce((e,t)=>e+t.dim,0)+(H.length-(L&&e?0:1))*B:0}function es(e){let t=ea(),n=w;if(!t||!E||!n)return[];let o=[];e=void 0===e?P:e,L&&(e-=Math.floor(e/t)*t||0);let i=0;for(let r of H){let l=(t=0)=>{!(o.indexOf(r)>-1)&&(r.pos=i-e+t||0,r.offset+t>e-r.dim-x+.51&&r.offset+t<e+n+M-.51&&o.push(r))};r.offset=i,L&&(l(t),l(-1*t)),l(),i+=r.dim+B}return o}function ec(e,t){let n=[];for(let t of Array.isArray(e)?e:[e]){let e=eg({...t,isVirtual:!0});e.el||(e.el=document.createElement("div")),J("createSlide",e),n.push(e)}for(let e of(_.splice(void 0===t?_.length:t,0,...n),ew(),n))J("addSlide",e),function(e){let t=e.el;if(!e||!t)return;let n=e.html?e.html instanceof HTMLElement?e.html:d(e.html):void 0;n&&(X(n,"f-html"),e.htmlEl=n,X(t,"has-html"),t.append(n),J("contentReady",e))}(e);return en($),n}function eg(e){return(a(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 eh(e){if(!E||!e)return;let t=e.el;if(t){if(t.setAttribute("index",e.index+""),t.parentElement!==E){let n;for(let o of(X(t,y.classes.slide),X(t,e.class),eA(e),_))if(o.index>e.index){n=o.el;break}E.insertBefore(t,n&&E.contains(n)?n:null),J("attachSlideEl",e)}return er(e),t}}function eE(e){let t=e?.el;t&&(t.remove(),eM(t),J("detachSlideEl",e))}function ew(){for(let e=0;e<_.length;e++){let t=_[e],n=t.el;n&&(t.index!==e&&eM(n),n.setAttribute("index",`${e}`)),t.index=e}}function ex(){if(!b||!E)return;S=W("rtl"),R=(T=W("vertical"))?"height":"width";let e=W("classes");if(K(b,e.isLTR,!S),K(b,e.isRTL,S),K(b,e.isHorizontal,!T),K(b,e.isVertical,T),K(b,e.hasAdaptiveHeight,W("adaptiveHeight")),w=0,x=0,M=0,B=0,E){E.childElementCount||(E.style.display="grid");let e=E.getBoundingClientRect();w=E.getBoundingClientRect()[R]||0;let t=window.getComputedStyle(E);B=parseFloat(t.getPropertyValue("--f-carousel-gap"))||0,"visible"===t.getPropertyValue("overflow-"+(T?"y":"x"))&&(x=Math.abs(e[T?"top":"left"]),M=Math.abs(window[T?"innerHeight":"innerWidth"]-e[T?"bottom":"right"])),E.style.display=""}if(!w)return;let t=function(){let e=0;if(E){let t=document.createElement("div");t.style.display="block",X(t,y.classes.slide),E.appendChild(t),e=t.getBoundingClientRect()[R],t.remove(),t=void 0}return e}();for(let e of H){let n=e.el,o=0;if(!e.isVirtual&&n&&s(n)){let e=!1;n.parentElement&&n.parentElement===E||(E.appendChild(n),e=!0),o=n.getBoundingClientRect()[R],e&&n.parentElement?.removeChild(n)}else o=t;e.dim=o}if(L=!1,W("infinite")){L=!0;let e=ea(),t=w+x+M;for(let n=0;n<H.length;n++){let o=H[n]?.dim+B;if(e-o<t&&e-o-t<o){L=!1;break}}}if(!function(){let e;if(!b)return;let t=w,n=ea(!1),o=W("slidesPerPage");o="auto"===o?1/0:parseFloat(o+""),j=[];let i=0,r=0;for(let e of H)(!j.length||i+e.dim-t>.05||r>=o)&&(j.push({index:j.length,slides:[],dim:0,offset:0,pos:0}),i=0,r=0),j[j.length-1]?.slides.push(e),i+=e.dim+B,r++;let l=W("center"),a=W("fill"),s=0;for(let e of j){for(let t of(e.dim=(e.slides.length-1)*B,e.slides))e.dim+=t.dim;e.offset=s,e.pos=s,!1!==l&&(e.pos-=(t-e.dim)*.5),a&&!L&&n>t&&(e.pos=f(0,e.pos,n-t)),s+=e.dim+B}let c=[];for(let t of j){let n={...t};e&&.1>Math.abs(n.pos-e.pos)?(e.dim+=n.dim,e.slides=[...e.slides,...n.slides]):(e=n,n.index=c.length,c.push(n))}C=f(0,C,(j=c).length-1)}(),I=j[0]?.pos||0,z=j[j.length-1]?.pos||0,p===ep.Init){let e;c=void 0,C=W("initialPage"),void 0!==(e=W("initialSlide")||void 0)&&(C=e$.getPageIndex(e)||0),C=f(0,C,j.length-1),O=P=j[C]?.pos||0}else O=j[C||0]?.pos||0;J("refresh"),ei()}function eM(e){if(!e||!s(e))return;let t=parseInt(e.getAttribute("index")||"-1"),n="";for(let t of Array.from(e.classList)){let e=t.match(/^f-(\w+)(Out|In)$/);e&&e[1]&&(n=e[1]+"")}if(!e||!n)return;let o=[`f-${n}Out`,`f-${n}In`,"to-prev","to-next","from-prev","from-next"];e.removeEventListener("animationend",eS),Y(e,o.join(" ")),D.delete(t)}function eL(){if(!E)return;let e=D.size>0;for(let e of H)eM(e.el);D.clear(),e&&eI()}function eS(e){e.animationName?.substring(0,2)==="f-"&&(eM(e.target),!D.size&&(Y(b,"in-transition"),!A&&.5>Math.abs(e$.getPosition(!0)-O)&&(A=!0,J("settle"))),eI())}function eT(e){if(e.defaultPrevented)return;let t=e.composedPath()[0];if(t.closest("[data-carousel-go-prev]")){em(e),e$.prev();return}if(t.closest("[data-carousel-go-next]")){em(e),e$.next();return}let n=t.closest("[data-carousel-go-to]");if(n){em(e),e$.goTo(parseFloat(n.dataset.carouselGoTo||"")||0);return}if(t.closest("[data-carousel-download]")){em(e);let t=j[C]?.slides[0];if(t&&(t.downloadSrc||"image"===t.type&&t.src)){let e=t.downloadFilename,n=document.createElement("a"),o=t.downloadSrc||t.src||"";n.href=o,n.target="_blank",n.download=e||o,n.click()}return}J("click",e)}function eR(e){let t=e.el;t&&t.querySelector(".f-spinner")?.remove()}function eP(e){let t=e.el;t&&(t.querySelector(".f-html.is-error")?.remove(),Y(t,"has-error"))}function eA(e){e||(e=j[C]?.slides[0]);let t=e?.el;if(!t)return;let n=W("formatCaption",e);void 0===n&&(n=e.caption),n=n||"";let o=W("captionEl");if(o&&o instanceof HTMLElement){if(e.index!==C)return;if(a(n)&&(o.innerHTML=Z(n+"")),n instanceof HTMLElement){if(n.parentElement===o)return;o.innerHTML="",n.parentElement&&(n=n.cloneNode(!0)),o.append(n)}return}if(!n)return;let i=e.captionEl||t.querySelector(".f-caption");!i&&n instanceof HTMLElement&&n.classList.contains("f-caption")&&(i=n),!i&&(X(i=document.createElement("div"),"f-caption"),a(n)?i.innerHTML=Z(n+""):n instanceof HTMLElement&&(n.parentElement&&(n=n.cloneNode(!0)),i.append(n)));let r=`f-caption-${ev}_${e.index}`;i.setAttribute("id",r),i.dataset.selectable="true",X(t,"has-caption"),t.setAttribute("aria-labelledby",r),e.captionEl=i,t.insertAdjacentElement("beforeend",i)}function eC(e,t={}){let{transition:n,tween:o}={...{transition:y.transition,tween:y.tween},...t||{}};if(!b||!r)return;let i=j.length;if(!i||function(e,t){if(!b||!w||!r||!t||!a(t)||"tween"===t)return!1;for(let e of V)if(w-e.dim>.5)return!1;if(x>.5||M>.5)return;let n=j.length,o=e>C?1:-1;e=L?(e%n+n)%n:f(0,e,n-1),S&&(o*=-1);let i=j[C]?.slides[0],l=i?.index,s=j[e]?.slides[0],c=s?.index,u=j[e]?.pos;if(void 0===c||void 0===l||l===c||P===u||Math.abs(w-(s?.dim||0))>1)return!1;A=!1,r.pause(),eL(),X(b,"in-transition"),P=O=u;let d=eh(i),g=eh(s);return eo(),d&&(D.add(l),d.style.transform="",d.addEventListener("animationend",eS),Y(d,y.classes.isSelected),d.inert=!1,X(d,`f-${t}Out to-${o>0?"next":"prev"}`)),g&&(D.add(c),g.style.transform="",g.addEventListener("animationend",eS),X(g,y.classes.isSelected),g.inert=!1,X(g,`f-${t}In from-${o>0?"prev":"next"}`)),eI(),!0}(e,n))return;e=L?(e%i+i)%i:f(0,e,i-1),O=j[e||0]?.pos||0;let l=r.isRunning()?r.getEndValues().pos:P;if(1>Math.abs(O-l)){P=O,C!==e&&(eA(),c=C,C=e,ei(),er(),J("change",C,c)),eI(),A||(A=!0,J("settle"));return}if(r.pause(),eL(),L){let e=ea(),t=Math.floor((l-j[0]?.pos)/e)||0,n=O+t*e,o=n-e;O=[n+e,n,o].reduce(function(e,t){return Math.abs(t-l)<Math.abs(e-l)?t:e})}!1!==n&&g(o)?r.spring(ed({},y.tween,o)).from({pos:P}).to({pos:O}).start():(P=O,eo(),eI(),A||(A=!0,J("settle")))}function eO(e){let t=P;if(L&&!0!==e){let e=ea();t-=(Math.floor((P-j[0]?.pos||0)/e)||0)*e}return t}function eI(){let e;if(!b||!E)return;V=es();let t=new Set,n=[],o=j[C],i=y.setTransform;for(let i of H){let r=D.has(i.index),l=V.indexOf(i)>-1,a=o?.slides?.indexOf(i)>-1;if(i.isVirtual&&!r&&!l)continue;let s=eh(i);if(s&&(n.push(i),a&&t.add(s),W("adaptiveHeight")&&a)){let t=(s.lastElementChild||s).getBoundingClientRect().height;e=void 0==e?t:Math.max(e,t)}}E&&e&&(E.style.height=`${e}px`),[...eu(E,`.${y.classes.slide}`)].forEach(e=>{K(e,y.classes.isSelected,t.has(e));let n=_[parseInt(e.getAttribute("index")||"-1")];if(!n){e.remove(),eM(e);return}let o=D.has(n.index),r=V.indexOf(n)>-1;if(n.isVirtual&&!o&&!r)return void eE(n);if(e.inert=!r,!1===i)return;let l=n.pos?Math.round(1e4*n.pos)/1e4:0,a=0,s=0,c=0,u=0;o||(a=T?0:S?-1*l:l,s=T?l:0,c=ef(a,0,n.dim,0,100),u=ef(s,0,n.dim,0,100)),i instanceof Function&&!o?i(e$,n,{x:a,y:s,xPercent:c,yPercent:u}):e.style.transform=a||s?`translate3d(${c}%, ${u}%,0)`:""}),J("render",n)}function ez(){for(let e of(b?.removeEventListener("click",eT),document.removeEventListener("mousemove",ee),D.clear(),l?.disconnect(),l=void 0,_)){let t=e.el;t&&s(t)&&(e.state=void 0,eR(e),eP(e),e.isVirtual?(eE(e),e.el=void 0):(eM(t),t.style.transform="",E&&!E.contains(t)&&E.appendChild(t)))}for(let e of Object.values(v))e?.destroy();for(let[e,t]of(v={},i?.destroy(),i=void 0,r?.destroy(),r=void 0,Object.entries(y.classes||{})))"container"!==e&&Y(b,t);Y(E,"is-draggable")}function ek(){return L||C>0}function eF(){return L||C<j.length-1}let e$={add:function(e,t){let n=P,o=C,i=ea(),l=r?.isRunning()?r.getEndValues().pos:P,a=i&&Math.floor((l-(j[0]?.pos||0))/i)||0;return ec(e,t),en($),ex(),r&&i&&(o===C&&(n-=a*i),n===O?P=O:r.spring({clamp:!0,mass:1,tension:300,friction:25,restDelta:1,restSpeed:1}).from({pos:n}).to({pos:O}).start()),eI(),e$},canGoPrev:ek,canGoNext:eF,destroy:function(){return J("destroy"),window.removeEventListener("resize",Q),ez(),U.clear(),b=null,j=[],_=[],y={...ey},v={},H=[],m=void 0,$="*",p=ep.Destroyed,e$},emit:J,filter:function(e="*"){return en(e),ex(),P=f(I,P,z),eI(),J("filter",e),e$},getContainer:function(){return b},getGapDim:function(){return B},getGestures:function(){return i},getLastMouseMove:function(){return n},getOption:function(e){return W(e)},getOptions:function(){return y},getPage:function(){return j[C]},getPageIndex:function(e){if(void 0!==e){for(let t of j||[])for(let n of t.slides)if(n.index===e)return t.index;return -1}return C},getPageIndexFromPosition:el,getPageProgress:function(e,t){void 0===e&&(e=C);let n=j[e];if(!n)return e>C?-1:1;let o=ea(),i=B,r=n.pos,l=eO();if(L&&!0!==t){let e=Math.floor((l-j[0]?.pos)/o)||0;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)/(n.dim+i)||0},getPageVisibility:function(e){void 0===e&&(e=C);let t=j[e];if(!t)return e>C?-1:1;let n=eO(),o=w,i=t.pos;if(L){let e=ea(),t=i+(Math.floor((n-j[0]?.pos)/e)||0)*e,o=t-e;i=[t+e,t,o].reduce(function(e,t){return Math.abs(t-n)<Math.abs(e-n)?t:e})}return i>n&&i+t.dim<n+o?1:i<n?(i+t.dim-n)/t.dim||0:i+t.dim>n+o&&(n+o-i)/t.dim||0},getPages:function(){return j},getPlugins:function(){return v},getPosition:eO,getSlides:function(){return _},getState:function(){return p},getTotalSlideDim:ea,getTween:function(){return r},getViewport:function(){return E},getViewportDim:function(){return w},getVisibleSlides:function(e){return void 0===e?V:es(e)},goTo:eC,hasNavigated:function(){return void 0!==c},hideError:eP,hideLoading:eR,init:function(){if(!e||!s(e))throw Error("No Element found");return p!==ep.Init&&(ez(),p=ep.Init),b=e,h=t,window.removeEventListener("resize",Q),h.breakpoints&&window.addEventListener("resize",Q),Q(),e$},isInfinite:function(){return L},isInTransition:function(){return D.size>0},isRTL:function(){return S},isSettled:function(){return A},isVertical:function(){return T},localize:Z,next:function(e={}){return eC(C+1,e),e$},off:function(e,t){for(let n of e instanceof Array?e:[e])U.has(n)&&U.set(n,U.get(n).filter(e=>e!==t));return e$},on:function(e,t){for(let n of e instanceof Array?e:[e])U.set(n,[...U.get(n)||[],t]);return e$},prev:function(e={}){return eC(C-1,e),e$},reInit:function(e={},n){return ez(),p=ep.Init,m=void 0,$="*",t=e,h=e,g(n)&&(o=n),Q(),e$},remove:function(e){void 0===e&&(e=_.length-1);let t=_[e];return t&&(J("removeSlide",t),t.el&&(eM(t.el),t.el.remove(),t.el=void 0),_.splice(e,1),en($),ex(),P=f(I,P,z),eI()),e$},setPosition:function(e){P=e,eo(),eI()},showError:function(e,t){if(p===ep.Ready){eR(e),eP(e);let n=e.el;if(n){let o=document.createElement("div");X(o,"f-html"),X(o,"is-error"),o.innerHTML=Z(t||"<p>{{ERROR}}</p>"),e.htmlEl=o,X(n,"has-html has-error"),n.insertAdjacentElement("afterbegin",o),J("contentReady",e)}}return e$},showLoading:function(e){let t=e.el,n=t?.querySelector(".f-spinner");if(!t||n)return e$;let o=d(W("spinnerTpl"));return o&&(X(o,"f-spinner"),t.insertAdjacentElement("beforeend",o)),e$},version:"6.1.12"};return e$};eb.l10n={en_EN:eg},eb.getDefaults=()=>ey;let eE=(e=!0,t="--f-scrollbar-compensate",n="--f-body-margin",o="hide-scrollbar")=>{let i=document,r=i.body,l=i.documentElement;if(e){if(r.classList.contains(o))return;let e=window.innerWidth-l.getBoundingClientRect().width;e<0&&(e=0),l.style.setProperty(t,`${e}px`);let i=parseFloat(window.getComputedStyle(r).marginRight);i&&r.style.setProperty(n,`${i}px`),r.classList.add(o)}else r.classList.remove(o),r.style.setProperty(n,""),i.documentElement.style.setProperty(t,"")};function ew(){return!!("u">typeof window&&window.document&&window.document.createElement)}let ex=function(e="",t="",n=""){return e.split(t).join(n)},eM={tpl:e=>`<img class="f-panzoom__content"
${e.srcset?'data-lazy-srcset="{{srcset}}"':""}
${e.sizes?'data-l