/*! Copyright (c) Safe As Milk. All rights reserved. */import Swiper,{A11y,Autoplay,EffectFade,Navigation,Pagination,Virtual}from"swiper";import{BREAKPOINTS}from"utils";class MediaCarousel extends HTMLElement{#boundHandleMediaQueryChange;#indexProp;#isVirtual;#mediaQuery=null;#navigationElement;#paginationElement;#slideElements;#sliderElement;#swiper=null;#wrapperElement;static#MEDIA_CAROUSEL_CLASS="swiper";static#MEDIA_CAROUSEL_WRAPPER_CLASS="swiper-wrapper";static#MEDIA_CAROUSEL_SLIDE_CLASS="swiper-slide";constructor(){super(),this.#boundHandleMediaQueryChange=this.#handleMediaQueryChange.bind(this)}connectedCallback(){this.#sliderElement=this.querySelector("media-carousel-slider"),this.#wrapperElement=this.querySelector("media-carousel-wrapper"),this.#slideElements=this.querySelectorAll("media-carousel-slide"),this.#paginationElement=this.querySelector("media-carousel-pagination"),this.#navigationElement=this.querySelector("media-carousel-navigation"),this.#indexProp=this.dataset.loop?"realIndex":"activeIndex",this.#isVirtual=!!(this.dataset.virtual&&this.querySelector(".js-slides")),this.breakpointMin=Object.keys(BREAKPOINTS).includes(this.dataset.breakpointMin)?BREAKPOINTS[this.dataset.breakpointMin]:Number(this.dataset.breakpointMin||"0"),this.breakpointMax=Object.keys(BREAKPOINTS).includes(this.dataset.breakpointMax)?BREAKPOINTS[this.dataset.breakpointMax]:Number(this.dataset.breakpointMax||"0");const handleIntersection=(entries,observer)=>{entries.forEach(entry=>{entry.isIntersecting&&(observer.unobserve(this),this.breakpointMin||this.breakpointMax?(this.#mediaQuery=window.matchMedia(`(${this.breakpointMin?`min-width: ${this.breakpointMin}px${this.breakpointMax?" and ":""}`:""}${this.breakpointMax?`max-width: ${this.breakpointMax-1}px`:""})`),this.#mediaQuery.matches&&this.#init(),this.#mediaQuery.addEventListener("change",this.#boundHandleMediaQueryChange)):this.#init())})};new IntersectionObserver(handleIntersection.bind(this)).observe(this)}disconnectedCallback(){this.#swiper&&(this.#swiper.destroy(),this.#swiper=null),this.#mediaQuery&&this.#mediaQuery.removeEventListener("change",this.#boundHandleMediaQueryChange)}get initialized(){return!!(this.#swiper&&(this.#isVirtual?this.#swiper.virtual.cache[this.#swiper[this.#indexProp]]:this.#swiper.slides[this.#swiper[this.#indexProp]]))}get index(){return this.#swiper?this.#swiper[this.#indexProp]:void 0}get currentSlide(){return this.#swiper?this.#isVirtual?this.#swiper.virtual.cache[this.#swiper[this.#indexProp]]:this.#swiper.slides[this.#swiper[this.#indexProp]]:void 0}slideTo(index,speed=0){if(!(typeof index=="number"&&index>=0))throw new Error("Invalid slide index");return this.dataset.loop?this.#swiper.slideToLoop(index,speed):this.#swiper.slideTo(index,speed),this.#swiper.update(),this.#swiper}stop(){return this.#swiper?.autoplay?(this.#swiper.autoplay.stop(),this.#swiper):this.#swiper}start(){return this.#swiper?.autoplay?(this.#swiper.autoplay.start(),this.#swiper):this.#swiper}on(type,handler,options){return this.addEventListener(type,handler,options),this}off(type,handler,options){return this.removeEventListener(type,handler,options),this}#init(){this.#swiper||(this.#sliderElement.classList.add(MediaCarousel.#MEDIA_CAROUSEL_CLASS),this.#wrapperElement&&this.#wrapperElement.classList.add(MediaCarousel.#MEDIA_CAROUSEL_WRAPPER_CLASS),this.#slideElements.length>0&&this.#slideElements.forEach(el=>el.classList.add(MediaCarousel.#MEDIA_CAROUSEL_SLIDE_CLASS)),this.#paginationElement&&this.#paginationElement.removeAttribute("hidden"),this.#navigationElement&&this.#navigationElement.removeAttribute("hidden"),this.#swiper=new Swiper(this.#sliderElement,{autoHeight:!!this.dataset.autoHeight,initialSlide:Number(this.dataset.initialSlide||0),loop:!!this.dataset.loop,modules:[A11y,...this.dataset.autoplay?[Autoplay]:[],...this.dataset.fade?[EffectFade]:[],...this.dataset.navigation?[Navigation]:[],...this.dataset.pagination?[Pagination]:[],...this.#isVirtual?[Virtual]:[]],observer:!0,observeParents:!0,slidesPerGroup:Number(this.dataset.slidesPerGroup||1),slidesPerView:Number(this.dataset.slidesPerView||1),spaceBetween:Number(this.dataset.spaceBetween||30),speed:Number(this.dataset.speed||200),...this.dataset.autoplay?{autoplay:{delay:Number(this.dataset.autoplay||3e3)}}:{},...this.dataset.fade?{effect:"fade",fadeEffect:{crossFade:!0}}:{},...this.dataset.navigation?{navigation:{nextEl:this.querySelector(".js-carousel-next"),prevEl:this.querySelector(".js-carousel-prev")}}:{},...this.dataset.pagination?{pagination:{clickable:!0,el:this.querySelector(".js-carousel-pagination")}}:{},...this.#isVirtual?{virtual:{slides:Array.from(this.querySelector(".js-slides").children).map(el=>el.innerHTML)}}:{},on:{afterInit:swiper=>{const previewImage=this.querySelector("media-carousel-preview-image");previewImage&&previewImage.setAttribute("hidden","");const interval=setInterval(()=>{const currentSlide=this.#isVirtual?swiper.virtual.cache[swiper[this.#indexProp]]:swiper.el?.querySelector(".swiper-slide-active");currentSlide&&((()=>{this.dispatchEvent(new CustomEvent("on:media-carousel:init",{detail:{currentSlide,activeIndex:swiper[this.#indexProp]}})),this.classList.remove("is-loading"),this.classList.add("is-initialized"),currentSlide.classList.add("is-visible")})(),clearInterval(interval))},5)},slideChange:swiper=>{const interval=setInterval(()=>{const currentSlide=this.#isVirtual?swiper.virtual.cache[swiper[this.#indexProp]]:swiper.el?.querySelector(".swiper-slide-active");currentSlide&&((()=>{this.dispatchEvent(new CustomEvent("on:media-carousel:slide-change",{detail:{currentSlide,activeIndex:swiper[this.#indexProp],previousIndex:swiper.previousIndex,previousSlide:this.#isVirtual?swiper.virtual.cache[swiper.previousIndex]:swiper.el?.querySelector(".swiper-slide-prev")}}))})(),clearInterval(interval))},5)},slideChangeTransitionStart:swiper=>{const interval=setInterval(()=>{const currentSlide=this.#isVirtual?swiper.virtual.cache[swiper[this.#indexProp]]:swiper.el?.querySelector(".swiper-slide-active"),previousSlide=this.#isVirtual?swiper.virtual.cache[swiper.previousIndex]:swiper.el?.querySelector(".swiper-slide-prev");currentSlide&&((()=>{this.dispatchEvent(new CustomEvent("on:media-carousel:before-slide-change",{detail:{currentSlide,previousSlide,activeIndex:swiper[this.#indexProp],previousIndex:swiper.previousIndex}})),currentSlide.classList.add("is-visible")})(),clearInterval(interval))},5)},transitionEnd:swiper=>{const currentSlide=this.#isVirtual?swiper.virtual.cache[swiper[this.#indexProp]]:swiper.el?.querySelector(".swiper-slide-active"),previousSlide=this.#isVirtual?swiper.virtual.cache[swiper.previousIndex]:swiper.el?.querySelector(".swiper-slide-prev");previousSlide?.classList.remove("is-visible"),this.dispatchEvent(new CustomEvent("on:media-carousel:slide-transition-end",{detail:{currentSlide,previousSlide,activeIndex:swiper[this.#indexProp],previousIndex:swiper.previousIndex}}))}}}))}#destroy(){this.#swiper&&(this.#swiper.destroy(),this.#swiper=null,this.#sliderElement.classList.remove(MediaCarousel.#MEDIA_CAROUSEL_CLASS),this.querySelector("is-visible")?.classList.remove("is-visible"),this.#wrapperElement&&this.#wrapperElement.classList.remove(MediaCarousel.#MEDIA_CAROUSEL_WRAPPER_CLASS),this.#slideElements.length>0&&this.#slideElements.forEach(el=>el.classList.remove(MediaCarousel.#MEDIA_CAROUSEL_SLIDE_CLASS)),this.#paginationElement&&this.#paginationElement.setAttribute("hidden",""),this.#navigationElement&&this.#navigationElement.setAttribute("hidden",""))}#handleMediaQueryChange(e){e.matches&&!this.#swiper?this.#init():this.#swiper&&this.#destroy()}}customElements.define("media-carousel",MediaCarousel); //# sourceMappingURL=/cdn/shop/t/100/assets/media-carousel.js.map?v=173020821608647186951751575324