PageSourceSearch

https://titaitalia.com/cdn/shop/t/22/assets/media-gallery.js?v=114520641455035579891773692465

js titaitalia.com collected 2026-10-02 17:57:58 UTC 11,304 bytes, 2 lines download raw bytes

1if(!customElements.get("media-gallery")){class ProductThumbnailVerticalSliderComponent extends SliderComponent{constructor(){super(),this.isDragging=!1,this.dragMoved=!1,this._freezeScrollHandlers=!1,this._suppressProgrammaticUntil=0}initPages(){if(this.isMobile=window.innerWidth<750,this.isMobile)super.initPages();else{if(this.sliderItemsToShow=Array.from(this.sliderItems).filter(el=>el.clientHeight>0),this.sliderItemsToShow.length<2)return;this.sliderItemOffset=this.sliderItemsToShow[1].offsetTop-this.sliderItemsToShow[0].offsetTop,this.slidesPerPage=Math.floor((this.slider.clientHeight-this.sliderItemsToShow[0].offsetTop)/this.sliderItemOffset),this.totalPages=this.sliderItemsToShow.length-this.slidesPerPage+1,this.update()}}updateFromScroll(){if(!this.sliderItemOffset||!this.totalPages)return;const newPage=Math.round(this.slider.scrollTop/this.sliderItemOffset)+1;Math.max(1,Math.min(newPage,this.totalPages))!==this.currentPage&&this.update()}update(){if(!this._freezeScrollHandlers)if(this.isMobile)super.update();else{const prevPage=this.currentPage;if(this.currentPage=Math.round(this.slider.scrollTop/this.sliderItemOffset)+1,this.currentPageElement&&this.pageTotalElement&&(this.currentPageElement.textContent=this.currentPage,this.pageTotalElement.textContent=this.totalPages),this.currentPage!==prevPage&&this.dispatchEvent(new CustomEvent("slideChanged",{detail:{currentPage:this.currentPage,currentElement:this.sliderItemsToShow[this.currentPage-1]}})),this.enableSliderLooping)return;this.isSlideVisible(this.sliderItemsToShow[0])&&this.slider.scrollTop<3?this.prevButton.setAttribute("disabled","disabled"):this.prevButton.removeAttribute("disabled"),this.isSlideVisible(this.sliderItemsToShow.at(-1))?this.nextButton.setAttribute("disabled","disabled"):this.nextButton.removeAttribute("disabled")}}isSlideVisible(element,offset=0){if(this.isMobile)return super.isSlideVisible(element,offset);const lastVisible=this.slider.clientHeight+this.slider.scrollTop-offset;return element.offsetTop+element.clientHeight<=lastVisible&&element.offsetTop>=this.slider.scrollTop}onButtonClick(event){if(this.isMobile)super.onButtonClick(event);else{event.preventDefault();const step=event.currentTarget.dataset.step||1,delta=event.currentTarget.name==="next"?step*this.sliderItemOffset:-step*this.sliderItemOffset;this.slider.scrollTo({top:this.slider.scrollTop+delta,behavior:"smooth"})}}enableMouseDrag(){super.enableMouseDrag(),this.slider.querySelectorAll("button").forEach(el=>el.setAttribute("draggable","false"))}onDragStart(e){e.button===0&&(this.isDragging=!0,this.dragMoved=!1,this.startY=e.pageY,this.scrollStart=this.slider.scrollTop,this.slider.classList.add("is-dragging"),this._suppressProgrammaticUntil=Number.POSITIVE_INFINITY)}onDragMove(e){if(!this.isDragging)return;const deltaY=e.pageY-this.startY;Math.abs(deltaY)>5&&(this.dragMoved||(this.dragMoved=!0,this.slider.querySelectorAll("a").forEach(a=>a.style.pointerEvents="none")),e.preventDefault(),this.slider.scrollTop=this.scrollStart-deltaY)}onDragEnd(){if(!this.isDragging)return;if(this.isDragging=!1,this.slider.querySelectorAll("a").forEach(a=>a.style.pointerEvents=""),!this.dragMoved){this._suppressProgrammaticUntil=performance.now()+200;return}const slider=this.slider,maxScroll=slider.scrollHeight-slider.clientHeight;let finalScroll=slider.scrollTop;const distanceToBottom=maxScroll-finalScroll,SNAP_THRESHOLD=this.sliderItemOffset?this.sliderItemOffset*.6:30;distanceToBottom>0&&distanceToBottom<SNAP_THRESHOLD&&(finalScroll=maxScroll),this._freezeScrollHandlers=!0,this.animateScrollToVertical(finalScroll,250,"easeOutQuad",()=>{this._freezeScrollHandlers=!1,this._suppressProgrammaticUntil=performance.now()+200,this.slider.classList.remove("is-dragging")})}animateScrollToVertical(target,duration=400,easing="easeOutQuad",onComplete){const start=this.slider.scrollTop,distance=target-start,startTime=performance.now(),easingFunctions={easeOutQuad:t=>t*(2-t),easeOutCubic:t=>1-Math.pow(1-t,3),easeOutQuart:t=>1-Math.pow(1-t,4)},ease=easingFunctions[easing]||easingFunctions.easeOutCubic,step=now=>{const elapsed=now-startTime,progress=Math.min(elapsed/duration,1),eased=ease(progress);this.slider.scrollTop=start+distance*eased,elapsed<duration?requestAnimationFrame(step):(this.slider.scrollTop=target,onComplete&&onComplete())};requestAnimationFrame(step)}}customElements.define("product-thumbnail-vertical-slider-component",ProductThumbn
1ailVerticalSliderComponent),customElements.define("media-gallery",class extends HTMLElement{constructor(){if(super(),this.elements={liveRegion:this.querySelector('[id^="GalleryStatus"]'),viewer:this.querySelector('[id^="GalleryViewer"]'),thumbnails:this.querySelector('[id^="GalleryThumbnails"]')},this.mql=window.matchMedia("(min-width: 750px)"),this.dataset.disableLightbox||loadPhotoswipeLib(()=>{this.lightbox=new PhotoSwipeLightbox({gallery:this,children:".product__modal-opener--image",getClickedIndexFn:event=>{const opener=event.target?.closest?.(".product__modal-opener--image");return opener?this.getVisibleLightboxOpeners().findIndex(element=>element===opener):-1},pswpModule:PhotoSwipe,tapAction:(pt,evt)=>{evt.target.classList.contains("pswp__img")?this.lightbox.pswp.next():this.lightbox.pswp.close()}}),this.lightbox.addFilter("numItems",(numItems,dataSource)=>dataSource?.gallery!==this?numItems:this.getVisibleLightboxOpeners().length),this.lightbox.addFilter("itemData",(itemData,index)=>{const opener=this.getVisibleLightboxOpeners()[index];return opener?this.buildLightboxItemData(opener,itemData):itemData}),this.lightbox.init()}),!this.elements.thumbnails)return;this.elements.viewer.addEventListener("slideChanged",debounce(this.onSlideChanged.bind(this),500)),this.bindThumbnailButtons(),(this.dataset.desktopLayout||"").includes("thumbnail")&&this.mql.matches&&this.removeListSemantic()}connectedCallback(){updateProductMediaStatus(this)}disconnectedCallback(){this.lightbox&&this.lightbox.destroy()}onSlideChanged(event){const thumbnail=this.elements.thumbnails.querySelector(`[data-target="${event.detail.currentElement.dataset.mediaId}"]`);this.setActiveThumbnail(thumbnail)}bindThumbnailButtons(){this.elements.thumbnails&&this.elements.thumbnails.querySelectorAll("[data-target]").forEach(mediaToSwitch=>{const button=mediaToSwitch.querySelector("button");button&&button.addEventListener("click",this.setActiveMedia.bind(this,mediaToSwitch.dataset.target,!1))})}syncFromHtml(sourceGallery){if(!sourceGallery)return;const sourceViewerList=sourceGallery.querySelector('[id^="Slider-Gallery"]'),destinationViewerList=this.elements.viewer?.querySelector('[id^="Slider-Gallery"]');sourceViewerList&&destinationViewerList&&(destinationViewerList.innerHTML=sourceViewerList.innerHTML);const sourceThumbnailList=sourceGallery.querySelector('[id^="Slider-Thumbnails"]'),destinationThumbnailList=this.elements.thumbnails?.querySelector('[id^="Slider-Thumbnails"]');sourceThumbnailList&&destinationThumbnailList&&(destinationThumbnailList.innerHTML=sourceThumbnailList.innerHTML),this.elements.viewer?.resetPages?.(),this.elements.thumbnails?.resetPages?.(),this.bindThumbnailButtons(),updateProductMediaStatus(this),(this.dataset.desktopLayout||"").includes("thumbnail")&&this.mql.matches&&this.removeListSemantic()}setActiveMedia(mediaId,prepend,allowScrollIntoView=!0){const activeMedia=this.elements.viewer.querySelector(`[data-media-id="${mediaId}"]`)||this.elements.viewer.querySelector("[data-media-id]");if(!activeMedia)return;if(this.elements.viewer.querySelectorAll("[data-media-id]").forEach(element=>{element.classList.remove("is-active")}),activeMedia.classList.add("is-active"),prepend){if(activeMedia.parentElement.prepend(activeMedia),this.elements.thumbnails){const activeThumbnail2=this.elements.thumbnails.querySelector(`[data-target="${mediaId}"]`);if(!activeThumbnail2)return;activeThumbnail2.parentElement.prepend(activeThumbnail2)}this.elements.viewer.slider&&this.elements.viewer._suspendUpdates(()=>{this.elements.viewer.resetPages(),this.elements.viewer.slider.scrollTo({left:0})})}if(this.preventStickyHeader(),window.setTimeout(()=>{this.elements.thumbnails&&activeMedia.parentElement.scrollTo({left:activeMedia.offsetLeft}),allowScrollIntoView&&(this.dataset.desktopLayout==="stacked"&&window.innerWidth>=750||this.dataset.scrollUpMobile&&window.innerWidth<750)&&activeMedia.scrollIntoView({behavior:"smooth"})}),!this.elements.thumbnails)return;const activeThumbnail=this.elements.thumbnails.querySelector(`[data-target="${mediaId}"]`);
1this.setActiveThumbnail(activeThumbnail),this.announceLiveRegion(activeMedia,activeThumbnail.dataset.mediaPosition)}setActiveThumbnail(thumbnail){!this.elements.thumbnails||!thumbnail||(this.elements.thumbnails.querySelectorAll("button").forEach(element=>element.removeAttribute("aria-current")),thumbnail.querySelector("button").setAttribute("aria-current",!0),!this.elements.thumbnails.isSlideVisible(thumbnail)&&(this.elements.thumbnails.slider.classList.contains("thumbnail-list--vertical")&&window.innerWidth>=750?this.elements.thumbnails.slider.scrollTo({top:thumbnail.offsetTop}):this.elements.thumbnails.slider.scrollTo({left:thumbnail.offsetLeft})))}announceLiveRegion(activeItem,position){const image=activeItem.querySelector(".product__modal-opener--image img");image&&(image.onload=()=>{this.elements.liveRegion.setAttribute("aria-hidden",!1),this.elements.liveRegion.innerHTML=window.accessibilityStrings.imageAvailable.replace("[index]",position),setTimeout(()=>{this.elements.liveRegion.setAttribute("aria-hidden",!0)},2e3),addLoadedImageStatus(image)},image.src=image.src)}playActiveMedia(activeItem){window.pauseAllMedia(document,!1);const deferredMedia=activeItem.querySelector(".deferred-media");deferredMedia&&deferredMedia.loadContent(!1,!0)}preventStickyHeader(){this.stickyHeader=this.stickyHeader||document.querySelector("sticky-header"),this.stickyHeader&&this.stickyHeader.dispatchEvent(new Event("preventHeaderReveal"))}removeListSemantic(){this.elements.viewer.slider&&(this.elements.viewer.slider.setAttribute("role","presentation"),this.elements.viewer.sliderItems.forEach(sli
1de=>slide.setAttribute("role","presentation")))}getVisibleLightboxOpeners(){return Array.from(this.querySelectorAll(".product__modal-opener--image")).filter(element=>this.isLightboxOpenerVisible(element))}isLightboxOpenerVisible(element){if(!element||element.hidden||element.closest("[hidden]"))return!1;const styles=window.getComputedStyle(element);return styles.display==="none"||styles.visibility==="hidden"?!1:element.getClientRects().length>0}buildLightboxItemData(opener,fallbackData={}){const width=parseInt(opener.dataset.pswpWidth||"",10)||0,height=parseInt(opener.dataset.pswpHeight||"",10)||0,image=opener.querySelector("img");return{...fallbackData,element:opener,src:opener.dataset.pswpSrc||opener.href||fallbackData.src,srcset:opener.dataset.pswpSrcset||fallbackData.srcset,width,height,w:width,h:height,type:opener.dataset.pswpType||fallbackData.type,msrc:image?.currentSrc||image?.src||fallbackData.msrc,alt:image?.getAttribute("alt")??fallbackData.alt??"",thumbCropped:!!(opener.dataset.pswpCropped||opener.dataset.cropped||fallbackData.thumbCropped)}}})}
2//# sourceMappingURL=/cdn/shop/t/22/assets/media-gallery.js.map?v=114520641455035579891773692465

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.