function zoomGallery(){return{open:!1,loading:!1,images:[],index:0,zoomist:null,refs:null,resizeHandler:null,keyHandler:null,keyHandlers:{Escape(){this.close()},ArrowRight(){this.next()},ArrowLeft(){this.prev()}},register(n){this.refs=n},async openGallery(n){const t=[...document.querySelectorAll("[data-zoomable]")];if(this.images=t.map(n=>n.dataset.zoomable).filter(Boolean),this.images.length){const r=n.currentTarget,i=t.indexOf(r);this.index=i!==-1?i:0;this.open=!0;await Alpine.nextTick();this.loadImage()}},close(){this.open=!1;this.loading=!1;this.destroyZoomist()},next(){this.index0&&(this.index--,this.loadImage())},isFirst(){return this.index==0},isLast(){return this.index==this.images.length-1},loadImage(){const t=()=>{this.loading=!1,this.initZoomist()};this.loading=!0;const n=this.refs.zoomImage;n.onload=null;n.src=this.images[this.index];n.complete?t():n.onload=()=>t()},getRawZoomist(){return Alpine.raw(this.zoomist)},initZoomist(){var n=this.getZoomistConfig();this.zoomist=new Zoomist(this.refs.zoomContainer,n);this.relocateControls();this.resizeHandler=()=>this.reconfigureZoomist();window.addEventListener("resize",this.resizeHandler);this.bindKeys()},destroyZoomist(){this.open=!1;window.removeEventListener("resize",this.resizeHandler);this.resizeHandler=null;var n=this.getRawZoomist();n&&(n.destroy(),this.zoomist=null);this.unbindKeys()},reconfigureZoomist(){var n=this.getRawZoomist(),t;n&&(t=this.getZoomistConfig(),n.update(t),this.relocateControls())},getZoomistConfig(){var n=this.getMaxZoom();return{maxScale:n,bounds:!0,slider:!0,zoomer:!0}},relocateControls(){const n=this.refs.zoomContainer,i=n.querySelector(".zoomist-controls"),r=n.querySelector(".zoomist-slider"),t=n.querySelector(".zoomist-zoomer");if(i&&r&&t){const u=t.querySelector(".zoomist-zoomer-out"),f=t.querySelector(".zoomist-zoomer-in"),e=n.querySelector(".zoomist-prev"),o=n.querySelector(".zoomist-next");i.append(e,u,r,f,o);t.remove()}},getMaxZoom(){const n=this.refs.zoomImage,t=n.naturalWidth,r=n.naturalHeight,i=n.clientWidth,u=n.clientHeight;if(!t||!i)return 1;const f=t/i,e=r/u;return Math.max(1,Math.max(f,e))},bindKeys(){this.keyHandler=n=>{if(this.open){const t=this.keyHandlers[n.key];t&&(n.preventDefault(),n.stopPropagation(),t.call(this))}};window.addEventListener("keydown",this.keyHandler,!0)},unbindKeys(){window.removeEventListener("keydown",this.keyHandler);this.keyHandler=null}}}typeof Alpine!="undefined"?Alpine.store("zoom",zoomGallery()):document.addEventListener("alpine:init",()=>{Alpine.store("zoom",zoomGallery())});var Te=Object.defineProperty,Oe=(n,t,i)=>t in n?Te(n,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[t]=i,w=(n,t,i)=>(Oe(n,typeof t!="symbol"?t+"":t,i),i),Ye=(n,t,i)=>{if(!t.has(n))throw TypeError("Cannot "+i);},O=(n,t,i)=>{if(t.has(n))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(n):t.set(n,i)},Y=(n,t,i)=>(Ye(n,t,"access private method"),i);(function(n,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self,n.Zoomist=t())})(this,function(){var y,wt,p,bt,b,kt,k,dt,d,gt,g,ni,nt,ti,tt,ii,it,ri,rt,ui,ut,fi,ft,ei;"use strict";const oi=n=>{if(!n||typeof n!="object")return!1;const t=Object.getPrototypeOf(n);return t===Object.prototype||t===null},si=n=>typeof n=="function",l=n=>!isNaN(Number(n)),et=n=>n==null,ot=n=>n instanceof HTMLElement?n:document.querySelector(n),st=(n,t)=>t?n.closest(`.${t}`):null,f=n=>"touches"in n?n.touches.length===0?{clientX:0,clientY:0}:n.touches.length===1?{clientX:n.touches[0].clientX,clientY:n.touches[0].clientY}:{clientX:[...n.touches].reduce((n,t)=>n+t.clientX,0)/n.touches.length,clientY:[...n.touches].reduce((n,t)=>n+t.clientY,0)/n.touches.length}:{clientX:n.clientX,clientY:n.clientY},r=n=>{const{width:t,height:i,top:r,left:u,bottom:f}=n.getBoundingClientRect();return{width:t,height:i,top:r,left:u,bottom:f}},hi=n=>n.touches.length>=2?Math.hypot(n.touches[0].clientX-n.touches[1].clientX,n.touches[0].clientY-n.touches[1].clientY):0,o=(n,t)=>{for(const[r,i]of Object.entries(t))typeof i=="string"&&n.style.setProperty(r,i)},s=(n,t)=>{for(const[i,r]of Object.entries(t))n.setAttribute(i,r)},t=(n,t)=>{for(const[i,r]of Object.entries(t))n[i]=r},u=(n,t,i)=>Math.min(Math.max(n,t),i),i=n=>isNaN(n)?0:Math.round(n*100)/100,ci=n=>{throw new Error(n);},ht=n=>console.warn(n),h=(n="div",t,i,r)=>{const u=document.createElement(n);return t&&u.classList.add(...t.split(" ")),i&&s(u,i),r&&(u.innerHTML=r),u},n="zoomist",di=`${n}-container`,li=`${n}-wrapper`,ct=`${n}-image`,gi=`${n}-not-draggable`,nr=`${n}-not-wheelable`,c=`${n}-slider`,tr=`${n}-slider-wrapper`,ir=`${n}-slider-bar`,rr=`${n}-slider-button`,a=`${n}-zoomer`,ur=`${n}-zoomer-button`,lt=`${n}-zoomer-icon`,at=`${n}-zoomer-in`,vt=`${n}-zoomer-out`,yt=`${n}-zoomer-reset`,fr=`${n}-zoomer-disabled`,er={tabindex:"0",role:"slider","aria-label":"slider for zoomist","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":"0","aria-disabled":"false"},pt={tabindex:"0",role:"button",type:"button","aria-disabled":"false"},or={...pt,"aria-label":"button for zoom in zoomist"},sr={...pt,"aria-label":"button for zoom out zoomist"},hr={...pt,"aria-label":"button for reset zoomist scale"},e=typeof window<"u"&&typeof document<"u"&&"ontouchstart"in window,cr=e?"touchstart":"mousedown",ai=e?"touchmove":"mousemove",vi=e?"touchend":"mouseup",lr="wheel",ar=["left","right","center"],vr=["top","bottom","center"],yi="--scale",pi="--translate-x",wi="--translate-y",yr="--value",bi={draggable:!0,wheelable:!0,pinchable:!0,bounds:!0,zoomRatio:.1,maxScale:10,minScale:1,initScale:null,dragReleaseOnBounds:!1,wheelReleaseOnMinMax:!1,disableDraggingClass:gi,disableWheelingClass:nr,smooth:!1},pr={el:null,direction:"horizontal"},wr={el:`.${c}`},br={el:null,inEl:null,outEl:null,resetEl:null,disabledClass:fr},kr={el:`.${a}`,inEl:`.${at}`,outEl:`.${vt}`,resetEl:`.${yt}`},dr={ready:null,reset:null,resize:null,beforeDestroy:null,destroy:null,beforeUpdate:null,update:null,zoom:null,wheel:null,dragStart:null,drag:null,dragEnd:null,pinchStart:null,pinch:null,pinchEnd:null,slideStart:null,slide:null,slideEnd:null},gr={slider:null,zoomer:null},nu=` `,tu=` `,iu=` `,ru={on(n,t){if(!t||!si(t))return this;const{__events__:i}=this;return n.split(" ").forEach(n=>{const r=n;i[r]||(i[r]=[]);i[r].push(t)}),this},emit(n,...t){const{__events__:i}=this;return i[n]?(i[n].forEach(n=>{si(n)&&n.apply(this,t)}),this):this},zoom(n,t){const{scale:r}=this.transform,u=this.useFixedRatio(i(r*(n+1)));return r===u?this:(this.zoomTo(u,t),this)},zoomTo(n,i=!0){const{image:a,transform:{scale:f,translateX:v,translateY:y},options:{bounds:e}}=this;if(n=this.useFixedRatio(n),n===f)return this;if(this.transform.scale=n,!i)return this.emit("zoom",this,this.transform.scale),this;i=typeof i=="boolean"?this.getContainerCenterClient():i;const{clientX:p,clientY:w}=i,{top:b,left:k,width:d,height:g}=r(a),{width:o,height:s}=this.getImageDiff(),h=n/f-1,c=(d/2-p+k)*h+v,l=(g/2-w+b)*h+y,nt=e?u(c,o,-o):c,tt=e?u(l,s,-s):l;return t(this.transform,{translateX:nt,translateY:tt}),this.emit("zoom",this,this.transform.scale),this},move(n){const{options:{bounds:t},transform:{translateX:o,translateY:s}}=this,{x:i,y:r}=n,{width:f,height:e}=this.getImageDiff();if(l(i)){const n=o+i,r=t?u(n,f,-f):n;this.transform.translateX=r}if(l(r)){const n=s+r,i=t?u(n,e,-e):n;this.transform.translateY=i}return this},moveTo(n){const{options:{bounds:e}}=this,{x:t,y:i}=n,{width:r,height:f}=this.getImageDiff();if(l(t)){const n=Number(t),i=e?u(n,r,-r):n;this.transform.translateX=i}if(l(i)){const n=Number(i),t=e?u(n,f,-f):n;this.transform.translateY=t}if(ar.some(n=>n===t)){const n={left:-r,right:r,center:0}[t];this.transform.translateX=n}if(vr.some(n=>n===i)){const n={top:-f,bottom:f,center:0}[i];this.transform.translateY=n}return this},slideTo(n){const{options:{minScale:t,maxScale:i}}=this,r=(i-t)*n/100+t;return this.zoomTo(r),this},reset(){const{options:{initScale:n}}=this;return t(this.transform,{scale:n,translateX:0,translateY:0}),this.emit("reset",this),this},destroy(t=!1){const{element:r,image:i,controller:u}=this;return this.mounted&&(this.emit("beforeDestroy",this),u.abort(),this.destroyModules(),t&&i&&(this.reset(),i.removeAttribute("style")),r[n]=null,this.mounted=!1,this.emit("destroy",this)),null},update(t){const{element:i,controller:r}=this;return this.emit("beforeUpdate",this),i[n]=null,this.mounted=!1,r.abort(),this.destroyModules(),t&&(this.options=Object.assign({},bi,oi(t)&&t)),this.init(),this.emit("update",this),this},getImageData(){return{...this.data.imageData}},getContainerData(){return{...this.data.containerData}},getSliderValue(){const{__modules__:{slider:n}}=this;return n&&n.value!==void 0?n.value:null},isOnBoundTop(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateY:t}}=this,{height:r}=this.getImageDiff();return t*-1===i(r)},isOnBoundBottom(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateY:t}}=this,{height:r}=this.getImageDiff();return t===i(r)},isOnBoundLeft(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateX:t}}=this,{width:r}=this.getImageDiff();return t*-1===i(r)},isOnBoundRight(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateX:t}}=this,{width:r}=this.getImageDiff();return t===i(r)},isOnBoundX(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateX:t}}=this,{width:r}=this.getImageDiff();return Math.abs(t)===Math.abs(i(r))},isOnBoundY(){const{options:{bounds:n}}=this;if(!n)return!1;const{transform:{translateY:t}}=this,{height:r}=this.getImageDiff();return Math.abs(t)===Math.abs(i(r))},isOnMinScale(){const{options:{minScale:n}}=this,{transform:{scale:t}}=this;return t===n},isOnMaxScale(){const{options:{maxScale:n}}=this,{transform:{scale:t}}=this;return t===n},getImageDiff(){const{width:n,height:t}=this.getContainerData(),{width:i,height:r}=this.getImageData();return{width:(n-i)/2,height:(t-r)/2}},getContainerCenterClient(){const{element:n}=this,{top:t,left:i,width:u,height:f}=r(n);return{clientX:i+u/2,clientY:t+f/2}},getScaleRatio(){const{transform:{scale:t},options:{minScale:n,maxScale:i}}=this;return(t-n)/(i-n)},useFixedRatio(n){const{options:{minScale:t,maxScale:i}}=this;return u(n,t,i)},useAnimate(n){const{options:{smooth:t},transform:i}=this,u=(1100-(typeof t=="object"?Math.max(.1,Math.min(1,t.damping)):.6)*1e3)*.5,r=()=>{if(!this.states.dragging&&(Math.abs(n.velocityX)>.01||Math.abs(n.velocityY)>.01)){const r=Date.now(),t=r-n.lastTime,f=Math.exp(-t/u);n.velocityX*=f;n.velocityY*=f;n.lastTime=r;const e=n.velocityX*t,o=n.velocityY*t;if(this.moveTo({x:i.translateX+e,y:i.translateY+o}),Math.abs(n.velocityX)<.01&&Math.abs(n.velocityY)<.01){n.frame=null;return}}n.frame=requestAnimationFrame(r)};return r}},{defineProperty:v}=Object;class ki{constructor(n,t){if(O(this,y),O(this,p),O(this,b),O(this,k),O(this,d),O(this,g),O(this,nt),O(this,tt),O(this,it),O(this,rt),O(this,ut),O(this,ft),w(this,"element"),w(this,"options"),w(this,"wrapper"),w(this,"image"),w(this,"mounted"),w(this,"data"),w(this,"transform"),w(this,"states"),w(this,"controller"),w(this,"__events__"),w(this,"__modules__"),!n)return ci("The first argument is required.");const i=ot(n);if(!i)return ci(`Element ${n} is not exist.`);this.element=i;this.options=Object.assign({},bi,oi(t)&&t);this.init()}init(){const{element:i}=this,{options:{bounds:o,minScale:t,maxScale:r,initScale:s}}=this;if(!i[n]){i[n]=this;const f=i.querySelector(`.${li}`),e=i.querySelector(`.${ct}`);if(!f)return ht(`${n} needs a ".${li}" element.`);if(!e)return ht(`${n} needs a ".${ct}" element.`);this.options.minScale=o&&t<1?1:t;this.options.maxScale=Math.max(r,t);this.options.initScale=u(s||t,t,r);this.wrapper=f;this.image=e;Y(this,y,wt).call(this)}}destroyModules(){const{slider:n,zoomer:t}=this.__modules__;n&&this.destroySlider();t&&this.destroyZoomer()}destroySlider(){var t,i;const{__modules__:{slider:n}}=this;if(n&&n.mounted){const{options:{el:u},controller:r}=n;u===`.${c}`?(t=n.sliderEl)==null||t.remove():(i=n.sliderTrack)==null||i.remove();r==null||r.abort();n.mounted=!1}}destroyZoomer(){const{__modules__:{zoomer:n}}=this;if(n&&n.mounted){const{options:{el:i,inEl:r,outEl:u,resetEl:f},controller:t,zoomerEl:e,zoomerInEl:o,zoomerOutEl:s,zoomerResetEl:h}=n,c=(n,t,i)=>{n===`.${t}`&&(i==null||i.remove())};[{target:i,className:a,el:e},{target:r,className:at,el:o},{target:u,className:vt,el:s},{target:f,className:yt,el:h}].forEach(n=>c(n.target,n.className,n.el));t==null||t.abort();n.mounted=!1}}}return y=new WeakSet,wt=function(){const{element:o,image:t,options:n}=this,{draggable:i,pinchable:s}=n,{offsetWidth:h,offsetHeight:c}=o,{offsetWidth:u,offsetHeight:f}=t,{width:l,height:a}=r(t);if(!u||!f)return ht(`The width or height of ${ct} should not be 0.`);if(this.transform={scale:0,translateX:0,translateY:0},this.data={imageData:{originWidth:u,originHeight:f,width:l,height:a},containerData:{width:h,height:c}},e&&(i||s)&&(this.data.touchData={hypot:0,prevX:0,prevY:0,offsetX:0,offsetY:0,imageTop:0,imageLeft:0,widthDiff:0,heightDiff:0,lastTime:0,velocityX:0,velocityY:0,frame:null}),!e&&i&&(this.data.dragData={prevX:0,prevY:0,lastTime:0,velocityX:0,velocityY:0,frame:null}),this.__events__={...dr},n.on)for(const[t,i]of Object.entries(n.on))this.__events__[t]=[i];if(this.__modules__={...gr},n.slider){const t=n.slider===!0?wr:n.slider;this.__modules__.slider={options:Object.assign({},pr,t)}}if(n.zoomer){const t=n.zoomer===!0?kr:n.zoomer;this.__modules__.zoomer={options:Object.assign({},br,t)}}this.controller=new AbortController;Y(this,p,bt).call(this)},p=new WeakSet,bt=function(){if(!this.mounted){const{element:l,image:n,options:{minScale:e,maxScale:h,initScale:u},__modules__:{slider:c,zoomer:f}}=this;o(n,{transform:` translate(var(${pi}, 0px), var(${wi}, 0px)) scale(var(${yi}, 0))`});v(this.transform,"scale",{get:()=>this.transform.__scale__,set:i=>{const l=this.useFixedRatio(i);if(!(et(l)||this.transform.__scale__===l)){if(this.transform.__scale__=l,o(n,{[yi]:l.toString()}),t(this.data.imageData,{width:r(n).width,height:r(n).height}),c){const n=Math.round(this.getScaleRatio()*100);c.value=n}if(f&&f.options.disabledClass){const{zoomerInEl:n,zoomerOutEl:t,zoomerResetEl:i,options:{disabledClass:r}}=f;n&&(n.classList[l===h?"add":"remove"](r),s(n,{"aria-disabled":l===h?"true":"false"}));t&&(t.classList[l===e?"add":"remove"](r),s(t,{"aria-disabled":l===e?"true":"false"}));i&&(i.classList[l===u?"add":"remove"](r),s(i,{"aria-disabled":l===u?"true":"false"}))}}}});v(this.transform,"translateX",{get:()=>this.transform.__translateX__,set:t=>{const r=i(t);et(r)||this.transform.__translateX__===r||(this.transform.__translateX__=r,o(n,{[pi]:`${r}px`}))}});v(this.transform,"translateY",{get:()=>this.transform.__translateY__,set:t=>{const r=i(t);et(r)||this.transform.__translateY__===r||(this.transform.__translateY__=r,o(n,{[wi]:`${r}px`}))}});Y(this,b,kt).call(this);Y(this,tt,ii).call(this);t(this.transform,{scale:u,translateX:0,translateY:0});l.classList.add(di);this.mounted=!0;this.emit("ready",this)}},b=new WeakSet,kt=function(){const{wrapper:n,options:u,controller:{signal:t}}=this,{draggable:i,pinchable:r,wheelable:f}=u;if(this.states={},f){this.states.wheeling=!1;const i=n=>Y(this,k,dt).call(this,n);n.addEventListener(lr,i,{signal:t})}if(e&&(i||r)){i&&(this.states.dragging=!1);r&&(this.states.pinching=!1);const u=n=>Y(this,g,ni).call(this,n);n.addEventListener("touchstart",u,{signal:t})}if(!e&&i){this.states.dragging=!1;const i=n=>Y(this,d,gt).call(this,n);n.addEventListener("mousedown",i,{signal:t})}Y(this,nt,ti).call(this)},k=new WeakSet,dt=function(n){const{options:{zoomRatio:i,wheelReleaseOnMinMax:r,disableWheelingClass:u}}=this,t=(n.deltaY||n.detail)>0?-1:1;if(r){const i=this.isOnMinScale(),r=this.isOnMaxScale();i&&t===-1||r&&t===1||n.preventDefault()}else n.preventDefault();this.states.wheeling||st(n.target,u)||(this.states.wheeling=!0,setTimeout(()=>{this.states.wheeling=!1},30),this.zoom(t*i,f(n)),this.emit("wheel",this,this.transform.scale,n))},d=new WeakSet,gt=function(n){const{data:s,transform:r,options:{disableDraggingClass:h,smooth:u}}=this,{dragData:i,imageData:c}=s;if(i&&c){const l=n=>{if((!n||n.button===0)&&(n.preventDefault(),!st(n.target,h))){i.frame!==null&&cancelAnimationFrame(i.frame);const s=Date.now(),{clientX:c,clientY:l}=f(n);if(t(i,{prevX:c,prevY:l,lastTime:s,velocityX:0,velocityY:0,frame:null}),this.states.dragging=!0,u){const n=this.useAnimate(i);i.frame=requestAnimationFrame(n)}this.emit("dragStart",this,{x:r.translateX,y:r.translateY},n);document.addEventListener("mousemove",e);document.addEventListener("mouseup",o)}},e=n=>{if(!n.touches&&this.states.dragging){n.preventDefault();const o=Date.now(),{clientX:s,clientY:h}=f(n),c=s-i.prevX,l=h-i.prevY,e=o-i.lastTime,a=r.translateX+c,v=r.translateY+l;this.moveTo({x:a,y:v});u&&e>0&&(i.velocityX=.8*(c/e)+.2*i.velocityX,i.velocityY=.8*(l/e)+.2*i.velocityY);t(i,{prevX:s,prevY:h,lastTime:o});this.emit("drag",this,{x:a,y:v},n)}},o=n=>{n.touches||(this.states.dragging=!1,this.emit("dragEnd",this,{x:r.translateX,y:r.translateY},n),document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",o))};l(n)}},g=new WeakSet,ni=function(n){const{data:l,transform:e,options:{maxScale:a,minScale:v,draggable:y,pinchable:o,bounds:p,dragReleaseOnBounds:w,disableDraggingClass:b,smooth:s}}=this,{touchData:u,imageData:k}=l;if(u&&k){const d=n=>{if(n.touches){if(p&&w){const t=this.isOnBoundX(),i=this.isOnBoundY();n.touches.length===1&&(t||i)||n.preventDefault()}else n.preventDefault();if(!st(n.target,b)||!(n.touches.length<=1)){u.frame!==null&&cancelAnimationFrame(u.frame);const i=Date.now(),{top:l,left:a}=r(this.image),{width:v,height:k}=this.getImageDiff(),{clientX:d,clientY:g}=f(n);if(t(u,{hypot:hi(n),prevX:d,prevY:g,offsetX:0,offsetY:0,imageTop:l,imageLeft:a,widthDiff:v,heightDiff:k,lastTime:i,velocityX:0,velocityY:0,frame:null}),y){if(this.states.dragging=!0,s){const n=this.useAnimate(u);u.frame=requestAnimationFrame(n)}this.emit("dragStart",this,{x:e.translateX,y:e.translateY},n)}o&&n.touches.length===2&&(this.states.pinching=!0,this.emit("pinchStart",this,e.scale,n));document.addEventListener("touchmove",h);document.addEventListener("touchend",c)}}},h=n=>{if(n.touches){const w=Date.now(),{states:{dragging:b,pinching:h}}=this,{top:tt,left:it}=r(this.image),{width:k,height:d}=this.getImageDiff(),g=h&&n.touches.length!==2||!h&&n.touches.length===2,c=hi(n),nt=c?c/u.hypot:1,l=this.useFixedRatio(nt*e.scale),{clientX:y,clientY:p}=f(n),rt=y+u.offsetX,ut=p+u.offsetY;if(o&&n.touches.length===2&&(h||(this.states.pinching=!0,this.emit("pinchStart",this,e.scale,n)),this.zoomTo(l,!1)),b){g&&(u.velocityX=0,u.velocityY=0);const t=l!==a&&l!==v&&o&&n.touches.length===2?nt:1,r=i(rt-u.imageLeft-(k-u.widthDiff)-(u.prevX-u.imageLeft)*t+e.translateX),f=i(ut-u.imageTop-(d-u.heightDiff)-(u.prevY-u.imageTop)*t+e.translateY);if(this.moveTo({x:r,y:f}),s&&n.touches.length===1&&!g){const n=w-u.lastTime;if(n>0){const t=y-u.prevX,i=p-u.prevY;u.velocityX=.8*(t/n)+.2*u.velocityX;u.velocityY=.8*(i/n)+.2*u.velocityY}}}t(u,{hypot:c,prevX:y,prevY:p,imageTop:tt,imageLeft:it,widthDiff:k,heightDiff:d,lastTime:w});h&&n.touches.length===2&&this.emit("pinch",this,e.scale,n);b&&this.emit("drag",this,{x:e.translateX,y:e.translateY},n)}},c=n=>{if(n.touches){const{states:{dragging:i,pinching:r}}=this;if(r&&n.touches.length===1){this.states.pinching=!1;const{clientX:i,clientY:r}=f(n);t(u,{prevX:i,prevY:r,velocityX:0,velocityY:0,lastTime:Date.now()});this.emit("pinchEnd",this,e.scale,n)}if(i&&!n.touches.length&&(this.states.dragging=!1,this.emit("dragEnd",this,{x:e.translateX,y:e.translateY},n)),i&&n.touches.length===1){const{clientX:i,clientY:r}=f(n);t(u,{offsetX:u.prevX-i,offsetY:u.prevY-r})}n.touches.length||(document.removeEventListener("touchmove",h),document.removeEventListener("touchend",c))}};d(n)}},nt=new WeakSet,ti=function(){const{element:n,image:i,transform:u}=this;new ResizeObserver(()=>{const{offsetWidth:f,offsetHeight:e}=n,{width:o,height:s}=this.getContainerData();if(f!==o||e!==s){const h=u.translateX,c=u.translateY;if(h){const n=f/o*h;this.transform.translateX=n}if(c){const n=e/s*c;this.transform.translateY=n}const{offsetWidth:l,offsetHeight:a}=i,{width:v,height:y}=r(i);t(this.data.containerData,{width:f,height:e});t(this.data.imageData,{originWidth:l,originHeight:a,width:v,height:y});this.emit("resize",this)}}).observe(n)},tt=new WeakSet,ii=function(){const{slider:n,zoomer:t}=this.__modules__;n&&Y(this,it,ri).call(this);t&&Y(this,ut,fi).call(this)},it=new WeakSet,ri=function(){const{element:a,__modules__:{slider:n}}=this;if(n&&!n.mounted){const{options:{el:r,direction:e}}=n;if(r){const l=r===`.${c}`,i=l?h("div",c):ot(r);if(i){const u=h("div",tr),y=h("span",ir),f=h("span",rr,{...er,"aria-orientation":e});i.classList.add(`${c}-${e}`);v(n,"value",{get(){return n.__value__},set(t){n.__value__!==t&&(n.__value__=t,o(i,{[yr]:t.toString()}),s(f,{"aria-valuenow":t.toString()}))}});t(n,{value:this.getScaleRatio()*100,controller:new AbortController,sliding:!1,sliderEl:i,sliderTrack:u,sliderButton:f});Y(this,rt,ui).call(this);u.append(y,f);i.append(u);l&&a.append(i);n.mounted=!0}}}},rt=new WeakSet,ui=function(){const{options:{minScale:e,maxScale:v},__modules__:{slider:n}}=this;if(n){const{options:{direction:y},controller:o,sliderEl:s,sliderTrack:h}=n;if(s&&h){const t=y==="vertical",c=n=>{const o=r(h),s=o[t?"height":"width"],c=o[t?"bottom":"left"],l=f(n)[t?"clientY":"clientX"],a=i(u((l-c)*(t?-1:1)/s,0,1));return(v-e)*a+e},p=t=>{if(!(t instanceof MouseEvent)||t.button===0){n.sliding=!0;const i=c(t);this.zoomTo(i);this.emit("slideStart",this,this.getSliderValue(),t);document.addEventListener(ai,l);document.addEventListener(vi,a)}},l=t=>{if(n.sliding){const i=c(t);this.zoomTo(i);this.emit("slide",this,this.getSliderValue(),t)}},a=t=>{this.emit("slideEnd",this,this.getSliderValue(),t),n.sliding=!1,document.removeEventListener(ai,l),document.removeEventListener(vi,a)};s.addEventListener(cr,p,{signal:o==null?void 0:o.signal})}}},ut=new WeakSet,fi=function(){const{element:v,__modules__:{zoomer:i}}=this;if(i&&!i.mounted){const{options:{el:o,inEl:s,outEl:c,resetEl:l}}=i,y=[s,c,l],r=(n,t,i,r,u)=>{if(!n)return null;const f=n===`.${i}`;return i=y.includes(n)?`${i} ${ur}`:i,f?h(t,i,r,u):ot(n)},n=r(o,"div",a),u=r(s,"button",at,or,nu),f=r(c,"button",vt,sr,tu),e=r(l,"button",yt,hr,iu);t(i,{controller:new AbortController,zoomerEl:n,zoomerInEl:u,zoomerOutEl:f,zoomerResetEl:e});n&&(u&&n.append(u),f&&n.append(f),e&&n.append(e),o===`.${a}`&&v.append(n));Y(this,ft,ei).call(this);i.mounted=!0}},ft=new WeakSet,ei=function(){const{options:{zoomRatio:i},__modules__:{zoomer:r}}=this,t=this;if(r){const{controller:n,zoomerInEl:u,zoomerOutEl:f,zoomerResetEl:e}=r;u&&u.addEventListener("click",()=>{t.zoom(i)},{signal:n==null?void 0:n.signal});f&&f.addEventListener("click",()=>{t.zoom(-i)},{signal:n==null?void 0:n.signal});e&&e.addEventListener("click",()=>{t.reset()},{signal:n==null?void 0:n.signal})}},Object.assign(ki.prototype,ru),ki})