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