vistaview 0.3.13 → 0.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -285,30 +285,30 @@ vite v6.4.1 building for production...
285
285
  ✓ 10 modules transformed.
286
286
 
287
287
  [vite:dts] Start generate declaration files...
288
- dist/vistaview.css 10.11 kB │ gzip: 1.78 kB
288
+ dist/vistaview.css 10.34 kB │ gzip: 1.85 kB
289
289
  dist/svelte.js 0.54 kB │ gzip: 0.27 kB
290
290
  dist/solid.js 1.11 kB │ gzip: 0.52 kB
291
291
  dist/vue.js 1.29 kB │ gzip: 0.56 kB
292
292
  dist/react.js 1.54 kB │ gzip: 0.57 kB
293
- dist/vistaview.js 37.98 kB │ gzip: 9.60 kB
294
- [vite:dts] Declaration files built in 650ms.
293
+ dist/vistaview.js 38.18 kB │ gzip: 9.66 kB
294
+ [vite:dts] Declaration files built in 1277ms.
295
295
 
296
- dist/vistaview.css 10.11 kB │ gzip: 1.78 kB
296
+ dist/vistaview.css 10.34 kB │ gzip: 1.85 kB
297
297
  dist/svelte.cjs 0.48 kB │ gzip: 0.29 kB
298
298
  dist/solid.cjs 0.92 kB │ gzip: 0.50 kB
299
299
  dist/vue.cjs 1.00 kB │ gzip: 0.51 kB
300
300
  dist/react.cjs 1.25 kB │ gzip: 0.52 kB
301
- dist/vistaview.cjs 29.56 kB │ gzip: 8.30 kB
302
- ✓ built in 765ms
301
+ dist/vistaview.cjs 29.71 kB │ gzip: 8.34 kB
302
+ ✓ built in 1.41s
303
303
  vite v6.4.1 building for production...
304
304
  ✓ 6 modules transformed.
305
305
 
306
306
  [vite:dts] Start generate declaration files...
307
- dist/vistaview.css 10.11 kB │ gzip: 1.78 kB
308
- dist/vistaview.umd.js 29.71 kB │ gzip: 8.41 kB
309
- [vite:dts] Declaration files built in 645ms.
307
+ dist/vistaview.css 10.34 kB │ gzip: 1.85 kB
308
+ dist/vistaview.umd.js 29.87 kB │ gzip: 8.45 kB
309
+ [vite:dts] Declaration files built in 667ms.
310
310
 
311
- ✓ built in 731ms
311
+ ✓ built in 756ms
312
312
  ```
313
313
 
314
314
  ## License
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAuJ1D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAQ7D;AAMD,eAAO,MAAM,WAAW,GAAI,WAAW,SAAS,SAE/C,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,sBAsB1B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,2BA2D/B,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,sBAK1B,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/lib/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAuJ1D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAQ7D;AAMD,eAAO,MAAM,WAAW,GAAI,WAAW,SAAS,SAE/C,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,sBAsB1B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,2BAyD/B,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,sBAK1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vista-view.d.ts","sourceRoot":"","sources":["../../src/lib/vista-view.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAIV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAIjB,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,cAAc;;;;;;;;;cAepB,gBAAgB,CAAC,UAAU,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE;IAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAA;CAEjE,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,CAAC;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY;gBACM,MAAM,GAAG,IAAI;oBACT,SAAS,GAAG,IAAI;;;;;qBAUvB,MAAM,GAAG,IAAI;qBARb,MAAM;aAcR;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE;MAG3C;IAEF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IACnC,iBAAiB,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC7C,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAE,CAAM;IAC/D,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAQ;IACrD,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAQ;IAC7C,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAS;IAE3C,OAAO,CAAC,eAAe,CAIrB;IACF,OAAO,CAAC,qBAAqB,CAAwD;IAErF,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,QAAQ,CAAsC;IAEtD,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,iBAAiB,CAA4C;IAErE,OAAO,CAAC,0BAA0B,CAA0C;gBAEhE,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB;IA2C5F,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,gBAAgB,CAA8C;YACxD,IAAI;IAqIlB,OAAO,CAAC,SAAS;IAiGjB,MAAM,IAAI,IAAI;IAsCd,OAAO,IAAI,IAAI;IA2Df,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,2BAA2B;IAqCnC,OAAO,CAAC,UAAU;IA2ElB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,kBAAkB;IAqB1B,IAAI,CAAC,UAAU,GAAE,MAAU,GAAG,IAAI;IAwJ5B,KAAK,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DvC,OAAO,IAAI,IAAI;IAWf,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAWnE,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,eAAe,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"vista-view.d.ts","sourceRoot":"","sources":["../../src/lib/vista-view.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAIV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAIjB,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,cAAc;;;;;;;;;cAepB,gBAAgB,CAAC,UAAU,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE;IAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAA;CAEjE,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,CAAC;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY;gBACM,MAAM,GAAG,IAAI;oBACT,SAAS,GAAG,IAAI;;;;;qBAUvB,MAAM,GAAG,IAAI;qBARb,MAAM;aAcR;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE;MAG3C;IAEF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IACnC,iBAAiB,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC7C,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAE,CAAM;IAC/D,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAQ;IACrD,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAQ;IAC7C,QAAQ,EAAE,gBAAgB,GAAG,KAAK,CAAS;IAE3C,OAAO,CAAC,eAAe,CAIrB;IACF,OAAO,CAAC,qBAAqB,CAAwD;IAErF,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,QAAQ,CAAsC;IAEtD,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,iBAAiB,CAA4C;IAErE,OAAO,CAAC,0BAA0B,CAA0C;gBAEhE,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB;IA2C5F,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,gBAAgB,CAA8C;YACxD,IAAI;IAqIlB,OAAO,CAAC,SAAS;IAiGjB,MAAM,IAAI,IAAI;IAsCd,OAAO,IAAI,IAAI;IA2Df,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,2BAA2B;IAqCnC,OAAO,CAAC,UAAU;IA+ElB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,kBAAkB;IAqB1B,IAAI,CAAC,UAAU,GAAE,MAAU,GAAG,IAAI;IAwJ5B,KAAK,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DvC,OAAO,IAAI,IAAI;IAWf,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAWnE,IAAI,IAAI,IAAI;IAKZ,IAAI,IAAI,IAAI;IAKZ,eAAe,IAAI,MAAM;CAG1B"}
@@ -13,4 +13,4 @@
13
13
  <div class="vistaview-prev-btn vistaview-ui"><button>${G}</button></div>
14
14
  <div class="vistaview-next-btn vistaview-ui"><button>${J}</button></div>
15
15
  </div>
16
- </div>`)}let M=null,$=null,z=null,A=null;function Y(s){T(s);const t=s.imageContainerElm,i=s.elements.length;if(!t)return;let n=0,e=0,r=0,a=0,o=null,l=0,c=!1;M=d=>{d.preventDefault(),d.stopPropagation(),s.isZoomed===!1&&(c=!0,n=d.pageX,e=d.pageY,r=d.pageX,a=d.pageY,l=Date.now(),o=null,t.setPointerCapture(d.pointerId))},$=d=>{if(d.preventDefault(),d.stopPropagation(),s.isZoomed!==!1||!c)return;const h=d.pageX-n,u=d.pageY-e;r=d.pageX,a=d.pageY,Math.abs(h)>=Math.abs(u)&&(o===null||o===!0)?(t.style.setProperty("--vistaview-pointer-diff-x",`${h}px`),o=!0):Math.abs(u)>Math.abs(h)&&(o===null||o===!1)&&(t.style.setProperty("--vistaview-pointer-diff-y",`${u}px`),o=!1)},A=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1,o=null;const h=Array.from(t.querySelectorAll(".vistaview-item"));t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(u=>{u.style.transition="",u.style.translate=""})},z=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1;const h=Array.from(t.querySelectorAll(".vistaview-item")),u=r-n,p=a-e,f=Date.now()-l,v=u/f,E=p/f,g=s.options.touchSpeedThreshold||.5,x=h.find(y=>y.dataset.vistaviewPos==="0"),C=Number(x.dataset.vistaviewIndex);function w(){h[0].removeEventListener("transitionend",w),t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(y=>{y.style.transition="",y.style.translate=""})}function b(y="0%",I="0%"){h.forEach(S=>{S.style.transition=`translate ${s.options.animationDurationBase*.5}ms ease-out`,S.style.translate=`${y} ${I}`})}if(v<-g||v>g){let y=function(){h[0].removeEventListener("transitionend",y),setTimeout(()=>{const I=s.isReducedMotion,S=s.options.detectReducedMotion;s.isReducedMotion=!0,s.options.detectReducedMotion=!0,w(),s.view(v<-g?(C+1)%i:(C-1+i)%i,{next:v<-g,prev:v>g}),s.isReducedMotion=I,s.options.detectReducedMotion=S},100)};b(v<-g?"-100%":"100%"),h[0].addEventListener("transitionend",y)}else E<-g||E>g?(s.close(),b("0%","0%")):(h[0].addEventListener("transitionend",w),b("0%"),v===0&&E===0&&s.zoomIn())},t.addEventListener("pointermove",$),t.addEventListener("pointerup",z),t.addEventListener("pointerdown",M),t.addEventListener("pointercancel",A)}function T(s){const t=s.imageContainerElm;t&&($&&t.removeEventListener("pointermove",$),z&&t.removeEventListener("pointerup",z),M&&t.removeEventListener("pointerdown",M),A&&t.removeEventListener("pointercancel",A))}const F=s=>{Y(s)},_=({htmlElements:{to:s},index:{to:t},vistaView:i})=>{i.elements instanceof NodeList&&t!==null&&(i.elements.forEach(n=>n.style.opacity="1"),i.elements[t].style.opacity="0"),s&&s.forEach(n=>{const e=Number(n.dataset.vistaviewPos);e!==0?(n.style.zIndex="1",n.style.left=100*e+"%"):n.style.zIndex="2"})},B=async({htmlElements:{from:s},via:{next:t,prev:i},vistaView:n},e)=>{if(n.options.detectReducedMotion&&n.isReducedMotion)return;const r=s.filter(a=>a.dataset.vistaviewPos==="0"||(t?a.dataset.vistaviewPos==="1":a.dataset.vistaviewPos==="-1"));await new Promise((a,o)=>{let l=0,c=!1;if(e.aborted){o(new D("Transition aborted"));return}const d=h=>{if(c)return o(new D("Transition aborted"));if(e.aborted)return c||(c=!0),o(new D("Transition aborted"));h.currentTarget.removeEventListener("transitionend",d),l++,l>=r.length&&a(0)};r.forEach(h=>{h.style.transition=`translate ${n.options.animationDurationBase*.5}ms ease-out`,h.style.translate=t?"-100%":i?"100%":"0%",h.addEventListener("transitionend",d)})})},V=s=>{s.elements instanceof NodeList&&s.elements.forEach(t=>t.style.opacity="1"),T(s)};class D extends Error{constructor(t){super(t),this.name="VistaViewTransitionAbortedError"}}const Z={detectReducedMotion:!0,animationDurationBase:333,zoomStep:500,maxZoomLevel:2,touchSpeedThreshold:.5,preloads:1,keyboardListeners:!0,arrowOnSmallScreens:!1,controls:{topLeft:["indexDisplay"],topRight:["zoomIn","zoomOut",X(),"close"],bottomCenter:["description"]}},L={somethingOpened:null};class ot{constructor(t,i){m(this,"options");m(this,"elements");m(this,"isReducedMotion");m(this,"currentIndex",{_value:null,_vistaView:null,_via:{next:!1,prev:!1},set value(t){var n,e,r;const i=this._value;this._value=t;for(const a in(n=this._vistaView)==null?void 0:n.transitionAbortControllers)(e=this._vistaView)==null||e.transitionAbortControllers[a].abort();(r=this._vistaView)==null||r.swap(i,this._value)},get value(){return this._value},get via(){return this._via},set via(t){this._via=t}});m(this,"rootElm",null);m(this,"imageContainerElm",null);m(this,"customControls",{});m(this,"currentImages",null);m(this,"currentItems",null);m(this,"isZoomed",!1);m(this,"onClickElements",t=>{t.preventDefault();const i=t.currentTarget;i.dataset.vistaviewIndex&&this.open(parseInt(i.dataset.vistaviewIndex))});m(this,"defaultOnClickHandler",t=>t.preventDefault());m(this,"onResizeHandler",null);m(this,"onKeyDown",null);m(this,"userSetup",_);m(this,"userTransition",B);m(this,"userClose",V);m(this,"userInit",F);m(this,"onZoomedPointerDown",null);m(this,"onZoomedPointerMove",null);m(this,"onZoomedPointerUp",null);m(this,"transitionAbortControllers",{});m(this,"loadImageTimeout",null);this.elements=t,this.currentIndex._vistaView=this,this.options={...Z,...i||{},controls:{...Z.controls,...(i==null?void 0:i.controls)||{}}},this.options.initFunction&&(this.userInit=this.options.initFunction),this.options.transitionFunction&&(this.userTransition=this.options.transitionFunction),this.options.closeFunction&&(this.userClose=this.options.closeFunction),this.options.initFunction&&(this.userInit=this.options.initFunction),this.isReducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,this.elements instanceof NodeList&&this.elements.forEach((n,e)=>{n.dataset.vistaviewIndex=e.toString(),n.addEventListener("click",this.defaultOnClickHandler),n.addEventListener("pointerup",this.onClickElements)})}setFullSizeImageDim(t){var r,a;const i=t.getBoundingClientRect(),{width:n,height:e}=q(t);if(n===i.width&&e===i.height)(a=(r=t.parentElement)==null?void 0:r.querySelector(".vistaview-image-lowres"))==null||a.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled");else{let o=0;const l=()=>{var c,d;o++,!(o<3)&&(t.removeEventListener("transitionend",l),(d=(c=t.parentElement)==null?void 0:c.querySelector(".vistaview-image-lowres"))==null||d.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled"))};requestAnimationFrame(()=>{t.addEventListener("transitionend",l),t.style.width=`${n}px`,t.style.height=`${e}px`})}}async swap(t,i){var d,h;if(!L.somethingOpened||t===i||t===null)return;if(!this.imageContainerElm)throw new Error("VistaView: imageContainerElm is null in swap()");this.setIndexDisplay(),this.clearZoom();const{images:n,positions:e}=this.getCurrentIndexes(i),r=this.getImages(n),a=r.map((u,p)=>O(u,e[p])),o={htmlElements:{from:this.currentItems,to:a},images:{from:this.currentImages,to:r},index:{from:t,to:i},via:this.currentIndex.via,vistaView:this};this.userSetup(o);const l=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);this.transitionAbortControllers[l]=new AbortController;try{await this.userTransition(o,this.transitionAbortControllers[l].signal)}catch(u){u instanceof D||console.warn(u)}const c=a.find(u=>u.dataset.vistaviewPos==="0");if(c){const u=c.dataset.vistaviewIndex,p=this.currentItems.find(v=>v.dataset.vistaviewIndex===u),f=p==null?void 0:p.querySelector(".vistaview-image-highres");if(f){const v=c.querySelector(".vistaview-image-highres");if(v.setAttribute("class",f.getAttribute("class")||""),v.setAttribute("style",f.getAttribute("style")||""),v.classList.remove("vistaview-image--zooming"),f.classList.contains("vistaview-image-loaded")&&!f.classList.contains("vistaview-image-settled")){const E=f.getBoundingClientRect();v.style.width=`${E.width}px`,v.style.height=`${E.height}px`}}}delete this.transitionAbortControllers[l],this.imageContainerElm.innerHTML="",a.forEach(u=>{var E;const p=u.querySelector(".vistaview-image-highres"),f=!!p.classList.contains("vistaview-image-loaded"),v=!!p.classList.contains("vistaview-image-settled");this.imageContainerElm.appendChild(u),f&&!v?this.setFullSizeImageDim(p):f&&v&&((E=u==null?void 0:u.querySelector(".vistaview-image-lowres"))==null||E.classList.add("vistaview-image--hidden"))}),this.setInitialDimPos(),this.currentImages=r,this.currentItems=a,this.setCurrentDescription(),this.updateZoomButtonsVisibility(),(h=(d=this.options).onImageView)==null||h.call(d,o),this.loadImageTimeout&&clearTimeout(this.loadImageTimeout),this.loadImageTimeout=setTimeout(()=>{this.loadImages()},333)}setZoomed(t){var i,n,e,r,a,o;if(this.isZoomed!==t){if(this.isZoomed){let l=this.isZoomed;if(l.classList.remove("vistaview-image--zooming"),this.onZoomedPointerDown&&((i=l.parentElement)==null||i.removeEventListener("pointerdown",this.onZoomedPointerDown),this.onZoomedPointerDown=null),this.onZoomedPointerMove&&((n=l.parentElement)==null||n.removeEventListener("pointermove",this.onZoomedPointerMove),this.onZoomedPointerMove=null),this.onZoomedPointerUp&&((e=l.parentElement)==null||e.removeEventListener("pointerup",this.onZoomedPointerUp),this.onZoomedPointerUp=null),l==null||l.style.removeProperty("--pointer-diff-x"),l==null||l.style.removeProperty("--pointer-diff-y"),setTimeout(()=>{l==null||l.classList.remove("vistaview-image--zooming")},500),this.isZoomed=!1,!t)return}if(t){this.isZoomed=t,t.classList.add("vistaview-image--zooming"),t==null||t.style.setProperty("--pointer-diff-x","0px"),t==null||t.style.setProperty("--pointer-diff-y","0px");let l=!1,c=0,d=0,h=0,u=0,p=0,f=0;this.onZoomedPointerDown=v=>{v.preventDefault(),v.stopPropagation(),l=!0,c=v.pageX,d=v.pageY,t.setPointerCapture(v.pointerId)},this.onZoomedPointerMove=v=>{if(!l)return;v.preventDefault(),p=v.pageX-c,f=v.pageY-d;const E=parseInt((t==null?void 0:t.dataset.vistaviewCurrentWidth)||"0"),g=parseInt((t==null?void 0:t.dataset.vistaviewCurrentHeight)||"0"),{maxDiffX:x,minDiffY:C,maxDiffY:w,minDiffX:b}=k(E,g),y=Math.min(x,Math.max(b,h+p)),I=Math.min(w,Math.max(C,u+f));p=y-h,f=I-u,t==null||t.style.setProperty("--pointer-diff-x",`${y}px`),t==null||t.style.setProperty("--pointer-diff-y",`${I}px`)},this.onZoomedPointerUp=v=>{l=!1,t.releasePointerCapture(v.pointerId),h+=p,u+=f,p=0,f=0},(r=t==null?void 0:t.parentElement)==null||r.addEventListener("pointerdown",this.onZoomedPointerDown),(a=t==null?void 0:t.parentElement)==null||a.addEventListener("pointermove",this.onZoomedPointerMove),(o=t==null?void 0:t.parentElement)==null||o.addEventListener("pointerup",this.onZoomedPointerUp);return}}}zoomIn(){var r,a,o,l,c;const t=(r=this.rootElm)==null?void 0:r.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height;t.dataset.vistaviewInitialWidth||(t.dataset.vistaviewInitialWidth=i.toString()),t.dataset.vistaviewInitialHeight||(t.dataset.vistaviewInitialHeight=n.toString()),this.setZoomed(t);const e=(t.naturalWidth||0)*this.options.maxZoomLevel;if(i&&e&&i<e){const d=Math.min(i+this.options.zoomStep,e);t.style.width=`${d}px`;const h=d/i*n;t.style.height=`${h}px`,(o=(a=this.rootElm)==null?void 0:a.querySelector("button.vistaview-zoom-out-btn"))==null||o.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=d.toString(),t.dataset.vistaviewCurrentHeight=h.toString(),d===e&&((c=(l=this.rootElm)==null?void 0:l.querySelector("button.vistaview-zoom-in-btn"))==null||c.setAttribute("disabled","true"))}}zoomOut(){var a,o,l,c,d;const t=(a=this.rootElm)==null?void 0:a.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height,e=t.dataset.vistaviewInitialWidth?parseInt(t.dataset.vistaviewInitialWidth):0,r=h=>{h.target===t&&(t.classList.remove("vistaview-image--zooming-out"),t.removeEventListener("transitionend",r))};if(t.addEventListener("transitionend",r),t.classList.add("vistaview-image--zooming-out"),i&&e&&i>e){const h=Math.max(i-this.options.zoomStep,e);t.style.width=`${h}px`;const u=h/i*n;t.style.height=`${u}px`,(l=(o=this.rootElm)==null?void 0:o.querySelector("button.vistaview-zoom-in-btn"))==null||l.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=h.toString(),t.dataset.vistaviewCurrentHeight=u.toString();const{maxDiffX:p,minDiffY:f,maxDiffY:v,minDiffX:E}=k(h,u);let g=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-x").replace("px",""))||"0"),x=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-y").replace("px",""))||"0");g=Math.min(p,Math.max(E,g)),x=Math.min(v,Math.max(f,x)),t==null||t.style.setProperty("--pointer-diff-x",`${g}px`),t==null||t.style.setProperty("--pointer-diff-y",`${x}px`),h===e&&((d=(c=this.rootElm)==null?void 0:c.querySelector("button.vistaview-zoom-out-btn"))==null||d.setAttribute("disabled","true"),t.removeAttribute("data-vistaview-current-width"),t.removeAttribute("data-vistaview-current-height"),t.removeAttribute("data-vistaview-initial-width"),t.removeAttribute("data-vistaview-initial-height"),this.setZoomed(!1))}}clearZoom(){}getImages(t){return t.map((i,n)=>{const e=this.elements[i];if(e instanceof HTMLElement){const r=e.querySelector("img"),a=e.getAttribute("href")||"",o=e.getAttribute("src")||"",l=e.dataset.vistaviewSrc||a||o||(r==null?void 0:r.src)||"",c=e.dataset.vistaviewAlt||e.getAttribute("alt")||(r==null?void 0:r.alt)||"",d=e.dataset.vistaviewThumb||(r==null?void 0:r.src)||a||o||"";return{index:t[n],src:l,alt:c,thumb:d,imageElm:e instanceof HTMLImageElement?e:r,anchorElm:e instanceof HTMLAnchorElement?e:void 0}}else return{index:t[n],...e}})}setInitialDimPos(){var c,d;if(!this.rootElm)return;const t=(c=this.rootElm.querySelector('[data-vistaview-pos="0"]'))==null?void 0:c.dataset.vistaviewIndex,i=((d=this.currentImages)==null?void 0:d.find(h=>h.index===Number(t)))||null;if(!i)return;const n=i.imageElm?R(i.imageElm):void 0,e=i.anchorElm?R(i.anchorElm):void 0,r=(e==null?void 0:e.width)||(n==null?void 0:n.width)||0,a=(e==null?void 0:e.height)||(n==null?void 0:n.height)||0,o=((e==null?void 0:e.left)||(n==null?void 0:n.left)||0)+r/2,l=((e==null?void 0:e.top)||(n==null?void 0:n.top)||0)+a/2;this.rootElm.style.setProperty("--vistaview-container-initial-width",r+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-height",a+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-top",l+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-left",o+"px"),this.rootElm.style.setProperty("--vistaview-image-border-radius",H(e==null?void 0:e.borderRadius)||H(n==null?void 0:n.borderRadius)||"0px")}updateZoomButtonsVisibility(){var e;const t=(e=this.rootElm)==null?void 0:e.querySelector('[data-vistaview-pos="0"] img.vistaview-image-highres');if(!t)return;const i=this;function n(){var d,h;const r=(d=i.rootElm)==null?void 0:d.querySelector("button.vistaview-zoom-in-btn"),a=(h=i.rootElm)==null?void 0:h.querySelector("button.vistaview-zoom-out-btn"),o=parseInt(t.style.width)||t.width,l=t.naturalWidth*i.options.maxZoomLevel,c=o<l&&l>0;r&&(r.style.display=c?"":"none"),a&&(a.style.display=c?"":"none")}t.complete&&t.naturalWidth>0?n():t.addEventListener("load",n)}loadImages(){if(!this.rootElm)return;this.rootElm.querySelectorAll(".vistaview-image-highres:not(.vistaview-image-loaded)").forEach((i,n)=>{const e=i,a=this.currentImages[n].imageElm,o={w:0,h:0};if(a){const{width:c,height:d}=K(a);o.w=Math.min(a.width,c),o.h=Math.min(a.height,d)}const l=()=>{var d;const c=()=>{var h;o.w&&o.h&&(e.style.width=`${o.w}px`,e.style.height=`${o.h}px`,e.style.setProperty("--vistaview-fitted-width",`${o.w}px`),e.style.setProperty("--vistaview-fitted-height",`${o.h}px`)),e.classList.add("vistaview-image-loaded"),e.width=e.naturalWidth,e.height=e.naturalHeight,setTimeout(()=>{this.setFullSizeImageDim(e)},100),(h=i.parentElement)!=null&&h.matches('[data-vistaview-pos="0"]')&&this.updateZoomButtonsVisibility()};if((d=this.rootElm)!=null&&d.classList.contains("vistaview--opened"))c();else{const h=setInterval(()=>{var u;(u=this.rootElm)!=null&&u.classList.contains("vistaview--opened")&&(clearInterval(h),c())},50)}};e.complete&&e.naturalWidth>0?l():e.onload=l})}setIndexDisplay(){this.elements.length!==1&&(this.rootElm.querySelector(".vistaview-index-display").textContent=`${this.currentIndex.value+1} / ${this.elements.length}`)}setCurrentDescription(){this.rootElm.querySelector(".vistaview-description").textContent=(this.currentImages[1]||this.currentImages[0]).alt||""}getCurrentIndexes(t){const i=this.options.preloads,n=this.elements.length,e=n<1||!i?[t]:[...new Set([...Array.from({length:i},(a,o)=>((t-i+o)%n+n)%n),t,...Array.from({length:i},(a,o)=>(t+1+o)%n)])],r=n<1||!i?[0]:e.map((a,o)=>o-Math.floor(e.length/2));return{images:e,positions:r}}setKeyboardListeners(){this.onKeyDown=t=>{switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next();break;case"ArrowUp":t.preventDefault(),this.zoomIn();break;case"ArrowDown":t.preventDefault(),this.zoomOut();break;case"Escape":t.preventDefault(),this.close();break}},window.addEventListener("keydown",this.onKeyDown)}setResizeListeners(){this.onResizeHandler=()=>{var i;this.setInitialDimPos();const t=(i=this.rootElm)==null?void 0:i.querySelectorAll(".vistaview-image-highres.vistaview-image-loaded");t==null||t.forEach(n=>{const e=n,{width:r,height:a}=q(e);e.classList.contains("vistaview-image--zooming")?(e.dataset.vistaviewInitialWidth=r.toString(),e.dataset.vistaviewInitialHeight=a.toString()):(e.style.width=`${r}px`,e.style.height=`${a}px`)})},window.addEventListener("resize",this.onResizeHandler)}open(t=0){var o,l,c,d,h,u,p,f,v,E,g,x,C;if(L.somethingOpened){console.error("VistaView: another instance is already opened. Returning.");return}if(L.somethingOpened=this,this.currentIndex._value=t,document.body.prepend(st({controls:this.options.controls,isReducedMotion:this.isReducedMotion})),this.rootElm=document.querySelector("#vistaview-root"),this.imageContainerElm=((o=this.rootElm)==null?void 0:o.querySelector(".vistaview-image-container"))||null,!this.rootElm||!this.imageContainerElm)throw L.somethingOpened=null,new Error("Failed to create VistaView element");this.options.arrowOnSmallScreens||this.rootElm.classList.add("vistaview-no-arrows-sm");const{images:i,positions:n}=this.getCurrentIndexes(t);this.currentImages=this.getImages(i);const e=this.currentImages.map((w,b)=>O(w,n[b]));this.currentItems=e;const r={htmlElements:{from:null,to:this.currentItems},images:{from:null,to:this.currentImages},index:{from:null,to:t},via:this.currentIndex.via,vistaView:this};this.userSetup(r),this.imageContainerElm.innerHTML="",this.currentItems.forEach(w=>{this.imageContainerElm.appendChild(w)});let a=0;this.rootElm.addEventListener("animationend",w=>{var b;w.currentTarget===this.rootElm&&(a++,a>=2&&((b=this.rootElm)==null||b.classList.add("vistaview--opened")))}),(l=this.rootElm.querySelector(".vistaview-close-btn"))==null||l.addEventListener("click",()=>this.close()),(c=this.rootElm.querySelector(".vistaview-zoom-in-btn"))==null||c.addEventListener("click",()=>this.zoomIn()),(d=this.rootElm.querySelector(".vistaview-zoom-out-btn"))==null||d.addEventListener("click",()=>this.zoomOut()),(h=this.rootElm.querySelector(".vistaview-prev-btn>button"))==null||h.addEventListener("click",()=>this.prev()),(u=this.rootElm.querySelector(".vistaview-next-btn>button"))==null||u.addEventListener("click",()=>this.next()),[...this.options.controls.topLeft||[],...this.options.controls.topRight||[],...this.options.controls.topCenter||[],...this.options.controls.bottomCenter||[],...this.options.controls.bottomLeft||[],...this.options.controls.bottomRight||[]].forEach(w=>{typeof w!="string"&&(this.customControls[w.name]=w)}),this.rootElm.querySelectorAll("button[data-vistaview-custom-control]").forEach(w=>{w.addEventListener("click",b=>{const y=this.customControls[b.currentTarget.dataset.vistaviewCustomControl],I=this.currentImages.find(S=>S.index===this.currentIndex.value);y&&I&&(y.onClick.constructor.name==="AsyncFunction"?(w.classList.add("vistaview-button--loading"),y.onClick(I).finally(()=>{w.classList.remove("vistaview-button--loading")})):y.onClick(I))})}),this.options.animationDurationBase&&this.rootElm.style.setProperty("--vistaview-animation-duration",`${this.options.animationDurationBase}`),this.options.initialZIndex!==void 0&&this.rootElm.style.setProperty("--vistaview-initial-z-index",`${this.options.initialZIndex}`),this.setInitialDimPos(),this.setResizeListeners(),this.options.keyboardListeners&&this.setKeyboardListeners(),this.elements.length===1&&((p=this.rootElm.querySelector(".vistaview-prev-btn"))==null||p.classList.add("vistaview-ui--none"),(f=this.rootElm.querySelector(".vistaview-next-btn"))==null||f.classList.add("vistaview-ui--none"),(v=this.rootElm.querySelector(".vistaview-index-display"))==null||v.classList.add("vistaview-ui--none")),this.rootElm&&this.rootElm.classList.add("vistaview--initialized"),this.loadImages(),this.setCurrentDescription(),this.setIndexDisplay(),this.userInit(this),(g=(E=this.options).onOpen)==null||g.call(E,r),(C=(x=this.options).onImageView)==null||C.call(x,r)}async close(t=!0){var n,e,r;if(L.somethingOpened!==this)return;t&&((n=this.rootElm)==null||n.classList.add("vistaview--closing"),await new Promise(a=>{var l;let o;(l=this.rootElm)==null||l.addEventListener("transitionend",c=>{c.currentTarget===this.rootElm&&(o&&clearTimeout(o),o=setTimeout(()=>{a()},333))})}));const i={htmlElements:{from:this.currentItems,to:null},images:{from:this.currentImages,to:null},index:{from:this.currentIndex.value,to:null},via:{prev:!1,next:!1},vistaView:this};this.userClose(this),(r=(e=this.options).onClose)==null||r.call(e,i),document.body.removeChild(this.rootElm),this.currentIndex._value=null,this.currentIndex._via={next:!1,prev:!1},this.rootElm=null,this.imageContainerElm=null,this.currentImages=null,this.currentItems=null,this.onResizeHandler&&(window.removeEventListener("resize",this.onResizeHandler),this.onResizeHandler=null),this.onKeyDown&&(window.removeEventListener("keydown",this.onKeyDown),this.onKeyDown=null),(this.onZoomedPointerDown||this.onZoomedPointerMove||this.onZoomedPointerUp)&&(this.setZoomed(!1),this.onZoomedPointerDown=null,this.onZoomedPointerMove=null,this.onZoomedPointerUp=null);for(const a in this.transitionAbortControllers)this.transitionAbortControllers[a].abort();this.transitionAbortControllers={},L.somethingOpened=null}destroy(){this.close(!1),this.elements instanceof NodeList&&this.elements.forEach(t=>{t.dataset.vistaviewIndex&&delete t.dataset.vistaviewIndex,t.removeEventListener("click",this.defaultOnClickHandler),t.removeEventListener("pointerup",this.onClickElements)})}view(t,i){L.somethingOpened===this&&(t<0&&(t=this.elements.length-1),t>=this.elements.length&&(t=0),this.currentIndex.via=i||{next:!1,prev:!1},this.currentIndex.value=t)}next(){L.somethingOpened===this&&this.view(this.currentIndex.value+1,{next:!0,prev:!1})}prev(){L.somethingOpened===this&&this.view(this.currentIndex.value-1,{next:!1,prev:!0})}getCurrentIndex(){return L.somethingOpened===this?this.currentIndex.value:-1}}function rt(s){let t=null;if(typeof s=="string"?t=document.querySelectorAll(s):s instanceof NodeList&&(t=s),t)for(let i=0;i<t.length;i++){const n=t[i];if(!(n.dataset.vistaviewSrc||n.getAttribute("href")||n.getAttribute("src")||""))return`Element at index ${i} is missing 'src' / 'data-vistaview-src' / 'href' attribute.`}else{const i=s;for(let n=0;n<i.length;n++)if(!i[n].src)return`Element at index ${n} is missing 'src' attribute.`}return t||s}function at({elements:s,...t}){if(!s)throw new Error("No elements");let i=rt(s);if(typeof i=="string")return console.error(i),console.warn("VistaView: silently returning."),null;const n=new ot(i,t);return{open:(e=0)=>n.open(e),close:()=>n.close(),next:()=>n.next(),prev:()=>n.prev(),destroy:()=>n.destroy(),getCurrentIndex:()=>n.getCurrentIndex(),view:e=>{n.view(e)}}}exports.DefaultOptions=Z;exports.VistaViewTransitionAbortedError=D;exports.defaultClose=V;exports.defaultInit=F;exports.defaultSetup=_;exports.defaultTransition=B;exports.removeTouchActions=T;exports.setTouchActions=Y;exports.vistaView=at;exports.vistaViewDownload=X;
16
+ </div>`)}let M=null,$=null,z=null,A=null;function Y(s){T(s);const t=s.imageContainerElm,i=s.elements.length;if(!t)return;let n=0,e=0,r=0,a=0,o=null,l=0,c=!1;M=d=>{d.preventDefault(),d.stopPropagation(),s.isZoomed===!1&&(c=!0,n=d.pageX,e=d.pageY,r=d.pageX,a=d.pageY,l=Date.now(),o=null,t.setPointerCapture(d.pointerId))},$=d=>{if(d.preventDefault(),d.stopPropagation(),s.isZoomed!==!1||!c)return;const h=d.pageX-n,u=d.pageY-e;r=d.pageX,a=d.pageY,Math.abs(h)>=Math.abs(u)&&(o===null||o===!0)?(t.style.setProperty("--vistaview-pointer-diff-x",`${h}px`),o=!0):Math.abs(u)>Math.abs(h)&&(o===null||o===!1)&&(t.style.setProperty("--vistaview-pointer-diff-y",`${u}px`),o=!1)},A=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1,o=null;const h=Array.from(t.querySelectorAll(".vistaview-item"));t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(u=>{u.style.transition="",u.style.translate=""})},z=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1;const h=Array.from(t.querySelectorAll(".vistaview-item")),u=r-n,p=a-e,f=Date.now()-l,v=u/f,E=p/f,g=s.options.touchSpeedThreshold||.5,x=h.find(y=>y.dataset.vistaviewPos==="0"),C=Number(x.dataset.vistaviewIndex);function w(){h[0].removeEventListener("transitionend",w),t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(y=>{y.style.transition="",y.style.translate=""})}function b(y="0%",I="0%"){h.forEach(S=>{S.style.transition=`translate ${s.options.animationDurationBase*.5}ms ease-out`,S.style.translate=`${y} ${I}`})}if(v<-g||v>g){let y=function(){h[0].removeEventListener("transitionend",y),setTimeout(()=>{const I=s.isReducedMotion,S=s.options.detectReducedMotion;s.isReducedMotion=!0,s.options.detectReducedMotion=!0,w(),s.view(v<-g?(C+1)%i:(C-1+i)%i,{next:v<-g,prev:v>g}),s.isReducedMotion=I,s.options.detectReducedMotion=S},100)};b(v<-g?"-100%":"100%"),h[0].addEventListener("transitionend",y)}else E<-g||E>g?(s.close(),b("0%","0%")):(h[0].addEventListener("transitionend",w),b("0%"),v===0&&E===0&&s.zoomIn())},t.addEventListener("pointermove",$),t.addEventListener("pointerup",z),t.addEventListener("pointerdown",M),t.addEventListener("pointercancel",A)}function T(s){const t=s.imageContainerElm;t&&($&&t.removeEventListener("pointermove",$),z&&t.removeEventListener("pointerup",z),M&&t.removeEventListener("pointerdown",M),A&&t.removeEventListener("pointercancel",A))}const F=s=>{Y(s)},_=({htmlElements:{to:s},index:{to:t},vistaView:i})=>{i.elements instanceof NodeList&&t!==null&&(i.elements.forEach(n=>n.style.opacity="1"),i.elements[t].style.opacity="0"),s&&s.forEach(n=>{const e=Number(n.dataset.vistaviewPos);e!==0?(n.style.zIndex="1",n.style.left=100*e+"%"):n.style.zIndex="2"})},B=async({htmlElements:{from:s},via:{next:t,prev:i},vistaView:n},e)=>{if(n.options.detectReducedMotion&&n.isReducedMotion)return;const r=s.filter(a=>a.dataset.vistaviewPos==="0"||(t?a.dataset.vistaviewPos==="1":a.dataset.vistaviewPos==="-1"));await new Promise((a,o)=>{let l=0,c=!1;if(e.aborted){o(new D("Transition aborted"));return}const d=h=>{if(c)return o(new D("Transition aborted"));if(e.aborted)return c||(c=!0),o(new D("Transition aborted"));h.currentTarget.removeEventListener("transitionend",d),l++,l>=r.length&&a(0)};r.forEach(h=>{h.style.transition=`translate ${n.options.animationDurationBase*.5}ms ease-out`,h.style.translate=t?"-100%":i?"100%":"0%",h.addEventListener("transitionend",d)})})},V=s=>{s.elements instanceof NodeList&&s.elements.forEach(t=>t.style.opacity="1"),T(s)};class D extends Error{constructor(t){super(t),this.name="VistaViewTransitionAbortedError"}}const Z={detectReducedMotion:!0,animationDurationBase:333,zoomStep:500,maxZoomLevel:2,touchSpeedThreshold:.5,preloads:1,keyboardListeners:!0,arrowOnSmallScreens:!1,controls:{topLeft:["indexDisplay"],topRight:["zoomIn","zoomOut",X(),"close"],bottomCenter:["description"]}},L={somethingOpened:null};class ot{constructor(t,i){m(this,"options");m(this,"elements");m(this,"isReducedMotion");m(this,"currentIndex",{_value:null,_vistaView:null,_via:{next:!1,prev:!1},set value(t){var n,e,r;const i=this._value;this._value=t;for(const a in(n=this._vistaView)==null?void 0:n.transitionAbortControllers)(e=this._vistaView)==null||e.transitionAbortControllers[a].abort();(r=this._vistaView)==null||r.swap(i,this._value)},get value(){return this._value},get via(){return this._via},set via(t){this._via=t}});m(this,"rootElm",null);m(this,"imageContainerElm",null);m(this,"customControls",{});m(this,"currentImages",null);m(this,"currentItems",null);m(this,"isZoomed",!1);m(this,"onClickElements",t=>{t.preventDefault();const i=t.currentTarget;i.dataset.vistaviewIndex&&this.open(parseInt(i.dataset.vistaviewIndex))});m(this,"defaultOnClickHandler",t=>t.preventDefault());m(this,"onResizeHandler",null);m(this,"onKeyDown",null);m(this,"userSetup",_);m(this,"userTransition",B);m(this,"userClose",V);m(this,"userInit",F);m(this,"onZoomedPointerDown",null);m(this,"onZoomedPointerMove",null);m(this,"onZoomedPointerUp",null);m(this,"transitionAbortControllers",{});m(this,"loadImageTimeout",null);this.elements=t,this.currentIndex._vistaView=this,this.options={...Z,...i||{},controls:{...Z.controls,...(i==null?void 0:i.controls)||{}}},this.options.initFunction&&(this.userInit=this.options.initFunction),this.options.transitionFunction&&(this.userTransition=this.options.transitionFunction),this.options.closeFunction&&(this.userClose=this.options.closeFunction),this.options.initFunction&&(this.userInit=this.options.initFunction),this.isReducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,this.elements instanceof NodeList&&this.elements.forEach((n,e)=>{n.dataset.vistaviewIndex=e.toString(),n.addEventListener("click",this.defaultOnClickHandler),n.addEventListener("pointerup",this.onClickElements)})}setFullSizeImageDim(t){var r,a;const i=t.getBoundingClientRect(),{width:n,height:e}=q(t);if(n===i.width&&e===i.height)(a=(r=t.parentElement)==null?void 0:r.querySelector(".vistaview-image-lowres"))==null||a.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled");else{let o=0;const l=()=>{var c,d;o++,!(o<3)&&(t.removeEventListener("transitionend",l),(d=(c=t.parentElement)==null?void 0:c.querySelector(".vistaview-image-lowres"))==null||d.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled"))};requestAnimationFrame(()=>{t.addEventListener("transitionend",l),t.style.width=`${n}px`,t.style.height=`${e}px`})}}async swap(t,i){var d,h;if(!L.somethingOpened||t===i||t===null)return;if(!this.imageContainerElm)throw new Error("VistaView: imageContainerElm is null in swap()");this.setIndexDisplay(),this.clearZoom();const{images:n,positions:e}=this.getCurrentIndexes(i),r=this.getImages(n),a=r.map((u,p)=>O(u,e[p])),o={htmlElements:{from:this.currentItems,to:a},images:{from:this.currentImages,to:r},index:{from:t,to:i},via:this.currentIndex.via,vistaView:this};this.userSetup(o);const l=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);this.transitionAbortControllers[l]=new AbortController;try{await this.userTransition(o,this.transitionAbortControllers[l].signal)}catch(u){u instanceof D||console.warn(u)}const c=a.find(u=>u.dataset.vistaviewPos==="0");if(c){const u=c.dataset.vistaviewIndex,p=this.currentItems.find(v=>v.dataset.vistaviewIndex===u),f=p==null?void 0:p.querySelector(".vistaview-image-highres");if(f){const v=c.querySelector(".vistaview-image-highres");if(v.setAttribute("class",f.getAttribute("class")||""),v.setAttribute("style",f.getAttribute("style")||""),v.classList.remove("vistaview-image--zooming"),f.classList.contains("vistaview-image-loaded")&&!f.classList.contains("vistaview-image-settled")){const E=f.getBoundingClientRect();v.style.width=`${E.width}px`,v.style.height=`${E.height}px`}}}delete this.transitionAbortControllers[l],this.imageContainerElm.innerHTML="",a.forEach(u=>{var E;const p=u.querySelector(".vistaview-image-highres"),f=!!p.classList.contains("vistaview-image-loaded"),v=!!p.classList.contains("vistaview-image-settled");this.imageContainerElm.appendChild(u),f&&!v?this.setFullSizeImageDim(p):f&&v&&((E=u==null?void 0:u.querySelector(".vistaview-image-lowres"))==null||E.classList.add("vistaview-image--hidden"))}),this.setInitialDimPos(),this.currentImages=r,this.currentItems=a,this.setCurrentDescription(),this.updateZoomButtonsVisibility(),(h=(d=this.options).onImageView)==null||h.call(d,o),this.loadImageTimeout&&clearTimeout(this.loadImageTimeout),this.loadImageTimeout=setTimeout(()=>{this.loadImages()},333)}setZoomed(t){var i,n,e,r,a,o;if(this.isZoomed!==t){if(this.isZoomed){let l=this.isZoomed;if(l.classList.remove("vistaview-image--zooming"),this.onZoomedPointerDown&&((i=l.parentElement)==null||i.removeEventListener("pointerdown",this.onZoomedPointerDown),this.onZoomedPointerDown=null),this.onZoomedPointerMove&&((n=l.parentElement)==null||n.removeEventListener("pointermove",this.onZoomedPointerMove),this.onZoomedPointerMove=null),this.onZoomedPointerUp&&((e=l.parentElement)==null||e.removeEventListener("pointerup",this.onZoomedPointerUp),this.onZoomedPointerUp=null),l==null||l.style.removeProperty("--pointer-diff-x"),l==null||l.style.removeProperty("--pointer-diff-y"),setTimeout(()=>{l==null||l.classList.remove("vistaview-image--zooming")},500),this.isZoomed=!1,!t)return}if(t){this.isZoomed=t,t.classList.add("vistaview-image--zooming"),t==null||t.style.setProperty("--pointer-diff-x","0px"),t==null||t.style.setProperty("--pointer-diff-y","0px");let l=!1,c=0,d=0,h=0,u=0,p=0,f=0;this.onZoomedPointerDown=v=>{v.preventDefault(),v.stopPropagation(),l=!0,c=v.pageX,d=v.pageY,t.setPointerCapture(v.pointerId)},this.onZoomedPointerMove=v=>{if(!l)return;v.preventDefault(),p=v.pageX-c,f=v.pageY-d;const E=parseInt((t==null?void 0:t.dataset.vistaviewCurrentWidth)||"0"),g=parseInt((t==null?void 0:t.dataset.vistaviewCurrentHeight)||"0"),{maxDiffX:x,minDiffY:C,maxDiffY:w,minDiffX:b}=k(E,g),y=Math.min(x,Math.max(b,h+p)),I=Math.min(w,Math.max(C,u+f));p=y-h,f=I-u,t==null||t.style.setProperty("--pointer-diff-x",`${y}px`),t==null||t.style.setProperty("--pointer-diff-y",`${I}px`)},this.onZoomedPointerUp=v=>{l=!1,t.releasePointerCapture(v.pointerId),h+=p,u+=f,p=0,f=0},(r=t==null?void 0:t.parentElement)==null||r.addEventListener("pointerdown",this.onZoomedPointerDown),(a=t==null?void 0:t.parentElement)==null||a.addEventListener("pointermove",this.onZoomedPointerMove),(o=t==null?void 0:t.parentElement)==null||o.addEventListener("pointerup",this.onZoomedPointerUp);return}}}zoomIn(){var r,a,o,l,c;const t=(r=this.rootElm)==null?void 0:r.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height;t.dataset.vistaviewInitialWidth||(t.dataset.vistaviewInitialWidth=i.toString()),t.dataset.vistaviewInitialHeight||(t.dataset.vistaviewInitialHeight=n.toString()),this.setZoomed(t);const e=(t.naturalWidth||0)*this.options.maxZoomLevel;if(i&&e&&i<e){const d=Math.min(i+this.options.zoomStep,e);t.style.width=`${d}px`;const h=d/i*n;t.style.height=`${h}px`,(o=(a=this.rootElm)==null?void 0:a.querySelector("button.vistaview-zoom-out-btn"))==null||o.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=d.toString(),t.dataset.vistaviewCurrentHeight=h.toString(),d===e&&((c=(l=this.rootElm)==null?void 0:l.querySelector("button.vistaview-zoom-in-btn"))==null||c.setAttribute("disabled","true"))}}zoomOut(){var a,o,l,c,d;const t=(a=this.rootElm)==null?void 0:a.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height,e=t.dataset.vistaviewInitialWidth?parseInt(t.dataset.vistaviewInitialWidth):0,r=h=>{h.target===t&&(t.classList.remove("vistaview-image--zooming-out"),t.removeEventListener("transitionend",r))};if(t.addEventListener("transitionend",r),t.classList.add("vistaview-image--zooming-out"),i&&e&&i>e){const h=Math.max(i-this.options.zoomStep,e);t.style.width=`${h}px`;const u=h/i*n;t.style.height=`${u}px`,(l=(o=this.rootElm)==null?void 0:o.querySelector("button.vistaview-zoom-in-btn"))==null||l.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=h.toString(),t.dataset.vistaviewCurrentHeight=u.toString();const{maxDiffX:p,minDiffY:f,maxDiffY:v,minDiffX:E}=k(h,u);let g=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-x").replace("px",""))||"0"),x=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-y").replace("px",""))||"0");g=Math.min(p,Math.max(E,g)),x=Math.min(v,Math.max(f,x)),t==null||t.style.setProperty("--pointer-diff-x",`${g}px`),t==null||t.style.setProperty("--pointer-diff-y",`${x}px`),h===e&&((d=(c=this.rootElm)==null?void 0:c.querySelector("button.vistaview-zoom-out-btn"))==null||d.setAttribute("disabled","true"),t.removeAttribute("data-vistaview-current-width"),t.removeAttribute("data-vistaview-current-height"),t.removeAttribute("data-vistaview-initial-width"),t.removeAttribute("data-vistaview-initial-height"),this.setZoomed(!1))}}clearZoom(){}getImages(t){return t.map((i,n)=>{const e=this.elements[i];if(e instanceof HTMLElement){const r=e.querySelector("img"),a=e.getAttribute("href")||"",o=e.getAttribute("src")||"",l=e.dataset.vistaviewSrc||a||o||(r==null?void 0:r.src)||"",c=e.dataset.vistaviewAlt||e.getAttribute("alt")||(r==null?void 0:r.alt)||"",d=e.dataset.vistaviewThumb||(r==null?void 0:r.src)||a||o||"";return{index:t[n],src:l,alt:c,thumb:d,imageElm:e instanceof HTMLImageElement?e:r,anchorElm:e instanceof HTMLAnchorElement?e:void 0}}else return{index:t[n],...e}})}setInitialDimPos(){var c,d;if(!this.rootElm)return;const t=(c=this.rootElm.querySelector('[data-vistaview-pos="0"]'))==null?void 0:c.dataset.vistaviewIndex,i=((d=this.currentImages)==null?void 0:d.find(h=>h.index===Number(t)))||null;if(!i)return;const n=i.imageElm?R(i.imageElm):void 0,e=i.anchorElm?R(i.anchorElm):void 0,r=(e==null?void 0:e.width)||(n==null?void 0:n.width)||0,a=(e==null?void 0:e.height)||(n==null?void 0:n.height)||0,o=((e==null?void 0:e.left)||(n==null?void 0:n.left)||0)+r/2,l=((e==null?void 0:e.top)||(n==null?void 0:n.top)||0)+a/2;this.rootElm.style.setProperty("--vistaview-container-initial-width",r+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-height",a+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-top",l+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-left",o+"px"),this.rootElm.style.setProperty("--vistaview-image-border-radius",H(e==null?void 0:e.borderRadius)||H(n==null?void 0:n.borderRadius)||"0px")}updateZoomButtonsVisibility(){var e;const t=(e=this.rootElm)==null?void 0:e.querySelector('[data-vistaview-pos="0"] img.vistaview-image-highres');if(!t)return;const i=this;function n(){var d,h;const r=(d=i.rootElm)==null?void 0:d.querySelector("button.vistaview-zoom-in-btn"),a=(h=i.rootElm)==null?void 0:h.querySelector("button.vistaview-zoom-out-btn"),o=parseInt(t.style.width)||t.width,l=t.naturalWidth*i.options.maxZoomLevel,c=o<l&&l>0;r&&(r.style.display=c?"":"none"),a&&(a.style.display=c?"":"none")}t.complete&&t.naturalWidth>0?n():t.addEventListener("load",n)}loadImages(){if(!this.rootElm)return;this.rootElm.querySelectorAll(".vistaview-image-highres:not(.vistaview-image-loaded)").forEach((i,n)=>{const e=i,a=this.currentImages[n].imageElm,o={w:0,h:0};if(a){const{width:c,height:d}=K(a);o.w=Math.min(a.width,c),o.h=Math.min(a.height,d)}const l=()=>{var d;const c=()=>{var h;o.w&&o.h&&(e.style.width=`${o.w}px`,e.style.height=`${o.h}px`,e.style.setProperty("--vistaview-fitted-width",`${o.w}px`),e.style.setProperty("--vistaview-fitted-height",`${o.h}px`)),e.classList.add("vistaview-image-loaded"),e.width=e.naturalWidth,e.height=e.naturalHeight,setTimeout(()=>{this.setFullSizeImageDim(e)},100),(h=i.parentElement)!=null&&h.matches('[data-vistaview-pos="0"]')&&this.updateZoomButtonsVisibility()};if((d=this.rootElm)!=null&&d.classList.contains("vistaview--opened"))c();else{const h=setInterval(()=>{var u;(u=this.rootElm)!=null&&u.classList.contains("vistaview--opened")&&(clearInterval(h),c())},50)}};e.complete&&e.naturalWidth>0?l():(e.onload=l,e.onerror=()=>{var c;console.error("VistaView: failed to load image "+e.src),(c=e.parentElement)==null||c.classList.add("vistaview-image-load-failed")})})}setIndexDisplay(){this.elements.length!==1&&(this.rootElm.querySelector(".vistaview-index-display").textContent=`${this.currentIndex.value+1} / ${this.elements.length}`)}setCurrentDescription(){this.rootElm.querySelector(".vistaview-description").textContent=(this.currentImages[1]||this.currentImages[0]).alt||""}getCurrentIndexes(t){const i=this.options.preloads,n=this.elements.length,e=n<1||!i?[t]:[...new Set([...Array.from({length:i},(a,o)=>((t-i+o)%n+n)%n),t,...Array.from({length:i},(a,o)=>(t+1+o)%n)])],r=n<1||!i?[0]:e.map((a,o)=>o-Math.floor(e.length/2));return{images:e,positions:r}}setKeyboardListeners(){this.onKeyDown=t=>{switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next();break;case"ArrowUp":t.preventDefault(),this.zoomIn();break;case"ArrowDown":t.preventDefault(),this.zoomOut();break;case"Escape":t.preventDefault(),this.close();break}},window.addEventListener("keydown",this.onKeyDown)}setResizeListeners(){this.onResizeHandler=()=>{var i;this.setInitialDimPos();const t=(i=this.rootElm)==null?void 0:i.querySelectorAll(".vistaview-image-highres.vistaview-image-loaded");t==null||t.forEach(n=>{const e=n,{width:r,height:a}=q(e);e.classList.contains("vistaview-image--zooming")?(e.dataset.vistaviewInitialWidth=r.toString(),e.dataset.vistaviewInitialHeight=a.toString()):(e.style.width=`${r}px`,e.style.height=`${a}px`)})},window.addEventListener("resize",this.onResizeHandler)}open(t=0){var o,l,c,d,h,u,p,f,v,E,g,x,C;if(L.somethingOpened){console.error("VistaView: another instance is already opened. Returning.");return}if(L.somethingOpened=this,this.currentIndex._value=t,document.body.prepend(st({controls:this.options.controls,isReducedMotion:this.isReducedMotion})),this.rootElm=document.querySelector("#vistaview-root"),this.imageContainerElm=((o=this.rootElm)==null?void 0:o.querySelector(".vistaview-image-container"))||null,!this.rootElm||!this.imageContainerElm)throw L.somethingOpened=null,new Error("Failed to create VistaView element");this.options.arrowOnSmallScreens||this.rootElm.classList.add("vistaview-no-arrows-sm");const{images:i,positions:n}=this.getCurrentIndexes(t);this.currentImages=this.getImages(i);const e=this.currentImages.map((w,b)=>O(w,n[b]));this.currentItems=e;const r={htmlElements:{from:null,to:this.currentItems},images:{from:null,to:this.currentImages},index:{from:null,to:t},via:this.currentIndex.via,vistaView:this};this.userSetup(r),this.imageContainerElm.innerHTML="",this.currentItems.forEach(w=>{this.imageContainerElm.appendChild(w)});let a=0;this.rootElm.addEventListener("animationend",w=>{var b;w.currentTarget===this.rootElm&&(a++,a>=2&&((b=this.rootElm)==null||b.classList.add("vistaview--opened")))}),(l=this.rootElm.querySelector(".vistaview-close-btn"))==null||l.addEventListener("click",()=>this.close()),(c=this.rootElm.querySelector(".vistaview-zoom-in-btn"))==null||c.addEventListener("click",()=>this.zoomIn()),(d=this.rootElm.querySelector(".vistaview-zoom-out-btn"))==null||d.addEventListener("click",()=>this.zoomOut()),(h=this.rootElm.querySelector(".vistaview-prev-btn>button"))==null||h.addEventListener("click",()=>this.prev()),(u=this.rootElm.querySelector(".vistaview-next-btn>button"))==null||u.addEventListener("click",()=>this.next()),[...this.options.controls.topLeft||[],...this.options.controls.topRight||[],...this.options.controls.topCenter||[],...this.options.controls.bottomCenter||[],...this.options.controls.bottomLeft||[],...this.options.controls.bottomRight||[]].forEach(w=>{typeof w!="string"&&(this.customControls[w.name]=w)}),this.rootElm.querySelectorAll("button[data-vistaview-custom-control]").forEach(w=>{w.addEventListener("click",b=>{const y=this.customControls[b.currentTarget.dataset.vistaviewCustomControl],I=this.currentImages.find(S=>S.index===this.currentIndex.value);y&&I&&(y.onClick.constructor.name==="AsyncFunction"?(w.classList.add("vistaview-button--loading"),y.onClick(I).finally(()=>{w.classList.remove("vistaview-button--loading")})):y.onClick(I))})}),this.options.animationDurationBase&&this.rootElm.style.setProperty("--vistaview-animation-duration",`${this.options.animationDurationBase}`),this.options.initialZIndex!==void 0&&this.rootElm.style.setProperty("--vistaview-initial-z-index",`${this.options.initialZIndex}`),this.setInitialDimPos(),this.setResizeListeners(),this.options.keyboardListeners&&this.setKeyboardListeners(),this.elements.length===1&&((p=this.rootElm.querySelector(".vistaview-prev-btn"))==null||p.classList.add("vistaview-ui--none"),(f=this.rootElm.querySelector(".vistaview-next-btn"))==null||f.classList.add("vistaview-ui--none"),(v=this.rootElm.querySelector(".vistaview-index-display"))==null||v.classList.add("vistaview-ui--none")),this.rootElm&&this.rootElm.classList.add("vistaview--initialized"),this.loadImages(),this.setCurrentDescription(),this.setIndexDisplay(),this.userInit(this),(g=(E=this.options).onOpen)==null||g.call(E,r),(C=(x=this.options).onImageView)==null||C.call(x,r)}async close(t=!0){var n,e,r;if(L.somethingOpened!==this)return;t&&((n=this.rootElm)==null||n.classList.add("vistaview--closing"),await new Promise(a=>{var l;let o;(l=this.rootElm)==null||l.addEventListener("transitionend",c=>{c.currentTarget===this.rootElm&&(o&&clearTimeout(o),o=setTimeout(()=>{a()},333))})}));const i={htmlElements:{from:this.currentItems,to:null},images:{from:this.currentImages,to:null},index:{from:this.currentIndex.value,to:null},via:{prev:!1,next:!1},vistaView:this};this.userClose(this),(r=(e=this.options).onClose)==null||r.call(e,i),document.body.removeChild(this.rootElm),this.currentIndex._value=null,this.currentIndex._via={next:!1,prev:!1},this.rootElm=null,this.imageContainerElm=null,this.currentImages=null,this.currentItems=null,this.onResizeHandler&&(window.removeEventListener("resize",this.onResizeHandler),this.onResizeHandler=null),this.onKeyDown&&(window.removeEventListener("keydown",this.onKeyDown),this.onKeyDown=null),(this.onZoomedPointerDown||this.onZoomedPointerMove||this.onZoomedPointerUp)&&(this.setZoomed(!1),this.onZoomedPointerDown=null,this.onZoomedPointerMove=null,this.onZoomedPointerUp=null);for(const a in this.transitionAbortControllers)this.transitionAbortControllers[a].abort();this.transitionAbortControllers={},L.somethingOpened=null}destroy(){this.close(!1),this.elements instanceof NodeList&&this.elements.forEach(t=>{t.dataset.vistaviewIndex&&delete t.dataset.vistaviewIndex,t.removeEventListener("click",this.defaultOnClickHandler),t.removeEventListener("pointerup",this.onClickElements)})}view(t,i){L.somethingOpened===this&&(t<0&&(t=this.elements.length-1),t>=this.elements.length&&(t=0),this.currentIndex.via=i||{next:!1,prev:!1},this.currentIndex.value=t)}next(){L.somethingOpened===this&&this.view(this.currentIndex.value+1,{next:!0,prev:!1})}prev(){L.somethingOpened===this&&this.view(this.currentIndex.value-1,{next:!1,prev:!0})}getCurrentIndex(){return L.somethingOpened===this?this.currentIndex.value:-1}}function rt(s){let t=null;if(typeof s=="string"?t=document.querySelectorAll(s):s instanceof NodeList&&(t=s),t)for(let i=0;i<t.length;i++){const n=t[i];if(!(n.dataset.vistaviewSrc||n.getAttribute("href")||n.getAttribute("src")||""))return`Element at index ${i} is missing 'src' / 'data-vistaview-src' / 'href' attribute.`}else{const i=s;for(let n=0;n<i.length;n++)if(!i[n].src)return`Element at index ${n} is missing 'src' attribute.`}return t||s}function at({elements:s,...t}){if(!s)throw new Error("No elements");let i=rt(s);if(typeof i=="string")return console.error(i),console.warn("VistaView: silently returning."),null;const n=new ot(i,t);return{open:(e=0)=>n.open(e),close:()=>n.close(),next:()=>n.next(),prev:()=>n.prev(),destroy:()=>n.destroy(),getCurrentIndex:()=>n.getCurrentIndex(),view:e=>{n.view(e)}}}exports.DefaultOptions=Z;exports.VistaViewTransitionAbortedError=D;exports.defaultClose=V;exports.defaultInit=F;exports.defaultSetup=_;exports.defaultTransition=B;exports.removeTouchActions=T;exports.setTouchActions=Y;exports.vistaView=at;exports.vistaViewDownload=X;
@@ -1 +1 @@
1
- :root{--vistaview-bg-color: #000000;--vistaview-text-color: #ffffff;--vistaview-background-blur: 10px;--vistaview-background-opacity: .8;--vistaview-initial-z-index: 1;--vistaview-destination-z-index: 2147483647;--vistaview-animation-duration: 333;--vistaview-center-x: 50%;--vistaview-center-y: 50%;--vistaview-container-initial-width: 0;--vistaview-container-initial-height: 0;--vistaview-container-initial-top: 0;--vistaview-container-initial-left: 0;--vistaview-image-border-radius: 0px;--vistaview-current-index: 0;--vistaview-number-elements: 0}@keyframes vistaview-pos-in{0%{top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left)}to{top:var(--vistaview-center-y);left:var(--vistaview-center-x)}}@keyframes vistaview-pos-out{0%{top:var(--vistaview-center-y);left:var(--vistaview-center-x)}to{top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left)}}@keyframes vistaview-anim-in{0%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}50%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:0;z-index:var(--vistaview-initial-z-index)}to{z-index:var(--vistaview-destination-z-index);width:100%;height:100%;background:rgb(from var(--vistaview-bg-color) r g b / var(--vistaview-background-opacity));-webkit-backdrop-filter:blur(var(--vistaview-background-blur));backdrop-filter:blur(var(--vistaview-background-blur));border-radius:0}}@keyframes vistaview-anim-out{0%{z-index:var(--vistaview-destination-z-index);width:100%;height:100%;background:rgb(from var(--vistaview-bg-color) r g b / var(--vistaview-background-opacity));-webkit-backdrop-filter:blur(var(--vistaview-background-blur));backdrop-filter:blur(var(--vistaview-background-blur));border-radius:0}50%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}to{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}}@keyframes vistaview-ui-anim-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes vistaview-ui-anim-out{0%{opacity:1}50%{opacity:1}to{opacity:0}}@keyframes vistaview-pulse{0%{opacity:1;border-radius:3px;scale:1}50%{opacity:.7;border-radius:7px;scale:.99}to{opacity:1;border-radius:3px;scale:1}}@keyframes vistaview-simple-pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes vistaview-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.vistaview-root{position:fixed;display:none;isolation:isolate;overflow:hidden;translate:-50% -50%;width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left);border-radius:var(--vistaview-image-border-radius)}.vistaview-container{position:relative;width:100%;height:100%;overflow:hidden;box-sizing:border-box;margin:0;padding:0}.vistaview-image-container{--vistaview-pointer-diff-x: 0px;--vistaview-pointer-diff-y: 0px;position:relative;top:0;left:0;margin:0;padding:0;width:100%;height:100%;overflow:hidden;touch-action:none}.vistaview-item{position:absolute;width:100%;height:100%;top:0;left:0;margin:0;padding:0;translate:var(--vistaview-pointer-diff-x) var(--vistaview-pointer-diff-y)}.vistaview-item img.vistaview-image-lowres{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);animation:vistaview-pulse 1s ease-in-out infinite;background:linear-gradient(45deg,#1a1a1a,#333,#1a1a1a,#555);background-size:400% 400%;animation:vistaview-pulse 1s ease-in-out infinite,vistaview-gradient 3s ease-in-out infinite}.vistaview-item img.vistaview-image-lowres:has(+img.vistaview-image-loaded){animation:none}.vistaview-item img.vistaview-image-lowres.vistaview-image--hidden{opacity:0}.vistaview-item img.vistaview-image-highres{--pointer-diff-x: 0px;--pointer-diff-y: 0px;cursor:zoom-in;display:block;position:absolute;top:calc(50% + var(--pointer-diff-y));left:calc(50% + var(--pointer-diff-x));translate:-50% -50%;object-fit:cover;opacity:0;transition:width calc(var(--vistaview-animation-duration) * 1ms) ease calc(var(--vistaview-animation-duration) * .3ms),height calc(var(--vistaview-animation-duration) * 1ms) ease calc(var(--vistaview-animation-duration) * .3ms),opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0ms;max-width:100%;max-height:100%}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming{transition:width calc(var(--vistaview-animation-duration) * 1ms) ease 0s,height calc(var(--vistaview-animation-duration) * 1ms) ease 0s,opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0s;max-width:unset;max-height:unset;cursor:grab}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming:active{cursor:grabbing}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming-out{transition:width calc(var(--vistaview-animation-duration) * 1ms) ease 0s,height calc(var(--vistaview-animation-duration) * 1ms) ease 0s,opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0s,top .3s ease 0s,left .3s ease 0s}.vistaview-item img.vistaview-image-highres.vistaview-image-loaded{opacity:1}.vistaview-ui{opacity:0}.vistaview-ui button{background:none;color:inherit;border:none;font:inherit;cursor:pointer;outline:inherit;box-sizing:border-box;margin:0;padding:8px;border-radius:0;display:flex;align-items:center;justify-content:center;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color)}.vistaview-ui button:disabled{color:rgb(from var(--vistaview-text-color) r g b / .5);cursor:not-allowed}.vistaview-ui button:hover{background-color:hsl(from var(--vistaview-bg-color) h s calc(l + 20))}.vistaview-ui button:active{background-color:hsl(from var(--vistaview-bg-color) h s calc(l + 40))}.vistaview-ui button.vistaview-button--loading{animation:vistaview-simple-pulse .5s ease-in-out infinite}.vistaview-ui button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.vistaview-ui.vistaview-prev-btn{position:absolute;top:50%;left:0;translate:0 -50%;display:flex;align-items:center;justify-content:center;z-index:2}.vistaview-ui.vistaview-next-btn{position:absolute;top:50%;right:0;translate:0 -50%;display:flex;align-items:center;justify-content:center;z-index:2}.vistaview-ui.vistaview-top-bar,.vistaview-ui.vistaview-bottom-bar{position:absolute;top:0;right:0;width:100%;z-index:2;display:flex;align-items:center;justify-content:space-between}.vistaview-ui.vistaview-top-bar>div,.vistaview-ui.vistaview-bottom-bar>div{display:flex}.vistaview-ui.vistaview-top-bar .vistaview-index-display,.vistaview-ui.vistaview-bottom-bar .vistaview-index-display{font-size:16px;padding:8px;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color)}.vistaview-ui.vistaview-top-bar .vistaview-description,.vistaview-ui.vistaview-bottom-bar .vistaview-description{font-size:14px;padding:8px 15px;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vistaview-ui.vistaview-bottom-bar{bottom:0;top:unset}.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-next-btn{display:none}@media screen and (min-width:768px){.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-next-btn{display:flex}}.vistaview-root.vistaview--initialized{display:block;animation:vistaview-anim-in calc(var(--vistaview-animation-duration) * 1ms) ease-in forwards,vistaview-pos-in calc(var(--vistaview-animation-duration) * .6ms) ease-out forwards}.vistaview-root.vistaview--initialized .vistaview-ui{animation:vistaview-ui-anim-in calc(var(--vistaview-animation-duration) * 1ms) ease-out calc(var(--vistaview-animation-duration) * 1ms) forwards}.vistaview-root.vistaview--closing{animation:vistaview-pos-out calc(var(--vistaview-animation-duration) * .8ms) cubic-bezier(.7,-.4,.8,.6) forwards,vistaview-anim-out calc(var(--vistaview-animation-duration) * 1ms) ease-out forwards}.vistaview-root.vistaview--closing .vistaview-ui,.vistaview-root.vistaview--closing .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview--closing .vistaview-ui.vistaview-next-btn{display:none}.vistaview-root.vistaview--closing img.vistaview-image-lowres{border-radius:var(--vistaview-image-border-radius)}.vistaview-root.vistaview--closing img.vistaview-image-lowres.vistaview-image--hidden{opacity:1}.vistaview-root.vistaview--closing img.vistaview-image-highres{width:var(--vistaview-fitted-width)!important;height:var(--vistaview-fitted-height)!important;transition:width calc(var(--vistaview-animation-duration) * .5ms) ease 0ms,height calc(var(--vistaview-animation-duration) * .5ms) ease 0ms,opacity calc(var(--vistaview-animation-duration) * .5ms) ease calc(var(--vistaview-animation-duration) * .5ms)}.vistaview-root.vistaview--closing img.vistaview-image-highres.vistaview-image-loaded{opacity:0}.vistaview--none{display:none!important}.vistaview--reduced-motion,.vistaview--reduced-motion *{--vistaview-animation-duration: 0;animation-name:none!important;animation-duration:0ms!important;transition-duration:0ms!important}
1
+ :root{--vistaview-bg-color: #000000;--vistaview-text-color: #ffffff;--vistaview-background-blur: 10px;--vistaview-background-opacity: .8;--vistaview-initial-z-index: 1;--vistaview-destination-z-index: 2147483647;--vistaview-animation-duration: 333;--vistaview-center-x: 50%;--vistaview-center-y: 50%;--vistaview-container-initial-width: 0;--vistaview-container-initial-height: 0;--vistaview-container-initial-top: 0;--vistaview-container-initial-left: 0;--vistaview-image-border-radius: 0px;--vistaview-current-index: 0;--vistaview-number-elements: 0}@keyframes vistaview-pos-in{0%{top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left)}to{top:var(--vistaview-center-y);left:var(--vistaview-center-x)}}@keyframes vistaview-pos-out{0%{top:var(--vistaview-center-y);left:var(--vistaview-center-x)}to{top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left)}}@keyframes vistaview-anim-in{0%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}50%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:0;z-index:var(--vistaview-initial-z-index)}to{z-index:var(--vistaview-destination-z-index);width:100%;height:100%;background:rgb(from var(--vistaview-bg-color) r g b / var(--vistaview-background-opacity));-webkit-backdrop-filter:blur(var(--vistaview-background-blur));backdrop-filter:blur(var(--vistaview-background-blur));border-radius:0}}@keyframes vistaview-anim-out{0%{z-index:var(--vistaview-destination-z-index);width:100%;height:100%;background:rgb(from var(--vistaview-bg-color) r g b / var(--vistaview-background-opacity));-webkit-backdrop-filter:blur(var(--vistaview-background-blur));backdrop-filter:blur(var(--vistaview-background-blur));border-radius:0}50%{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}to{width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);background:rgb(from var(--vistaview-bg-color) r g b / 0);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);border-radius:var(--vistaview-image-border-radius);z-index:var(--vistaview-initial-z-index)}}@keyframes vistaview-ui-anim-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes vistaview-ui-anim-out{0%{opacity:1}50%{opacity:1}to{opacity:0}}@keyframes vistaview-pulse{0%{opacity:1;border-radius:3px;scale:1}50%{opacity:.7;border-radius:7px;scale:.99}to{opacity:1;border-radius:3px;scale:1}}@keyframes vistaview-simple-pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes vistaview-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.vistaview-root{position:fixed;display:none;isolation:isolate;overflow:hidden;translate:-50% -50%;width:var(--vistaview-container-initial-width);height:var(--vistaview-container-initial-height);top:var(--vistaview-container-initial-top);left:var(--vistaview-container-initial-left);border-radius:var(--vistaview-image-border-radius)}.vistaview-container{position:relative;width:100%;height:100%;overflow:hidden;box-sizing:border-box;margin:0;padding:0}.vistaview-image-container{--vistaview-pointer-diff-x: 0px;--vistaview-pointer-diff-y: 0px;position:relative;top:0;left:0;margin:0;padding:0;width:100%;height:100%;overflow:hidden;touch-action:none}.vistaview-item{position:absolute;width:100%;height:100%;top:0;left:0;margin:0;padding:0;translate:var(--vistaview-pointer-diff-x) var(--vistaview-pointer-diff-y)}.vistaview-item.vistaview-image-load-failed:after{content:"Failed to load image";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;background-color:red;padding:8px 12px;border-radius:4px;font-size:16px}.vistaview-item img.vistaview-image-lowres{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);animation:vistaview-pulse 1s ease-in-out infinite;background:linear-gradient(45deg,#1a1a1a,#333,#1a1a1a,#555);background-size:400% 400%;animation:vistaview-pulse 1s ease-in-out infinite,vistaview-gradient 3s ease-in-out infinite}.vistaview-item img.vistaview-image-lowres:has(+img.vistaview-image-loaded){animation:none}.vistaview-item img.vistaview-image-lowres.vistaview-image--hidden{opacity:0}.vistaview-item img.vistaview-image-highres{--pointer-diff-x: 0px;--pointer-diff-y: 0px;cursor:zoom-in;display:block;position:absolute;top:calc(50% + var(--pointer-diff-y));left:calc(50% + var(--pointer-diff-x));translate:-50% -50%;object-fit:cover;opacity:0;transition:width calc(var(--vistaview-animation-duration) * 1ms) ease calc(var(--vistaview-animation-duration) * .3ms),height calc(var(--vistaview-animation-duration) * 1ms) ease calc(var(--vistaview-animation-duration) * .3ms),opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0ms;max-width:100%;max-height:100%}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming{transition:width calc(var(--vistaview-animation-duration) * 1ms) ease 0s,height calc(var(--vistaview-animation-duration) * 1ms) ease 0s,opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0s;max-width:unset;max-height:unset;cursor:grab}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming:active{cursor:grabbing}.vistaview-item img.vistaview-image-highres.vistaview-image--zooming-out{transition:width calc(var(--vistaview-animation-duration) * 1ms) ease 0s,height calc(var(--vistaview-animation-duration) * 1ms) ease 0s,opacity calc(var(--vistaview-animation-duration) * 1ms) ease 0s,top .3s ease 0s,left .3s ease 0s}.vistaview-item img.vistaview-image-highres.vistaview-image-loaded{opacity:1}.vistaview-ui{opacity:0}.vistaview-ui button{background:none;color:inherit;border:none;font:inherit;cursor:pointer;outline:inherit;box-sizing:border-box;margin:0;padding:8px;border-radius:0;display:flex;align-items:center;justify-content:center;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color)}.vistaview-ui button:disabled{color:rgb(from var(--vistaview-text-color) r g b / .5);cursor:not-allowed}.vistaview-ui button:hover{background-color:hsl(from var(--vistaview-bg-color) h s calc(l + 20))}.vistaview-ui button:active{background-color:hsl(from var(--vistaview-bg-color) h s calc(l + 40))}.vistaview-ui button.vistaview-button--loading{animation:vistaview-simple-pulse .5s ease-in-out infinite}.vistaview-ui button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.vistaview-ui.vistaview-prev-btn{position:absolute;top:50%;left:0;translate:0 -50%;display:flex;align-items:center;justify-content:center;z-index:2}.vistaview-ui.vistaview-next-btn{position:absolute;top:50%;right:0;translate:0 -50%;display:flex;align-items:center;justify-content:center;z-index:2}.vistaview-ui.vistaview-top-bar,.vistaview-ui.vistaview-bottom-bar{position:absolute;top:0;right:0;width:100%;z-index:2;display:flex;align-items:center;justify-content:space-between}.vistaview-ui.vistaview-top-bar>div,.vistaview-ui.vistaview-bottom-bar>div{display:flex}.vistaview-ui.vistaview-top-bar .vistaview-index-display,.vistaview-ui.vistaview-bottom-bar .vistaview-index-display{font-size:16px;padding:8px;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color)}.vistaview-ui.vistaview-top-bar .vistaview-description,.vistaview-ui.vistaview-bottom-bar .vistaview-description{font-size:14px;padding:8px 15px;background-color:var(--vistaview-bg-color);color:var(--vistaview-text-color);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vistaview-ui.vistaview-bottom-bar{bottom:0;top:unset}.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-next-btn{display:none}@media screen and (min-width:768px){.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview-no-arrows-sm .vistaview-ui.vistaview-next-btn{display:flex}}.vistaview-root.vistaview--initialized{display:block;animation:vistaview-anim-in calc(var(--vistaview-animation-duration) * 1ms) ease-in forwards,vistaview-pos-in calc(var(--vistaview-animation-duration) * .6ms) ease-out forwards}.vistaview-root.vistaview--initialized .vistaview-ui{animation:vistaview-ui-anim-in calc(var(--vistaview-animation-duration) * 1ms) ease-out calc(var(--vistaview-animation-duration) * 1ms) forwards}.vistaview-root.vistaview--closing{animation:vistaview-pos-out calc(var(--vistaview-animation-duration) * .8ms) cubic-bezier(.7,-.4,.8,.6) forwards,vistaview-anim-out calc(var(--vistaview-animation-duration) * 1ms) ease-out forwards}.vistaview-root.vistaview--closing .vistaview-ui,.vistaview-root.vistaview--closing .vistaview-ui.vistaview-prev-btn,.vistaview-root.vistaview--closing .vistaview-ui.vistaview-next-btn{display:none}.vistaview-root.vistaview--closing img.vistaview-image-lowres{border-radius:var(--vistaview-image-border-radius)}.vistaview-root.vistaview--closing img.vistaview-image-lowres.vistaview-image--hidden{opacity:1}.vistaview-root.vistaview--closing img.vistaview-image-highres{width:var(--vistaview-fitted-width)!important;height:var(--vistaview-fitted-height)!important;transition:width calc(var(--vistaview-animation-duration) * .5ms) ease 0ms,height calc(var(--vistaview-animation-duration) * .5ms) ease 0ms,opacity calc(var(--vistaview-animation-duration) * .5ms) ease calc(var(--vistaview-animation-duration) * .5ms)}.vistaview-root.vistaview--closing img.vistaview-image-highres.vistaview-image-loaded{opacity:0}.vistaview--none{display:none!important}.vistaview--reduced-motion,.vistaview--reduced-motion *{--vistaview-animation-duration: 0;animation-name:none!important;animation-duration:0ms!important;transition-duration:0ms!important}
package/dist/vistaview.js CHANGED
@@ -57,8 +57,8 @@ function _(s) {
57
57
  case "cover":
58
58
  return o < l ? { width: n, height: n / o } : { width: e * o, height: e };
59
59
  case "scale-down": {
60
- const c = { width: r, height: a }, d = o > l ? { width: n, height: n / o } : { width: e * o, height: e };
61
- return d.width <= c.width && d.height <= c.height ? d : c;
60
+ const h = { width: r, height: a }, d = o > l ? { width: n, height: n / o } : { width: e * o, height: e };
61
+ return d.width <= h.width && d.height <= h.height ? d : h;
62
62
  }
63
63
  }
64
64
  return { width: n, height: e };
@@ -80,15 +80,15 @@ function R(s) {
80
80
  };
81
81
  }
82
82
  function H(s, t) {
83
- const i = window.innerHeight, n = window.innerWidth, e = s, r = t, a = Math.max(0, (e - n) / 2) + n / 2, o = Math.max(0, (r - i) / 2) + i / 2, l = -a, c = -o;
83
+ const i = window.innerHeight, n = window.innerWidth, e = s, r = t, a = Math.max(0, (e - n) / 2) + n / 2, o = Math.max(0, (r - i) / 2) + i / 2, l = -a, h = -o;
84
84
  return {
85
85
  maxDiffX: a,
86
- minDiffY: c,
86
+ minDiffY: h,
87
87
  maxDiffY: o,
88
88
  minDiffX: l
89
89
  };
90
90
  }
91
- const B = '<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>', N = '<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>', U = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', V = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', K = '<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>', j = '<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';
91
+ const B = '<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>', V = '<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>', N = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', U = '<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>', K = '<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>', j = '<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';
92
92
  function G() {
93
93
  return {
94
94
  name: "download",
@@ -104,9 +104,9 @@ function J(s) {
104
104
  if (typeof s == "string")
105
105
  switch (s) {
106
106
  case "zoomIn":
107
- return `<button class="vistaview-zoom-in-btn">${U}</button>`;
107
+ return `<button class="vistaview-zoom-in-btn">${N}</button>`;
108
108
  case "zoomOut":
109
- return `<button disabled class="vistaview-zoom-out-btn">${V}</button>`;
109
+ return `<button disabled class="vistaview-zoom-out-btn">${U}</button>`;
110
110
  case "close":
111
111
  return `<button class="vistaview-close-btn">${K}</button>`;
112
112
  case "indexDisplay":
@@ -119,10 +119,10 @@ function J(s) {
119
119
  return `<button data-vistaview-custom-control="${s.name}">${s.icon}</button>`;
120
120
  }
121
121
  function q(s, t) {
122
- var d, h;
123
- const i = s.imageElm ? getComputedStyle(s.imageElm) : null, n = (i == null ? void 0 : i.objectFit) || "", e = ((d = s.imageElm) == null ? void 0 : d.naturalWidth) || "", r = ((h = s.imageElm) == null ? void 0 : h.naturalHeight) || "", a = (i == null ? void 0 : i.width) || "", o = (i == null ? void 0 : i.height) || "", l = document.createElement("div");
122
+ var d, c;
123
+ const i = s.imageElm ? getComputedStyle(s.imageElm) : null, n = (i == null ? void 0 : i.objectFit) || "", e = ((d = s.imageElm) == null ? void 0 : d.naturalWidth) || "", r = ((c = s.imageElm) == null ? void 0 : c.naturalHeight) || "", a = (i == null ? void 0 : i.width) || "", o = (i == null ? void 0 : i.height) || "", l = document.createElement("div");
124
124
  l.className = "vistaview-item", l.dataset.vistaviewPos = `${t !== void 0 ? t : ""}`, l.dataset.vistaviewIndex = s.index.toString();
125
- const c = W(`<img class="vistaview-image-lowres"
125
+ const h = W(`<img class="vistaview-image-lowres"
126
126
  style="${n ? `object-fit:${n};` : ""}${a ? `width:${a};` : ""}${o ? `height:${o};` : ""}"
127
127
  src="${s.thumb || s.src}"
128
128
  alt="${s.alt || ""}"
@@ -130,7 +130,7 @@ function q(s, t) {
130
130
  ${r ? `height="${r}"` : ""}
131
131
  />
132
132
  <img class="vistaview-image-highres" src="${s.src}" alt="${s.alt || ""}" />`);
133
- return l.appendChild(c), l;
133
+ return l.appendChild(h), l;
134
134
  }
135
135
  function Q({
136
136
  controls: s,
@@ -144,7 +144,7 @@ function Q({
144
144
  <div class="vistaview-top-bar vistaview-ui"><div>${i(s == null ? void 0 : s.topLeft)}</div><div>${i(s == null ? void 0 : s.topCenter)}</div><div>${i(s == null ? void 0 : s.topRight)}</div></div>
145
145
  <div class="vistaview-bottom-bar vistaview-ui"><div>${i(s == null ? void 0 : s.bottomLeft)}</div><div>${i(s == null ? void 0 : s.bottomCenter)}</div><div>${i(s == null ? void 0 : s.bottomRight)}</div></div>
146
146
  <div class="vistaview-prev-btn vistaview-ui"><button>${B}</button></div>
147
- <div class="vistaview-next-btn vistaview-ui"><button>${N}</button></div>
147
+ <div class="vistaview-next-btn vistaview-ui"><button>${V}</button></div>
148
148
  </div>
149
149
  </div>`
150
150
  );
@@ -154,39 +154,39 @@ function tt(s) {
154
154
  O(s);
155
155
  const t = s.imageContainerElm, i = s.elements.length;
156
156
  if (!t) return;
157
- let n = 0, e = 0, r = 0, a = 0, o = null, l = 0, c = !1;
157
+ let n = 0, e = 0, r = 0, a = 0, o = null, l = 0, h = !1;
158
158
  $ = (d) => {
159
- d.preventDefault(), d.stopPropagation(), s.isZoomed === !1 && (c = !0, n = d.pageX, e = d.pageY, r = d.pageX, a = d.pageY, l = Date.now(), o = null, t.setPointerCapture(d.pointerId));
159
+ d.preventDefault(), d.stopPropagation(), s.isZoomed === !1 && (h = !0, n = d.pageX, e = d.pageY, r = d.pageX, a = d.pageY, l = Date.now(), o = null, t.setPointerCapture(d.pointerId));
160
160
  }, z = (d) => {
161
- if (d.preventDefault(), d.stopPropagation(), s.isZoomed !== !1 || !c) return;
162
- const h = d.pageX - n, u = d.pageY - e;
163
- r = d.pageX, a = d.pageY, Math.abs(h) >= Math.abs(u) && (o === null || o === !0) ? (t.style.setProperty("--vistaview-pointer-diff-x", `${h}px`), o = !0) : Math.abs(u) > Math.abs(h) && (o === null || o === !1) && (t.style.setProperty("--vistaview-pointer-diff-y", `${u}px`), o = !1);
161
+ if (d.preventDefault(), d.stopPropagation(), s.isZoomed !== !1 || !h) return;
162
+ const c = d.pageX - n, u = d.pageY - e;
163
+ r = d.pageX, a = d.pageY, Math.abs(c) >= Math.abs(u) && (o === null || o === !0) ? (t.style.setProperty("--vistaview-pointer-diff-x", `${c}px`), o = !0) : Math.abs(u) > Math.abs(c) && (o === null || o === !1) && (t.style.setProperty("--vistaview-pointer-diff-y", `${u}px`), o = !1);
164
164
  }, A = (d) => {
165
- if (d.preventDefault(), d.stopPropagation(), t.releasePointerCapture(d.pointerId), s.isZoomed !== !1 || !c) return;
166
- c = !1, o = null;
167
- const h = Array.from(t.querySelectorAll(".vistaview-item"));
168
- t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), h.forEach((u) => {
165
+ if (d.preventDefault(), d.stopPropagation(), t.releasePointerCapture(d.pointerId), s.isZoomed !== !1 || !h) return;
166
+ h = !1, o = null;
167
+ const c = Array.from(t.querySelectorAll(".vistaview-item"));
168
+ t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), c.forEach((u) => {
169
169
  u.style.transition = "", u.style.translate = "";
170
170
  });
171
171
  }, M = (d) => {
172
- if (d.preventDefault(), d.stopPropagation(), t.releasePointerCapture(d.pointerId), s.isZoomed !== !1 || !c) return;
173
- c = !1;
174
- const h = Array.from(t.querySelectorAll(".vistaview-item")), u = r - n, p = a - e, f = Date.now() - l, v = u / f, E = p / f, g = s.options.touchSpeedThreshold || 0.5, b = h.find(
172
+ if (d.preventDefault(), d.stopPropagation(), t.releasePointerCapture(d.pointerId), s.isZoomed !== !1 || !h) return;
173
+ h = !1;
174
+ const c = Array.from(t.querySelectorAll(".vistaview-item")), u = r - n, p = a - e, f = Date.now() - l, v = u / f, E = p / f, g = s.options.touchSpeedThreshold || 0.5, b = c.find(
175
175
  (y) => y.dataset.vistaviewPos === "0"
176
176
  ), C = Number(b.dataset.vistaviewIndex);
177
177
  function w() {
178
- h[0].removeEventListener("transitionend", w), t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), h.forEach((y) => {
178
+ c[0].removeEventListener("transitionend", w), t.style.removeProperty("--vistaview-pointer-diff-x"), t.style.removeProperty("--vistaview-pointer-diff-y"), c.forEach((y) => {
179
179
  y.style.transition = "", y.style.translate = "";
180
180
  });
181
181
  }
182
182
  function x(y = "0%", I = "0%") {
183
- h.forEach((D) => {
183
+ c.forEach((D) => {
184
184
  D.style.transition = `translate ${s.options.animationDurationBase * 0.5}ms ease-out`, D.style.translate = `${y} ${I}`;
185
185
  });
186
186
  }
187
187
  if (v < -g || v > g) {
188
188
  let y = function() {
189
- h[0].removeEventListener("transitionend", y), setTimeout(() => {
189
+ c[0].removeEventListener("transitionend", y), setTimeout(() => {
190
190
  const I = s.isReducedMotion, D = s.options.detectReducedMotion;
191
191
  s.isReducedMotion = !0, s.options.detectReducedMotion = !0, w(), s.view(
192
192
  v < -g ? (C + 1) % i : (C - 1 + i) % i,
@@ -197,8 +197,8 @@ function tt(s) {
197
197
  ), s.isReducedMotion = I, s.options.detectReducedMotion = D;
198
198
  }, 100);
199
199
  };
200
- x(v < -g ? "-100%" : "100%"), h[0].addEventListener("transitionend", y);
201
- } else E < -g || E > g ? (s.close(), x("0%", "0%")) : (h[0].addEventListener("transitionend", w), x("0%"), v === 0 && E === 0 && s.zoomIn());
200
+ x(v < -g ? "-100%" : "100%"), c[0].addEventListener("transitionend", y);
201
+ } else E < -g || E > g ? (s.close(), x("0%", "0%")) : (c[0].addEventListener("transitionend", w), x("0%"), v === 0 && E === 0 && s.zoomIn());
202
202
  }, t.addEventListener("pointermove", z), t.addEventListener("pointerup", M), t.addEventListener("pointerdown", $), t.addEventListener("pointercancel", A);
203
203
  }
204
204
  function O(s) {
@@ -226,19 +226,19 @@ const et = (s) => {
226
226
  return;
227
227
  const r = s.filter((a) => a.dataset.vistaviewPos === "0" || (t ? a.dataset.vistaviewPos === "1" : a.dataset.vistaviewPos === "-1"));
228
228
  await new Promise((a, o) => {
229
- let l = 0, c = !1;
229
+ let l = 0, h = !1;
230
230
  if (e.aborted) {
231
231
  o(new P("Transition aborted"));
232
232
  return;
233
233
  }
234
- const d = (h) => {
235
- if (c) return o(new P("Transition aborted"));
234
+ const d = (c) => {
235
+ if (h) return o(new P("Transition aborted"));
236
236
  if (e.aborted)
237
- return c || (c = !0), o(new P("Transition aborted"));
238
- h.currentTarget.removeEventListener("transitionend", d), l++, l >= r.length && a(0);
237
+ return h || (h = !0), o(new P("Transition aborted"));
238
+ c.currentTarget.removeEventListener("transitionend", d), l++, l >= r.length && a(0);
239
239
  };
240
- r.forEach((h) => {
241
- h.style.transition = `translate ${n.options.animationDurationBase * 0.5}ms ease-out`, h.style.translate = t ? "-100%" : i ? "100%" : "0%", h.addEventListener("transitionend", d);
240
+ r.forEach((c) => {
241
+ c.style.transition = `translate ${n.options.animationDurationBase * 0.5}ms ease-out`, c.style.translate = t ? "-100%" : i ? "100%" : "0%", c.addEventListener("transitionend", d);
242
242
  });
243
243
  });
244
244
  }, st = (s) => {
@@ -360,8 +360,8 @@ class ot {
360
360
  else {
361
361
  let o = 0;
362
362
  const l = () => {
363
- var c, d;
364
- o++, !(o < 3) && (t.removeEventListener("transitionend", l), (d = (c = t.parentElement) == null ? void 0 : c.querySelector(".vistaview-image-lowres")) == null || d.classList.add("vistaview-image--hidden"), t.classList.add("vistaview-image-settled"));
363
+ var h, d;
364
+ o++, !(o < 3) && (t.removeEventListener("transitionend", l), (d = (h = t.parentElement) == null ? void 0 : h.querySelector(".vistaview-image-lowres")) == null || d.classList.add("vistaview-image--hidden"), t.classList.add("vistaview-image-settled"));
365
365
  };
366
366
  requestAnimationFrame(() => {
367
367
  t.addEventListener("transitionend", l), t.style.width = `${n}px`, t.style.height = `${e}px`;
@@ -369,7 +369,7 @@ class ot {
369
369
  }
370
370
  }
371
371
  async swap(t, i) {
372
- var d, h;
372
+ var d, c;
373
373
  if (!L.somethingOpened || t === i || t === null) return;
374
374
  if (!this.imageContainerElm)
375
375
  throw new Error("VistaView: imageContainerElm is null in swap()");
@@ -389,11 +389,11 @@ class ot {
389
389
  } catch (u) {
390
390
  u instanceof P || console.warn(u);
391
391
  }
392
- const c = a.find((u) => u.dataset.vistaviewPos === "0");
393
- if (c) {
394
- const u = c.dataset.vistaviewIndex, p = this.currentItems.find((v) => v.dataset.vistaviewIndex === u), f = p == null ? void 0 : p.querySelector(".vistaview-image-highres");
392
+ const h = a.find((u) => u.dataset.vistaviewPos === "0");
393
+ if (h) {
394
+ const u = h.dataset.vistaviewIndex, p = this.currentItems.find((v) => v.dataset.vistaviewIndex === u), f = p == null ? void 0 : p.querySelector(".vistaview-image-highres");
395
395
  if (f) {
396
- const v = c.querySelector(
396
+ const v = h.querySelector(
397
397
  ".vistaview-image-highres"
398
398
  );
399
399
  if (v.setAttribute("class", f.getAttribute("class") || ""), v.setAttribute("style", f.getAttribute("style") || ""), v.classList.remove("vistaview-image--zooming"), f.classList.contains("vistaview-image-loaded") && !f.classList.contains("vistaview-image-settled")) {
@@ -406,7 +406,7 @@ class ot {
406
406
  var E;
407
407
  const p = u.querySelector(".vistaview-image-highres"), f = !!p.classList.contains("vistaview-image-loaded"), v = !!p.classList.contains("vistaview-image-settled");
408
408
  this.imageContainerElm.appendChild(u), f && !v ? this.setFullSizeImageDim(p) : f && v && ((E = u == null ? void 0 : u.querySelector(".vistaview-image-lowres")) == null || E.classList.add("vistaview-image--hidden"));
409
- }), this.setInitialDimPos(), this.currentImages = r, this.currentItems = a, this.setCurrentDescription(), this.updateZoomButtonsVisibility(), (h = (d = this.options).onImageView) == null || h.call(d, o), this.loadImageTimeout && clearTimeout(this.loadImageTimeout), this.loadImageTimeout = setTimeout(() => {
409
+ }), this.setInitialDimPos(), this.currentImages = r, this.currentItems = a, this.setCurrentDescription(), this.updateZoomButtonsVisibility(), (c = (d = this.options).onImageView) == null || c.call(d, o), this.loadImageTimeout && clearTimeout(this.loadImageTimeout), this.loadImageTimeout = setTimeout(() => {
410
410
  this.loadImages();
411
411
  }, 333);
412
412
  }
@@ -422,26 +422,26 @@ class ot {
422
422
  }
423
423
  if (t) {
424
424
  this.isZoomed = t, t.classList.add("vistaview-image--zooming"), t == null || t.style.setProperty("--pointer-diff-x", "0px"), t == null || t.style.setProperty("--pointer-diff-y", "0px");
425
- let l = !1, c = 0, d = 0, h = 0, u = 0, p = 0, f = 0;
425
+ let l = !1, h = 0, d = 0, c = 0, u = 0, p = 0, f = 0;
426
426
  this.onZoomedPointerDown = (v) => {
427
- v.preventDefault(), v.stopPropagation(), l = !0, c = v.pageX, d = v.pageY, t.setPointerCapture(v.pointerId);
427
+ v.preventDefault(), v.stopPropagation(), l = !0, h = v.pageX, d = v.pageY, t.setPointerCapture(v.pointerId);
428
428
  }, this.onZoomedPointerMove = (v) => {
429
429
  if (!l) return;
430
- v.preventDefault(), p = v.pageX - c, f = v.pageY - d;
430
+ v.preventDefault(), p = v.pageX - h, f = v.pageY - d;
431
431
  const E = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentWidth) || "0"), g = parseInt((t == null ? void 0 : t.dataset.vistaviewCurrentHeight) || "0"), { maxDiffX: b, minDiffY: C, maxDiffY: w, minDiffX: x } = H(
432
432
  E,
433
433
  g
434
- ), y = Math.min(b, Math.max(x, h + p)), I = Math.min(w, Math.max(C, u + f));
435
- p = y - h, f = I - u, t == null || t.style.setProperty("--pointer-diff-x", `${y}px`), t == null || t.style.setProperty("--pointer-diff-y", `${I}px`);
434
+ ), y = Math.min(b, Math.max(x, c + p)), I = Math.min(w, Math.max(C, u + f));
435
+ p = y - c, f = I - u, t == null || t.style.setProperty("--pointer-diff-x", `${y}px`), t == null || t.style.setProperty("--pointer-diff-y", `${I}px`);
436
436
  }, this.onZoomedPointerUp = (v) => {
437
- l = !1, t.releasePointerCapture(v.pointerId), h += p, u += f, p = 0, f = 0;
437
+ l = !1, t.releasePointerCapture(v.pointerId), c += p, u += f, p = 0, f = 0;
438
438
  }, (r = t == null ? void 0 : t.parentElement) == null || r.addEventListener("pointerdown", this.onZoomedPointerDown), (a = t == null ? void 0 : t.parentElement) == null || a.addEventListener("pointermove", this.onZoomedPointerMove), (o = t == null ? void 0 : t.parentElement) == null || o.addEventListener("pointerup", this.onZoomedPointerUp);
439
439
  return;
440
440
  }
441
441
  }
442
442
  }
443
443
  zoomIn() {
444
- var r, a, o, l, c;
444
+ var r, a, o, l, h;
445
445
  const t = (r = this.rootElm) == null ? void 0 : r.querySelector(
446
446
  '[data-vistaview-pos="0"] .vistaview-image-highres'
447
447
  ), i = t.width, n = t.height;
@@ -450,29 +450,29 @@ class ot {
450
450
  if (i && e && i < e) {
451
451
  const d = Math.min(i + this.options.zoomStep, e);
452
452
  t.style.width = `${d}px`;
453
- const h = d / i * n;
454
- t.style.height = `${h}px`, (o = (a = this.rootElm) == null ? void 0 : a.querySelector("button.vistaview-zoom-out-btn")) == null || o.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = d.toString(), t.dataset.vistaviewCurrentHeight = h.toString(), d === e && ((c = (l = this.rootElm) == null ? void 0 : l.querySelector("button.vistaview-zoom-in-btn")) == null || c.setAttribute("disabled", "true"));
453
+ const c = d / i * n;
454
+ t.style.height = `${c}px`, (o = (a = this.rootElm) == null ? void 0 : a.querySelector("button.vistaview-zoom-out-btn")) == null || o.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = d.toString(), t.dataset.vistaviewCurrentHeight = c.toString(), d === e && ((h = (l = this.rootElm) == null ? void 0 : l.querySelector("button.vistaview-zoom-in-btn")) == null || h.setAttribute("disabled", "true"));
455
455
  }
456
456
  }
457
457
  zoomOut() {
458
- var a, o, l, c, d;
458
+ var a, o, l, h, d;
459
459
  const t = (a = this.rootElm) == null ? void 0 : a.querySelector(
460
460
  '[data-vistaview-pos="0"] .vistaview-image-highres'
461
- ), i = t.width, n = t.height, e = t.dataset.vistaviewInitialWidth ? parseInt(t.dataset.vistaviewInitialWidth) : 0, r = (h) => {
462
- h.target === t && (t.classList.remove("vistaview-image--zooming-out"), t.removeEventListener("transitionend", r));
461
+ ), i = t.width, n = t.height, e = t.dataset.vistaviewInitialWidth ? parseInt(t.dataset.vistaviewInitialWidth) : 0, r = (c) => {
462
+ c.target === t && (t.classList.remove("vistaview-image--zooming-out"), t.removeEventListener("transitionend", r));
463
463
  };
464
464
  if (t.addEventListener("transitionend", r), t.classList.add("vistaview-image--zooming-out"), i && e && i > e) {
465
- const h = Math.max(i - this.options.zoomStep, e);
466
- t.style.width = `${h}px`;
467
- const u = h / i * n;
468
- t.style.height = `${u}px`, (l = (o = this.rootElm) == null ? void 0 : o.querySelector("button.vistaview-zoom-in-btn")) == null || l.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = h.toString(), t.dataset.vistaviewCurrentHeight = u.toString();
469
- const { maxDiffX: p, minDiffY: f, maxDiffY: v, minDiffX: E } = H(h, u);
465
+ const c = Math.max(i - this.options.zoomStep, e);
466
+ t.style.width = `${c}px`;
467
+ const u = c / i * n;
468
+ t.style.height = `${u}px`, (l = (o = this.rootElm) == null ? void 0 : o.querySelector("button.vistaview-zoom-in-btn")) == null || l.removeAttribute("disabled"), t.dataset.vistaviewCurrentWidth = c.toString(), t.dataset.vistaviewCurrentHeight = u.toString();
469
+ const { maxDiffX: p, minDiffY: f, maxDiffY: v, minDiffX: E } = H(c, u);
470
470
  let g = parseInt(
471
471
  (t == null ? void 0 : t.style.getPropertyValue("--pointer-diff-x").replace("px", "")) || "0"
472
472
  ), b = parseInt(
473
473
  (t == null ? void 0 : t.style.getPropertyValue("--pointer-diff-y").replace("px", "")) || "0"
474
474
  );
475
- g = Math.min(p, Math.max(E, g)), b = Math.min(v, Math.max(f, b)), t == null || t.style.setProperty("--pointer-diff-x", `${g}px`), t == null || t.style.setProperty("--pointer-diff-y", `${b}px`), h === e && ((d = (c = this.rootElm) == null ? void 0 : c.querySelector("button.vistaview-zoom-out-btn")) == null || d.setAttribute("disabled", "true"), t.removeAttribute("data-vistaview-current-width"), t.removeAttribute("data-vistaview-current-height"), t.removeAttribute("data-vistaview-initial-width"), t.removeAttribute("data-vistaview-initial-height"), this.setZoomed(!1));
475
+ g = Math.min(p, Math.max(E, g)), b = Math.min(v, Math.max(f, b)), t == null || t.style.setProperty("--pointer-diff-x", `${g}px`), t == null || t.style.setProperty("--pointer-diff-y", `${b}px`), c === e && ((d = (h = this.rootElm) == null ? void 0 : h.querySelector("button.vistaview-zoom-out-btn")) == null || d.setAttribute("disabled", "true"), t.removeAttribute("data-vistaview-current-width"), t.removeAttribute("data-vistaview-current-height"), t.removeAttribute("data-vistaview-initial-width"), t.removeAttribute("data-vistaview-initial-height"), this.setZoomed(!1));
476
476
  }
477
477
  }
478
478
  clearZoom() {
@@ -481,11 +481,11 @@ class ot {
481
481
  return t.map((i, n) => {
482
482
  const e = this.elements[i];
483
483
  if (e instanceof HTMLElement) {
484
- const r = e.querySelector("img"), a = e.getAttribute("href") || "", o = e.getAttribute("src") || "", l = e.dataset.vistaviewSrc || a || o || (r == null ? void 0 : r.src) || "", c = e.dataset.vistaviewAlt || e.getAttribute("alt") || (r == null ? void 0 : r.alt) || "", d = e.dataset.vistaviewThumb || (r == null ? void 0 : r.src) || a || o || "";
484
+ const r = e.querySelector("img"), a = e.getAttribute("href") || "", o = e.getAttribute("src") || "", l = e.dataset.vistaviewSrc || a || o || (r == null ? void 0 : r.src) || "", h = e.dataset.vistaviewAlt || e.getAttribute("alt") || (r == null ? void 0 : r.alt) || "", d = e.dataset.vistaviewThumb || (r == null ? void 0 : r.src) || a || o || "";
485
485
  return {
486
486
  index: t[n],
487
487
  src: l,
488
- alt: c,
488
+ alt: h,
489
489
  thumb: d,
490
490
  imageElm: e instanceof HTMLImageElement ? e : r,
491
491
  anchorElm: e instanceof HTMLAnchorElement ? e : void 0
@@ -495,9 +495,9 @@ class ot {
495
495
  });
496
496
  }
497
497
  setInitialDimPos() {
498
- var c, d;
498
+ var h, d;
499
499
  if (!this.rootElm) return;
500
- const t = (c = this.rootElm.querySelector('[data-vistaview-pos="0"]')) == null ? void 0 : c.dataset.vistaviewIndex, i = ((d = this.currentImages) == null ? void 0 : d.find((h) => h.index === Number(t))) || null;
500
+ const t = (h = this.rootElm.querySelector('[data-vistaview-pos="0"]')) == null ? void 0 : h.dataset.vistaviewIndex, i = ((d = this.currentImages) == null ? void 0 : d.find((c) => c.index === Number(t))) || null;
501
501
  if (!i) return;
502
502
  const n = i.imageElm ? Z(i.imageElm) : void 0, e = i.anchorElm ? Z(i.anchorElm) : void 0, r = (e == null ? void 0 : e.width) || (n == null ? void 0 : n.width) || 0, a = (e == null ? void 0 : e.height) || (n == null ? void 0 : n.height) || 0, o = ((e == null ? void 0 : e.left) || (n == null ? void 0 : n.left) || 0) + r / 2, l = ((e == null ? void 0 : e.top) || (n == null ? void 0 : n.top) || 0) + a / 2;
503
503
  this.rootElm.style.setProperty("--vistaview-container-initial-width", r + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-height", a + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-top", l + "px"), this.rootElm.style.setProperty("--vistaview-container-initial-left", o + "px"), this.rootElm.style.setProperty(
@@ -513,13 +513,13 @@ class ot {
513
513
  if (!t) return;
514
514
  const i = this;
515
515
  function n() {
516
- var d, h;
516
+ var d, c;
517
517
  const r = (d = i.rootElm) == null ? void 0 : d.querySelector(
518
518
  "button.vistaview-zoom-in-btn"
519
- ), a = (h = i.rootElm) == null ? void 0 : h.querySelector(
519
+ ), a = (c = i.rootElm) == null ? void 0 : c.querySelector(
520
520
  "button.vistaview-zoom-out-btn"
521
- ), o = parseInt(t.style.width) || t.width, l = t.naturalWidth * i.options.maxZoomLevel, c = o < l && l > 0;
522
- r && (r.style.display = c ? "" : "none"), a && (a.style.display = c ? "" : "none");
521
+ ), o = parseInt(t.style.width) || t.width, l = t.naturalWidth * i.options.maxZoomLevel, h = o < l && l > 0;
522
+ r && (r.style.display = h ? "" : "none"), a && (a.style.display = h ? "" : "none");
523
523
  }
524
524
  t.complete && t.naturalWidth > 0 ? n() : t.addEventListener("load", n);
525
525
  }
@@ -530,27 +530,30 @@ class ot {
530
530
  ).forEach((i, n) => {
531
531
  const e = i, a = this.currentImages[n].imageElm, o = { w: 0, h: 0 };
532
532
  if (a) {
533
- const { width: c, height: d } = _(a);
534
- o.w = Math.min(a.width, c), o.h = Math.min(a.height, d);
533
+ const { width: h, height: d } = _(a);
534
+ o.w = Math.min(a.width, h), o.h = Math.min(a.height, d);
535
535
  }
536
536
  const l = () => {
537
537
  var d;
538
- const c = () => {
539
- var h;
538
+ const h = () => {
539
+ var c;
540
540
  o.w && o.h && (e.style.width = `${o.w}px`, e.style.height = `${o.h}px`, e.style.setProperty("--vistaview-fitted-width", `${o.w}px`), e.style.setProperty("--vistaview-fitted-height", `${o.h}px`)), e.classList.add("vistaview-image-loaded"), e.width = e.naturalWidth, e.height = e.naturalHeight, setTimeout(() => {
541
541
  this.setFullSizeImageDim(e);
542
- }, 100), (h = i.parentElement) != null && h.matches('[data-vistaview-pos="0"]') && this.updateZoomButtonsVisibility();
542
+ }, 100), (c = i.parentElement) != null && c.matches('[data-vistaview-pos="0"]') && this.updateZoomButtonsVisibility();
543
543
  };
544
544
  if ((d = this.rootElm) != null && d.classList.contains("vistaview--opened"))
545
- c();
545
+ h();
546
546
  else {
547
- const h = setInterval(() => {
547
+ const c = setInterval(() => {
548
548
  var u;
549
- (u = this.rootElm) != null && u.classList.contains("vistaview--opened") && (clearInterval(h), c());
549
+ (u = this.rootElm) != null && u.classList.contains("vistaview--opened") && (clearInterval(c), h());
550
550
  }, 50);
551
551
  }
552
552
  };
553
- e.complete && e.naturalWidth > 0 ? l() : e.onload = l;
553
+ e.complete && e.naturalWidth > 0 ? l() : (e.onload = l, e.onerror = () => {
554
+ var h;
555
+ console.error("VistaView: failed to load image " + e.src), (h = e.parentElement) == null || h.classList.add("vistaview-image-load-failed");
556
+ });
554
557
  });
555
558
  }
556
559
  setIndexDisplay() {
@@ -610,7 +613,7 @@ class ot {
610
613
  }, window.addEventListener("resize", this.onResizeHandler);
611
614
  }
612
615
  open(t = 0) {
613
- var o, l, c, d, h, u, p, f, v, E, g, b, C;
616
+ var o, l, h, d, c, u, p, f, v, E, g, b, C;
614
617
  if (L.somethingOpened) {
615
618
  console.error("VistaView: another instance is already opened. Returning.");
616
619
  return;
@@ -641,7 +644,7 @@ class ot {
641
644
  this.rootElm.addEventListener("animationend", (w) => {
642
645
  var x;
643
646
  w.currentTarget === this.rootElm && (a++, a >= 2 && ((x = this.rootElm) == null || x.classList.add("vistaview--opened")));
644
- }), (l = this.rootElm.querySelector(".vistaview-close-btn")) == null || l.addEventListener("click", () => this.close()), (c = this.rootElm.querySelector(".vistaview-zoom-in-btn")) == null || c.addEventListener("click", () => this.zoomIn()), (d = this.rootElm.querySelector(".vistaview-zoom-out-btn")) == null || d.addEventListener("click", () => this.zoomOut()), (h = this.rootElm.querySelector(".vistaview-prev-btn>button")) == null || h.addEventListener("click", () => this.prev()), (u = this.rootElm.querySelector(".vistaview-next-btn>button")) == null || u.addEventListener("click", () => this.next()), [
647
+ }), (l = this.rootElm.querySelector(".vistaview-close-btn")) == null || l.addEventListener("click", () => this.close()), (h = this.rootElm.querySelector(".vistaview-zoom-in-btn")) == null || h.addEventListener("click", () => this.zoomIn()), (d = this.rootElm.querySelector(".vistaview-zoom-out-btn")) == null || d.addEventListener("click", () => this.zoomOut()), (c = this.rootElm.querySelector(".vistaview-prev-btn>button")) == null || c.addEventListener("click", () => this.prev()), (u = this.rootElm.querySelector(".vistaview-next-btn>button")) == null || u.addEventListener("click", () => this.next()), [
645
648
  ...this.options.controls.topLeft || [],
646
649
  ...this.options.controls.topRight || [],
647
650
  ...this.options.controls.topCenter || [],
@@ -673,8 +676,8 @@ class ot {
673
676
  t && ((n = this.rootElm) == null || n.classList.add("vistaview--closing"), await new Promise((a) => {
674
677
  var l;
675
678
  let o;
676
- (l = this.rootElm) == null || l.addEventListener("transitionend", (c) => {
677
- c.currentTarget === this.rootElm && (o && clearTimeout(o), o = setTimeout(() => {
679
+ (l = this.rootElm) == null || l.addEventListener("transitionend", (h) => {
680
+ h.currentTarget === this.rootElm && (o && clearTimeout(o), o = setTimeout(() => {
678
681
  a();
679
682
  }, 333));
680
683
  });
@@ -1,11 +1,11 @@
1
- (function(w,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(w=typeof globalThis<"u"?globalThis:w||self,x(w.VistaView={}))})(this,(function(w){"use strict";var at=Object.defineProperty;var lt=(w,x,D)=>x in w?at(w,x,{enumerable:!0,configurable:!0,writable:!0,value:D}):w[x]=D;var m=(w,x,D)=>lt(w,typeof x!="symbol"?x+"":x,D);function x(s){const t=getComputedStyle(s),i=s.getBoundingClientRect();return{objectFit:t.objectFit,borderRadius:t.borderRadius,objectPosition:t.objectPosition,overflow:t.overflow,top:i.top,left:i.left,width:i.width,height:i.height,naturalWidth:s.naturalWidth,naturalHeight:s.naturalHeight}}let D=null;function U(){return D||(window.trustedTypes||(window.trustedTypes={createPolicy:(s,t)=>t}),D=window.trustedTypes.createPolicy("vistaView-policy",{createHTML:s=>s,createScript:()=>{throw new Error("Not implemented")},createScriptURL:()=>{throw new Error("Not implemented")}}),D)}function q(s){const i=U().createHTML(s),n=document.createElement("template");n.innerHTML=i;const e=n.content;return n.remove(),e}function k(s){return s&&!/^0(px|%|r?em|vw|vh|vmin|vmax|cm|mm|in|pt|pc|ex|ch)?$/i.test(s.trim())&&s}function j(s){const i=window.getComputedStyle(s).objectFit||"",{width:n,height:e}=s.getBoundingClientRect(),r=s.naturalWidth,a=s.naturalHeight;if(!i)return{width:n,height:e};if(!r||!a)return{width:n,height:e};const o=r/a,l=n/e;switch(i){case"fill":return{width:n,height:e};case"none":return{width:r,height:a};case"contain":return o>l?{width:n,height:n/o}:{width:e*o,height:e};case"cover":return o<l?{width:n,height:n/o}:{width:e*o,height:e};case"scale-down":{const c={width:r,height:a},d=o>l?{width:n,height:n/o}:{width:e*o,height:e};return d.width<=c.width&&d.height<=c.height?d:c}}return{width:n,height:e}}function O(s){const t=window.innerWidth,i=window.innerHeight,n=s.naturalWidth,e=s.naturalHeight;if(!n||!e)throw console.error("Error",s),new Error("Image natural dimensions are zero");if(n<t&&e<i)return{width:n,height:e};const r=n/e,a=t/i;let o,l;return r>a?(o=t,l=t/r):(l=i,o=i*r),{width:o,height:l}}function W(s,t){const i=window.innerHeight,n=window.innerWidth,e=s,r=t,a=Math.max(0,(e-n)/2)+n/2,o=Math.max(0,(r-i)/2)+i/2,l=-a,c=-o;return{maxDiffX:a,minDiffY:c,maxDiffY:o,minDiffX:l}}const K='<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>',G='<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>',J='<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>',Q='<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>',tt='<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',et='<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';function X(){return{name:"download",icon:et,onClick:async s=>{var r;const t=await fetch(s.src),i=await t.blob(),n=t.url,e=document.createElement("a");e.href=URL.createObjectURL(i),e.download=((r=n.split("/").pop())==null?void 0:r.split("?")[0].split("#")[0])||"download",document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}function it(s){if(typeof s=="string")switch(s){case"zoomIn":return`<button class="vistaview-zoom-in-btn">${J}</button>`;case"zoomOut":return`<button disabled class="vistaview-zoom-out-btn">${Q}</button>`;case"close":return`<button class="vistaview-close-btn">${tt}</button>`;case"indexDisplay":return'<div class="vistaview-index-display"></div>';case"description":return'<div class="vistaview-description"></div>';default:return""}return`<button data-vistaview-custom-control="${s.name}">${s.icon}</button>`}function Y(s,t){var d,h;const i=s.imageElm?getComputedStyle(s.imageElm):null,n=(i==null?void 0:i.objectFit)||"",e=((d=s.imageElm)==null?void 0:d.naturalWidth)||"",r=((h=s.imageElm)==null?void 0:h.naturalHeight)||"",a=(i==null?void 0:i.width)||"",o=(i==null?void 0:i.height)||"",l=document.createElement("div");l.className="vistaview-item",l.dataset.vistaviewPos=`${t!==void 0?t:""}`,l.dataset.vistaviewIndex=s.index.toString();const c=q(`<img class="vistaview-image-lowres"
1
+ (function(w,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(w=typeof globalThis<"u"?globalThis:w||self,x(w.VistaView={}))})(this,(function(w){"use strict";var at=Object.defineProperty;var lt=(w,x,D)=>x in w?at(w,x,{enumerable:!0,configurable:!0,writable:!0,value:D}):w[x]=D;var m=(w,x,D)=>lt(w,typeof x!="symbol"?x+"":x,D);function x(s){const t=getComputedStyle(s),i=s.getBoundingClientRect();return{objectFit:t.objectFit,borderRadius:t.borderRadius,objectPosition:t.objectPosition,overflow:t.overflow,top:i.top,left:i.left,width:i.width,height:i.height,naturalWidth:s.naturalWidth,naturalHeight:s.naturalHeight}}let D=null;function U(){return D||(window.trustedTypes||(window.trustedTypes={createPolicy:(s,t)=>t}),D=window.trustedTypes.createPolicy("vistaView-policy",{createHTML:s=>s,createScript:()=>{throw new Error("Not implemented")},createScriptURL:()=>{throw new Error("Not implemented")}}),D)}function q(s){const i=U().createHTML(s),n=document.createElement("template");n.innerHTML=i;const e=n.content;return n.remove(),e}function k(s){return s&&!/^0(px|%|r?em|vw|vh|vmin|vmax|cm|mm|in|pt|pc|ex|ch)?$/i.test(s.trim())&&s}function j(s){const i=window.getComputedStyle(s).objectFit||"",{width:n,height:e}=s.getBoundingClientRect(),r=s.naturalWidth,a=s.naturalHeight;if(!i)return{width:n,height:e};if(!r||!a)return{width:n,height:e};const o=r/a,l=n/e;switch(i){case"fill":return{width:n,height:e};case"none":return{width:r,height:a};case"contain":return o>l?{width:n,height:n/o}:{width:e*o,height:e};case"cover":return o<l?{width:n,height:n/o}:{width:e*o,height:e};case"scale-down":{const h={width:r,height:a},d=o>l?{width:n,height:n/o}:{width:e*o,height:e};return d.width<=h.width&&d.height<=h.height?d:h}}return{width:n,height:e}}function O(s){const t=window.innerWidth,i=window.innerHeight,n=s.naturalWidth,e=s.naturalHeight;if(!n||!e)throw console.error("Error",s),new Error("Image natural dimensions are zero");if(n<t&&e<i)return{width:n,height:e};const r=n/e,a=t/i;let o,l;return r>a?(o=t,l=t/r):(l=i,o=i*r),{width:o,height:l}}function W(s,t){const i=window.innerHeight,n=window.innerWidth,e=s,r=t,a=Math.max(0,(e-n)/2)+n/2,o=Math.max(0,(r-i)/2)+i/2,l=-a,h=-o;return{maxDiffX:a,minDiffY:h,maxDiffY:o,minDiffX:l}}const K='<svg viewBox="0 0 24 24"><path d="m15 18-6-6 6-6"/></svg>',G='<svg viewBox="0 0 24 24"><path d="m9 18 6-6-6-6"/></svg>',J='<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg>',Q='<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg>',tt='<svg viewBox="0 0 24 24"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',et='<svg viewBox="0 0 24 24"><path d="M12 15V3"/><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="m7 10 5 5 5-5"/></svg>';function V(){return{name:"download",icon:et,onClick:async s=>{var r;const t=await fetch(s.src),i=await t.blob(),n=t.url,e=document.createElement("a");e.href=URL.createObjectURL(i),e.download=((r=n.split("/").pop())==null?void 0:r.split("?")[0].split("#")[0])||"download",document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}function it(s){if(typeof s=="string")switch(s){case"zoomIn":return`<button class="vistaview-zoom-in-btn">${J}</button>`;case"zoomOut":return`<button disabled class="vistaview-zoom-out-btn">${Q}</button>`;case"close":return`<button class="vistaview-close-btn">${tt}</button>`;case"indexDisplay":return'<div class="vistaview-index-display"></div>';case"description":return'<div class="vistaview-description"></div>';default:return""}return`<button data-vistaview-custom-control="${s.name}">${s.icon}</button>`}function X(s,t){var d,c;const i=s.imageElm?getComputedStyle(s.imageElm):null,n=(i==null?void 0:i.objectFit)||"",e=((d=s.imageElm)==null?void 0:d.naturalWidth)||"",r=((c=s.imageElm)==null?void 0:c.naturalHeight)||"",a=(i==null?void 0:i.width)||"",o=(i==null?void 0:i.height)||"",l=document.createElement("div");l.className="vistaview-item",l.dataset.vistaviewPos=`${t!==void 0?t:""}`,l.dataset.vistaviewIndex=s.index.toString();const h=q(`<img class="vistaview-image-lowres"
2
2
  style="${n?`object-fit:${n};`:""}${a?`width:${a};`:""}${o?`height:${o};`:""}"
3
3
  src="${s.thumb||s.src}"
4
4
  alt="${s.alt||""}"
5
5
  ${e?`width="${e}"`:""}
6
6
  ${r?`height="${r}"`:""}
7
7
  />
8
- <img class="vistaview-image-highres" src="${s.src}" alt="${s.alt||""}" />`);return l.appendChild(c),l}function nt({controls:s,isReducedMotion:t}){const i=e=>e?e.map(it).join(""):"";return q(`<div class="vistaview-root${t?" vistaview--reduced-motion":""}" id="vistaview-root">
8
+ <img class="vistaview-image-highres" src="${s.src}" alt="${s.alt||""}" />`);return l.appendChild(h),l}function nt({controls:s,isReducedMotion:t}){const i=e=>e?e.map(it).join(""):"";return q(`<div class="vistaview-root${t?" vistaview--reduced-motion":""}" id="vistaview-root">
9
9
  <div class="vistaview-container">
10
10
  <div class="vistaview-image-container"></div>
11
11
  <div class="vistaview-top-bar vistaview-ui"><div>${i(s==null?void 0:s.topLeft)}</div><div>${i(s==null?void 0:s.topCenter)}</div><div>${i(s==null?void 0:s.topRight)}</div></div>
@@ -13,4 +13,4 @@
13
13
  <div class="vistaview-prev-btn vistaview-ui"><button>${K}</button></div>
14
14
  <div class="vistaview-next-btn vistaview-ui"><button>${G}</button></div>
15
15
  </div>
16
- </div>`)}let z=null,A=null,T=null,Z=null;function F(s){R(s);const t=s.imageContainerElm,i=s.elements.length;if(!t)return;let n=0,e=0,r=0,a=0,o=null,l=0,c=!1;z=d=>{d.preventDefault(),d.stopPropagation(),s.isZoomed===!1&&(c=!0,n=d.pageX,e=d.pageY,r=d.pageX,a=d.pageY,l=Date.now(),o=null,t.setPointerCapture(d.pointerId))},A=d=>{if(d.preventDefault(),d.stopPropagation(),s.isZoomed!==!1||!c)return;const h=d.pageX-n,u=d.pageY-e;r=d.pageX,a=d.pageY,Math.abs(h)>=Math.abs(u)&&(o===null||o===!0)?(t.style.setProperty("--vistaview-pointer-diff-x",`${h}px`),o=!0):Math.abs(u)>Math.abs(h)&&(o===null||o===!1)&&(t.style.setProperty("--vistaview-pointer-diff-y",`${u}px`),o=!1)},Z=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1,o=null;const h=Array.from(t.querySelectorAll(".vistaview-item"));t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(u=>{u.style.transition="",u.style.translate=""})},T=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!c)return;c=!1;const h=Array.from(t.querySelectorAll(".vistaview-item")),u=r-n,p=a-e,f=Date.now()-l,v=u/f,b=p/f,y=s.options.touchSpeedThreshold||.5,C=h.find(E=>E.dataset.vistaviewPos==="0"),P=Number(C.dataset.vistaviewIndex);function g(){h[0].removeEventListener("transitionend",g),t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),h.forEach(E=>{E.style.transition="",E.style.translate=""})}function I(E="0%",S="0%"){h.forEach(M=>{M.style.transition=`translate ${s.options.animationDurationBase*.5}ms ease-out`,M.style.translate=`${E} ${S}`})}if(v<-y||v>y){let E=function(){h[0].removeEventListener("transitionend",E),setTimeout(()=>{const S=s.isReducedMotion,M=s.options.detectReducedMotion;s.isReducedMotion=!0,s.options.detectReducedMotion=!0,g(),s.view(v<-y?(P+1)%i:(P-1+i)%i,{next:v<-y,prev:v>y}),s.isReducedMotion=S,s.options.detectReducedMotion=M},100)};I(v<-y?"-100%":"100%"),h[0].addEventListener("transitionend",E)}else b<-y||b>y?(s.close(),I("0%","0%")):(h[0].addEventListener("transitionend",g),I("0%"),v===0&&b===0&&s.zoomIn())},t.addEventListener("pointermove",A),t.addEventListener("pointerup",T),t.addEventListener("pointerdown",z),t.addEventListener("pointercancel",Z)}function R(s){const t=s.imageContainerElm;t&&(A&&t.removeEventListener("pointermove",A),T&&t.removeEventListener("pointerup",T),z&&t.removeEventListener("pointerdown",z),Z&&t.removeEventListener("pointercancel",Z))}const _=s=>{F(s)},B=({htmlElements:{to:s},index:{to:t},vistaView:i})=>{i.elements instanceof NodeList&&t!==null&&(i.elements.forEach(n=>n.style.opacity="1"),i.elements[t].style.opacity="0"),s&&s.forEach(n=>{const e=Number(n.dataset.vistaviewPos);e!==0?(n.style.zIndex="1",n.style.left=100*e+"%"):n.style.zIndex="2"})},V=async({htmlElements:{from:s},via:{next:t,prev:i},vistaView:n},e)=>{if(n.options.detectReducedMotion&&n.isReducedMotion)return;const r=s.filter(a=>a.dataset.vistaviewPos==="0"||(t?a.dataset.vistaviewPos==="1":a.dataset.vistaviewPos==="-1"));await new Promise((a,o)=>{let l=0,c=!1;if(e.aborted){o(new $("Transition aborted"));return}const d=h=>{if(c)return o(new $("Transition aborted"));if(e.aborted)return c||(c=!0),o(new $("Transition aborted"));h.currentTarget.removeEventListener("transitionend",d),l++,l>=r.length&&a(0)};r.forEach(h=>{h.style.transition=`translate ${n.options.animationDurationBase*.5}ms ease-out`,h.style.translate=t?"-100%":i?"100%":"0%",h.addEventListener("transitionend",d)})})},N=s=>{s.elements instanceof NodeList&&s.elements.forEach(t=>t.style.opacity="1"),R(s)};class $ extends Error{constructor(t){super(t),this.name="VistaViewTransitionAbortedError"}}const H={detectReducedMotion:!0,animationDurationBase:333,zoomStep:500,maxZoomLevel:2,touchSpeedThreshold:.5,preloads:1,keyboardListeners:!0,arrowOnSmallScreens:!1,controls:{topLeft:["indexDisplay"],topRight:["zoomIn","zoomOut",X(),"close"],bottomCenter:["description"]}},L={somethingOpened:null};class st{constructor(t,i){m(this,"options");m(this,"elements");m(this,"isReducedMotion");m(this,"currentIndex",{_value:null,_vistaView:null,_via:{next:!1,prev:!1},set value(t){var n,e,r;const i=this._value;this._value=t;for(const a in(n=this._vistaView)==null?void 0:n.transitionAbortControllers)(e=this._vistaView)==null||e.transitionAbortControllers[a].abort();(r=this._vistaView)==null||r.swap(i,this._value)},get value(){return this._value},get via(){return this._via},set via(t){this._via=t}});m(this,"rootElm",null);m(this,"imageContainerElm",null);m(this,"customControls",{});m(this,"currentImages",null);m(this,"currentItems",null);m(this,"isZoomed",!1);m(this,"onClickElements",t=>{t.preventDefault();const i=t.currentTarget;i.dataset.vistaviewIndex&&this.open(parseInt(i.dataset.vistaviewIndex))});m(this,"defaultOnClickHandler",t=>t.preventDefault());m(this,"onResizeHandler",null);m(this,"onKeyDown",null);m(this,"userSetup",B);m(this,"userTransition",V);m(this,"userClose",N);m(this,"userInit",_);m(this,"onZoomedPointerDown",null);m(this,"onZoomedPointerMove",null);m(this,"onZoomedPointerUp",null);m(this,"transitionAbortControllers",{});m(this,"loadImageTimeout",null);this.elements=t,this.currentIndex._vistaView=this,this.options={...H,...i||{},controls:{...H.controls,...(i==null?void 0:i.controls)||{}}},this.options.initFunction&&(this.userInit=this.options.initFunction),this.options.transitionFunction&&(this.userTransition=this.options.transitionFunction),this.options.closeFunction&&(this.userClose=this.options.closeFunction),this.options.initFunction&&(this.userInit=this.options.initFunction),this.isReducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,this.elements instanceof NodeList&&this.elements.forEach((n,e)=>{n.dataset.vistaviewIndex=e.toString(),n.addEventListener("click",this.defaultOnClickHandler),n.addEventListener("pointerup",this.onClickElements)})}setFullSizeImageDim(t){var r,a;const i=t.getBoundingClientRect(),{width:n,height:e}=O(t);if(n===i.width&&e===i.height)(a=(r=t.parentElement)==null?void 0:r.querySelector(".vistaview-image-lowres"))==null||a.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled");else{let o=0;const l=()=>{var c,d;o++,!(o<3)&&(t.removeEventListener("transitionend",l),(d=(c=t.parentElement)==null?void 0:c.querySelector(".vistaview-image-lowres"))==null||d.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled"))};requestAnimationFrame(()=>{t.addEventListener("transitionend",l),t.style.width=`${n}px`,t.style.height=`${e}px`})}}async swap(t,i){var d,h;if(!L.somethingOpened||t===i||t===null)return;if(!this.imageContainerElm)throw new Error("VistaView: imageContainerElm is null in swap()");this.setIndexDisplay(),this.clearZoom();const{images:n,positions:e}=this.getCurrentIndexes(i),r=this.getImages(n),a=r.map((u,p)=>Y(u,e[p])),o={htmlElements:{from:this.currentItems,to:a},images:{from:this.currentImages,to:r},index:{from:t,to:i},via:this.currentIndex.via,vistaView:this};this.userSetup(o);const l=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);this.transitionAbortControllers[l]=new AbortController;try{await this.userTransition(o,this.transitionAbortControllers[l].signal)}catch(u){u instanceof $||console.warn(u)}const c=a.find(u=>u.dataset.vistaviewPos==="0");if(c){const u=c.dataset.vistaviewIndex,p=this.currentItems.find(v=>v.dataset.vistaviewIndex===u),f=p==null?void 0:p.querySelector(".vistaview-image-highres");if(f){const v=c.querySelector(".vistaview-image-highres");if(v.setAttribute("class",f.getAttribute("class")||""),v.setAttribute("style",f.getAttribute("style")||""),v.classList.remove("vistaview-image--zooming"),f.classList.contains("vistaview-image-loaded")&&!f.classList.contains("vistaview-image-settled")){const b=f.getBoundingClientRect();v.style.width=`${b.width}px`,v.style.height=`${b.height}px`}}}delete this.transitionAbortControllers[l],this.imageContainerElm.innerHTML="",a.forEach(u=>{var b;const p=u.querySelector(".vistaview-image-highres"),f=!!p.classList.contains("vistaview-image-loaded"),v=!!p.classList.contains("vistaview-image-settled");this.imageContainerElm.appendChild(u),f&&!v?this.setFullSizeImageDim(p):f&&v&&((b=u==null?void 0:u.querySelector(".vistaview-image-lowres"))==null||b.classList.add("vistaview-image--hidden"))}),this.setInitialDimPos(),this.currentImages=r,this.currentItems=a,this.setCurrentDescription(),this.updateZoomButtonsVisibility(),(h=(d=this.options).onImageView)==null||h.call(d,o),this.loadImageTimeout&&clearTimeout(this.loadImageTimeout),this.loadImageTimeout=setTimeout(()=>{this.loadImages()},333)}setZoomed(t){var i,n,e,r,a,o;if(this.isZoomed!==t){if(this.isZoomed){let l=this.isZoomed;if(l.classList.remove("vistaview-image--zooming"),this.onZoomedPointerDown&&((i=l.parentElement)==null||i.removeEventListener("pointerdown",this.onZoomedPointerDown),this.onZoomedPointerDown=null),this.onZoomedPointerMove&&((n=l.parentElement)==null||n.removeEventListener("pointermove",this.onZoomedPointerMove),this.onZoomedPointerMove=null),this.onZoomedPointerUp&&((e=l.parentElement)==null||e.removeEventListener("pointerup",this.onZoomedPointerUp),this.onZoomedPointerUp=null),l==null||l.style.removeProperty("--pointer-diff-x"),l==null||l.style.removeProperty("--pointer-diff-y"),setTimeout(()=>{l==null||l.classList.remove("vistaview-image--zooming")},500),this.isZoomed=!1,!t)return}if(t){this.isZoomed=t,t.classList.add("vistaview-image--zooming"),t==null||t.style.setProperty("--pointer-diff-x","0px"),t==null||t.style.setProperty("--pointer-diff-y","0px");let l=!1,c=0,d=0,h=0,u=0,p=0,f=0;this.onZoomedPointerDown=v=>{v.preventDefault(),v.stopPropagation(),l=!0,c=v.pageX,d=v.pageY,t.setPointerCapture(v.pointerId)},this.onZoomedPointerMove=v=>{if(!l)return;v.preventDefault(),p=v.pageX-c,f=v.pageY-d;const b=parseInt((t==null?void 0:t.dataset.vistaviewCurrentWidth)||"0"),y=parseInt((t==null?void 0:t.dataset.vistaviewCurrentHeight)||"0"),{maxDiffX:C,minDiffY:P,maxDiffY:g,minDiffX:I}=W(b,y),E=Math.min(C,Math.max(I,h+p)),S=Math.min(g,Math.max(P,u+f));p=E-h,f=S-u,t==null||t.style.setProperty("--pointer-diff-x",`${E}px`),t==null||t.style.setProperty("--pointer-diff-y",`${S}px`)},this.onZoomedPointerUp=v=>{l=!1,t.releasePointerCapture(v.pointerId),h+=p,u+=f,p=0,f=0},(r=t==null?void 0:t.parentElement)==null||r.addEventListener("pointerdown",this.onZoomedPointerDown),(a=t==null?void 0:t.parentElement)==null||a.addEventListener("pointermove",this.onZoomedPointerMove),(o=t==null?void 0:t.parentElement)==null||o.addEventListener("pointerup",this.onZoomedPointerUp);return}}}zoomIn(){var r,a,o,l,c;const t=(r=this.rootElm)==null?void 0:r.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height;t.dataset.vistaviewInitialWidth||(t.dataset.vistaviewInitialWidth=i.toString()),t.dataset.vistaviewInitialHeight||(t.dataset.vistaviewInitialHeight=n.toString()),this.setZoomed(t);const e=(t.naturalWidth||0)*this.options.maxZoomLevel;if(i&&e&&i<e){const d=Math.min(i+this.options.zoomStep,e);t.style.width=`${d}px`;const h=d/i*n;t.style.height=`${h}px`,(o=(a=this.rootElm)==null?void 0:a.querySelector("button.vistaview-zoom-out-btn"))==null||o.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=d.toString(),t.dataset.vistaviewCurrentHeight=h.toString(),d===e&&((c=(l=this.rootElm)==null?void 0:l.querySelector("button.vistaview-zoom-in-btn"))==null||c.setAttribute("disabled","true"))}}zoomOut(){var a,o,l,c,d;const t=(a=this.rootElm)==null?void 0:a.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height,e=t.dataset.vistaviewInitialWidth?parseInt(t.dataset.vistaviewInitialWidth):0,r=h=>{h.target===t&&(t.classList.remove("vistaview-image--zooming-out"),t.removeEventListener("transitionend",r))};if(t.addEventListener("transitionend",r),t.classList.add("vistaview-image--zooming-out"),i&&e&&i>e){const h=Math.max(i-this.options.zoomStep,e);t.style.width=`${h}px`;const u=h/i*n;t.style.height=`${u}px`,(l=(o=this.rootElm)==null?void 0:o.querySelector("button.vistaview-zoom-in-btn"))==null||l.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=h.toString(),t.dataset.vistaviewCurrentHeight=u.toString();const{maxDiffX:p,minDiffY:f,maxDiffY:v,minDiffX:b}=W(h,u);let y=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-x").replace("px",""))||"0"),C=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-y").replace("px",""))||"0");y=Math.min(p,Math.max(b,y)),C=Math.min(v,Math.max(f,C)),t==null||t.style.setProperty("--pointer-diff-x",`${y}px`),t==null||t.style.setProperty("--pointer-diff-y",`${C}px`),h===e&&((d=(c=this.rootElm)==null?void 0:c.querySelector("button.vistaview-zoom-out-btn"))==null||d.setAttribute("disabled","true"),t.removeAttribute("data-vistaview-current-width"),t.removeAttribute("data-vistaview-current-height"),t.removeAttribute("data-vistaview-initial-width"),t.removeAttribute("data-vistaview-initial-height"),this.setZoomed(!1))}}clearZoom(){}getImages(t){return t.map((i,n)=>{const e=this.elements[i];if(e instanceof HTMLElement){const r=e.querySelector("img"),a=e.getAttribute("href")||"",o=e.getAttribute("src")||"",l=e.dataset.vistaviewSrc||a||o||(r==null?void 0:r.src)||"",c=e.dataset.vistaviewAlt||e.getAttribute("alt")||(r==null?void 0:r.alt)||"",d=e.dataset.vistaviewThumb||(r==null?void 0:r.src)||a||o||"";return{index:t[n],src:l,alt:c,thumb:d,imageElm:e instanceof HTMLImageElement?e:r,anchorElm:e instanceof HTMLAnchorElement?e:void 0}}else return{index:t[n],...e}})}setInitialDimPos(){var c,d;if(!this.rootElm)return;const t=(c=this.rootElm.querySelector('[data-vistaview-pos="0"]'))==null?void 0:c.dataset.vistaviewIndex,i=((d=this.currentImages)==null?void 0:d.find(h=>h.index===Number(t)))||null;if(!i)return;const n=i.imageElm?x(i.imageElm):void 0,e=i.anchorElm?x(i.anchorElm):void 0,r=(e==null?void 0:e.width)||(n==null?void 0:n.width)||0,a=(e==null?void 0:e.height)||(n==null?void 0:n.height)||0,o=((e==null?void 0:e.left)||(n==null?void 0:n.left)||0)+r/2,l=((e==null?void 0:e.top)||(n==null?void 0:n.top)||0)+a/2;this.rootElm.style.setProperty("--vistaview-container-initial-width",r+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-height",a+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-top",l+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-left",o+"px"),this.rootElm.style.setProperty("--vistaview-image-border-radius",k(e==null?void 0:e.borderRadius)||k(n==null?void 0:n.borderRadius)||"0px")}updateZoomButtonsVisibility(){var e;const t=(e=this.rootElm)==null?void 0:e.querySelector('[data-vistaview-pos="0"] img.vistaview-image-highres');if(!t)return;const i=this;function n(){var d,h;const r=(d=i.rootElm)==null?void 0:d.querySelector("button.vistaview-zoom-in-btn"),a=(h=i.rootElm)==null?void 0:h.querySelector("button.vistaview-zoom-out-btn"),o=parseInt(t.style.width)||t.width,l=t.naturalWidth*i.options.maxZoomLevel,c=o<l&&l>0;r&&(r.style.display=c?"":"none"),a&&(a.style.display=c?"":"none")}t.complete&&t.naturalWidth>0?n():t.addEventListener("load",n)}loadImages(){if(!this.rootElm)return;this.rootElm.querySelectorAll(".vistaview-image-highres:not(.vistaview-image-loaded)").forEach((i,n)=>{const e=i,a=this.currentImages[n].imageElm,o={w:0,h:0};if(a){const{width:c,height:d}=j(a);o.w=Math.min(a.width,c),o.h=Math.min(a.height,d)}const l=()=>{var d;const c=()=>{var h;o.w&&o.h&&(e.style.width=`${o.w}px`,e.style.height=`${o.h}px`,e.style.setProperty("--vistaview-fitted-width",`${o.w}px`),e.style.setProperty("--vistaview-fitted-height",`${o.h}px`)),e.classList.add("vistaview-image-loaded"),e.width=e.naturalWidth,e.height=e.naturalHeight,setTimeout(()=>{this.setFullSizeImageDim(e)},100),(h=i.parentElement)!=null&&h.matches('[data-vistaview-pos="0"]')&&this.updateZoomButtonsVisibility()};if((d=this.rootElm)!=null&&d.classList.contains("vistaview--opened"))c();else{const h=setInterval(()=>{var u;(u=this.rootElm)!=null&&u.classList.contains("vistaview--opened")&&(clearInterval(h),c())},50)}};e.complete&&e.naturalWidth>0?l():e.onload=l})}setIndexDisplay(){this.elements.length!==1&&(this.rootElm.querySelector(".vistaview-index-display").textContent=`${this.currentIndex.value+1} / ${this.elements.length}`)}setCurrentDescription(){this.rootElm.querySelector(".vistaview-description").textContent=(this.currentImages[1]||this.currentImages[0]).alt||""}getCurrentIndexes(t){const i=this.options.preloads,n=this.elements.length,e=n<1||!i?[t]:[...new Set([...Array.from({length:i},(a,o)=>((t-i+o)%n+n)%n),t,...Array.from({length:i},(a,o)=>(t+1+o)%n)])],r=n<1||!i?[0]:e.map((a,o)=>o-Math.floor(e.length/2));return{images:e,positions:r}}setKeyboardListeners(){this.onKeyDown=t=>{switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next();break;case"ArrowUp":t.preventDefault(),this.zoomIn();break;case"ArrowDown":t.preventDefault(),this.zoomOut();break;case"Escape":t.preventDefault(),this.close();break}},window.addEventListener("keydown",this.onKeyDown)}setResizeListeners(){this.onResizeHandler=()=>{var i;this.setInitialDimPos();const t=(i=this.rootElm)==null?void 0:i.querySelectorAll(".vistaview-image-highres.vistaview-image-loaded");t==null||t.forEach(n=>{const e=n,{width:r,height:a}=O(e);e.classList.contains("vistaview-image--zooming")?(e.dataset.vistaviewInitialWidth=r.toString(),e.dataset.vistaviewInitialHeight=a.toString()):(e.style.width=`${r}px`,e.style.height=`${a}px`)})},window.addEventListener("resize",this.onResizeHandler)}open(t=0){var o,l,c,d,h,u,p,f,v,b,y,C,P;if(L.somethingOpened){console.error("VistaView: another instance is already opened. Returning.");return}if(L.somethingOpened=this,this.currentIndex._value=t,document.body.prepend(nt({controls:this.options.controls,isReducedMotion:this.isReducedMotion})),this.rootElm=document.querySelector("#vistaview-root"),this.imageContainerElm=((o=this.rootElm)==null?void 0:o.querySelector(".vistaview-image-container"))||null,!this.rootElm||!this.imageContainerElm)throw L.somethingOpened=null,new Error("Failed to create VistaView element");this.options.arrowOnSmallScreens||this.rootElm.classList.add("vistaview-no-arrows-sm");const{images:i,positions:n}=this.getCurrentIndexes(t);this.currentImages=this.getImages(i);const e=this.currentImages.map((g,I)=>Y(g,n[I]));this.currentItems=e;const r={htmlElements:{from:null,to:this.currentItems},images:{from:null,to:this.currentImages},index:{from:null,to:t},via:this.currentIndex.via,vistaView:this};this.userSetup(r),this.imageContainerElm.innerHTML="",this.currentItems.forEach(g=>{this.imageContainerElm.appendChild(g)});let a=0;this.rootElm.addEventListener("animationend",g=>{var I;g.currentTarget===this.rootElm&&(a++,a>=2&&((I=this.rootElm)==null||I.classList.add("vistaview--opened")))}),(l=this.rootElm.querySelector(".vistaview-close-btn"))==null||l.addEventListener("click",()=>this.close()),(c=this.rootElm.querySelector(".vistaview-zoom-in-btn"))==null||c.addEventListener("click",()=>this.zoomIn()),(d=this.rootElm.querySelector(".vistaview-zoom-out-btn"))==null||d.addEventListener("click",()=>this.zoomOut()),(h=this.rootElm.querySelector(".vistaview-prev-btn>button"))==null||h.addEventListener("click",()=>this.prev()),(u=this.rootElm.querySelector(".vistaview-next-btn>button"))==null||u.addEventListener("click",()=>this.next()),[...this.options.controls.topLeft||[],...this.options.controls.topRight||[],...this.options.controls.topCenter||[],...this.options.controls.bottomCenter||[],...this.options.controls.bottomLeft||[],...this.options.controls.bottomRight||[]].forEach(g=>{typeof g!="string"&&(this.customControls[g.name]=g)}),this.rootElm.querySelectorAll("button[data-vistaview-custom-control]").forEach(g=>{g.addEventListener("click",I=>{const E=this.customControls[I.currentTarget.dataset.vistaviewCustomControl],S=this.currentImages.find(M=>M.index===this.currentIndex.value);E&&S&&(E.onClick.constructor.name==="AsyncFunction"?(g.classList.add("vistaview-button--loading"),E.onClick(S).finally(()=>{g.classList.remove("vistaview-button--loading")})):E.onClick(S))})}),this.options.animationDurationBase&&this.rootElm.style.setProperty("--vistaview-animation-duration",`${this.options.animationDurationBase}`),this.options.initialZIndex!==void 0&&this.rootElm.style.setProperty("--vistaview-initial-z-index",`${this.options.initialZIndex}`),this.setInitialDimPos(),this.setResizeListeners(),this.options.keyboardListeners&&this.setKeyboardListeners(),this.elements.length===1&&((p=this.rootElm.querySelector(".vistaview-prev-btn"))==null||p.classList.add("vistaview-ui--none"),(f=this.rootElm.querySelector(".vistaview-next-btn"))==null||f.classList.add("vistaview-ui--none"),(v=this.rootElm.querySelector(".vistaview-index-display"))==null||v.classList.add("vistaview-ui--none")),this.rootElm&&this.rootElm.classList.add("vistaview--initialized"),this.loadImages(),this.setCurrentDescription(),this.setIndexDisplay(),this.userInit(this),(y=(b=this.options).onOpen)==null||y.call(b,r),(P=(C=this.options).onImageView)==null||P.call(C,r)}async close(t=!0){var n,e,r;if(L.somethingOpened!==this)return;t&&((n=this.rootElm)==null||n.classList.add("vistaview--closing"),await new Promise(a=>{var l;let o;(l=this.rootElm)==null||l.addEventListener("transitionend",c=>{c.currentTarget===this.rootElm&&(o&&clearTimeout(o),o=setTimeout(()=>{a()},333))})}));const i={htmlElements:{from:this.currentItems,to:null},images:{from:this.currentImages,to:null},index:{from:this.currentIndex.value,to:null},via:{prev:!1,next:!1},vistaView:this};this.userClose(this),(r=(e=this.options).onClose)==null||r.call(e,i),document.body.removeChild(this.rootElm),this.currentIndex._value=null,this.currentIndex._via={next:!1,prev:!1},this.rootElm=null,this.imageContainerElm=null,this.currentImages=null,this.currentItems=null,this.onResizeHandler&&(window.removeEventListener("resize",this.onResizeHandler),this.onResizeHandler=null),this.onKeyDown&&(window.removeEventListener("keydown",this.onKeyDown),this.onKeyDown=null),(this.onZoomedPointerDown||this.onZoomedPointerMove||this.onZoomedPointerUp)&&(this.setZoomed(!1),this.onZoomedPointerDown=null,this.onZoomedPointerMove=null,this.onZoomedPointerUp=null);for(const a in this.transitionAbortControllers)this.transitionAbortControllers[a].abort();this.transitionAbortControllers={},L.somethingOpened=null}destroy(){this.close(!1),this.elements instanceof NodeList&&this.elements.forEach(t=>{t.dataset.vistaviewIndex&&delete t.dataset.vistaviewIndex,t.removeEventListener("click",this.defaultOnClickHandler),t.removeEventListener("pointerup",this.onClickElements)})}view(t,i){L.somethingOpened===this&&(t<0&&(t=this.elements.length-1),t>=this.elements.length&&(t=0),this.currentIndex.via=i||{next:!1,prev:!1},this.currentIndex.value=t)}next(){L.somethingOpened===this&&this.view(this.currentIndex.value+1,{next:!0,prev:!1})}prev(){L.somethingOpened===this&&this.view(this.currentIndex.value-1,{next:!1,prev:!0})}getCurrentIndex(){return L.somethingOpened===this?this.currentIndex.value:-1}}function ot(s){let t=null;if(typeof s=="string"?t=document.querySelectorAll(s):s instanceof NodeList&&(t=s),t)for(let i=0;i<t.length;i++){const n=t[i];if(!(n.dataset.vistaviewSrc||n.getAttribute("href")||n.getAttribute("src")||""))return`Element at index ${i} is missing 'src' / 'data-vistaview-src' / 'href' attribute.`}else{const i=s;for(let n=0;n<i.length;n++)if(!i[n].src)return`Element at index ${n} is missing 'src' attribute.`}return t||s}function rt({elements:s,...t}){if(!s)throw new Error("No elements");let i=ot(s);if(typeof i=="string")return console.error(i),console.warn("VistaView: silently returning."),null;const n=new st(i,t);return{open:(e=0)=>n.open(e),close:()=>n.close(),next:()=>n.next(),prev:()=>n.prev(),destroy:()=>n.destroy(),getCurrentIndex:()=>n.getCurrentIndex(),view:e=>{n.view(e)}}}w.DefaultOptions=H,w.VistaViewTransitionAbortedError=$,w.defaultClose=N,w.defaultInit=_,w.defaultSetup=B,w.defaultTransition=V,w.removeTouchActions=R,w.setTouchActions=F,w.vistaView=rt,w.vistaViewDownload=X,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})}));
16
+ </div>`)}let z=null,A=null,T=null,Z=null;function Y(s){R(s);const t=s.imageContainerElm,i=s.elements.length;if(!t)return;let n=0,e=0,r=0,a=0,o=null,l=0,h=!1;z=d=>{d.preventDefault(),d.stopPropagation(),s.isZoomed===!1&&(h=!0,n=d.pageX,e=d.pageY,r=d.pageX,a=d.pageY,l=Date.now(),o=null,t.setPointerCapture(d.pointerId))},A=d=>{if(d.preventDefault(),d.stopPropagation(),s.isZoomed!==!1||!h)return;const c=d.pageX-n,u=d.pageY-e;r=d.pageX,a=d.pageY,Math.abs(c)>=Math.abs(u)&&(o===null||o===!0)?(t.style.setProperty("--vistaview-pointer-diff-x",`${c}px`),o=!0):Math.abs(u)>Math.abs(c)&&(o===null||o===!1)&&(t.style.setProperty("--vistaview-pointer-diff-y",`${u}px`),o=!1)},Z=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!h)return;h=!1,o=null;const c=Array.from(t.querySelectorAll(".vistaview-item"));t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),c.forEach(u=>{u.style.transition="",u.style.translate=""})},T=d=>{if(d.preventDefault(),d.stopPropagation(),t.releasePointerCapture(d.pointerId),s.isZoomed!==!1||!h)return;h=!1;const c=Array.from(t.querySelectorAll(".vistaview-item")),u=r-n,p=a-e,f=Date.now()-l,v=u/f,b=p/f,y=s.options.touchSpeedThreshold||.5,C=c.find(E=>E.dataset.vistaviewPos==="0"),P=Number(C.dataset.vistaviewIndex);function g(){c[0].removeEventListener("transitionend",g),t.style.removeProperty("--vistaview-pointer-diff-x"),t.style.removeProperty("--vistaview-pointer-diff-y"),c.forEach(E=>{E.style.transition="",E.style.translate=""})}function I(E="0%",S="0%"){c.forEach(M=>{M.style.transition=`translate ${s.options.animationDurationBase*.5}ms ease-out`,M.style.translate=`${E} ${S}`})}if(v<-y||v>y){let E=function(){c[0].removeEventListener("transitionend",E),setTimeout(()=>{const S=s.isReducedMotion,M=s.options.detectReducedMotion;s.isReducedMotion=!0,s.options.detectReducedMotion=!0,g(),s.view(v<-y?(P+1)%i:(P-1+i)%i,{next:v<-y,prev:v>y}),s.isReducedMotion=S,s.options.detectReducedMotion=M},100)};I(v<-y?"-100%":"100%"),c[0].addEventListener("transitionend",E)}else b<-y||b>y?(s.close(),I("0%","0%")):(c[0].addEventListener("transitionend",g),I("0%"),v===0&&b===0&&s.zoomIn())},t.addEventListener("pointermove",A),t.addEventListener("pointerup",T),t.addEventListener("pointerdown",z),t.addEventListener("pointercancel",Z)}function R(s){const t=s.imageContainerElm;t&&(A&&t.removeEventListener("pointermove",A),T&&t.removeEventListener("pointerup",T),z&&t.removeEventListener("pointerdown",z),Z&&t.removeEventListener("pointercancel",Z))}const F=s=>{Y(s)},_=({htmlElements:{to:s},index:{to:t},vistaView:i})=>{i.elements instanceof NodeList&&t!==null&&(i.elements.forEach(n=>n.style.opacity="1"),i.elements[t].style.opacity="0"),s&&s.forEach(n=>{const e=Number(n.dataset.vistaviewPos);e!==0?(n.style.zIndex="1",n.style.left=100*e+"%"):n.style.zIndex="2"})},B=async({htmlElements:{from:s},via:{next:t,prev:i},vistaView:n},e)=>{if(n.options.detectReducedMotion&&n.isReducedMotion)return;const r=s.filter(a=>a.dataset.vistaviewPos==="0"||(t?a.dataset.vistaviewPos==="1":a.dataset.vistaviewPos==="-1"));await new Promise((a,o)=>{let l=0,h=!1;if(e.aborted){o(new $("Transition aborted"));return}const d=c=>{if(h)return o(new $("Transition aborted"));if(e.aborted)return h||(h=!0),o(new $("Transition aborted"));c.currentTarget.removeEventListener("transitionend",d),l++,l>=r.length&&a(0)};r.forEach(c=>{c.style.transition=`translate ${n.options.animationDurationBase*.5}ms ease-out`,c.style.translate=t?"-100%":i?"100%":"0%",c.addEventListener("transitionend",d)})})},N=s=>{s.elements instanceof NodeList&&s.elements.forEach(t=>t.style.opacity="1"),R(s)};class $ extends Error{constructor(t){super(t),this.name="VistaViewTransitionAbortedError"}}const H={detectReducedMotion:!0,animationDurationBase:333,zoomStep:500,maxZoomLevel:2,touchSpeedThreshold:.5,preloads:1,keyboardListeners:!0,arrowOnSmallScreens:!1,controls:{topLeft:["indexDisplay"],topRight:["zoomIn","zoomOut",V(),"close"],bottomCenter:["description"]}},L={somethingOpened:null};class st{constructor(t,i){m(this,"options");m(this,"elements");m(this,"isReducedMotion");m(this,"currentIndex",{_value:null,_vistaView:null,_via:{next:!1,prev:!1},set value(t){var n,e,r;const i=this._value;this._value=t;for(const a in(n=this._vistaView)==null?void 0:n.transitionAbortControllers)(e=this._vistaView)==null||e.transitionAbortControllers[a].abort();(r=this._vistaView)==null||r.swap(i,this._value)},get value(){return this._value},get via(){return this._via},set via(t){this._via=t}});m(this,"rootElm",null);m(this,"imageContainerElm",null);m(this,"customControls",{});m(this,"currentImages",null);m(this,"currentItems",null);m(this,"isZoomed",!1);m(this,"onClickElements",t=>{t.preventDefault();const i=t.currentTarget;i.dataset.vistaviewIndex&&this.open(parseInt(i.dataset.vistaviewIndex))});m(this,"defaultOnClickHandler",t=>t.preventDefault());m(this,"onResizeHandler",null);m(this,"onKeyDown",null);m(this,"userSetup",_);m(this,"userTransition",B);m(this,"userClose",N);m(this,"userInit",F);m(this,"onZoomedPointerDown",null);m(this,"onZoomedPointerMove",null);m(this,"onZoomedPointerUp",null);m(this,"transitionAbortControllers",{});m(this,"loadImageTimeout",null);this.elements=t,this.currentIndex._vistaView=this,this.options={...H,...i||{},controls:{...H.controls,...(i==null?void 0:i.controls)||{}}},this.options.initFunction&&(this.userInit=this.options.initFunction),this.options.transitionFunction&&(this.userTransition=this.options.transitionFunction),this.options.closeFunction&&(this.userClose=this.options.closeFunction),this.options.initFunction&&(this.userInit=this.options.initFunction),this.isReducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,this.elements instanceof NodeList&&this.elements.forEach((n,e)=>{n.dataset.vistaviewIndex=e.toString(),n.addEventListener("click",this.defaultOnClickHandler),n.addEventListener("pointerup",this.onClickElements)})}setFullSizeImageDim(t){var r,a;const i=t.getBoundingClientRect(),{width:n,height:e}=O(t);if(n===i.width&&e===i.height)(a=(r=t.parentElement)==null?void 0:r.querySelector(".vistaview-image-lowres"))==null||a.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled");else{let o=0;const l=()=>{var h,d;o++,!(o<3)&&(t.removeEventListener("transitionend",l),(d=(h=t.parentElement)==null?void 0:h.querySelector(".vistaview-image-lowres"))==null||d.classList.add("vistaview-image--hidden"),t.classList.add("vistaview-image-settled"))};requestAnimationFrame(()=>{t.addEventListener("transitionend",l),t.style.width=`${n}px`,t.style.height=`${e}px`})}}async swap(t,i){var d,c;if(!L.somethingOpened||t===i||t===null)return;if(!this.imageContainerElm)throw new Error("VistaView: imageContainerElm is null in swap()");this.setIndexDisplay(),this.clearZoom();const{images:n,positions:e}=this.getCurrentIndexes(i),r=this.getImages(n),a=r.map((u,p)=>X(u,e[p])),o={htmlElements:{from:this.currentItems,to:a},images:{from:this.currentImages,to:r},index:{from:t,to:i},via:this.currentIndex.via,vistaView:this};this.userSetup(o);const l=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);this.transitionAbortControllers[l]=new AbortController;try{await this.userTransition(o,this.transitionAbortControllers[l].signal)}catch(u){u instanceof $||console.warn(u)}const h=a.find(u=>u.dataset.vistaviewPos==="0");if(h){const u=h.dataset.vistaviewIndex,p=this.currentItems.find(v=>v.dataset.vistaviewIndex===u),f=p==null?void 0:p.querySelector(".vistaview-image-highres");if(f){const v=h.querySelector(".vistaview-image-highres");if(v.setAttribute("class",f.getAttribute("class")||""),v.setAttribute("style",f.getAttribute("style")||""),v.classList.remove("vistaview-image--zooming"),f.classList.contains("vistaview-image-loaded")&&!f.classList.contains("vistaview-image-settled")){const b=f.getBoundingClientRect();v.style.width=`${b.width}px`,v.style.height=`${b.height}px`}}}delete this.transitionAbortControllers[l],this.imageContainerElm.innerHTML="",a.forEach(u=>{var b;const p=u.querySelector(".vistaview-image-highres"),f=!!p.classList.contains("vistaview-image-loaded"),v=!!p.classList.contains("vistaview-image-settled");this.imageContainerElm.appendChild(u),f&&!v?this.setFullSizeImageDim(p):f&&v&&((b=u==null?void 0:u.querySelector(".vistaview-image-lowres"))==null||b.classList.add("vistaview-image--hidden"))}),this.setInitialDimPos(),this.currentImages=r,this.currentItems=a,this.setCurrentDescription(),this.updateZoomButtonsVisibility(),(c=(d=this.options).onImageView)==null||c.call(d,o),this.loadImageTimeout&&clearTimeout(this.loadImageTimeout),this.loadImageTimeout=setTimeout(()=>{this.loadImages()},333)}setZoomed(t){var i,n,e,r,a,o;if(this.isZoomed!==t){if(this.isZoomed){let l=this.isZoomed;if(l.classList.remove("vistaview-image--zooming"),this.onZoomedPointerDown&&((i=l.parentElement)==null||i.removeEventListener("pointerdown",this.onZoomedPointerDown),this.onZoomedPointerDown=null),this.onZoomedPointerMove&&((n=l.parentElement)==null||n.removeEventListener("pointermove",this.onZoomedPointerMove),this.onZoomedPointerMove=null),this.onZoomedPointerUp&&((e=l.parentElement)==null||e.removeEventListener("pointerup",this.onZoomedPointerUp),this.onZoomedPointerUp=null),l==null||l.style.removeProperty("--pointer-diff-x"),l==null||l.style.removeProperty("--pointer-diff-y"),setTimeout(()=>{l==null||l.classList.remove("vistaview-image--zooming")},500),this.isZoomed=!1,!t)return}if(t){this.isZoomed=t,t.classList.add("vistaview-image--zooming"),t==null||t.style.setProperty("--pointer-diff-x","0px"),t==null||t.style.setProperty("--pointer-diff-y","0px");let l=!1,h=0,d=0,c=0,u=0,p=0,f=0;this.onZoomedPointerDown=v=>{v.preventDefault(),v.stopPropagation(),l=!0,h=v.pageX,d=v.pageY,t.setPointerCapture(v.pointerId)},this.onZoomedPointerMove=v=>{if(!l)return;v.preventDefault(),p=v.pageX-h,f=v.pageY-d;const b=parseInt((t==null?void 0:t.dataset.vistaviewCurrentWidth)||"0"),y=parseInt((t==null?void 0:t.dataset.vistaviewCurrentHeight)||"0"),{maxDiffX:C,minDiffY:P,maxDiffY:g,minDiffX:I}=W(b,y),E=Math.min(C,Math.max(I,c+p)),S=Math.min(g,Math.max(P,u+f));p=E-c,f=S-u,t==null||t.style.setProperty("--pointer-diff-x",`${E}px`),t==null||t.style.setProperty("--pointer-diff-y",`${S}px`)},this.onZoomedPointerUp=v=>{l=!1,t.releasePointerCapture(v.pointerId),c+=p,u+=f,p=0,f=0},(r=t==null?void 0:t.parentElement)==null||r.addEventListener("pointerdown",this.onZoomedPointerDown),(a=t==null?void 0:t.parentElement)==null||a.addEventListener("pointermove",this.onZoomedPointerMove),(o=t==null?void 0:t.parentElement)==null||o.addEventListener("pointerup",this.onZoomedPointerUp);return}}}zoomIn(){var r,a,o,l,h;const t=(r=this.rootElm)==null?void 0:r.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height;t.dataset.vistaviewInitialWidth||(t.dataset.vistaviewInitialWidth=i.toString()),t.dataset.vistaviewInitialHeight||(t.dataset.vistaviewInitialHeight=n.toString()),this.setZoomed(t);const e=(t.naturalWidth||0)*this.options.maxZoomLevel;if(i&&e&&i<e){const d=Math.min(i+this.options.zoomStep,e);t.style.width=`${d}px`;const c=d/i*n;t.style.height=`${c}px`,(o=(a=this.rootElm)==null?void 0:a.querySelector("button.vistaview-zoom-out-btn"))==null||o.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=d.toString(),t.dataset.vistaviewCurrentHeight=c.toString(),d===e&&((h=(l=this.rootElm)==null?void 0:l.querySelector("button.vistaview-zoom-in-btn"))==null||h.setAttribute("disabled","true"))}}zoomOut(){var a,o,l,h,d;const t=(a=this.rootElm)==null?void 0:a.querySelector('[data-vistaview-pos="0"] .vistaview-image-highres'),i=t.width,n=t.height,e=t.dataset.vistaviewInitialWidth?parseInt(t.dataset.vistaviewInitialWidth):0,r=c=>{c.target===t&&(t.classList.remove("vistaview-image--zooming-out"),t.removeEventListener("transitionend",r))};if(t.addEventListener("transitionend",r),t.classList.add("vistaview-image--zooming-out"),i&&e&&i>e){const c=Math.max(i-this.options.zoomStep,e);t.style.width=`${c}px`;const u=c/i*n;t.style.height=`${u}px`,(l=(o=this.rootElm)==null?void 0:o.querySelector("button.vistaview-zoom-in-btn"))==null||l.removeAttribute("disabled"),t.dataset.vistaviewCurrentWidth=c.toString(),t.dataset.vistaviewCurrentHeight=u.toString();const{maxDiffX:p,minDiffY:f,maxDiffY:v,minDiffX:b}=W(c,u);let y=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-x").replace("px",""))||"0"),C=parseInt((t==null?void 0:t.style.getPropertyValue("--pointer-diff-y").replace("px",""))||"0");y=Math.min(p,Math.max(b,y)),C=Math.min(v,Math.max(f,C)),t==null||t.style.setProperty("--pointer-diff-x",`${y}px`),t==null||t.style.setProperty("--pointer-diff-y",`${C}px`),c===e&&((d=(h=this.rootElm)==null?void 0:h.querySelector("button.vistaview-zoom-out-btn"))==null||d.setAttribute("disabled","true"),t.removeAttribute("data-vistaview-current-width"),t.removeAttribute("data-vistaview-current-height"),t.removeAttribute("data-vistaview-initial-width"),t.removeAttribute("data-vistaview-initial-height"),this.setZoomed(!1))}}clearZoom(){}getImages(t){return t.map((i,n)=>{const e=this.elements[i];if(e instanceof HTMLElement){const r=e.querySelector("img"),a=e.getAttribute("href")||"",o=e.getAttribute("src")||"",l=e.dataset.vistaviewSrc||a||o||(r==null?void 0:r.src)||"",h=e.dataset.vistaviewAlt||e.getAttribute("alt")||(r==null?void 0:r.alt)||"",d=e.dataset.vistaviewThumb||(r==null?void 0:r.src)||a||o||"";return{index:t[n],src:l,alt:h,thumb:d,imageElm:e instanceof HTMLImageElement?e:r,anchorElm:e instanceof HTMLAnchorElement?e:void 0}}else return{index:t[n],...e}})}setInitialDimPos(){var h,d;if(!this.rootElm)return;const t=(h=this.rootElm.querySelector('[data-vistaview-pos="0"]'))==null?void 0:h.dataset.vistaviewIndex,i=((d=this.currentImages)==null?void 0:d.find(c=>c.index===Number(t)))||null;if(!i)return;const n=i.imageElm?x(i.imageElm):void 0,e=i.anchorElm?x(i.anchorElm):void 0,r=(e==null?void 0:e.width)||(n==null?void 0:n.width)||0,a=(e==null?void 0:e.height)||(n==null?void 0:n.height)||0,o=((e==null?void 0:e.left)||(n==null?void 0:n.left)||0)+r/2,l=((e==null?void 0:e.top)||(n==null?void 0:n.top)||0)+a/2;this.rootElm.style.setProperty("--vistaview-container-initial-width",r+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-height",a+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-top",l+"px"),this.rootElm.style.setProperty("--vistaview-container-initial-left",o+"px"),this.rootElm.style.setProperty("--vistaview-image-border-radius",k(e==null?void 0:e.borderRadius)||k(n==null?void 0:n.borderRadius)||"0px")}updateZoomButtonsVisibility(){var e;const t=(e=this.rootElm)==null?void 0:e.querySelector('[data-vistaview-pos="0"] img.vistaview-image-highres');if(!t)return;const i=this;function n(){var d,c;const r=(d=i.rootElm)==null?void 0:d.querySelector("button.vistaview-zoom-in-btn"),a=(c=i.rootElm)==null?void 0:c.querySelector("button.vistaview-zoom-out-btn"),o=parseInt(t.style.width)||t.width,l=t.naturalWidth*i.options.maxZoomLevel,h=o<l&&l>0;r&&(r.style.display=h?"":"none"),a&&(a.style.display=h?"":"none")}t.complete&&t.naturalWidth>0?n():t.addEventListener("load",n)}loadImages(){if(!this.rootElm)return;this.rootElm.querySelectorAll(".vistaview-image-highres:not(.vistaview-image-loaded)").forEach((i,n)=>{const e=i,a=this.currentImages[n].imageElm,o={w:0,h:0};if(a){const{width:h,height:d}=j(a);o.w=Math.min(a.width,h),o.h=Math.min(a.height,d)}const l=()=>{var d;const h=()=>{var c;o.w&&o.h&&(e.style.width=`${o.w}px`,e.style.height=`${o.h}px`,e.style.setProperty("--vistaview-fitted-width",`${o.w}px`),e.style.setProperty("--vistaview-fitted-height",`${o.h}px`)),e.classList.add("vistaview-image-loaded"),e.width=e.naturalWidth,e.height=e.naturalHeight,setTimeout(()=>{this.setFullSizeImageDim(e)},100),(c=i.parentElement)!=null&&c.matches('[data-vistaview-pos="0"]')&&this.updateZoomButtonsVisibility()};if((d=this.rootElm)!=null&&d.classList.contains("vistaview--opened"))h();else{const c=setInterval(()=>{var u;(u=this.rootElm)!=null&&u.classList.contains("vistaview--opened")&&(clearInterval(c),h())},50)}};e.complete&&e.naturalWidth>0?l():(e.onload=l,e.onerror=()=>{var h;console.error("VistaView: failed to load image "+e.src),(h=e.parentElement)==null||h.classList.add("vistaview-image-load-failed")})})}setIndexDisplay(){this.elements.length!==1&&(this.rootElm.querySelector(".vistaview-index-display").textContent=`${this.currentIndex.value+1} / ${this.elements.length}`)}setCurrentDescription(){this.rootElm.querySelector(".vistaview-description").textContent=(this.currentImages[1]||this.currentImages[0]).alt||""}getCurrentIndexes(t){const i=this.options.preloads,n=this.elements.length,e=n<1||!i?[t]:[...new Set([...Array.from({length:i},(a,o)=>((t-i+o)%n+n)%n),t,...Array.from({length:i},(a,o)=>(t+1+o)%n)])],r=n<1||!i?[0]:e.map((a,o)=>o-Math.floor(e.length/2));return{images:e,positions:r}}setKeyboardListeners(){this.onKeyDown=t=>{switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next();break;case"ArrowUp":t.preventDefault(),this.zoomIn();break;case"ArrowDown":t.preventDefault(),this.zoomOut();break;case"Escape":t.preventDefault(),this.close();break}},window.addEventListener("keydown",this.onKeyDown)}setResizeListeners(){this.onResizeHandler=()=>{var i;this.setInitialDimPos();const t=(i=this.rootElm)==null?void 0:i.querySelectorAll(".vistaview-image-highres.vistaview-image-loaded");t==null||t.forEach(n=>{const e=n,{width:r,height:a}=O(e);e.classList.contains("vistaview-image--zooming")?(e.dataset.vistaviewInitialWidth=r.toString(),e.dataset.vistaviewInitialHeight=a.toString()):(e.style.width=`${r}px`,e.style.height=`${a}px`)})},window.addEventListener("resize",this.onResizeHandler)}open(t=0){var o,l,h,d,c,u,p,f,v,b,y,C,P;if(L.somethingOpened){console.error("VistaView: another instance is already opened. Returning.");return}if(L.somethingOpened=this,this.currentIndex._value=t,document.body.prepend(nt({controls:this.options.controls,isReducedMotion:this.isReducedMotion})),this.rootElm=document.querySelector("#vistaview-root"),this.imageContainerElm=((o=this.rootElm)==null?void 0:o.querySelector(".vistaview-image-container"))||null,!this.rootElm||!this.imageContainerElm)throw L.somethingOpened=null,new Error("Failed to create VistaView element");this.options.arrowOnSmallScreens||this.rootElm.classList.add("vistaview-no-arrows-sm");const{images:i,positions:n}=this.getCurrentIndexes(t);this.currentImages=this.getImages(i);const e=this.currentImages.map((g,I)=>X(g,n[I]));this.currentItems=e;const r={htmlElements:{from:null,to:this.currentItems},images:{from:null,to:this.currentImages},index:{from:null,to:t},via:this.currentIndex.via,vistaView:this};this.userSetup(r),this.imageContainerElm.innerHTML="",this.currentItems.forEach(g=>{this.imageContainerElm.appendChild(g)});let a=0;this.rootElm.addEventListener("animationend",g=>{var I;g.currentTarget===this.rootElm&&(a++,a>=2&&((I=this.rootElm)==null||I.classList.add("vistaview--opened")))}),(l=this.rootElm.querySelector(".vistaview-close-btn"))==null||l.addEventListener("click",()=>this.close()),(h=this.rootElm.querySelector(".vistaview-zoom-in-btn"))==null||h.addEventListener("click",()=>this.zoomIn()),(d=this.rootElm.querySelector(".vistaview-zoom-out-btn"))==null||d.addEventListener("click",()=>this.zoomOut()),(c=this.rootElm.querySelector(".vistaview-prev-btn>button"))==null||c.addEventListener("click",()=>this.prev()),(u=this.rootElm.querySelector(".vistaview-next-btn>button"))==null||u.addEventListener("click",()=>this.next()),[...this.options.controls.topLeft||[],...this.options.controls.topRight||[],...this.options.controls.topCenter||[],...this.options.controls.bottomCenter||[],...this.options.controls.bottomLeft||[],...this.options.controls.bottomRight||[]].forEach(g=>{typeof g!="string"&&(this.customControls[g.name]=g)}),this.rootElm.querySelectorAll("button[data-vistaview-custom-control]").forEach(g=>{g.addEventListener("click",I=>{const E=this.customControls[I.currentTarget.dataset.vistaviewCustomControl],S=this.currentImages.find(M=>M.index===this.currentIndex.value);E&&S&&(E.onClick.constructor.name==="AsyncFunction"?(g.classList.add("vistaview-button--loading"),E.onClick(S).finally(()=>{g.classList.remove("vistaview-button--loading")})):E.onClick(S))})}),this.options.animationDurationBase&&this.rootElm.style.setProperty("--vistaview-animation-duration",`${this.options.animationDurationBase}`),this.options.initialZIndex!==void 0&&this.rootElm.style.setProperty("--vistaview-initial-z-index",`${this.options.initialZIndex}`),this.setInitialDimPos(),this.setResizeListeners(),this.options.keyboardListeners&&this.setKeyboardListeners(),this.elements.length===1&&((p=this.rootElm.querySelector(".vistaview-prev-btn"))==null||p.classList.add("vistaview-ui--none"),(f=this.rootElm.querySelector(".vistaview-next-btn"))==null||f.classList.add("vistaview-ui--none"),(v=this.rootElm.querySelector(".vistaview-index-display"))==null||v.classList.add("vistaview-ui--none")),this.rootElm&&this.rootElm.classList.add("vistaview--initialized"),this.loadImages(),this.setCurrentDescription(),this.setIndexDisplay(),this.userInit(this),(y=(b=this.options).onOpen)==null||y.call(b,r),(P=(C=this.options).onImageView)==null||P.call(C,r)}async close(t=!0){var n,e,r;if(L.somethingOpened!==this)return;t&&((n=this.rootElm)==null||n.classList.add("vistaview--closing"),await new Promise(a=>{var l;let o;(l=this.rootElm)==null||l.addEventListener("transitionend",h=>{h.currentTarget===this.rootElm&&(o&&clearTimeout(o),o=setTimeout(()=>{a()},333))})}));const i={htmlElements:{from:this.currentItems,to:null},images:{from:this.currentImages,to:null},index:{from:this.currentIndex.value,to:null},via:{prev:!1,next:!1},vistaView:this};this.userClose(this),(r=(e=this.options).onClose)==null||r.call(e,i),document.body.removeChild(this.rootElm),this.currentIndex._value=null,this.currentIndex._via={next:!1,prev:!1},this.rootElm=null,this.imageContainerElm=null,this.currentImages=null,this.currentItems=null,this.onResizeHandler&&(window.removeEventListener("resize",this.onResizeHandler),this.onResizeHandler=null),this.onKeyDown&&(window.removeEventListener("keydown",this.onKeyDown),this.onKeyDown=null),(this.onZoomedPointerDown||this.onZoomedPointerMove||this.onZoomedPointerUp)&&(this.setZoomed(!1),this.onZoomedPointerDown=null,this.onZoomedPointerMove=null,this.onZoomedPointerUp=null);for(const a in this.transitionAbortControllers)this.transitionAbortControllers[a].abort();this.transitionAbortControllers={},L.somethingOpened=null}destroy(){this.close(!1),this.elements instanceof NodeList&&this.elements.forEach(t=>{t.dataset.vistaviewIndex&&delete t.dataset.vistaviewIndex,t.removeEventListener("click",this.defaultOnClickHandler),t.removeEventListener("pointerup",this.onClickElements)})}view(t,i){L.somethingOpened===this&&(t<0&&(t=this.elements.length-1),t>=this.elements.length&&(t=0),this.currentIndex.via=i||{next:!1,prev:!1},this.currentIndex.value=t)}next(){L.somethingOpened===this&&this.view(this.currentIndex.value+1,{next:!0,prev:!1})}prev(){L.somethingOpened===this&&this.view(this.currentIndex.value-1,{next:!1,prev:!0})}getCurrentIndex(){return L.somethingOpened===this?this.currentIndex.value:-1}}function ot(s){let t=null;if(typeof s=="string"?t=document.querySelectorAll(s):s instanceof NodeList&&(t=s),t)for(let i=0;i<t.length;i++){const n=t[i];if(!(n.dataset.vistaviewSrc||n.getAttribute("href")||n.getAttribute("src")||""))return`Element at index ${i} is missing 'src' / 'data-vistaview-src' / 'href' attribute.`}else{const i=s;for(let n=0;n<i.length;n++)if(!i[n].src)return`Element at index ${n} is missing 'src' attribute.`}return t||s}function rt({elements:s,...t}){if(!s)throw new Error("No elements");let i=ot(s);if(typeof i=="string")return console.error(i),console.warn("VistaView: silently returning."),null;const n=new st(i,t);return{open:(e=0)=>n.open(e),close:()=>n.close(),next:()=>n.next(),prev:()=>n.prev(),destroy:()=>n.destroy(),getCurrentIndex:()=>n.getCurrentIndex(),view:e=>{n.view(e)}}}w.DefaultOptions=H,w.VistaViewTransitionAbortedError=$,w.defaultClose=N,w.defaultInit=F,w.defaultSetup=_,w.defaultTransition=B,w.removeTouchActions=R,w.setTouchActions=Y,w.vistaView=rt,w.vistaViewDownload=V,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vistaview",
3
- "version": "0.3.13",
3
+ "version": "0.3.15",
4
4
  "description": "A lightweight, zero-dependency image lightbox library with smooth animations and touch support",
5
5
  "keywords": [
6
6
  "image",