PageSourceSearch

https://www.gtglass.com/cdn/shop/t/151/assets/product-lightbox.js?v=154312926114188327621786632401

js gtglass.com collected 2026-10-06 18:51:55 UTC 6,326 bytes, 2 lines download raw bytes

1(function(){"use strict";var lightbox=document.getElementById("ProductLightbox");if(!lightbox)return;var imageEl=lightbox.querySelector(".product-lightbox__image"),videoEl=lightbox.querySelector(".product-lightbox__video"),imageWrap=lightbox.querySelector(".product-lightbox__image-wrap"),counterEl=lightbox.querySelector(".product-lightbox__counter"),closeBtn=lightbox.querySelector(".product-lightbox__close"),prevBtn=lightbox.querySelector(".product-lightbox__nav--prev"),nextBtn=lightbox.querySelector(".product-lightbox__nav--next"),slides=[],preloaded={},currentIndex=0,isOpen=!1,isZoomed=!1;function extractYouTubeId(url){if(!url)return null;var match=url.match(/youtu\.be\/([a-zA-Z0-9_-]+)/)||url.match(/youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)/)||url.match(/youtube\.com\/embed\/([a-zA-Z0-9_-]+)/);return match?match[1]:null}function collectSlides(){slides=[],preloaded={};var desktopSlider=document.querySelector(".desktopsloder .product-slider-for"),mobileSlider=document.querySelector(".mobileslider .product-slider-for"),slider=desktopSlider||mobileSlider;if(slider){var slideImgs=slider.querySelectorAll(".slick-slide:not(.slick-cloned) .product-single__photo img, .slick-slide:not(.slick-cloned) > img");slideImgs.length===0&&(slideImgs=slider.querySelectorAll(".product-single__photo img")),slideImgs.forEach(function(img){var src=img.getAttribute("src")||"",alt=img.getAttribute("alt")||"",videoId=extractYouTubeId(alt);if(videoId)slides.push({type:"video",videoId:videoId,src:src,alt:alt});else{var highResSrc=src.replace(/(_\d+x\d+|_\d+x)/,"_1024x1024");highResSrc.match(/_1024x1024/)||(highResSrc=src),slides.push({type:"image",src:highResSrc,alt:alt})}})}}function preloadAllImages(){slides.forEach(function(slideData){if(slideData.type==="image"&&!preloaded[slideData.src]){var img=new Image;img.src=slideData.src,preloaded[slideData.src]=img}})}function getCurrentSlideIndex(){try{var desktopSlider=jQuery(".desktopsloder .product-slider-for"),mobileSlider=jQuery(".mobileslider .product-slider-for");if(window.innerWidth>=768&&desktopSlider.length&&desktopSlider.hasClass("slick-initialized"))return desktopSlider.slick("slickCurrentSlide")||0;if(mobileSlider.length&&mobileSlider.hasClass("slick-initialized"))return mobileSlider.slick("slickCurrentSlide")||0}catch(e){}return 0}function updateCounter(){counterEl&&slides.length>0&&(counterEl.textContent=currentIndex+1+"/"+slides.length)}function updateNavButtons(){prevBtn&&(prevBtn.disabled=currentIndex<=0),nextBtn&&(nextBtn.disabled=currentIndex>=slides.length-1)}function unzoom(){isZoomed&&(isZoomed=!1,imageEl.classList.remove("is-zoomed"),imageWrap.classList.remove("is-zoomed-wrap"))}function stopVideo(){videoEl&&(videoEl.src="")}function showSlide(index){if(!(index<0||index>=slides.length)){stopVideo(),currentIndex=index,unzoom();var slide=slides[index];slide.type==="video"?(imageEl.style.display="none",videoEl.style.display="block",videoEl.src="https://www.youtube.com/embed/"+slide.videoId+"?autoplay=1&rel=0&modestbranding=1",imageWrap.classList.add("is-video-wrap")):(videoEl.style.display="none",imageEl.style.display="",imageEl.src=slide.src,imageEl.alt=slide.alt,imageWrap.classList.remove("is-video-wrap")),updateCounter(),updateNavButtons()}}function openLightbox(){if(collectSlides(),slides.length!==0){preloadAllImages();var idx=getCurrentSlideIndex();idx>=slides.length&&(idx=0),document.body.classList.add("lightbox-open"),isOpen=!0,showSlide(idx),lightbox.classList.add("is-active")}}function closeLightbox(){stopVideo(),lightbox.classList.remove("is-active"),document.body.classList.remove("lightbox-open"),unzoom(),isOpen=!1}function goNext(){currentIndex<slides.length-1&&showSlide(currentIndex+1)}function goPrev(){currentIndex>0&&showSlide(currentIndex-1)}function toggleZoom(){slides[currentIndex]&&slides[currentIndex].type==="video"||(isZoomed?unzoom():(isZoomed=!0,imageEl.classList.add("is-zoomed"),imageWrap.classList.add("is-zoomed-wrap")))}document.addEventListener("click",function(e){var btn=e.target.closest(".product-gallery__zoom-btn");btn&&(e.preventDefault(),e.stopPropagation(),openLightbox())}),document.addEventListener("click",function(e){var activeSlide=e.target.closest(".product-single__photo.slick-slide.slick-current.slick-active");activeSlide&&(e.preventDefault(),e.stopPropagation(),openLightbox())}),closeBtn&&closeBtn.addEventListener("click",function(e){e.preventDefault(),closeLightbox()}),lightbox.addEventListener("click",function(e){(e.target===lightbox||e.target.classList.contains("product-lightbox__image-wrap"))&&closeLightbox()}),prevBtn&&prevBtn.addEventListener("click",function(e){e.stopPropagation(),goPrev()}),nextBtn&&nextBtn.addEventListener("click",function(e){e.stopPropagation(),goNext()}),imageEl&&(imageEl.addEventListener("dblclick",function(e){e.preventDefault(),e.stopPropagation(),toggleZoom()}),imageEl.addEventListener("click",function(e){e.stopPropagation()})),videoEl&&videoEl.addEventListener("click",function(e){e.stopPropagation()});var lastTapTime=0,lastTapX=0,lastTapY=0,DOUBLE_TAP_DELAY=300,DOUBLE_TAP_RADIUS=30;imageEl&&imageEl.addEventListener("touchend",function(e){if(isOpen){var now=Date.now(),touch=e.changedTouches[0],tapX=touch.clientX,tapY=touch.clientY,timeDiff=now-lastTapTime,distX=Math.abs(tapX-lastTapX),distY=Math.abs(tapY-lastTapY);timeDiff<DOUBLE_TAP_DELAY&&distX<DOUBLE_TAP_RADIUS&&distY<DOUBLE_TAP_RADIUS?(e.preventDefault(),toggleZoom(),lastTapTime=0):(lastTapTime=now,lastTapX=tapX,lastTapY=tapY)}}),document.addEventListener("keydown",function(e){if(isOpen)switch(e.key){case"Escape":closeLightbox();break;case"ArrowLeft":goPrev();break;case"ArrowRight":goNext();break}});var touchStartX=0,touchStartY=0,isSwiping=!1;lightbox.addEventListener("touchstart",function(e){isZoomed||(touchStartX=e.changedTouches[0].screenX,touchStartY=e.changedTouches[0].screenY,isSwiping=!0)},{passive:!0}),lightbox.addEventListener("touchend",function(e){if(!(!isSwiping||isZoomed)){isSwiping=!1;var diffX=touchStartX-e.changedTouches[0].screenX,diffY=Math.abs(touchStartY-e.changedTouches[0].screenY);Math.abs(diffX)>50&&diffY<100&&(diffX>0?goNext():goPrev())}},{passive:!0}),lightbox.addEventListener("touchmove",function(e){},{passive:!0})})();
2//# sourceMappingURL=/cdn/shop/t/151/assets/product-lightbox.js.map?v=154312926114188327621786632401

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.