1if(!customElements.get("ilf-product-media-gallery")){class IlfProductMediaGallery extends HTMLElement{static observedAttributes=["data-ilf-selected-orifice"];effectParams(effect){switch(effect){case"fade":return{effect:"fade",spaceBetween:0,fadeEffect:{crossFade:!0}};case"cube":return{effect:"cube",spaceBetween:0,cubeEffect:{shadow:!1,slideShadows:!1}};case"coverflow":return{effect:"coverflow",spaceBetween:0,centeredSlides:!0,coverflowEffect:{rotate:30,slideShadows:!1}};case"carousel":return typeof EffectCarousel>"u"?{}:{modules:[EffectCarousel],effect:"carousel",centeredSlides:!0,slidesPerView:"auto",carouselEffect:{sideSlides:parseInt(this.dataset.carouselSideSlides,10)||2,opacityStep:(parseInt(this.dataset.carouselOpacityStep,10)||33)/100,scaleStep:(parseInt(this.dataset.carouselScaleStep,10)||20)/100}};default:return{}}}connectedCallback(){if(!this.initialised){if(typeof Swiper>"u"){window.addEventListener("load",()=>this.connectedCallback(),{once:!0});return}this.initialised=!0,this.stageEl=this.querySelector(".gallery-stage"),this.thumbsEl=this.querySelector(".gallery-thumbs"),this.counterCurrent=this.querySelector("[data-gallery-current]"),this.counterTotal=this.querySelector("[data-gallery-total]"),this.allSlides=[...this.stageEl.querySelectorAll(".gallery-slide")],this.allThumbs=[...this.thumbsEl.querySelectorAll(".gallery-thumb")],this.pendingFilterTimer=null,this.applyFilter(),this.initSwipers(this.mediaIndex(this.dataset.initialMedia)),this.classList.add("is-initialised"),this.onFullscreenOpen=this.onFullscreenOpen.bind(this),this.onFullscreenClose=this.onFullscreenClose.bind(this),this.onFullscreenKeydown=this.onFullscreenKeydown.bind(this),this.onFullscreenBackdropClick=this.onFullscreenBackdropClick.bind(this),this.zoomButton=this.querySelector("[data-gallery-fullscreen-open]"),this.closeButton=this.querySelector("[data-gallery-fullscreen-close]"),this.zoomButton?.addEventListener("click",this.onFullscreenOpen),this.closeButton?.addEventListener("click",this.onFullscreenClose),this.onDeferredMediaLoad=this.onDeferredMediaLoad.bind(this),this.addEventListener("ilf:deferred-media:load",this.onDeferredMediaLoad)}}disconnectedCallback(){clearTimeout(this.pendingFilterTimer),this.onFullscreenClose(),this.zoomButton?.removeEventListener("click",this.onFullscreenOpen),this.closeButton?.removeEventListener("click",this.onFullscreenClose),this.removeEventListener("ilf:deferred-media:load",this.onDeferredMediaLoad),this.mainSwiper?.destroy(!0,!1),this.thumbsSwiper?.destroy(!0,!1),this.initialised=!1}onDeferredMediaLoad(){this.pauseMedia()}onFullscreenOpen(){this.classList.contains("is-fullscreen")||(this.sizesUpgraded||(this.sizesUpgraded=!0,this.allSlides.forEach(sli
1de=>{slide.querySelectorAll("img[sizes]").forEach(img=>{img.sizes="100vw"})})),this.classList.add("is-fullscreen"),document.body.classList.add("ilf-product-gallery-open"),this.regionLabel=this.getAttribute("aria-label"),this.setAttribute("role","dialog"),this.setAttribute("aria-modal","true"),this.dataset.fullscreenLabel&&this.setAttribute("aria-label",this.dataset.fullscreenLabel),document.addEventListener("keydown",this.onFullscreenKeydown),this.addEventListener("click",this.onFullscreenBackdropClick),this.mainSwiper?.update(),this.mainSwiper?.zoom.enable(),this.closeButton?.focus())}onFullscreenClose(){this.classList.contains("is-fullscreen")&&(this.mainSwiper?.zoom.out(),this.mainSwiper?.zoom.disable(),this.classList.remove("is-fullscreen"),document.body.classList.remove("ilf-product-gallery-open"),this.setAttribute("role","region"),this.removeAttribute("aria-modal"),this.regionLabel&&this.setAttribute("aria-label",this.regionLabel),document.removeEventListener("keydown",this.onFullscreenKeydown),this.removeEventListener("click",this.onFullscreenBackdropClick),this.mainSwiper?.update(),this.thumbsSwiper?.update(),this.zoomButton?.focus())}onFullscreenKeydown(event){if(event.key==="Escape"){this.onFullscreenClose();return}if(event.key!=="Tab")return;const focusable=[...this.querySelectorAll('a[href], button:not([disabled]), input:not([type="hidden"]):not([disabled]), select:not([disabled]), textarea:not([disabled]), video, [tabindex]:not([tabindex^="-"])')].filter(el=>el.offsetParent!==null);if(!focusable.length)return;const first=focusable[0],last=focusable[focusable.length-1];this.contains(document.activeElement)?event.shiftKey&&document.activeElement===first?(event.preventDefault(),last.focus()):!event.shiftKey&&document.activeElement===last&&(event.preventDefault(),first.focus()):(event.preventDefault(),first.focus())}onFullscreenBackdropClick(event){event.target.closest("img, button, video, iframe, model-viewer, deferred-media, ilf-deferred-media, ilf-product-model, .gallery-counter")||this.mainSwiper&&this.mainSwiper.allowClick===!1||this.onFullscreenClose()}attributeChangedCallback(name,oldValue,newValue){!this.initialised||oldValue===newValue||(clearTimeout(this.pendingFilterTimer),this.pendingFilterTimer=setTimeout(()=>this.rebuild(),1200))}get selectedOrifice(){return this.getAttribute("data-ilf-selected-orifice")||""}matchesFilter(el){const tag=el.dataset.ilfMediaOrifice;return!tag||tag==="u"||!this.selectedOrifice||tag===this.selectedOrifice}applyFilter(){const stageWrapper=this.stageEl.querySelector(".swiper-wrapper"),thumbsWrapper=this.thumbsEl.querySelector(".swiper-wrapper");stageWrapper.replaceChildren(...this.allSlides.filter(slide=>this.matchesFilter(slide))),thumbsWrapper.replaceChildren(...this.allThumbs.filter(thumb=>this.matchesFilter(thumb))),this.counterTotal&&(this.counterTotal.textContent=String(stageWrapper.children.length))}rebuild(targetMediaId){clearTimeout(this.pendingFilterTimer),this.pendingFilterTimer=null;const currentMediaId=targetMediaId||this.mainSwiper?.slides?.[this.mainSwiper.activeIndex]?.dataset.mediaId;this.mainSwiper?.destroy(!0,!0),this.thumbsSwiper?.destroy(!0,!0),this.mainSwiper=null,this.thumbsSwiper=null,this.applyFilter(),this.initSwipers(this.mediaIndex(currentMediaId))}mediaIndex(mediaId){if(!mediaId)return 0;const slides=[...this.stageEl.querySelectorAll(".gallery-slide")];return Math.max(0,slides.findIndex(slide=>slide.dataset.mediaId===mediaId))}initSwipers(initialIndex=0){const reducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,loop=this.dataset.loop==="true",focusableElements="input, select, option, textarea, video, label";this.thumbsSwiper=new Swiper(this.thumbsEl,{slidesPerView:4,spaceBetween:10,watchSlidesProgress:!0,watchOverflow:!0,focusableElements,breakpoints:{750:{slidesPerView:5}},navigation:{prevEl:this.querySelector(".thumbs-nav--prev"),nextEl:this.querySelector(".thumbs-nav--next")}}),this.mainSwiper=new Swiper(this.stageEl,{slidesPerView:1,spaceBetween:10,speed:reducedMotion?0:350,loop,initialSlide:initialIndex,watchOverflow:!0,grabCursor:!0,focusableElements,navigation:{prevEl:this.querySelector(".gallery-nav--prev"),nextEl:this.querySelector(".gallery-nav--next")},thumbs:{swiper:this.thumbsSwiper},a11y:{enabled:!0},keyboard:{enabled:!0,onlyInViewport:!0},lazyPreloadPrevNext:2,zoom:{enabled:!1,maxRatio:3},on:{slideChange:()=>{this.updateCounter(),this.pauseMedia()}},...this.effectParams(this.dataset.effect)}),this.classList.contains("is-fullscreen")&&this.mainSwiper.zoom.enable(),this.updateCounter()}updateCounter(){if(!this.counterCurrent||!this.mainSwiper)return;const index=this.mainSwiper.realIndex??this.mainSwiper.activeIndex??0;this.counterCurrent.textContent=String(index+1)}pauseMedia(){this.querySelectorAll(".js-youtube").forEach(frame=>{frame.contentWindow?.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}),this.querySelectorAll(".js-vimeo").forEach(frame=>{frame.contentWindow?.postMessage('{"method":"pause"}',"*")}),this.querySelectorAll("video").forEach(video=>video.pause()),this.querySelectorAll("ilf-product-model, product-model").forEach(model=>{model.modelViewerUI?.pause()})}setActiveMedia(mediaId){this.initialised&&(this.pendingFilterTimer?this.rebuild(mediaId):this.slideToMedia(mediaId))}slideToMedia(mediaId,speed){if(!this.mainSwiper)return;const slide=[...this.stageEl.querySelectorAll(".gallery-slide")].find(el=>el.dataset.mediaId===mediaId);if(slide)if(this.mainSwiper.params.loop){const realIndex=parseInt(slide.dataset.swiperSlideIndex??"0",10);this.mainSwiper.slideToLoop(realIndex,speed)}else this.mainSwiper.slideTo(this.mediaIndex(mediaId),speed)}}customElements.define("ilf-product-media-gallery",IlfProductMediaGallery)} 2//# sourceMappingURL=/cdn/shop/t/26/assets/ilf-product-media-gallery.js.map?v=163994978662796108931790026881
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.