import{b as d,d as le}from"./vendor-q1sfVHxQ.js";import{k as ie,j as p,n as ce}from"./index-BB3C6ia3.js";import{c as ue,$ as ae,d as ne,S as de,a as me}from"./swiper.min-BjDUzMMs.js";import{u as fe}from"./useIsDesktop-DbmMhgKo.js";function he({swiper:t,extendParams:M,on:f,emit:$}){const m=ue();M({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let h=1,v=!1,C,b,X;const a={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},e={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},l={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let T=1;Object.defineProperty(t.zoom,"scale",{get(){return T},set(n){if(T!==n){const o=a.$imageEl?a.$imageEl[0]:void 0,s=a.$slideEl?a.$slideEl[0]:void 0;$("zoomChange",n,o,s)}T=n}});function k(n){if(n.targetTouches.length<2)return 1;const o=n.targetTouches[0].pageX,s=n.targetTouches[0].pageY,i=n.targetTouches[1].pageX,c=n.targetTouches[1].pageY;return Math.sqrt((i-o)**2+(c-s)**2)}function S(n){const o=t.support,s=t.params.zoom;if(b=!1,X=!1,!o.gestures){if(n.type!=="touchstart"||n.type==="touchstart"&&n.targetTouches.length<2)return;b=!0,a.scaleStart=k(n)}if((!a.$slideEl||!a.$slideEl.length)&&(a.$slideEl=ae(n.target).closest(`.${t.params.slideClass}`),a.$slideEl.length===0&&(a.$slideEl=t.slides.eq(t.activeIndex)),a.$imageEl=a.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),a.$imageWrapEl=a.$imageEl.parent(`.${s.containerClass}`),a.maxRatio=a.$imageWrapEl.attr("data-swiper-zoom")||s.maxRatio,a.$imageWrapEl.length===0)){a.$imageEl=void 0;return}a.$imageEl&&a.$imageEl.transition(0),v=!0}function x(n){const o=t.support,s=t.params.zoom,i=t.zoom;if(!o.gestures){if(n.type!=="touchmove"||n.type==="touchmove"&&n.targetTouches.length<2)return;X=!0,a.scaleMove=k(n)}if(!a.$imageEl||a.$imageEl.length===0){n.type==="gesturechange"&&S(n);return}o.gestures?i.scale=n.scale*h:i.scale=a.scaleMove/a.scaleStart*h,i.scale>a.maxRatio&&(i.scale=a.maxRatio-1+(i.scale-a.maxRatio+1)**.5),i.scalee.touchesStart.x)){e.isTouched=!1;return}if(!t.isHorizontal()&&(Math.floor(e.minY)===Math.floor(e.startY)&&e.touchesCurrent.ye.touchesStart.y)){e.isTouched=!1;return}}n.cancelable&&n.preventDefault(),n.stopPropagation(),e.isMoved=!0,e.currentX=e.touchesCurrent.x-e.touchesStart.x+e.startX,e.currentY=e.touchesCurrent.y-e.touchesStart.y+e.startY,e.currentXe.maxX&&(e.currentX=e.maxX-1+(e.currentX-e.maxX+1)**.8),e.currentYe.maxY&&(e.currentY=e.maxY-1+(e.currentY-e.maxY+1)**.8),l.prevPositionX||(l.prevPositionX=e.touchesCurrent.x),l.prevPositionY||(l.prevPositionY=e.touchesCurrent.y),l.prevTime||(l.prevTime=Date.now()),l.x=(e.touchesCurrent.x-l.prevPositionX)/(Date.now()-l.prevTime)/2,l.y=(e.touchesCurrent.y-l.prevPositionY)/(Date.now()-l.prevTime)/2,Math.abs(e.touchesCurrent.x-l.prevPositionX)<2&&(l.x=0),Math.abs(e.touchesCurrent.y-l.prevPositionY)<2&&(l.y=0),l.prevPositionX=e.touchesCurrent.x,l.prevPositionY=e.touchesCurrent.y,l.prevTime=Date.now(),a.$imageWrapEl.transform(`translate3d(${e.currentX}px, ${e.currentY}px,0)`)}}function u(){const n=t.zoom;if(!a.$imageEl||a.$imageEl.length===0)return;if(!e.isTouched||!e.isMoved){e.isTouched=!1,e.isMoved=!1;return}e.isTouched=!1,e.isMoved=!1;let o=300,s=300;const i=l.x*o,c=e.currentX+i,W=l.y*s,R=e.currentY+W;l.x!==0&&(o=Math.abs((c-e.currentX)/l.x)),l.y!==0&&(s=Math.abs((R-e.currentY)/l.y));const H=Math.max(o,s);e.currentX=c,e.currentY=R;const P=e.width*n.scale,E=e.height*n.scale;e.minX=Math.min(a.slideWidth/2-P/2,0),e.maxX=-e.minX,e.minY=Math.min(a.slideHeight/2-E/2,0),e.maxY=-e.minY,e.currentX=Math.max(Math.min(e.currentX,e.maxX),e.minX),e.currentY=Math.max(Math.min(e.currentY,e.maxY),e.minY),a.$imageWrapEl.transition(H).transform(`translate3d(${e.currentX}px, ${e.currentY}px,0)`)}function z(){const n=t.zoom;a.$slideEl&&t.previousIndex!==t.activeIndex&&(a.$imageEl&&a.$imageEl.transform("translate3d(0,0,0) scale(1)"),a.$imageWrapEl&&a.$imageWrapEl.transform("translate3d(0,0,0)"),n.scale=1,h=1,a.$slideEl=void 0,a.$imageEl=void 0,a.$imageWrapEl=void 0)}function g(n){const o=t.zoom,s=t.params.zoom;if(a.$slideEl||(n&&n.target&&(a.$slideEl=ae(n.target).closest(`.${t.params.slideClass}`)),a.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?a.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):a.$slideEl=t.slides.eq(t.activeIndex)),a.$imageEl=a.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),a.$imageWrapEl=a.$imageEl.parent(`.${s.containerClass}`)),!a.$imageEl||a.$imageEl.length===0||!a.$imageWrapEl||a.$imageWrapEl.length===0)return;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),a.$slideEl.addClass(`${s.zoomedSlideClass}`);let i,c,W,R,H,P,E,y,Q,w,ee,te,D,I,_,q,G,Z;typeof e.touchesStart.x>"u"&&n?(i=n.type==="touchend"?n.changedTouches[0].pageX:n.pageX,c=n.type==="touchend"?n.changedTouches[0].pageY:n.pageY):(i=e.touchesStart.x,c=e.touchesStart.y),o.scale=a.$imageWrapEl.attr("data-swiper-zoom")||s.maxRatio,h=a.$imageWrapEl.attr("data-swiper-zoom")||s.maxRatio,n?(G=a.$slideEl[0].offsetWidth,Z=a.$slideEl[0].offsetHeight,W=a.$slideEl.offset().left+m.scrollX,R=a.$slideEl.offset().top+m.scrollY,H=W+G/2-i,P=R+Z/2-c,Q=a.$imageEl[0].offsetWidth,w=a.$imageEl[0].offsetHeight,ee=Q*o.scale,te=w*o.scale,D=Math.min(G/2-ee/2,0),I=Math.min(Z/2-te/2,0),_=-D,q=-I,E=H*o.scale,y=P*o.scale,E_&&(E=_),yq&&(y=q)):(E=0,y=0),a.$imageWrapEl.transition(300).transform(`translate3d(${E}px, ${y}px,0)`),a.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${o.scale})`)}function A(){const n=t.zoom,o=t.params.zoom;a.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?a.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):a.$slideEl=t.slides.eq(t.activeIndex),a.$imageEl=a.$slideEl.find(`.${o.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),a.$imageWrapEl=a.$imageEl.parent(`.${o.containerClass}`)),!(!a.$imageEl||a.$imageEl.length===0||!a.$imageWrapEl||a.$imageWrapEl.length===0)&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),n.scale=1,h=1,a.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),a.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),a.$slideEl.removeClass(`${o.zoomedSlideClass}`),a.$slideEl=void 0)}function U(n){const o=t.zoom;o.scale&&o.scale!==1?A():g(n)}function L(){const n=t.support,o=t.touchEvents.start==="touchstart"&&n.passiveListener&&t.params.passiveListeners?{passive:!0,capture:!1}:!1,s=n.passiveListener?{passive:!1,capture:!0}:!0;return{passiveListener:o,activeListenerWithCapture:s}}function N(){return`.${t.params.slideClass}`}function V(n){const{passiveListener:o}=L(),s=N();t.$wrapperEl[n]("gesturestart",s,S,o),t.$wrapperEl[n]("gesturechange",s,x,o),t.$wrapperEl[n]("gestureend",s,Y,o)}function B(){C||(C=!0,V("on"))}function K(){C&&(C=!1,V("off"))}function F(){const n=t.zoom;if(n.enabled)return;n.enabled=!0;const o=t.support,{passiveListener:s,activeListenerWithCapture:i}=L(),c=N();o.gestures?(t.$wrapperEl.on(t.touchEvents.start,B,s),t.$wrapperEl.on(t.touchEvents.end,K,s)):t.touchEvents.start==="touchstart"&&(t.$wrapperEl.on(t.touchEvents.start,c,S,s),t.$wrapperEl.on(t.touchEvents.move,c,x,i),t.$wrapperEl.on(t.touchEvents.end,c,Y,s),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,c,Y,s)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,r,i)}function J(){const n=t.zoom;if(!n.enabled)return;const o=t.support;n.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=L(),c=N();o.gestures?(t.$wrapperEl.off(t.touchEvents.start,B,s),t.$wrapperEl.off(t.touchEvents.end,K,s)):t.touchEvents.start==="touchstart"&&(t.$wrapperEl.off(t.touchEvents.start,c,S,s),t.$wrapperEl.off(t.touchEvents.move,c,x,i),t.$wrapperEl.off(t.touchEvents.end,c,Y,s),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,c,Y,s)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,r,i)}f("init",()=>{t.params.zoom.enabled&&F()}),f("destroy",()=>{J()}),f("touchStart",(n,o)=>{t.zoom.enabled&&j(o)}),f("touchEnd",(n,o)=>{t.zoom.enabled&&u()}),f("doubleTap",(n,o)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&U(o)}),f("transitionEnd",()=>{t.zoom.enabled&&t.params.zoom.enabled&&z()}),f("slideChange",()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&z()}),Object.assign(t.zoom,{enable:F,disable:J,in:g,out:A,toggle:U})}const ze=()=>{const t=d.useRef(null),[M,f]=d.useState(0);return d.useEffect(()=>{const $=t.current;if(!$)return;const m=()=>{const v=$.offsetHeight-window.innerHeight;f(v>0?-v:0)};m();const h=new ResizeObserver(m);return h.observe($),window.addEventListener("resize",m),()=>{h.disconnect(),window.removeEventListener("resize",m)}},[]),{ref:t,top:M}},oe=.3,O=1,se=3,ge=300,re=4,Ee={prev:"cursor-w-resize",next:"cursor-e-resize",zoom:"cursor-crosshair"};function Xe({images:t=[],initialIndex:M=0,onClose:f}){const{t:$}=ie(["product","common"]),m=fe(),[h,v]=d.useState(M),[C,b]=d.useState("zoom"),X=d.useRef(null),a=d.useRef(1),e=d.useRef("zoom"),l=d.useRef(null),T=d.useRef(null);d.useEffect(()=>{const r=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=r}},[]),d.useEffect(()=>{const r=u=>{u.key==="Escape"&&f()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[f]);const k=d.useCallback(r=>{v(r.activeIndex),a.current=1},[]),S=d.useCallback(r=>{const u=X.current;if(!u)return;r.preventDefault();const z=r.deltaY<0?oe:-oe,g=Math.min(se,Math.max(O,a.current+z));g!==a.current&&(a.current=g,g<=O?u.zoom.out():u.zoom.in(g))},[]),x=d.useCallback(r=>{e.current=r,b(u=>u===r?u:r)},[]),Y=d.useCallback(r=>{if(!m)return;if(a.current>O){clearTimeout(l.current),x("zoom");return}const u=T.current;(!u||Math.abs(r.clientX-u.x)>=re||Math.abs(r.clientY-u.y)>=re)&&(T.current={x:r.clientX,y:r.clientY},clearTimeout(l.current),x(r.clientXx("zoom"),ge))},[m,x]);d.useEffect(()=>()=>clearTimeout(l.current),[]);const j=d.useCallback((r,u)=>{if(!m)return;const z=e.current;if(z==="zoom"){r.zoom.toggle(u);return}const g=t.length-1;z==="prev"?r.slideTo(r.activeIndex>0?r.activeIndex-1:g):r.slideTo(r.activeIndex1&&p.jsxs("div",{className:"absolute top-[1.2rem] left-1/2 -translate-x-1/2 z-[10] font-fig-en text-[1.2rem] leading-[1.8rem] text-fig-text-secondary",children:[h+1," / ",t.length]}),p.jsx(de,{modules:[he],zoom:{maxRatio:se,minRatio:O,toggle:!m},initialSlide:M,slidesPerView:1,className:"w-full h-full",onSwiper:r=>{X.current=r},onSlideChange:k,onClick:j,onZoomChange:(r,u)=>{a.current=u},children:t.map((r,u)=>p.jsx(me,{className:"!flex items-center justify-center bg-white",children:p.jsx("div",{className:"swiper-zoom-container flex items-center justify-center w-full h-full",children:p.jsx("img",{src:r.url,alt:$("product:productImageAlt",{index:u+1}),className:"max-w-full max-h-full object-contain select-none",draggable:!1})})},u))})]}),document.body)}export{Xe as I,ze as u};