import{b1 as l,a0 as h,ao as u,an as n}from"./index.f2790301.js";import{a1 as d,ad as c,V as s,I as a}from"./vue.02ad7c87.js";import"./sentry.13e8e62e.js";const f={name:"ProductImageCarousel",props:{slidesPerPage:{type:[Number,Array],default:1},slideSpacing:Boolean,initialSlide:{type:Number,default:1},insetNavigation:Boolean,hideNavigation:Boolean},data(){return{faChevronLeft:l.faChevronLeft,faChevronRight:h.faChevronRight,activeSlide:0,pixelOffset:0,mouseStartPoint:!1,slideCount:0,mouseDirection:!1,slidesPerPageCount:1}},computed:{children(){const e=[];return this.$slots.default()[0].children.forEach(t=>{typeof t.type=="symbol"&&Array.isArray(t.children)?e.push(...t.children.filter(i=>typeof i.type!="symbol")):typeof t.type!="symbol"&&e.push(t)}),e}},mounted(){document.addEventListener("touchend",this.onMouseUp),document.addEventListener("mouseup",this.onMouseUp),this.onResize(),window.addEventListener("resize",this.onResize),this.activeSlide=this.initialSlide-1},updated(){this.updateSlideCount()},unmounted(){window.removeEventListener("touchend",this.onMouseUp),window.removeEventListener("mouseup",this.onMouseUp),window.removeEventListener("resize",this.onResize)},methods:{pageCount(){return this.slidesPerPageCount===1?this.children.length:Math.ceil(this.children.length/this.slidesPerPageCount)},goToPage(e){this.activeSlide=e},onResize(){if(this.$slots.default()){let e=1;if(Array.isArray(this.slidesPerPage)){const t=this.slidesPerPage,i=window.innerWidth;for(let o=0,r=t.length;o<r;++o){if(t[o][0]>=i){this.slidesPerPageCount=e;break}e=t[o][1]}this.slidesPerPageCount=e}else this.slidesPerPageCount=this.slidesPerPage;this.updateSlideCount()}},currentBannerIndex(){return this.activeSlide},getElClasses(){return{"slide-spacing":this.slideSpacing}},getInnerElStyle(){const e=this.pageCount(),t=e*100,i=this.activeSlide*(100/e);return{width:`${t}%`,transform:`translateX(calc(-${i}% + ${this.pixelOffset}px))`,transition:this.mouseStartPoint?"none":"transform 0.4s ease",willChange:"transform"}},changeSlide(e){this.activeSlide+=e,this.activeSlide=u(this.activeSlide,0,Math.floor((this.slideCount-1)/this.slidesPerPageCount))},onMouseDown(e){this.mouseStartPoint=new n(e.clientX,e.clientY)},onMouseUp(){this.mouseStartPoint=!1,this.pixelOffset>50?this.changeSlide(-1):this.pixelOffset<-50&&this.changeSlide(1),this.pixelOffset=0,this.mouseDirection=!1},onMouseMove(e){if(this.mouseStartPoint){const t=new n(e.clientX,e.clientY);if(!this.mouseDirection){const i=Math.abs(this.mouseStartPoint.angleTo(t)*t.rad2degree);i>45&&i<135?this.mouseDirection="vertical":this.mouseDirection="horizontal"}this.mouseDirection==="horizontal"&&(e.preventDefault(),this.pixelOffset=t.x-this.mouseStartPoint.x)}},getArrowClasses(e){const t={"inset-navigation":this.insetNavigation};return this.hideNavigation===!0&&(t.off=!0),e==="left"?this.currentBannerIndex()===0&&(t.off=!0):e==="right"&&this.currentBannerIndex()===this.pageCount()-1&&(t.off=!0),t},updateSlideCount(){let e=0;this.$slots.default()&&(e=this.children.length),this.slideCount=e}},render(){return this.$slots.default()?d(s("div",{class:{"tml-carousel":!0,...this.getElClasses()},onMousedown:this.onMouseDown,onMousemove:this.onMouseMove},[s("a",{class:{"tml-carousel-page-button":!0,"tml-carousel-page-button-left":!0,...this.getArrowClasses("left")},href:"#","aria-label":"See previous image",onClick:e=>{e.preventDefault(),e.stopPropagation(),this.changeSlide(-1)},onMousedown:e=>{e.stopPropagation()}},[s(a("font-awesome-icon"),{icon:this.faChevronLeft})]),s("div",{class:["tml-carousel-mask"]},[s("div",{class:["tml-carousel-inner"],style:this.getInnerElStyle()},this.children.map(e=>s("div",{class:["slide"],style:{width:`${100/(this.pageCount()*this.slidesPerPageCount)}%`,willChange:"opacity",padding:this.slideSpacing?"0 0.25em":null,float:"left"}},[e])))]),s("a",{class:{"tml-carousel-page-button":!0,"tml-carousel-page-button-right":!0,...this.getArrowClasses("right")},href:"#","aria-label":"See next image",onClick:e=>{e.preventDefault(),e.stopPropagation(),this.changeSlide(1)},onMousedown:e=>{e.stopPropagation()}},[s(a("font-awesome-icon"),{icon:this.faChevronRight})])]),[[c("tml-touch-mouse")]]):null}},v=f;export{v as default};
//# sourceMappingURL=ProductImageCarousel.3f92be9f.js.map
