PageSourceSearch

https://www.juliska.com/cdn/shop/t/722/assets/lookbook-card-slider.js?v=25836420975649514241789995314

js juliska.com collected 2026-09-25 19:12:23 UTC 7,328 bytes, 2 lines download raw bytes

1customElements.get("lookbook-card-slider")||customElements.define("lookbook-card-slider",class extends HTMLElement{constructor(){super()}connectedCallback(){this.sliderWrapper=this.querySelector(".swiper"),this.sliderWrapper&&(this.lookbookIcons=this.querySelectorAll("lookbook-icon"),this.productCards=this.querySelectorAll(".product-card"),this.hintEl=this.querySelector("[data-hotspot-hint]"),this.sliderInstance=!1,this._lastActivatedIcon=null,this.initSlider(),this._onMouseOver=this.onMouseOver.bind(this),this._onMouseLeave=this.onMouseLeave.bind(this),this._onFocus=this.onFocus.bind(this),this._onBlur=this.onBlur.bind(this),this._onKeydown=this.onKeydown.bind(this),this._onSliderKeydown=this.onSliderKeydown.bind(this),Array.from(this.lookbookIcons).forEach(icon=>{icon.addEventListener("mouseover",this._onMouseOver),icon.addEventListener("mouseleave",this._onMouseLeave),icon.addEventListener("focus",this._onFocus),icon.addEventListener("blur",this._onBlur),icon.addEventListener("keydown",this._onKeydown)}),this.sliderArea=this.querySelector(".col-lookbook-slider"),this.sliderArea&&this.sliderArea.addEventListener("keydown",this._onSliderKeydown))}
1disconnectedCallback(){Array.from(this.lookbookIcons).forEach(icon=>{icon.removeEventListener("mouseover",this._onMouseOver),icon.removeEventListener("mouseleave",this._onMouseLeave),icon.removeEventListener("focus",this._onFocus),icon.removeEventListener("blur",this._onBlur),icon.removeEventListener("keydown",this._onKeydown)}),this.sliderArea&&this.sliderArea.removeEventListener("keydown",this._onSliderKeydown)}initSlider(){const items=parseInt(this.dataset.items),columnGap=FoxTheme.utils.getGridColumnGap(this.sliderWrapper);this.sliderOptions={init:!1,slidesPerView:1,spaceBetween:columnGap.desktop,breakpoints:{768:{slidesPerView:items}},navigation:{nextEl:this.querySelector(".swiper-button-next"),prevEl:this.querySelector(".swiper-button-prev")},pagination:{el:this.querySelector(".swiper-pagination"),clickable:!0,renderBullet:function(index,className){return`<button class="${className}"></button>`}},speed:500,loop:!0,threshold:2,on:{afterInit:swiper=>{this.waitForSwiperSlides(swiper).then(()=>{this.onSlideAfterInit(swiper)})},realIndexChange:swiper=>{this.waitForSwiperSlides(swiper).then(()=>{this.onSlideChange(swiper)})}}},this.sliderCounter=this.querySelector(".swiper-pagination-counter"),this.sliderWrapper.querySelector(".swiper-wrapper").classList.remove("f-grid"),this.sliderInstance=new window.FoxTheme.Carousel(this.sliderWrapper,this.sliderOptions),this.sliderInstance.init(),this.sliderInstance.slider.init(),this.fixQuickviewDuplicate(),this.calcNavButtonsPosition(),window.addEventListener("resize",FoxTheme.utils.debounce(()=>{this.calcNavButtonsPosition()},100))}waitForSwiperSlides(swiper,maxAttempts=50,interval=100){return new Promise((resolve,reject)=>{let attempts=0;const checkSlides=()=>{swiper.slides&&swiper.slides.length>0?resolve(swiper):attempts>=maxAttempts?reject(new Error("Swiper slides not available after maximum attempts")):(attempts++,setTimeout(checkSlides,interval))};checkSlides()})}calcNavButtonsPosition(){if(this.dataset.calcButtonPosition!=="true")return;const firstMedia=this.querySelector(".product-card__image-wrapper");firstMedia&&firstMedia.clientHeight>0&&this.style.setProperty("--swiper-navigation-top-offset",parseInt(firstMedia.clientHeight)/2+"px")}fixQuickviewDuplicate(){let modalIds=[];Array.from(this.querySelectorAll("quick-view-modal")).forEach(modal=>{const modalID=modal.getAttribute("id");modalIds.includes(modalID)?modal.remove():modalIds.push(modalID)})}onSlideAfterInit(swiper){const{realIndex}=swiper;if(this.sliderCounter&&swiper.pagination.bullets&&(this.sliderCounter.querySelector(".swiper-pagination-current").innerText=realIndex+1,this.sliderCounter.querySelector(".swiper-pagination-total").innerText=swiper.pagination.bullets.length),swiper.pagination&&swiper.pagination.bullets.length){const total=swiper.pagination.bullets.length;swiper.pagination.bullets.forEach((bullet,i)=>{bullet.setAttribute("aria-label",`Go to slide ${i+1} of ${total}`),i===swiper.realIndex&&bullet.setAttribute("aria-current","true")})}this.detectVisibleSlides(swiper)}onSlideChange(swiper){const{slides,realIndex}=swiper;this.detectVisibleSlides(swiper),slides[realIndex]&&(Array.from(this.lookbookIcons).forEac
1h(icon=>icon.classList.remove("is-active")),this.lookbookIcons[realIndex]&&this.lookbookIcons[realIndex].classList.add("is-active")),this.sliderCounter&&swiper.pagination.bullets&&(this.sliderCounter.querySelector(".swiper-pagination-current").innerText=realIndex+1),swiper.pagination&&swiper.pagination.bullets.length&&swiper.pagination.bullets.forEach((bullet,i)=>{i===realIndex?bullet.setAttribute("aria-current","true"):bullet.removeAttribute("aria-current")})}detectVisibleSlides(swiper){if(!swiper.slides||swiper.slides.length===0){console.warn("Swiper slides not available yet");return}const{activeIndex,params:{slidesPerView}}=swiper;this.activeIndexs=[];for(let i=0;i<slidesPerView;i++){const slideIndex=(activeIndex+i)%swiper.slides.length,index=Number(swiper.slides[slideIndex].dataset.index);this.activeIndexs.push(index)}this.animateVisiblePins()}animateVisiblePins(){this.resetAnimatePins(),this.startAnimatePins()}resetAnimatePins(){Array.from(this.lookbookIcons).forEach(icon=>icon.classList.remove("is-visible"))}startAnimatePins(){Array.from(this.activeIndexs).forEach(index=>{this.lookbookIcons[index]&&this.lookbookIcons[index].classList.add("is-visible")})}activateHotspot(icon,moveFocus){const index=Number(icon.dataset.index);if(icon.classList.add("is-active"),typeof this.sliderInstance.slider=="object"&&(this.sliderOptions.loop?this.sliderInstance.slider.slideToLoop(index,this.sliderOptions.speed):this.sliderInstance.slider.slideTo(index,this.sliderOptions.speed),this.classList.add("is-hovering"),this.resetAnimatePins(),moveFocus)){this._lastActivatedIcon=icon;const slide=this.querySelector(`.swiper-slide[data-index="${index}"]`);if(slide){const focusTarget=slide.querySelector('a, button, [tabindex="0"]');focusTarget&&setTimeout(()=>{this.hintEl&&focusTarget.setAttribute("aria-describedby",this.hintEl.id),focusTarget.focus(),this._focusedSlideTarget=focusTarget},this.sliderOptions.speed)}}}clearSlideHint(){this._focusedSlideTarget&&(this._focusedSlideTarget.removeAttribute("aria-describedby"),this._focusedSlideTarget=null)}
1deactivateHotspots(){Array.from(this.productCards).forEach(card=>card.classList.remove("is-active")),Array.from(this.lookbookIcons).forEach(icon=>icon.classList.remove("is-active")),this.classList.remove("is-hovering"),this.startAnimatePins()}onMouseOver(event){this.activateHotspot(event.currentTarget)}onMouseLeave(event){this.deactivateHotspots()}onFocus(event){event.currentTarget.classList.add("is-active")}onBlur(event){event.currentTarget.classList.remove("is-active")}onKeydown(event){(event.key==="Enter"||event.key===" ")&&(event.preventDefault(),this.activateHotspot(event.currentTarget,!0))}onSliderKeydown(event){event.key==="Escape"&&this._lastActivatedIcon&&(event.preventDefault(),this.clearSlideHint(),this._lastActivatedIcon.focus(),this._lastActivatedIcon=null,this.deactivateHotspots())}});
2//# sourceMappingURL=/cdn/shop/t/722/assets/lookbook-card-slider.js.map?v=25836420975649514241789995314

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.