1let activeOverlay=null;const TAP_MOVEMENT_THRESHOLD=8;let removeOutsideInteractionListener=null;function lockPageScroll(){document.documentElement.classList.add("product-gallery-zoom-locked"),document.body.classList.add("product-gallery-zoom-locked")}function unlockPageScroll(){document.documentElement.classList.remove("product-gallery-zoom-locked"),document.body.classList.remove("product-gallery-zoom-locked")}function getPointerPosition(event,fallbackRect){return event?.changedTouches?.length?{clientX:event.changedTouches[0].clientX,clientY:event.changedTouches[0].clientY}:event?.touches?.length?{clientX:event.touches[0].clientX,clientY:event.touches[0].clientY}:typeof event?.clientX=="number"&&typeof event?.clientY=="number"?{clientX:event.clientX,clientY:event.clientY}:{clientX:fallbackRect.left+fallbackRect.width/2,clientY:fallbackRect.top+fallbackRect.height/2}}function toggleLoadingSpinner(image,isVisible){const loadingSpinner=image.parentElement.parentElement.querySelector(".loading__spinner");loadingSpinner&&loadingSpinner.classList.toggle("hidden",!isVisible)}function closeActiveOverlay(){activeOverlay&&(activeOverlay.opener?.classList.remove("is-zoom-active"),activeOverlay.image.style.opacity="100%",removeOutsideInteractionListener&&(removeOutsideInteractionListener(),removeOutsideInteractionListener=null),unlockPageScroll(),activeOverlay.remove(),activeOverlay=null)}function createOverlay(image,opener,zoomRatio){const overlay=document.createElement("div"),source=image.currentSrc||image.src;return overlay.setAttribute("class","image-magnify-full-size"),overlay.setAttribute("aria-hidden","true"),overlay.style.backgroundImage=`url('${source}')`,overlay.style.backgroundColor="var(--gradient-background)",overlay.style.backgroundRepeat="no-repeat",overlay.style.backgroundSize=`${image.naturalWidth*zoomRatio}px`,overlay.style.zIndex="2",overlay.image=image,overlay.opener=opener,overlay}function moveOverlay(image,overlay,event,zoomRatio){const rect=image.getBoundingClientRect(),pointer=getPointerPosition(event,rect),x=Math.min(Math.max(pointer.clientX-rect.left,0),rect.width),y=Math.min(Math.max(pointer.clientY-rect.top,0),rect.height),xPercent=`${x/rect.width*100}%`,yPercent=`${y/rect.height*100}%`;overlay.style.backgroundPosition=`${xPercent} ${yPercent}`,overlay.style.backgroundSize=`${image.naturalWidth*zoomRatio}px`}function openMagnify(image,opener,event,zoomRatio){closeActiveOverlay();const overlay=createOverlay(image,opener,zoomRatio),sourceLoader=new Image;sourceLoader.src=image.currentSrc||image.src,image.style.opacity="50%",opener?.classList.add("is-zoom-active"),toggleLoadingSpinner(image,!0),window.matchMedia("(max-width: 749px)").matches&&lockPageScroll(),sourceLoader.onload=()=>{toggleLoadingSpinner(image,!1),image.parentElement.insertBefore(overlay,image),image.style.opacity="100%",activeOverlay=overlay,moveOverlay(image,overlay,event,zoomRatio);const handleOutsideInteraction=interactionEvent=>{!activeOverlay||!activeOverlay.opener||activeOverlay.opener.contains(interactionEvent.target)||closeActiveOverlay()};document.addEventListener("pointerdown",handleOutsideInteraction,!0),removeOutsideInteractionListener=()=>{document.removeEventListener("pointerdown",handleOutsideInteraction,!0)};let interactionStart=null;const startInteraction=interactionEvent=>{interactionStart=getPointerPosition(interactionEvent,overlay.getBoundingClientRect())},registerMove=interactionEvent=>{moveOverlay(image,overlay,interactionEvent,zoomRatio)},endInteraction=interactionEvent=>{if(!window.matchMedia("(max-width: 749px)").matches)return;if(!interactionStart){closeActiveOverlay();return}const currentPoint=getPointerPosition(interactionEvent,overlay.getBoundingClientRect()),deltaX=currentPoint.clientX-interactionStart.clientX,deltaY=currentPoint.clientY-interactionStart.clientY;Math.hypot(deltaX,deltaY)<=TAP_MOVEMENT_THRESHOLD&&closeActiveOverlay(),interactionStart=null};overlay.addEventListener("pointermove",pointerEvent=>{window.matchMedia("(max-width: 749px)").matches&&pointerEvent.preventDefault(),registerMove(pointerEvent)}),overlay.addEventListener("touchmove",touchEvent=>{touchEvent.preventDefault(),registerMove(touchEvent)},{passive:!1}),overlay.addEventListener("mouseleave",()=>{window.matchMedia("(min-width: 750px)").matches&&closeActiveOverlay()}),overlay.addEventListener("pointerdown",pointerEvent=>{window.matchMedia("(max-width: 749px)").matches&&startInteraction(pointerEvent)}),overlay.addEventListener("touchstart",touchEvent=>{startInteraction(touchEvent)}),overlay.addEventListener("click",()=>{window.matchMedia("(max-width: 749px)").matches||closeActiveOverlay()}),overlay.addEventListener("pointerup",pointerEvent=>{endInteraction(pointerEvent)}),overlay.addEventListener("touchend",touchEvent=>{endInteraction(touchEvent)})}}function enableZoomOnHover(zoomRatio){const mobileMediaQuery=window.matchMedia("(max-width: 749px)");document.querySelectorAll(".image-magnify-hover").forEach(image=>{const opener=image.closest(".product__modal-opener--image"),zoomButton=opener?.querySelector(".product__media-toggle.product__media-zoom-hover"),zoomIcon=opener?.querySelector(".product__media-icon--hover");image.addEventListener("click",event=>{mobileMediaQuery.matches||openMagnify(image,opener,event,zoomRatio)}),zoomIcon&&zoomIcon.addEventListener("click",event=>{if(mobileMediaQuery.matches){if(event.preventDefault(),event.stopImmediatePropagation(),event.stopPropagation(),activeOverlay&&activeOverlay.image===image){closeActiveOverlay();return}openMagnify(image,opener,event,zoomRatio)}},!0),zoomButton&&zoomButton.addEventListener("click",event=>{if(mobileMediaQuery.matches){if(event.preventDefault(),event.stopImmediatePropagation(),activeOverlay&&activeOverlay.image===image){closeActiveOverlay();return}openMagnify(image,opener,event,zoomRatio)}},!0)})}enableZoomOnHover(2); 2//# sourceMappingURL=/cdn/shop/t/28/assets/magnify.js.map?v=85754426826003483251789147386
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.