o?T=o:i&&tn?l="next":a=o.length&&(O=o.length-1);const C=-o[O];if(r.normalizeSlideIndex)for(let I=0;I=H&&B<$-($-H)/2?l=I:B>=H&&B<$&&(l=I+1):B>=H&&(l=I)}if(n.initialized&&l!==v&&(!n.allowSlideNext&&Cn.translate&&C>n.maxTranslate()&&(v||0)!==l))return!1;l!==(T||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(C);let W;if(l>v?W="next":l0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{g[I?"scrollLeft":"scrollTop"]=B})):g[I?"scrollLeft":"scrollTop"]=B,H&&requestAnimationFrame(()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1})}else{if(!n.support.smoothScroll)return(0,x.x2)({swiper:n,targetPosition:B,side:I?"left":"top"}),!0;g.scrollTo({[I?"left":"top"]:B,behavior:"smooth"})}return!0}return n.setTransition(e),n.setTranslate(C),n.updateActiveIndex(l),n.updateSlidesClasses(),n.emit("beforeTransitionStart",e,i),n.transitionStart(s,W),e===0?n.transitionEnd(s,W):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(B){!n||n.destroyed||B.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,W))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function Ae(t=0,e=this.params.speed,s=!0,i){typeof t=="string"&&(t=parseInt(t,10));const a=this;let n=t;return a.params.loop&&(a.virtual&&a.params.virtual.enabled?n=n+a.virtual.slidesBefore:n=a.getSlideIndexByData(n)),a.slideTo(n,e,s,i)}function _e(t=this.params.speed,e=!0,s){const i=this,{enabled:a,params:n,animating:l}=i;if(!a)return i;let r=n.slidesPerGroup;n.slidesPerView==="auto"&&n.slidesPerGroup===1&&n.slidesPerGroupAuto&&(r=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndexS(C));let E=n[w.indexOf(g)-1];if(typeof E=="undefined"&&a.cssMode){let C;n.forEach((W,I)=>{g>=W&&(C=I)}),typeof C!="undefined"&&(E=n[C>0?C-1:C])}let O=0;if(typeof E!="undefined"&&(O=l.indexOf(E),O<0&&(O=i.activeIndex-1),a.slidesPerView==="auto"&&a.slidesPerGroup===1&&a.slidesPerGroupAuto&&(O=O-i.slidesPerViewDynamic("previous",!0)+1,O=Math.max(O,0))),a.rewind&&i.isBeginning){const C=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(C,t,e,s)}return i.slideTo(O,t,e,s)}function Ge(t=this.params.speed,e=!0,s){const i=this;return i.slideTo(i.activeIndex,t,e,s)}function Be(t=this.params.speed,e=!0,s,i=.5){const a=this;let n=a.activeIndex;const l=Math.min(a.params.slidesPerGroupSkip,n),r=l+Math.floor((n-l)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[r]){const p=a.snapGrid[r],T=a.snapGrid[r+1];o-p>(T-p)*i&&(n+=a.params.slidesPerGroup)}else{const p=a.snapGrid[r-1],T=a.snapGrid[r];o-p<=(T-p)*i&&(n-=a.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,a.slidesGrid.length-1),a.slideTo(n,t,e,s)}function $e(){const t=this,{params:e,slidesEl:s}=t,i=e.slidesPerView==="auto"?t.slidesPerViewDynamic():e.slidesPerView;let a=t.clickedIndex,n;const l=t.isElement?"swiper-slide":`.${e.slideClass}`;if(e.loop){if(t.animating)return;n=parseInt(t.clickedSlide.getAttribute("data-swiper-slide-index"),10),e.centeredSlides?at.slides.length-t.loopedSlides+i/2?(t.loopFix(),a=t.getSlideIndex((0,x.gD)(s,`${l}[data-swiper-slide-index="${n}"]`)[0]),(0,x.Y3)(()=>{t.slideTo(a)})):t.slideTo(a):a>t.slides.length-i?(t.loopFix(),a=t.getSlideIndex((0,x.gD)(s,`${l}[data-swiper-slide-index="${n}"]`)[0]),(0,x.Y3)(()=>{t.slideTo(a)})):t.slideTo(a)}else t.slideTo(a)}const Ve={slideTo:ze,slideToLoop:Ae,slideNext:_e,slidePrev:De,slideReset:Ge,slideToClosest:Be,slideToClickedSlide:$e};function Fe(t){const e=this,{params:s,slidesEl:i}=e;if(!s.loop||e.virtual&&e.params.virtual.enabled)return;(0,x.gD)(i,`.${s.slideClass}, swiper-slide`).forEach((n,l)=>{n.setAttribute("data-swiper-slide-index",l)}),e.loopFix({slideRealIndex:t,direction:s.centeredSlides?void 0:"next"})}function He({slideRealIndex:t,slideTo:e=!0,direction:s,setTranslate:i,activeSlideIndex:a,byController:n,byMousewheel:l}={}){const r=this;if(!r.params.loop)return;r.emit("beforeLoopFix");const{slides:o,allowSlidePrev:p,allowSlideNext:T,slidesEl:v,params:S}=r;if(r.allowSlidePrev=!0,r.allowSlideNext=!0,r.virtual&&S.virtual.enabled){e&&(!S.centeredSlides&&r.snapIndex===0?r.slideTo(r.virtual.slides.length,0,!1,!0):S.centeredSlides&&r.snapIndex$.classList.contains(S.slideActiveClass))[0]):C=a;const W=s==="next"||!s,I=s==="prev"||!s;let B=0,H=0;if(ar.slides.length-w*2){H=Math.max(a-(r.slides.length-w*2),S.slidesPerGroup);for(let $=0;${v.prepend(r.slides[$])}),W&&O.forEach($=>{v.append(r.slides[$])}),r.recalcSlides(),S.slidesPerView==="auto"&&r.updateSlides(),S.watchSlidesProgress&&r.updateSlidesOffset(),e){if(E.length>0&&I)if(typeof t=="undefined"){const $=r.slidesGrid[C],he=r.slidesGrid[C+B]-$;l?r.setTranslate(r.translate-he):(r.slideTo(C+B,0,!1,!0),i&&(r.touches[r.isHorizontal()?"startX":"startY"]+=he))}else i&&r.slideToLoop(t,0,!1,!0);else if(O.length>0&&W)if(typeof t=="undefined"){const $=r.slidesGrid[C],he=r.slidesGrid[C-H]-$;l?r.setTranslate(r.translate-he):(r.slideTo(C-H,0,!1,!0),i&&(r.touches[r.isHorizontal()?"startX":"startY"]+=he))}else r.slideToLoop(t,0,!1,!0)}if(r.allowSlidePrev=p,r.allowSlideNext=T,r.controller&&r.controller.control&&!n){const $={slideRealIndex:t,slideTo:!1,direction:s,setTranslate:i,activeSlideIndex:a,byController:!0};Array.isArray(r.controller.control)?r.controller.control.forEach(de=>{!de.destroyed&&de.params.loop&&de.loopFix($)}):r.controller.control instanceof r.constructor&&r.controller.control.params.loop&&r.controller.control.loopFix($)}r.emit("loopFix")}function Ne(){const t=this,{params:e,slidesEl:s}=t;if(!e.loop||t.virtual&&t.params.virtual.enabled)return;t.recalcSlides();const i=[];t.slides.forEach(a=>{const n=typeof a.swiperSlideIndex=="undefined"?a.getAttribute("data-swiper-slide-index")*1:a.swiperSlideIndex;i[n]=a}),t.slides.forEach(a=>{a.removeAttribute("data-swiper-slide-index")}),i.forEach(a=>{s.append(a)}),t.recalcSlides(),t.slideTo(t.realIndex,0)}const je={loopCreate:Fe,loopFix:He,loopDestroy:Ne};function Re(t){const e=this;if(!e.params.simulateTouch||e.params.watchOverflow&&e.isLocked||e.params.cssMode)return;const s=e.params.touchEventsTarget==="container"?e.el:e.wrapperEl;e.isElement&&(e.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=t?"grabbing":"grab",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1})}function We(){const t=this;t.params.watchOverflow&&t.isLocked||t.params.cssMode||(t.isElement&&(t.__preventObserver__=!0),t[t.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1}))}const Ye={setGrabCursor:Re,unsetGrabCursor:We};function Xe(t,e=this){function s(i){if(!i||i===(0,G.Me)()||i===(0,G.Jj)())return null;i.assignedSlot&&(i=i.assignedSlot);const a=i.closest(t);return!a&&!i.getRootNode?null:a||s(i.getRootNode().host)}return s(e)}function qe(t){const e=this,s=(0,G.Me)(),i=(0,G.Jj)(),a=e.touchEventsData;a.evCache.push(t);const{params:n,touches:l,enabled:r}=e;if(!r||!n.simulateTouch&&t.pointerType==="mouse"||e.animating&&n.preventInteractionOnTransition)return;!e.animating&&n.cssMode&&n.loop&&e.loopFix();let o=t;o.originalEvent&&(o=o.originalEvent);let p=o.target;if(n.touchEventsTarget==="wrapper"&&!e.wrapperEl.contains(p)||"which"in o&&o.which===3||"button"in o&&o.button>0||a.isTouched&&a.isMoved)return;const T=!!n.noSwipingClass&&n.noSwipingClass!=="",v=t.composedPath?t.composedPath():t.path;T&&o.target&&o.target.shadowRoot&&v&&(p=v[0]);const S=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,g=!!(o.target&&o.target.shadowRoot);if(n.noSwiping&&(g?Xe(S,p):p.closest(S))){e.allowClick=!0;return}if(n.swipeHandler&&!p.closest(n.swipeHandler))return;l.currentX=o.pageX,l.currentY=o.pageY;const w=l.currentX,E=l.currentY,O=n.edgeSwipeDetection||n.iOSEdgeSwipeDetection,C=n.edgeSwipeThreshold||n.iOSEdgeSwipeThreshold;if(O&&(w<=C||w>=i.innerWidth-C))if(O==="prevent")t.preventDefault();else return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),l.startX=w,l.startY=E,a.touchStartTime=(0,x.zO)(),e.allowClick=!0,e.updateSize(),e.swipeDirection=void 0,n.threshold>0&&(a.allowThresholdMove=!1);let W=!0;p.matches(a.focusableElements)&&(W=!1,p.nodeName==="SELECT"&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const I=W&&e.allowTouchMove&&n.touchStartPreventDefault;(n.touchStartForcePreventDefault||I)&&!p.isContentEditable&&o.preventDefault(),e.params.freeMode&&e.params.freeMode.enabled&&e.freeMode&&e.animating&&!n.cssMode&&e.freeMode.onTouchStart(),e.emit("touchStart",o)}function Je(t){const e=(0,G.Me)(),s=this,i=s.touchEventsData,{params:a,touches:n,rtlTranslate:l,enabled:r}=s;if(!r||!a.simulateTouch&&t.pointerType==="mouse")return;let o=t;if(o.originalEvent&&(o=o.originalEvent),!i.isTouched){i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",o);return}const p=i.evCache.findIndex($=>$.pointerId===o.pointerId);p>=0&&(i.evCache[p]=o);const T=i.evCache.length>1?i.evCache[0]:o,v=T.pageX,S=T.pageY;if(o.preventedByNestedSwiper){n.startX=v,n.startY=S;return}if(!s.allowTouchMove){o.target.matches(i.focusableElements)||(s.allowClick=!1),i.isTouched&&(Object.assign(n,{startX:v,startY:S,prevX:s.touches.currentX,prevY:s.touches.currentY,currentX:v,currentY:S}),i.touchStartTime=(0,x.zO)());return}if(a.touchReleaseOnEdges&&!a.loop){if(s.isVertical()){if(Sn.startY&&s.translate>=s.minTranslate()){i.isTouched=!1,i.isMoved=!1;return}}else if(vn.startX&&s.translate>=s.minTranslate())return}if(e.activeElement&&o.target===e.activeElement&&o.target.matches(i.focusableElements)){i.isMoved=!0,s.allowClick=!1;return}if(i.allowTouchCallbacks&&s.emit("touchMove",o),o.targetTouches&&o.targetTouches.length>1)return;n.currentX=v,n.currentY=S;const g=n.currentX-n.startX,w=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(ve(g,2)+ve(w,2))=25&&($=Math.atan2(Math.abs(w),Math.abs(g))*180/Math.PI,i.isScrolling=s.isHorizontal()?$>a.touchAngle:90-$>a.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",o),typeof i.startMoving=="undefined"&&(n.currentX!==n.startX||n.currentY!==n.startY)&&(i.startMoving=!0),i.isScrolling||s.zoom&&s.params.zoom&&s.params.zoom.enabled&&i.evCache.length>1){i.isTouched=!1;return}if(!i.startMoving)return;s.allowClick=!1,!a.cssMode&&o.cancelable&&o.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&o.stopPropagation();let E=s.isHorizontal()?g:w,O=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;a.oneWayMovement&&(E=Math.abs(E)*(l?1:-1),O=Math.abs(O)*(l?1:-1)),n.diff=E,E*=a.touchRatio,l&&(E=-E,O=-O);const C=s.touchesDirection;s.swipeDirection=E>0?"prev":"next",s.touchesDirection=O>0?"prev":"next";const W=s.params.loop&&!a.cssMode;if(!i.isMoved){if(W&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const $=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent($)}i.allowMomentumBounce=!1,a.grabCursor&&(s.allowSlideNext===!0||s.allowSlidePrev===!0)&&s.setGrabCursor(!0),s.emit("sliderFirstMove",o)}let I;i.isMoved&&C!==s.touchesDirection&&W&&Math.abs(E)>=1&&(s.loopFix({direction:s.swipeDirection,setTranslate:!0}),I=!0),s.emit("sliderMove",o),i.isMoved=!0,i.currentTranslate=E+i.startTranslate;let B=!0,H=a.resistanceRatio;if(a.touchReleaseOnEdges&&(H=0),E>0?(W&&!I&&i.currentTranslate>(a.centeredSlides?s.minTranslate()-s.size/2:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(B=!1,a.resistance&&(i.currentTranslate=s.minTranslate()-1+ve(-s.minTranslate()+i.startTranslate+E,H)))):E<0&&(W&&!I&&i.currentTranslate<(a.centeredSlides?s.maxTranslate()+s.size/2:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-(a.slidesPerView==="auto"?s.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),!s.allowSlidePrev&&!s.allowSlideNext&&(i.currentTranslate=i.startTranslate),a.threshold>0)if(Math.abs(E)>a.threshold||i.allowThresholdMove){if(!i.allowThresholdMove){i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY;return}}else{i.currentTranslate=i.startTranslate;return}!a.followFinger||a.cssMode||((a.freeMode&&a.freeMode.enabled&&s.freeMode||a.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&a.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function Ue(t){const e=this,s=e.touchEventsData,i=s.evCache.findIndex(I=>I.pointerId===t.pointerId);if(i>=0&&s.evCache.splice(i,1),["pointercancel","pointerout","pointerleave"].includes(t.type)&&!(t.type==="pointercancel"&&(e.browser.isSafari||e.browser.isWebView)))return;const{params:a,touches:n,rtlTranslate:l,slidesGrid:r,enabled:o}=e;if(!o||!a.simulateTouch&&t.pointerType==="mouse")return;let p=t;if(p.originalEvent&&(p=p.originalEvent),s.allowTouchCallbacks&&e.emit("touchEnd",p),s.allowTouchCallbacks=!1,!s.isTouched){s.isMoved&&a.grabCursor&&e.setGrabCursor(!1),s.isMoved=!1,s.startMoving=!1;return}a.grabCursor&&s.isMoved&&s.isTouched&&(e.allowSlideNext===!0||e.allowSlidePrev===!0)&&e.setGrabCursor(!1);const T=(0,x.zO)(),v=T-s.touchStartTime;if(e.allowClick){const I=p.path||p.composedPath&&p.composedPath();e.updateClickedSlide(I&&I[0]||p.target),e.emit("tap click",p),v<300&&T-s.lastClickTime<300&&e.emit("doubleTap doubleClick",p)}if(s.lastClickTime=(0,x.zO)(),(0,x.Y3)(()=>{e.destroyed||(e.allowClick=!0)}),!s.isTouched||!s.isMoved||!e.swipeDirection||n.diff===0||s.currentTranslate===s.startTranslate){s.isTouched=!1,s.isMoved=!1,s.startMoving=!1;return}s.isTouched=!1,s.isMoved=!1,s.startMoving=!1;let S;if(a.followFinger?S=l?e.translate:-e.translate:S=-s.currentTranslate,a.cssMode)return;if(e.params.freeMode&&a.freeMode.enabled){e.freeMode.onTouchEnd({currentPos:S});return}let g=0,w=e.slidesSizesGrid[0];for(let I=0;I=r[I]&&S=r[I]&&(g=I,w=r[r.length-1]-r[r.length-2])}let E=null,O=null;a.rewind&&(e.isBeginning?O=e.params.virtual&&e.params.virtual.enabled&&e.virtual?e.virtual.slides.length-1:e.slides.length-1:e.isEnd&&(E=0));const C=(S-r[g])/w,W=ga.longSwipesMs){if(!a.longSwipes){e.slideTo(e.activeIndex);return}e.swipeDirection==="next"&&(C>=a.longSwipesRatio?e.slideTo(a.rewind&&e.isEnd?E:g+W):e.slideTo(g)),e.swipeDirection==="prev"&&(C>1-a.longSwipesRatio?e.slideTo(g+W):O!==null&&C<0&&Math.abs(C)>a.longSwipesRatio?e.slideTo(O):e.slideTo(g))}else{if(!a.shortSwipes){e.slideTo(e.activeIndex);return}e.navigation&&(p.target===e.navigation.nextEl||p.target===e.navigation.prevEl)?p.target===e.navigation.nextEl?e.slideTo(g+W):e.slideTo(g):(e.swipeDirection==="next"&&e.slideTo(E!==null?E:g+W),e.swipeDirection==="prev"&&e.slideTo(O!==null?O:g))}}function Ee(){const t=this,{params:e,el:s}=t;if(s&&s.offsetWidth===0)return;e.breakpoints&&t.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:n}=t,l=t.virtual&&t.params.virtual.enabled;t.allowSlideNext=!0,t.allowSlidePrev=!0,t.updateSize(),t.updateSlides(),t.updateSlidesClasses();const r=l&&e.loop;(e.slidesPerView==="auto"||e.slidesPerView>1)&&t.isEnd&&!t.isBeginning&&!t.params.centeredSlides&&!r?t.slideTo(t.slides.length-1,0,!1,!0):t.params.loop&&!l?t.slideToLoop(t.realIndex,0,!1,!0):t.slideTo(t.activeIndex,0,!1,!0),t.autoplay&&t.autoplay.running&&t.autoplay.paused&&(clearTimeout(t.autoplay.resizeTimeout),t.autoplay.resizeTimeout=setTimeout(()=>{t.autoplay&&t.autoplay.running&&t.autoplay.paused&&t.autoplay.resume()},500)),t.allowSlidePrev=a,t.allowSlideNext=i,t.params.watchOverflow&&n!==t.snapGrid&&t.checkOverflow()}function Ke(t){const e=this;e.enabled&&(e.allowClick||(e.params.preventClicks&&t.preventDefault(),e.params.preventClicksPropagation&&e.animating&&(t.stopPropagation(),t.stopImmediatePropagation())))}function Ze(){const t=this,{wrapperEl:e,rtlTranslate:s,enabled:i}=t;if(!i)return;t.previousTranslate=t.translate,t.isHorizontal()?t.translate=-e.scrollLeft:t.translate=-e.scrollTop,t.translate===0&&(t.translate=0),t.updateActiveIndex(),t.updateSlidesClasses();let a;const n=t.maxTranslate()-t.minTranslate();n===0?a=0:a=(t.translate-t.minTranslate())/n,a!==t.progress&&t.updateProgress(s?-t.translate:t.translate),t.emit("setTranslate",t.translate,!1)}function Qe(t){const e=this;u(e,t.target),e.update()}let Ce=!1;function et(){}const Me=(t,e)=>{const s=(0,G.Me)(),{params:i,el:a,wrapperEl:n,device:l}=t,r=!!i.nested,o=e==="on"?"addEventListener":"removeEventListener",p=e;a[o]("pointerdown",t.onTouchStart,{passive:!1}),s[o]("pointermove",t.onTouchMove,{passive:!1,capture:r}),s[o]("pointerup",t.onTouchEnd,{passive:!0}),s[o]("pointercancel",t.onTouchEnd,{passive:!0}),s[o]("pointerout",t.onTouchEnd,{passive:!0}),s[o]("pointerleave",t.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&a[o]("click",t.onClick,!0),i.cssMode&&n[o]("scroll",t.onScroll),i.updateOnWindowResize?t[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",Ee,!0):t[p]("observerUpdate",Ee,!0),a[o]("load",t.onLoad,{capture:!0})};function tt(){const t=this,e=(0,G.Me)(),{params:s}=t;t.onTouchStart=qe.bind(t),t.onTouchMove=Je.bind(t),t.onTouchEnd=Ue.bind(t),s.cssMode&&(t.onScroll=Ze.bind(t)),t.onClick=Ke.bind(t),t.onLoad=Qe.bind(t),Ce||(e.addEventListener("touchstart",et),Ce=!0),Me(t,"on")}function st(){Me(this,"off")}const it={attachEvents:tt,detachEvents:st},we=(t,e)=>t.grid&&e.grid&&e.grid.rows>1;function nt(){const t=this,{realIndex:e,initialized:s,params:i,el:a}=t,n=i.breakpoints;if(!n||n&&Object.keys(n).length===0)return;const l=t.getBreakpoint(n,t.params.breakpointsBase,t.el);if(!l||t.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||t.originalParams,p=we(t,i),T=we(t,o),v=i.enabled;p&&!T?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),t.emitContainerClasses()):!p&&T&&(a.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&o.grid.fill==="column"||!o.grid.fill&&i.grid.fill==="column")&&a.classList.add(`${i.containerModifierClass}grid-column`),t.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach(E=>{const O=i[E]&&i[E].enabled,C=o[E]&&o[E].enabled;O&&!C&&t[E].disable(),!O&&C&&t[E].enable()});const S=o.direction&&o.direction!==i.direction,g=i.loop&&(o.slidesPerView!==i.slidesPerView||S);S&&s&&t.changeDirection(),(0,x.l7)(t.params,o);const w=t.params.enabled;Object.assign(t,{allowTouchMove:t.params.allowTouchMove,allowSlideNext:t.params.allowSlideNext,allowSlidePrev:t.params.allowSlidePrev}),v&&!w?t.disable():!v&&w&&t.enable(),t.currentBreakpoint=l,t.emit("_beforeBreakpoint",o),g&&s&&(t.loopDestroy(),t.loopCreate(e),t.updateSlides()),t.emit("breakpoint",o)}function at(t,e="window",s){if(!t||e==="container"&&!s)return;let i=!1;const a=(0,G.Jj)(),n=e==="window"?a.innerHeight:s.clientHeight,l=Object.keys(t).map(r=>{if(typeof r=="string"&&r.indexOf("@")===0){const o=parseFloat(r.substr(1));return{value:n*o,point:r}}return{value:r,point:r}});l.sort((r,o)=>parseInt(r.value,10)-parseInt(o.value,10));for(let r=0;r{typeof i=="object"?Object.keys(i).forEach(a=>{i[a]&&s.push(e+a)}):typeof i=="string"&&s.push(e+i)}),s}function ot(){const t=this,{classNames:e,params:s,rtl:i,el:a,device:n}=t,l=lt(["initialized",s.direction,{"free-mode":t.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&s.grid.fill==="column"},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);e.push(...l),a.classList.add(...e),t.emitContainerClasses()}function dt(){const t=this,{el:e,classNames:s}=t;e.classList.remove(...s),t.emitContainerClasses()}const ct={addClasses:ot,removeClasses:dt};function ft(){const t=this,{isLocked:e,params:s}=t,{slidesOffsetBefore:i}=s;if(i){const a=t.slides.length-1,n=t.slidesGrid[a]+t.slidesSizesGrid[a]+i*2;t.isLocked=t.size>n}else t.isLocked=t.snapGrid.length===1;s.allowSlideNext===!0&&(t.allowSlideNext=!t.isLocked),s.allowSlidePrev===!0&&(t.allowSlidePrev=!t.isLocked),e&&e!==t.isLocked&&(t.isEnd=!1),e!==t.isLocked&&t.emit(t.isLocked?"lock":"unlock")}const ut={checkOverflow:ft},Pe={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopedSlides:null,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function pt(t,e){return function(i={}){const a=Object.keys(i)[0],n=i[a];if(typeof n!="object"||n===null){(0,x.l7)(e,i);return}if(["navigation","pagination","scrollbar"].indexOf(a)>=0&&t[a]===!0&&(t[a]={auto:!0}),!(a in t&&"enabled"in n)){(0,x.l7)(e,i);return}t[a]===!0&&(t[a]={enabled:!0}),typeof t[a]=="object"&&!("enabled"in t[a])&&(t[a].enabled=!0),t[a]||(t[a]={enabled:!1}),(0,x.l7)(e,i)}}const Te={eventsEmitter:oe,update:k,translate:ee,transition:Se,slide:Ve,loop:je,grabCursor:Ye,events:it,breakpoints:rt,checkOverflow:ut,classes:ct},be={};class fe{constructor(...e){let s,i;e.length===1&&e[0].constructor&&Object.prototype.toString.call(e[0]).slice(8,-1)==="Object"?i=e[0]:[s,i]=e,i||(i={}),i=(0,x.l7)({},i),s&&!i.el&&(i.el=s);const a=(0,G.Me)();if(i.el&&typeof i.el=="string"&&a.querySelectorAll(i.el).length>1){const o=[];return a.querySelectorAll(i.el).forEach(p=>{const T=(0,x.l7)({},i,{el:p});o.push(new fe(T))}),o}const n=this;n.__swiper__=!0,n.support=c(),n.device=J({userAgent:i.userAgent}),n.browser=ne(),n.eventsListeners={},n.eventsAnyListeners=[],n.modules=[...n.__modules__],i.modules&&Array.isArray(i.modules)&&n.modules.push(...i.modules);const l={};n.modules.forEach(o=>{o({params:i,swiper:n,extendParams:pt(i,l),on:n.on.bind(n),once:n.once.bind(n),off:n.off.bind(n),emit:n.emit.bind(n)})});const r=(0,x.l7)({},Pe,l);return n.params=(0,x.l7)({},r,be,i),n.originalParams=(0,x.l7)({},n.params),n.passedParams=(0,x.l7)({},i),n.params&&n.params.on&&Object.keys(n.params.on).forEach(o=>{n.on(o,n.params.on[o])}),n.params&&n.params.onAny&&n.onAny(n.params.onAny),Object.assign(n,{enabled:n.params.enabled,el:s,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal(){return n.params.direction==="horizontal"},isVertical(){return n.params.direction==="vertical"},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/ve(2,23))*ve(2,23)},allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:n.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,evCache:[]},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.emit("_swiper"),n.params.init&&n.init(),n}getSlideIndex(e){const{slidesEl:s,params:i}=this,a=(0,x.gD)(s,`.${i.slideClass}, swiper-slide`),n=(0,x.lT)(a[0]);return(0,x.lT)(e)-n}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter(s=>s.getAttribute("data-swiper-slide-index")*1===e)[0])}recalcSlides(){const e=this,{slidesEl:s,params:i}=e;e.slides=(0,x.gD)(s,`.${i.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,s){const i=this;e=Math.min(Math.max(e,0),1);const a=i.minTranslate(),l=(i.maxTranslate()-a)*e+a;i.translateTo(l,typeof s=="undefined"?0:s),i.updateActiveIndex(),i.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const s=e.el.className.split(" ").filter(i=>i.indexOf("swiper")===0||i.indexOf(e.params.containerModifierClass)===0);e.emit("_containerClasses",s.join(" "))}getSlideClasses(e){const s=this;return s.destroyed?"":e.className.split(" ").filter(i=>i.indexOf("swiper-slide")===0||i.indexOf(s.params.slideClass)===0).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const s=[];e.slides.forEach(i=>{const a=e.getSlideClasses(i);s.push({slideEl:i,classNames:a}),e.emit("_slideClass",i,a)}),e.emit("_slideClasses",s)}slidesPerViewDynamic(e="current",s=!1){const i=this,{params:a,slides:n,slidesGrid:l,slidesSizesGrid:r,size:o,activeIndex:p}=i;let T=1;if(a.centeredSlides){let v=n[p].swiperSlideSize,S;for(let g=p+1;go&&(S=!0));for(let g=p-1;g>=0;g-=1)n[g]&&!S&&(v+=n[g].swiperSlideSize,T+=1,v>o&&(S=!0))}else if(e==="current")for(let v=p+1;v=0;v-=1)l[p]-l[v]{l.complete&&u(e,l)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses();function a(){const l=e.rtlTranslate?e.translate*-1:e.translate,r=Math.min(Math.max(l,e.maxTranslate()),e.minTranslate());e.setTranslate(r),e.updateActiveIndex(),e.updateSlidesClasses()}let n;if(e.params.freeMode&&e.params.freeMode.enabled)a(),e.params.autoHeight&&e.updateAutoHeight();else{if((e.params.slidesPerView==="auto"||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides){const l=e.virtual&&e.params.virtual.enabled?e.virtual.slides:e.slides;n=e.slideTo(l.length-1,0,!1,!0)}else n=e.slideTo(e.activeIndex,0,!1,!0);n||a()}i.watchOverflow&&s!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,s=!0){const i=this,a=i.params.direction;return e||(e=a==="horizontal"?"vertical":"horizontal"),e===a||e!=="horizontal"&&e!=="vertical"||(i.el.classList.remove(`${i.params.containerModifierClass}${a}`),i.el.classList.add(`${i.params.containerModifierClass}${e}`),i.emitContainerClasses(),i.params.direction=e,i.slides.forEach(n=>{e==="vertical"?n.style.width="":n.style.height=""}),i.emit("changeDirection"),s&&i.update()),i}changeLanguageDirection(e){const s=this;s.rtl&&e==="rtl"||!s.rtl&&e==="ltr"||(s.rtl=e==="rtl",s.rtlTranslate=s.params.direction==="horizontal"&&s.rtl,s.rtl?(s.el.classList.add(`${s.params.containerModifierClass}rtl`),s.el.dir="rtl"):(s.el.classList.remove(`${s.params.containerModifierClass}rtl`),s.el.dir="ltr"),s.update())}mount(e){const s=this;if(s.mounted)return!0;let i=e||s.params.el;if(typeof i=="string"&&(i=document.querySelector(i)),!i)return!1;i.swiper=s,i.shadowEl&&(s.isElement=!0);const a=()=>`.${(s.params.wrapperClass||"").trim().split(" ").join(".")}`;let l=(()=>i&&i.shadowRoot&&i.shadowRoot.querySelector?i.shadowRoot.querySelector(a()):(0,x.gD)(i,a())[0])();return!l&&s.params.createElements&&(l=(0,x.az)("div",s.params.wrapperClass),i.append(l),(0,x.gD)(i,`.${s.params.slideClass}`).forEach(r=>{l.append(r)})),Object.assign(s,{el:i,wrapperEl:l,slidesEl:s.isElement?i:l,mounted:!0,rtl:i.dir.toLowerCase()==="rtl"||(0,x.QT)(i,"direction")==="rtl",rtlTranslate:s.params.direction==="horizontal"&&(i.dir.toLowerCase()==="rtl"||(0,x.QT)(i,"direction")==="rtl"),wrongRTL:(0,x.QT)(l,"display")==="-webkit-box"}),!0}init(e){const s=this;return s.initialized||s.mount(e)===!1||(s.emit("beforeInit"),s.params.breakpoints&&s.setBreakpoint(),s.addClasses(),s.updateSize(),s.updateSlides(),s.params.watchOverflow&&s.checkOverflow(),s.params.grabCursor&&s.enabled&&s.setGrabCursor(),s.params.loop&&s.virtual&&s.params.virtual.enabled?s.slideTo(s.params.initialSlide+s.virtual.slidesBefore,0,s.params.runCallbacksOnInit,!1,!0):s.slideTo(s.params.initialSlide,0,s.params.runCallbacksOnInit,!1,!0),s.params.loop&&s.loopCreate(),s.attachEvents(),[...s.el.querySelectorAll('[loading="lazy"]')].forEach(a=>{a.complete?u(s,a):a.addEventListener("load",n=>{u(s,n.target)})}),f(s),s.initialized=!0,f(s),s.emit("init"),s.emit("afterInit")),s}destroy(e=!0,s=!0){const i=this,{params:a,el:n,wrapperEl:l,slides:r}=i;return typeof i.params=="undefined"||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),a.loop&&i.loopDestroy(),s&&(i.removeClasses(),n.removeAttribute("style"),l.removeAttribute("style"),r&&r.length&&r.forEach(o=>{o.classList.remove(a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),o.removeAttribute("style"),o.removeAttribute("data-swiper-slide-index")})),i.emit("destroy"),Object.keys(i.eventsListeners).forEach(o=>{i.off(o)}),e!==!1&&(i.el.swiper=null,(0,x.cP)(i)),i.destroyed=!0),null}static extendDefaults(e){(0,x.l7)(be,e)}static get extendedDefaults(){return be}static get defaults(){return Pe}static installModule(e){fe.prototype.__modules__||(fe.prototype.__modules__=[]);const s=fe.prototype.__modules__;typeof e=="function"&&s.indexOf(e)<0&&s.push(e)}static use(e){return Array.isArray(e)?(e.forEach(s=>fe.installModule(s)),fe):(fe.installModule(e),fe)}}Object.keys(Te).forEach(t=>{Object.keys(Te[t]).forEach(e=>{fe.prototype[e]=Te[t][e]})}),fe.use([U,le]);const mt=fe},9127:(ye,ue,ie)=>{ie.d(ue,{Z:()=>x});var G=ie(7628);function x({swiper:d,extendParams:pe,on:c,emit:X,params:A}){d.autoplay={running:!1,paused:!1,timeLeft:0},pe({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let J,R,ae=A&&A.autoplay?A.autoplay.delay:3e3,ne=A&&A.autoplay?A.autoplay.delay:3e3,U,le=new Date().getTime,oe,ce,te,M,z,V;function j(L){!d||d.destroyed||!d.wrapperEl||L.target===d.wrapperEl&&(d.wrapperEl.removeEventListener("transitionend",j),b())}const Z=()=>{if(d.destroyed||!d.autoplay.running)return;d.autoplay.paused?oe=!0:oe&&(ne=U,oe=!1);const L=d.autoplay.paused?U:le+ne-new Date().getTime();d.autoplay.timeLeft=L,X("autoplayTimeLeft",L,L/ae),R=requestAnimationFrame(()=>{Z()})},u=()=>{let L;return d.virtual&&d.params.virtual.enabled?L=d.slides.filter(se=>se.classList.contains("swiper-slide-active"))[0]:L=d.slides[d.activeIndex],L?parseInt(L.getAttribute("data-swiper-autoplay"),10):void 0},h=L=>{if(d.destroyed||!d.autoplay.running)return;cancelAnimationFrame(R),Z();let Q=typeof L=="undefined"?d.params.autoplay.delay:L;ae=d.params.autoplay.delay,ne=d.params.autoplay.delay;const se=u();!Number.isNaN(se)&&se>0&&typeof L=="undefined"&&(Q=se,ae=se,ne=se),U=Q;const ge=d.params.speed,Se=()=>{!d||d.destroyed||(d.params.autoplay.reverseDirection?!d.isBeginning||d.params.loop||d.params.rewind?(d.slidePrev(ge,!0,!0),X("autoplay")):d.params.autoplay.stopOnLastSlide||(d.slideTo(d.slides.length-1,ge,!0,!0),X("autoplay")):!d.isEnd||d.params.loop||d.params.rewind?(d.slideNext(ge,!0,!0),X("autoplay")):d.params.autoplay.stopOnLastSlide||(d.slideTo(0,ge,!0,!0),X("autoplay")),d.params.cssMode&&(le=new Date().getTime(),requestAnimationFrame(()=>{h()})))};return Q>0?(clearTimeout(J),J=setTimeout(()=>{Se()},Q)):requestAnimationFrame(()=>{Se()}),Q},f=()=>{d.autoplay.running=!0,h(),X("autoplayStart")},m=()=>{d.autoplay.running=!1,clearTimeout(J),cancelAnimationFrame(R),X("autoplayStop")},y=(L,Q)=>{if(d.destroyed||!d.autoplay.running)return;clearTimeout(J),L||(V=!0);const se=()=>{X("autoplayPause"),d.params.autoplay.waitForTransition?d.wrapperEl.addEventListener("transitionend",j):b()};if(d.autoplay.paused=!0,Q){z&&(U=d.params.autoplay.delay),z=!1,se();return}U=(U||d.params.autoplay.delay)-(new Date().getTime()-le),!(d.isEnd&&U<0&&!d.params.loop)&&(U<0&&(U=0),se())},b=()=>{d.isEnd&&U<0&&!d.params.loop||d.destroyed||!d.autoplay.running||(le=new Date().getTime(),V?(V=!1,h(U)):h(),d.autoplay.paused=!1,X("autoplayResume"))},k=()=>{if(d.destroyed||!d.autoplay.running)return;const L=(0,G.Me)();L.visibilityState==="hidden"&&(V=!0,y(!0)),L.visibilityState==="visible"&&b()},D=L=>{L.pointerType==="mouse"&&(V=!0,y(!0))},F=L=>{L.pointerType==="mouse"&&d.autoplay.paused&&b()},K=()=>{d.params.autoplay.pauseOnMouseEnter&&(d.el.addEventListener("pointerenter",D),d.el.addEventListener("pointerleave",F))},N=()=>{d.el.removeEventListener("pointerenter",D),d.el.removeEventListener("pointerleave",F)},q=()=>{(0,G.Me)().addEventListener("visibilitychange",k)},ee=()=>{(0,G.Me)().removeEventListener("visibilitychange",k)};c("init",()=>{d.params.autoplay.enabled&&(K(),q(),le=new Date().getTime(),f())}),c("destroy",()=>{N(),ee(),d.autoplay.running&&m()}),c("beforeTransitionStart",(L,Q,se)=>{d.destroyed||!d.autoplay.running||(se||!d.params.autoplay.disableOnInteraction?y(!0,!0):m())}),c("sliderFirstMove",()=>{if(!(d.destroyed||!d.autoplay.running)){if(d.params.autoplay.disableOnInteraction){m();return}ce=!0,te=!1,V=!1,M=setTimeout(()=>{V=!0,te=!0,y(!0)},200)}}),c("touchEnd",()=>{if(!(d.destroyed||!d.autoplay.running||!ce)){if(clearTimeout(M),clearTimeout(J),d.params.autoplay.disableOnInteraction){te=!1,ce=!1;return}te&&d.params.cssMode&&b(),te=!1,ce=!1}}),c("slideChange",()=>{d.destroyed||!d.autoplay.running||(z=!0)}),Object.assign(d.autoplay,{start:f,stop:m,pause:y,resume:b})}},6739:(ye,ue,ie)=>{ie.d(ue,{Z:()=>x});var G=ie(4408);function x({swiper:d,extendParams:pe,on:c,emit:X}){pe({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),d.navigation={nextEl:null,prevEl:null};const A=M=>(Array.isArray(M)||(M=[M].filter(z=>!!z)),M);function J(M){let z;return M&&typeof M=="string"&&d.isElement&&(z=d.el.shadowRoot.querySelector(M),z)?z:(M&&(typeof M=="string"&&(z=[...document.querySelectorAll(M)]),d.params.uniqueNavElements&&typeof M=="string"&&z.length>1&&d.el.querySelectorAll(M).length===1&&(z=d.el.querySelector(M))),M&&!z?M:z)}function R(M,z){const V=d.params.navigation;M=A(M),M.forEach(j=>{j&&(j.classList[z?"add":"remove"](...V.disabledClass.split(" ")),j.tagName==="BUTTON"&&(j.disabled=z),d.params.watchOverflow&&d.enabled&&j.classList[d.isLocked?"add":"remove"](V.lockClass))})}function ae(){const{nextEl:M,prevEl:z}=d.navigation;if(d.params.loop){R(z,!1),R(M,!1);return}R(z,d.isBeginning&&!d.params.rewind),R(M,d.isEnd&&!d.params.rewind)}function ne(M){M.preventDefault(),!(d.isBeginning&&!d.params.loop&&!d.params.rewind)&&(d.slidePrev(),X("navigationPrev"))}function U(M){M.preventDefault(),!(d.isEnd&&!d.params.loop&&!d.params.rewind)&&(d.slideNext(),X("navigationNext"))}function le(){const M=d.params.navigation;if(d.params.navigation=(0,G.Z)(d,d.originalParams.navigation,d.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!(M.nextEl||M.prevEl))return;let z=J(M.nextEl),V=J(M.prevEl);Object.assign(d.navigation,{nextEl:z,prevEl:V}),z=A(z),V=A(V);const j=(Z,u)=>{Z&&Z.addEventListener("click",u==="next"?U:ne),!d.enabled&&Z&&Z.classList.add(...M.lockClass.split(" "))};z.forEach(Z=>j(Z,"next")),V.forEach(Z=>j(Z,"prev"))}function oe(){let{nextEl:M,prevEl:z}=d.navigation;M=A(M),z=A(z);const V=(j,Z)=>{j.removeEventListener("click",Z==="next"?U:ne),j.classList.remove(...d.params.navigation.disabledClass.split(" "))};M.forEach(j=>V(j,"next")),z.forEach(j=>V(j,"prev"))}c("init",()=>{d.params.navigation.enabled===!1?te():(le(),ae())}),c("toEdge fromEdge lock unlock",()=>{ae()}),c("destroy",()=>{oe()}),c("enable disable",()=>{let{nextEl:M,prevEl:z}=d.navigation;M=A(M),z=A(z),[...M,...z].filter(V=>!!V).forEach(V=>V.classList[d.enabled?"remove":"add"](d.params.navigation.lockClass))}),c("click",(M,z)=>{let{nextEl:V,prevEl:j}=d.navigation;V=A(V),j=A(j);const Z=z.target;if(d.params.navigation.hideOnClick&&!j.includes(Z)&&!V.includes(Z)){if(d.pagination&&d.params.pagination&&d.params.pagination.clickable&&(d.pagination.el===Z||d.pagination.el.contains(Z)))return;let u;V.length?u=V[0].classList.contains(d.params.navigation.hiddenClass):j.length&&(u=j[0].classList.contains(d.params.navigation.hiddenClass)),X(u===!0?"navigationShow":"navigationHide"),[...V,...j].filter(h=>!!h).forEach(h=>h.classList.toggle(d.params.navigation.hiddenClass))}});const ce=()=>{d.el.classList.remove(...d.params.navigation.navigationDisabledClass.split(" ")),le(),ae()},te=()=>{d.el.classList.add(...d.params.navigation.navigationDisabledClass.split(" ")),oe()};Object.assign(d.navigation,{enable:ce,disable:te,update:ae,init:le,destroy:oe})}},4919:(ye,ue,ie)=>{ie.d(ue,{Z:()=>pe});function G(c=""){return`.${c.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}var x=ie(4408),d=ie(9482);function pe({swiper:c,extendParams:X,on:A,emit:J}){const R="swiper-pagination";X({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:u=>u,formatFractionTotal:u=>u,bulletClass:`${R}-bullet`,bulletActiveClass:`${R}-bullet-active`,modifierClass:`${R}-`,currentClass:`${R}-current`,totalClass:`${R}-total`,hiddenClass:`${R}-hidden`,progressbarFillClass:`${R}-progressbar-fill`,progressbarOppositeClass:`${R}-progressbar-opposite`,clickableClass:`${R}-clickable`,lockClass:`${R}-lock`,horizontalClass:`${R}-horizontal`,verticalClass:`${R}-vertical`,paginationDisabledClass:`${R}-disabled`}}),c.pagination={el:null,bullets:[]};let ae,ne=0;const U=u=>(Array.isArray(u)||(u=[u].filter(h=>!!h)),u);function le(){return!c.params.pagination.el||!c.pagination.el||Array.isArray(c.pagination.el)&&c.pagination.el.length===0}function oe(u,h){const{bulletActiveClass:f}=c.params.pagination;u&&(u=u[`${h==="prev"?"previous":"next"}ElementSibling`],u&&(u.classList.add(`${f}-${h}`),u=u[`${h==="prev"?"previous":"next"}ElementSibling`],u&&u.classList.add(`${f}-${h}-${h}`)))}function ce(u){const h=u.target.closest(G(c.params.pagination.bulletClass));if(!h)return;u.preventDefault();const f=(0,d.lT)(h)*c.params.slidesPerGroup;if(c.params.loop){if(c.realIndex===f)return;const m=c.getSlideIndexByData(f),y=c.getSlideIndexByData(c.realIndex);m>c.slides.length-c.loopedSlides&&c.loopFix({direction:m>y?"next":"prev",activeSlideIndex:m,slideTo:!1}),c.slideToLoop(f)}else c.slideTo(f)}function te(){const u=c.rtl,h=c.params.pagination;if(le())return;let f=c.pagination.el;f=U(f);let m,y;const b=c.virtual&&c.params.virtual.enabled?c.virtual.slides.length:c.slides.length,k=c.params.loop?Math.ceil(b/c.params.slidesPerGroup):c.snapGrid.length;if(c.params.loop?(y=c.previousRealIndex||0,m=c.params.slidesPerGroup>1?Math.floor(c.realIndex/c.params.slidesPerGroup):c.realIndex):typeof c.snapIndex!="undefined"?(m=c.snapIndex,y=c.previousSnapIndex):(y=c.previousIndex||0,m=c.activeIndex||0),h.type==="bullets"&&c.pagination.bullets&&c.pagination.bullets.length>0){const D=c.pagination.bullets;let F,K,N;if(h.dynamicBullets&&(ae=(0,d.Dy)(D[0],c.isHorizontal()?"width":"height",!0),f.forEach(q=>{q.style[c.isHorizontal()?"width":"height"]=`${ae*(h.dynamicMainBullets+4)}px`}),h.dynamicMainBullets>1&&y!==void 0&&(ne+=m-(y||0),ne>h.dynamicMainBullets-1?ne=h.dynamicMainBullets-1:ne<0&&(ne=0)),F=Math.max(m-ne,0),K=F+(Math.min(D.length,h.dynamicMainBullets)-1),N=(K+F)/2),D.forEach(q=>{const ee=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(L=>`${h.bulletActiveClass}${L}`)].map(L=>typeof L=="string"&&L.includes(" ")?L.split(" "):L).flat();q.classList.remove(...ee)}),f.length>1)D.forEach(q=>{const ee=(0,d.lT)(q);ee===m&&q.classList.add(...h.bulletActiveClass.split(" ")),h.dynamicBullets&&(ee>=F&&ee<=K&&q.classList.add(...`${h.bulletActiveClass}-main`.split(" ")),ee===F&&oe(q,"prev"),ee===K&&oe(q,"next"))});else{const q=D[m];if(q&&q.classList.add(...h.bulletActiveClass.split(" ")),h.dynamicBullets){const ee=D[F],L=D[K];for(let Q=F;Q<=K;Q+=1)D[Q]&&D[Q].classList.add(...`${h.bulletActiveClass}-main`.split(" "));oe(ee,"prev"),oe(L,"next")}}if(h.dynamicBullets){const q=Math.min(D.length,h.dynamicMainBullets+4),ee=(ae*q-ae)/2-N*ae,L=u?"right":"left";D.forEach(Q=>{Q.style[c.isHorizontal()?L:"top"]=`${ee}px`})}}f.forEach((D,F)=>{if(h.type==="fraction"&&(D.querySelectorAll(G(h.currentClass)).forEach(K=>{K.textContent=h.formatFractionCurrent(m+1)}),D.querySelectorAll(G(h.totalClass)).forEach(K=>{K.textContent=h.formatFractionTotal(k)})),h.type==="progressbar"){let K;h.progressbarOpposite?K=c.isHorizontal()?"vertical":"horizontal":K=c.isHorizontal()?"horizontal":"vertical";const N=(m+1)/k;let q=1,ee=1;K==="horizontal"?q=N:ee=N,D.querySelectorAll(G(h.progressbarFillClass)).forEach(L=>{L.style.transform=`translate3d(0,0,0) scaleX(${q}) scaleY(${ee})`,L.style.transitionDuration=`${c.params.speed}ms`})}h.type==="custom"&&h.renderCustom?(D.innerHTML=h.renderCustom(c,m+1,k),F===0&&J("paginationRender",D)):(F===0&&J("paginationRender",D),J("paginationUpdate",D)),c.params.watchOverflow&&c.enabled&&D.classList[c.isLocked?"add":"remove"](h.lockClass)})}function M(){const u=c.params.pagination;if(le())return;const h=c.virtual&&c.params.virtual.enabled?c.virtual.slides.length:c.slides.length;let f=c.pagination.el;f=U(f);let m="";if(u.type==="bullets"){let y=c.params.loop?Math.ceil(h/c.params.slidesPerGroup):c.snapGrid.length;c.params.freeMode&&c.params.freeMode.enabled&&y>h&&(y=h);for(let b=0;b${u.bulletElement}>`}u.type==="fraction"&&(u.renderFraction?m=u.renderFraction.call(c,u.currentClass,u.totalClass):m=` / `),u.type==="progressbar"&&(u.renderProgressbar?m=u.renderProgressbar.call(c,u.progressbarFillClass):m=` `),c.pagination.bullets=[],f.forEach(y=>{u.type!=="custom"&&(y.innerHTML=m||""),u.type==="bullets"&&c.pagination.bullets.push(...y.querySelectorAll(G(u.bulletClass)))}),u.type!=="custom"&&J("paginationRender",f[0])}function z(){c.params.pagination=(0,x.Z)(c,c.originalParams.pagination,c.params.pagination,{el:"swiper-pagination"});const u=c.params.pagination;if(!u.el)return;let h;typeof u.el=="string"&&c.isElement&&(h=c.el.shadowRoot.querySelector(u.el)),!h&&typeof u.el=="string"&&(h=[...document.querySelectorAll(u.el)]),h||(h=u.el),!(!h||h.length===0)&&(c.params.uniqueNavElements&&typeof u.el=="string"&&Array.isArray(h)&&h.length>1&&(h=[...c.el.querySelectorAll(u.el)],h.length>1&&(h=h.filter(f=>(0,d.pZ)(f,".swiper")[0]===c.el)[0])),Array.isArray(h)&&h.length===1&&(h=h[0]),Object.assign(c.pagination,{el:h}),h=U(h),h.forEach(f=>{u.type==="bullets"&&u.clickable&&f.classList.add(u.clickableClass),f.classList.add(u.modifierClass+u.type),f.classList.add(c.isHorizontal()?u.horizontalClass:u.verticalClass),u.type==="bullets"&&u.dynamicBullets&&(f.classList.add(`${u.modifierClass}${u.type}-dynamic`),ne=0,u.dynamicMainBullets<1&&(u.dynamicMainBullets=1)),u.type==="progressbar"&&u.progressbarOpposite&&f.classList.add(u.progressbarOppositeClass),u.clickable&&f.addEventListener("click",ce),c.enabled||f.classList.add(u.lockClass)}))}function V(){const u=c.params.pagination;if(le())return;let h=c.pagination.el;h&&(h=U(h),h.forEach(f=>{f.classList.remove(u.hiddenClass),f.classList.remove(u.modifierClass+u.type),f.classList.remove(c.isHorizontal()?u.horizontalClass:u.verticalClass),u.clickable&&f.removeEventListener("click",ce)})),c.pagination.bullets&&c.pagination.bullets.forEach(f=>f.classList.remove(...u.bulletActiveClass.split(" ")))}A("changeDirection",()=>{if(!c.pagination||!c.pagination.el)return;const u=c.params.pagination;let{el:h}=c.pagination;h=U(h),h.forEach(f=>{f.classList.remove(u.horizontalClass,u.verticalClass),f.classList.add(c.isHorizontal()?u.horizontalClass:u.verticalClass)})}),A("init",()=>{c.params.pagination.enabled===!1?Z():(z(),M(),te())}),A("activeIndexChange",()=>{typeof c.snapIndex=="undefined"&&te()}),A("snapIndexChange",()=>{te()}),A("snapGridLengthChange",()=>{M(),te()}),A("destroy",()=>{V()}),A("enable disable",()=>{let{el:u}=c.pagination;u&&(u=U(u),u.forEach(h=>h.classList[c.enabled?"remove":"add"](c.params.pagination.lockClass)))}),A("lock unlock",()=>{te()}),A("click",(u,h)=>{const f=h.target;let{el:m}=c.pagination;if(Array.isArray(m)||(m=[m].filter(y=>!!y)),c.params.pagination.el&&c.params.pagination.hideOnClick&&m&&m.length>0&&!f.classList.contains(c.params.pagination.bulletClass)){if(c.navigation&&(c.navigation.nextEl&&f===c.navigation.nextEl||c.navigation.prevEl&&f===c.navigation.prevEl))return;const y=m[0].classList.contains(c.params.pagination.hiddenClass);J(y===!0?"paginationShow":"paginationHide"),m.forEach(b=>b.classList.toggle(c.params.pagination.hiddenClass))}});const j=()=>{c.el.classList.remove(c.params.pagination.paginationDisabledClass);let{el:u}=c.pagination;u&&(u=U(u),u.forEach(h=>h.classList.remove(c.params.pagination.paginationDisabledClass))),z(),M(),te()},Z=()=>{c.el.classList.add(c.params.pagination.paginationDisabledClass);let{el:u}=c.pagination;u&&(u=U(u),u.forEach(h=>h.classList.add(c.params.pagination.paginationDisabledClass))),V()};Object.assign(c.pagination,{enable:j,disable:Z,render:M,update:te,init:z,destroy:V})}},4408:(ye,ue,ie)=>{ie.d(ue,{Z:()=>x});var G=ie(9482);function x(d,pe,c,X){return d.params.createElements&&Object.keys(X).forEach(A=>{if(!c[A]&&c.auto===!0){let J=(0,G.gD)(d.el,`.${X[A]}`)[0];J||(J=(0,G.az)("div",X[A]),J.className=X[A],d.el.append(J)),c[A]=J,pe[A]=J}}),c}},9482:(ye,ue,ie)=>{ie.d(ue,{B$:()=>M,Dy:()=>h,Kn:()=>A,QT:()=>V,R6:()=>X,SA:()=>z,Y3:()=>d,az:()=>ce,cP:()=>x,gD:()=>oe,hH:()=>te,l7:()=>R,lT:()=>j,pZ:()=>Z,x2:()=>ne,yV:()=>u,z2:()=>ae,zO:()=>pe});var G=ie(7628);function x(f){const m=f;Object.keys(m).forEach(y=>{try{m[y]=null}catch(b){}try{delete m[y]}catch(b){}})}function d(f,m=0){return setTimeout(f,m)}function pe(){return Date.now()}function c(f){const m=(0,G.Jj)();let y;return m.getComputedStyle&&(y=m.getComputedStyle(f,null)),!y&&f.currentStyle&&(y=f.currentStyle),y||(y=f.style),y}function X(f,m="x"){const y=(0,G.Jj)();let b,k,D;const F=c(f,null);return y.WebKitCSSMatrix?(k=F.transform||F.webkitTransform,k.split(",").length>6&&(k=k.split(", ").map(K=>K.replace(",",".")).join(", ")),D=new y.WebKitCSSMatrix(k==="none"?"":k)):(D=F.MozTransform||F.OTransform||F.MsTransform||F.msTransform||F.transform||F.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),b=D.toString().split(",")),m==="x"&&(y.WebKitCSSMatrix?k=D.m41:b.length===16?k=parseFloat(b[12]):k=parseFloat(b[4])),m==="y"&&(y.WebKitCSSMatrix?k=D.m42:b.length===16?k=parseFloat(b[13]):k=parseFloat(b[5])),k||0}function A(f){return typeof f=="object"&&f!==null&&f.constructor&&Object.prototype.toString.call(f).slice(8,-1)==="Object"}function J(f){return typeof window!="undefined"&&typeof window.HTMLElement!="undefined"?f instanceof HTMLElement:f&&(f.nodeType===1||f.nodeType===11)}function R(...f){const m=Object(f[0]),y=["__proto__","constructor","prototype"];for(let b=1;by.indexOf(F)<0);for(let F=0,K=D.length;Fk?"next":"prev",q=(L,Q)=>N==="next"&&L>=Q||N==="prev"&&L<=Q,ee=()=>{F=new Date().getTime(),D===null&&(D=F);const L=Math.max(Math.min((F-D)/K,1),0),Q=.5-Math.cos(L*Math.PI)/2;let se=k+Q*(m-k);if(q(se,m)&&(se=m),f.wrapperEl.scrollTo({[y]:se}),q(se,m)){f.wrapperEl.style.overflow="hidden",f.wrapperEl.style.scrollSnapType="",setTimeout(()=>{f.wrapperEl.style.overflow="",f.wrapperEl.scrollTo({[y]:se})}),b.cancelAnimationFrame(f.cssModeFrameID);return}f.cssModeFrameID=b.requestAnimationFrame(ee)};ee()}function U(f){return f.querySelector(".swiper-slide-transform")||f.shadowEl&&f.shadowEl.querySelector(".swiper-slide-transform")||f}function le(f=[],m=""){const y=[];return f.forEach(b=>{y.push(...b.querySelectorAll(m))}),y}function oe(f,m=""){return[...f.children].filter(y=>y.matches(m))}function ce(f,m=[]){const y=document.createElement(f);return y.classList.add(...Array.isArray(m)?m:[m]),y}function te(f){const m=(0,G.Jj)(),y=(0,G.Me)(),b=f.getBoundingClientRect(),k=y.body,D=f.clientTop||k.clientTop||0,F=f.clientLeft||k.clientLeft||0,K=f===m?m.scrollY:f.scrollTop,N=f===m?m.scrollX:f.scrollLeft;return{top:b.top+K-D,left:b.left+N-F}}function M(f,m){const y=[];for(;f.previousElementSibling;){const b=f.previousElementSibling;m?b.matches(m)&&y.push(b):y.push(b),f=b}return y}function z(f,m){const y=[];for(;f.nextElementSibling;){const b=f.nextElementSibling;m?b.matches(m)&&y.push(b):y.push(b),f=b}return y}function V(f,m){return(0,G.Jj)().getComputedStyle(f,null).getPropertyValue(m)}function j(f){let m=f,y;if(m){for(y=0;(m=m.previousSibling)!==null;)m.nodeType===1&&(y+=1);return y}}function Z(f,m){const y=[];let b=f.parentElement;for(;b;)m?b.matches(m)&&y.push(b):y.push(b),b=b.parentElement;return y}function u(f,m){function y(b){b.target===f&&(m.call(f,b),f.removeEventListener("transitionend",y))}m&&f.addEventListener("transitionend",y)}function h(f,m,y){const b=(0,G.Jj)();return y?f[m==="width"?"offsetWidth":"offsetHeight"]+parseFloat(b.getComputedStyle(f,null).getPropertyValue(m==="width"?"margin-right":"margin-top"))+parseFloat(b.getComputedStyle(f,null).getPropertyValue(m==="width"?"margin-left":"margin-bottom")):f.offsetWidth}}}]);})();
diff --git a/falcon/assets/js/swipervendor.js.map b/falcon/assets/js/swipervendor.js.map
new file mode 100644
index 0000000..e02165e
--- /dev/null
+++ b/falcon/assets/js/swipervendor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"js/swipervendor.js","mappings":"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","sources":["webpack://Falcon-theme/./node_modules/swiper/shared/get-support.js","webpack://Falcon-theme/./node_modules/swiper/shared/get-device.js","webpack://Falcon-theme/./node_modules/swiper/shared/get-browser.js","webpack://Falcon-theme/./node_modules/swiper/core/modules/resize/resize.js","webpack://Falcon-theme/./node_modules/swiper/core/modules/observer/observer.js","webpack://Falcon-theme/./node_modules/swiper/core/events-emitter.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateSize.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateSlides.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateProgress.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://Falcon-theme/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://Falcon-theme/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://Falcon-theme/./node_modules/swiper/core/update/index.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/getTranslate.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/setTranslate.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/minTranslate.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/maxTranslate.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/translateTo.js","webpack://Falcon-theme/./node_modules/swiper/core/translate/index.js","webpack://Falcon-theme/./node_modules/swiper/core/transition/setTransition.js","webpack://Falcon-theme/./node_modules/swiper/core/transition/transitionEmit.js","webpack://Falcon-theme/./node_modules/swiper/core/transition/transitionStart.js","webpack://Falcon-theme/./node_modules/swiper/core/transition/transitionEnd.js","webpack://Falcon-theme/./node_modules/swiper/core/transition/index.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideTo.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideToLoop.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideNext.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slidePrev.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideReset.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideToClosest.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://Falcon-theme/./node_modules/swiper/core/slide/index.js","webpack://Falcon-theme/./node_modules/swiper/core/loop/loopCreate.js","webpack://Falcon-theme/./node_modules/swiper/core/loop/loopFix.js","webpack://Falcon-theme/./node_modules/swiper/core/loop/loopDestroy.js","webpack://Falcon-theme/./node_modules/swiper/core/loop/index.js","webpack://Falcon-theme/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://Falcon-theme/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://Falcon-theme/./node_modules/swiper/core/grab-cursor/index.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onTouchStart.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onTouchMove.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onTouchEnd.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onResize.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onClick.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onScroll.js","webpack://Falcon-theme/./node_modules/swiper/core/events/onLoad.js","webpack://Falcon-theme/./node_modules/swiper/core/events/index.js","webpack://Falcon-theme/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://Falcon-theme/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://Falcon-theme/./node_modules/swiper/core/breakpoints/index.js","webpack://Falcon-theme/./node_modules/swiper/core/classes/addClasses.js","webpack://Falcon-theme/./node_modules/swiper/core/classes/removeClasses.js","webpack://Falcon-theme/./node_modules/swiper/core/classes/index.js","webpack://Falcon-theme/./node_modules/swiper/core/check-overflow/index.js","webpack://Falcon-theme/./node_modules/swiper/core/defaults.js","webpack://Falcon-theme/./node_modules/swiper/core/moduleExtendParams.js","webpack://Falcon-theme/./node_modules/swiper/core/core.js","webpack://Falcon-theme/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://Falcon-theme/./node_modules/swiper/modules/navigation/navigation.js","webpack://Falcon-theme/./node_modules/swiper/shared/classes-to-selector.js","webpack://Falcon-theme/./node_modules/swiper/modules/pagination/pagination.js","webpack://Falcon-theme/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://Falcon-theme/./node_modules/swiper/shared/utils.js"],"sourcesContent":["import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import { elementStyle } from '../../shared/utils.js';\nexport default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + params.spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + params.spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}","export default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","export const processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nexport const preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex !== activeIndex && realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(slideIndexLastInView - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && i > slideIndexLastInView) unlazy(swiper, i);\n }\n }\n};","import { preload } from '../../shared/process-lazy-preloader.js';\nexport function getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import { elementChildren, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","export default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slidesEl.prepend(swiper.slides[index]);\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slidesEl.append(swiper.slides[index]);\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","export default function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n swiper.update();\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { extend, deleteProps, createElement, elementChildren, elementStyle, elementIndex } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader, preload } from '../shared/process-lazy-preloader.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n const slides = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.shadowEl) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement ? el : wrapperEl,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ` ` + ' / ' + ` `;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ` `;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(params.clickableClass);\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n let {\n el\n } = swiper.pagination;\n if (!Array.isArray(el)) el = [el].filter(element => !!element);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { createElement, elementChildren } from './utils.js';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}","import { getWindow, getDocument } from 'ssr-window';\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };"],"names":["support","calcSupport","window","document","getSupport","deviceCached","calcDevice","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","major","minor","num","getBrowser","Resize","swiper","on","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","contentBoxSize","contentRect","target","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","options","ObserverFunc","mutations","observerUpdate","init","containerParents","i","destroy","events","handler","priority","self","method","event","onceHandler","args","index","eventHandler","data","context","updateSize","el","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","node","label","params","wrapperEl","slidesEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slideEl","gridEnabled","slideSize","shouldResetSlideSize","key","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","size","groups","groupSize","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","minusOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","progress","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","updateSlidesClasses","activeIndex","getFilteredSlide","selector","activeSlide","nextSlide","prevSlide","processLazyPreloader","imageEl","slideSelector","lazyEl","unlazy","preload","amount","len","slidesPerView","slideIndexLastInView","realIndex","getActiveIndexByTranslate","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","updateClickedSlide","e","slideFound","getSwiperTranslate","axis","currentTranslate","setTranslate","byController","x","y","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","duration","transitionEmit","direction","step","dir","transitionStart","transitionEnd","slideTo","initial","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","t","slideToLoop","newIndex","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slideToIndex","loopCreate","slideRealIndex","loopFix","activeSlideIndex","byMousewheel","allowSlidePrev","allowSlideNext","loopedSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","currentSlideTranslate","diff","loopParams","c","loopDestroy","newSlidesOrder","setGrabCursor","moving","unsetGrabCursor","closestElement","base","__closestFrom","found","onTouchStart","touches","targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","shouldPreventDefault","onTouchMove","pointerIndex","cachedEv","targetTouch","pageX","pageY","diffX","diffY","touchAngle","touchesDiff","prevTouchesDirection","isLoop","evt","loopFixed","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","onResize","isVirtualLoop","onClick","onScroll","onLoad","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","attachEvents","detachEvents","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","prop","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","isEnabled","getBreakpoint","containerEl","currentHeight","points","point","minRatio","a","b","value","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","removeClasses","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideRightEdge","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","defaults","eventName","min","current","cls","className","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","element","getWrapperSelector","deleteInstance","cleanStyles","newDefaults","modules","module","m","prototypeGroup","protoMethod","Autoplay","timeout","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","onTransitionEnd","resume","calcTimeLeft","timeLeft","getSlideDelay","activeSlideEl","run","delayForce","delay","currentSlideDelay","proceed","start","stop","pause","reset","onVisibilityChange","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","_s","Navigation","makeElementsArray","getEl","res","toggleEl","disabled","subEl","update","nextEl","prevEl","onPrevClick","onNextClick","initButton","destroyButton","disable","isHidden","enable","classesToSelector","classes","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","bulletActiveClass","onBulletClick","newSlideIndex","currentSlideIndex","total","bullets","firstIndex","midIndex","classesToRemove","suffix","s","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","createElementIfNotDefined","originalParams","checkProps","deleteProps","object","nextTick","callback","now","getComputedStyle","style","getTranslate","matrix","curTransform","transformMatrix","curStyle","isObject","o","isNode","extend","to","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","startTime","time","isOutOfBound","animate","easeProgress","currentPosition","getSlideTransformEl","findElementsInElements","elements","elementChildren","createElement","tag","elementOffset","box","body","clientTop","clientLeft","scrollTop","scrollLeft","elementPrevAll","prevEls","prev","elementNextAll","nextEls","next","elementStyle","elementIndex","child","elementParents","parents","parent","elementTransitionEnd","fireCallBack","elementOuterSize","includeMargins"],"sourceRoot":""}
\ No newline at end of file
diff --git a/falcon/assets/js/theme.js b/falcon/assets/js/theme.js
new file mode 100644
index 0000000..6f1dcd2
--- /dev/null
+++ b/falcon/assets/js/theme.js
@@ -0,0 +1,69 @@
+(()=>{var le=Object.defineProperty,ue=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var ie=Object.getOwnPropertySymbols;var fe=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var ae=(Mt,Nt,q)=>Nt in Mt?le(Mt,Nt,{enumerable:!0,configurable:!0,writable:!0,value:q}):Mt[Nt]=q,Lt=(Mt,Nt)=>{for(var q in Nt||(Nt={}))fe.call(Nt,q)&&ae(Mt,q,Nt[q]);if(ie)for(var q of ie(Nt))pe.call(Nt,q)&&ae(Mt,q,Nt[q]);return Mt},It=(Mt,Nt)=>ue(Mt,de(Nt));(()=>{var Mt={1679:(_,R,o)=>{var j,t,b;(function(e){t=[o(5311)],j=e,b=typeof j=="function"?j.apply(R,t):j,b!==void 0&&(_.exports=b)})(function(e){"use strict";var M=0;e.fn.TouchSpin=function(N){var A={min:0,max:100,initval:"",replacementval:"",firstclickvalueifempty:null,step:1,decimals:0,stepinterval:100,forcestepdivisibility:"round",stepintervaldelay:500,verticalbuttons:!1,verticalup:"+",verticaldown:"-",verticalupclass:"",verticaldownclass:"",prefix:"",postfix:"",prefix_extraclass:"",postfix_extraclass:"",booster:!0,boostat:10,maxboostedstep:!1,mousewheel:!0,buttondown_class:"btn btn-primary",buttonup_class:"btn btn-primary",buttondown_txt:"-",buttonup_txt:"+",callback_before_calculation:function(r){return r},callback_after_calculation:function(r){return r}},x={min:"min",max:"max",initval:"init-val",replacementval:"replacement-val",firstclickvalueifempty:"first-click-value-if-empty",step:"step",decimals:"decimals",stepinterval:"step-interval",verticalbuttons:"vertical-buttons",verticalupclass:"vertical-up-class",verticaldownclass:"vertical-down-class",forcestepdivisibility:"force-step-divisibility",stepintervaldelay:"step-interval-delay",prefix:"prefix",postfix:"postfix",prefix_extraclass:"prefix-extra-class",postfix_extraclass:"postfix-extra-class",booster:"booster",boostat:"boostat",maxboostedstep:"max-boosted-step",mousewheel:"mouse-wheel",buttondown_class:"button-down-class",buttonup_class:"button-up-class",buttondown_txt:"button-down-txt",buttonup_txt:"button-up-txt"};return this.each(function(){var r,a=e(this),Y=a.data(),u,E,S,m,h,g,rt,p,v,i=0,w=!1;P();function P(){if(!a.data("alreadyinitialized")){if(a.data("alreadyinitialized",!0),M+=1,a.data("spinnerid",M),!a.is("input")){console.log("Must be an input.");return}k(),z(),B(),yt(),gt(),l(),T(),D()}}function z(){r.initval!==""&&a.val()===""&&a.val(r.initval)}function I(f){lt(f),B();var O=m.input.val();O!==""&&(O=Number(r.callback_before_calculation(m.input.val())),m.input.val(r.callback_after_calculation(Number(O).toFixed(r.decimals))))}function k(){r=e.extend({},A,Y,V(),N)}function V(){var f={};return e.each(x,function(O,ct){var dt="bts-"+ct;a.is("[data-"+dt+"]")&&(f[O]=a.data(dt))}),f}function at(){var f=a.parent();Z(),a.off(".touchspin"),f.hasClass("bootstrap-touchspin-injected")?(a.siblings().remove(),a.unwrap()):(e(".bootstrap-touchspin-injected",f).remove(),f.removeClass("bootstrap-touchspin")),a.data("alreadyinitialized",!1)}function lt(f){if(r=e.extend({},r,f),f.postfix){var O=a.parent().find(".bootstrap-touchspin-postfix");O.length===0&&E.insertAfter(a),a.parent().find(".bootstrap-touchspin-postfix .input-group-text").text(f.postfix)}if(f.prefix){var ct=a.parent().find(".bootstrap-touchspin-prefix");ct.length===0&&u.insertBefore(a),a.parent().find(".bootstrap-touchspin-prefix .input-group-text").text(f.prefix)}l()}function yt(){var f=a.val(),O=a.parent();f!==""&&(f=r.callback_after_calculation(Number(f).toFixed(r.decimals))),a.data("initvalue",f).val(f),a.addClass("form-control"),O.hasClass("input-group")?Tt(O):nt()}function Tt(f){f.addClass("bootstrap-touchspin");var O=a.prev(),ct=a.next(),dt,wt,Dt=''+r.prefix+" ",qt=''+r.postfix+" ";O.hasClass("input-group-btn")||O.hasClass("input-group-prepend")?(dt=''+r.buttondown_txt+" ",O.append(dt)):(dt=''+r.buttondown_txt+" ",e(dt).insertBefore(a)),ct.hasClass("input-group-btn")||ct.hasClass("input-group-append")?(wt=''+r.buttonup_txt+" ",ct.prepend(wt)):(wt=''+r.buttonup_txt+" ",e(wt).insertAfter(a)),e(Dt).insertBefore(a),e(qt).insertAfter(a),S=f}function nt(){var f,O="";a.hasClass("input-sm")&&(O="input-group-sm"),a.hasClass("input-lg")&&(O="input-group-lg"),r.verticalbuttons?f=''+r.prefix+' '+r.postfix+' '+r.verticalup+' '+r.verticaldown+"
":f=''+r.buttondown_txt+' '+r.prefix+' '+r.postfix+' '+r.buttonup_txt+"
",S=e(f).insertBefore(a),e(".bootstrap-touchspin-prefix",S).after(a),a.hasClass("input-sm")?S.addClass("input-group-sm"):a.hasClass("input-lg")&&S.addClass("input-group-lg")}function gt(){m={down:e(".bootstrap-touchspin-down",S),up:e(".bootstrap-touchspin-up",S),input:e("input",S),prefix:e(".bootstrap-touchspin-prefix",S).addClass(r.prefix_extraclass),postfix:e(".bootstrap-touchspin-postfix",S).addClass(r.postfix_extraclass)}}function l(){r.prefix===""&&(u=m.prefix.detach()),r.postfix===""&&(E=m.postfix.detach())}function T(){a.on("keydown.touchspin",function(f){var O=f.keyCode||f.which;O===38?(w!=="up"&&(G(),ut()),f.preventDefault()):O===40&&(w!=="down"&&(H(),X()),f.preventDefault())}),a.on("keyup.touchspin",function(f){var O=f.keyCode||f.which;(O===38||O===40)&&Z()}),a.on("blur.touchspin",function(){B(),a.val(r.callback_after_calculation(a.val()))}),m.down.on("keydown",function(f){var O=f.keyCode||f.which;(O===32||O===13)&&(w!=="down"&&(H(),X()),f.preventDefault())}),m.down.on("keyup.touchspin",function(f){var O=f.keyCode||f.which;(O===32||O===13)&&Z()}),m.up.on("keydown.touchspin",function(f){var O=f.keyCode||f.which;(O===32||O===13)&&(w!=="up"&&(G(),ut()),f.preventDefault())}),m.up.on("keyup.touchspin",function(f){var O=f.keyCode||f.which;(O===32||O===13)&&Z()}),m.down.on("mousedown.touchspin",function(f){m.down.off("touchstart.touchspin"),!a.is(":disabled")&&(H(),X(),f.preventDefault(),f.stopPropagation())}),m.down.on("touchstart.touchspin",function(f){m.down.off("mousedown.touchspin"),!a.is(":disabled")&&(H(),X(),f.preventDefault(),f.stopPropagation())}),m.up.on("mousedown.touchspin",function(f){m.up.off("touchstart.touchspin"),!a.is(":disabled")&&(G(),ut(),f.preventDefault(),f.stopPropagation())}),m.up.on("touchstart.touchspin",function(f){m.up.off("mousedown.touchspin"),!a.is(":disabled")&&(G(),ut(),f.preventDefault(),f.stopPropagation())}),m.up.on("mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin",function(f){w&&(f.stopPropagation(),Z())}),m.down.on("mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin",function(f){w&&(f.stopPropagation(),Z())}),m.down.on("mousemove.touchspin touchmove.touchspin",function(f){w&&(f.stopPropagation(),f.preventDefault())}),m.up.on("mousemove.touchspin touchmove.touchspin",function(f){w&&(f.stopPropagation(),f.preventDefault())}),a.on("mousewheel.touchspin DOMMouseScroll.touchspin",function(f){if(!(!r.mousewheel||!a.is(":focus"))){var O=f.originalEvent.wheelDelta||-f.originalEvent.deltaY||-f.originalEvent.detail;f.stopPropagation(),f.preventDefault(),O<0?H():G()}})}function D(){a.on("touchspin.destroy",function(){at()}),a.on("touchspin.uponce",function(){Z(),G()}),a.on("touchspin.downonce",function(){Z(),H()}),a.on("touchspin.startupspin",function(){ut()}),a.on("touchspin.startdownspin",function(){X()}),a.on("touchspin.stopspin",function(){Z()}),a.on("touchspin.updatesettings",function(f,O){I(O)})}function U(f){switch(r.forcestepdivisibility){case"round":return(Math.round(f/r.step)*r.step).toFixed(r.decimals);case"floor":return(Math.floor(f/r.step)*r.step).toFixed(r.decimals);case"ceil":return(Math.ceil(f/r.step)*r.step).toFixed(r.decimals);default:return f.toFixed(r.decimals)}}function B(){var f,O,ct;if(f=r.callback_before_calculation(a.val()),f===""){r.replacementval!==""&&(a.val(r.replacementval),a.trigger("change"));return}r.decimals>0&&f==="."||(O=parseFloat(f),isNaN(O)&&(r.replacementval!==""?O=r.replacementval:O=0),ct=O,O.toString()!==f&&(ct=O),r.min!==null&&Or.max&&(ct=r.max),ct=U(ct),Number(f).toString()!==ct.toString()&&(a.val(ct),a.trigger("change")))}function tt(){if(r.booster){var f=Math.pow(2,Math.floor(i/r.boostat))*r.step;return r.maxboostedstep&&f>r.maxboostedstep&&(f=r.maxboostedstep,h=Math.round(h/f)*f),Math.max(r.step,f)}else return r.step}function J(){return typeof r.firstclickvalueifempty=="number"?r.firstclickvalueifempty:(r.min+r.max)/2}function G(){B(),h=parseFloat(r.callback_before_calculation(m.input.val()));var f=h,O;isNaN(h)?h=J():(O=tt(),h=h+O),r.max!==null&&h>r.max&&(h=r.max,a.trigger("touchspin.on.max"),Z()),m.input.val(r.callback_after_calculation(Number(h).toFixed(r.decimals))),f!==h&&a.trigger("change")}function H(){B(),h=parseFloat(r.callback_before_calculation(m.input.val()));var f=h,O;isNaN(h)?h=J():(O=tt(),h=h-O),r.min!==null&&h li > .active",at='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',lt=".dropdown-toggle",yt="> .dropdown-menu .active",Tt=function(){function nt(l){this._element=l}var gt=nt.prototype;return gt.show=function(){var T=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&e.default(this._element).hasClass(m)||e.default(this._element).hasClass(h)||this._element.hasAttribute("disabled"))){var D,U,B=e.default(this._element).closest(I)[0],tt=M.default.getSelectorFromElement(this._element);if(B){var J=B.nodeName==="UL"||B.nodeName==="OL"?V:k;U=e.default.makeArray(e.default(B).find(J)),U=U[U.length-1]}var G=e.default.Event(p,{relatedTarget:this._element}),H=e.default.Event(i,{relatedTarget:U});if(U&&e.default(U).trigger(G),e.default(this._element).trigger(H),!(H.isDefaultPrevented()||G.isDefaultPrevented())){tt&&(D=document.querySelector(tt)),this._activate(this._element,B);var X=function(){var Z=e.default.Event(v,{relatedTarget:T._element}),f=e.default.Event(w,{relatedTarget:U});e.default(U).trigger(Z),e.default(T._element).trigger(f)};D?this._activate(D,D.parentNode,X):X()}}},gt.dispose=function(){e.default.removeData(this._element,a),this._element=null},gt._activate=function(T,D,U){var B=this,tt=D&&(D.nodeName==="UL"||D.nodeName==="OL")?e.default(D).find(V):e.default(D).children(k),J=tt[0],G=U&&J&&e.default(J).hasClass(g),H=function(){return B._transitionComplete(T,J,U)};if(J&&G){var X=M.default.getTransitionDurationFromElement(J);e.default(J).removeClass(rt).one(M.default.TRANSITION_END,H).emulateTransitionEnd(X)}else H()},gt._transitionComplete=function(T,D,U){if(D){e.default(D).removeClass(m);var B=e.default(D.parentNode).find(yt)[0];B&&e.default(B).removeClass(m),D.getAttribute("role")==="tab"&&D.setAttribute("aria-selected",!1)}e.default(T).addClass(m),T.getAttribute("role")==="tab"&&T.setAttribute("aria-selected",!0),M.default.reflow(T),T.classList.contains(g)&&T.classList.add(rt);var tt=T.parentNode;if(tt&&tt.nodeName==="LI"&&(tt=tt.parentNode),tt&&e.default(tt).hasClass(S)){var J=e.default(T).closest(z)[0];if(J){var G=[].slice.call(J.querySelectorAll(lt));e.default(G).addClass(m)}T.setAttribute("aria-expanded",!0)}U&&U()},nt._jQueryInterface=function(T){return this.each(function(){var D=e.default(this),U=D.data(a);if(U||(U=new nt(this),D.data(a,U)),typeof T=="string"){if(typeof U[T]=="undefined")throw new TypeError('No method named "'+T+'"');U[T]()}})},A(nt,null,[{key:"VERSION",get:function(){return r}}]),nt}();return e.default(document).on(P,at,function(nt){nt.preventDefault(),Tt._jQueryInterface.call(e.default(this),"show")}),e.default.fn[x]=Tt._jQueryInterface,e.default.fn[x].Constructor=Tt,e.default.fn[x].noConflict=function(){return e.default.fn[x]=E,Tt._jQueryInterface},Tt})},6801:function(_,R,o){/*!
+ * Bootstrap util.js v4.6.2 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */(function(j,t){_.exports=t(o(5311))})(this,function(j){"use strict";function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var b=t(j),e="transitionend",M=1e6,N=1e3;function A(u){return u===null||typeof u=="undefined"?""+u:{}.toString.call(u).match(/\s([a-z]+)/i)[1].toLowerCase()}function x(){return{bindType:e,delegateType:e,handle:function(E){if(b.default(E.target).is(this))return E.handleObj.handler.apply(this,arguments)}}}function r(u){var E=this,S=!1;return b.default(this).one(Y.TRANSITION_END,function(){S=!0}),setTimeout(function(){S||Y.triggerTransitionEnd(E)},u),this}function a(){b.default.fn.emulateTransitionEnd=r,b.default.event.special[Y.TRANSITION_END]=x()}var Y={TRANSITION_END:"bsTransitionEnd",getUID:function(E){do E+=~~(Math.random()*M);while(document.getElementById(E));return E},getSelectorFromElement:function(E){var S=E.getAttribute("data-target");if(!S||S==="#"){var m=E.getAttribute("href");S=m&&m!=="#"?m.trim():""}try{return document.querySelector(S)?S:null}catch(h){return null}},getTransitionDurationFromElement:function(E){if(!E)return 0;var S=b.default(E).css("transition-duration"),m=b.default(E).css("transition-delay"),h=parseFloat(S),g=parseFloat(m);return!h&&!g?0:(S=S.split(",")[0],m=m.split(",")[0],(parseFloat(S)+parseFloat(m))*N)},reflow:function(E){return E.offsetHeight},triggerTransitionEnd:function(E){b.default(E).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(E){return(E[0]||E).nodeType},typeCheckConfig:function(E,S,m){for(var h in m)if(Object.prototype.hasOwnProperty.call(m,h)){var g=m[h],rt=S[h],p=rt&&Y.isElement(rt)?"element":A(rt);if(!new RegExp(g).test(p))throw new Error(E.toUpperCase()+": "+('Option "'+h+'" provided type "'+p+'" ')+('but expected type "'+g+'".'))}},findShadowRoot:function(E){if(!document.documentElement.attachShadow)return null;if(typeof E.getRootNode=="function"){var S=E.getRootNode();return S instanceof ShadowRoot?S:null}return E instanceof ShadowRoot?E:E.parentNode?Y.findShadowRoot(E.parentNode):null},jQueryDetection:function(){if(typeof b.default=="undefined")throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var E=b.default.fn.jquery.split(" ")[0].split("."),S=1,m=2,h=9,g=1,rt=4;if(E[0]=rt)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};return Y.jQueryDetection(),a(),Y})},3216:function(_){/*!
+ * bsCustomFileInput v1.3.4 (https://github.com/Johann-S/bs-custom-file-input)
+ * Copyright 2018 - 2020 Johann-S
+ * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)
+ */(function(R,o){_.exports=o()})(this,function(){"use strict";var R={CUSTOMFILE:'.custom-file input[type="file"]',CUSTOMFILELABEL:".custom-file-label",FORM:"form",INPUT:"input"},o=3,j=function(S){var m="",h=S.parentNode.querySelector(R.CUSTOMFILELABEL);return h&&(m=h.textContent),m},t=function(S){if(S.childNodes.length>0)for(var m=[].slice.call(S.childNodes),h=0;h{"use strict";const R=l=>new DOMParser().parseFromString(l,"text/html").body.children[0];let o=0;const j=(l="alert_toast_")=>(o+=1,l+o),b=l=>{const{duration:T=4e3}=l||{},D="alert-toast-stack",U=document.querySelector("body"),B=(O,ct,dt)=>R(`
+
+ `),tt=()=>R(`
+
+
+ `),J=()=>{const O=()=>document.querySelector(`#${D}`);return O()||U.append(tt()),O()},G=O=>{O.classList.remove("show");const ct=parseFloat(window.getComputedStyle(O).transitionDuration)*1e3;setTimeout(()=>{O.remove()},ct)},H=(O,ct,dt=!1)=>{const wt=j(),Dt=B(O,ct,wt),qt=J();dt=dt||T,qt.prepend(Dt);const et=document.querySelector(`#${wt}`);et.classList.remove("d-none"),setTimeout(()=>{et.classList.add("show")},10),et.dataset.timeoutId=setTimeout(()=>{G(et)},dt)};return{info:(O,ct=!1)=>{H(O,"info",ct)},success:(O,ct=!1)=>{H(O,"success",ct)},danger:(O,ct=!1)=>{H(O,"danger",ct)},warning:(O,ct=!1)=>{H(O,"warning",ct)},showToast:H}},e="application/json",M="Content-Type",N=Symbol();function A(l={}){var T;return(T=Object.entries(l).find(([D])=>D.toLowerCase()===M.toLowerCase()))===null||T===void 0?void 0:T[1]}function x(l){return/^application\/.*json.*/.test(l)}const r=function(l,T,D=!1){return Object.entries(T).reduce((U,[B,tt])=>{const J=l[B];return Array.isArray(J)&&Array.isArray(tt)?U[B]=D?[...J,...tt]:tt:typeof J=="object"&&typeof tt=="object"?U[B]=r(J,tt,D):U[B]=tt,U},Lt({},l))},a={options:{},errorType:"text",polyfills:{},polyfill(l,T=!0,D=!1,...U){const B=this.polyfills[l]||(typeof self!="undefined"?self[l]:null)||(typeof global!="undefined"?global[l]:null);if(T&&!B)throw new Error(l+" is not defined");return D&&B?new B(...U):B}};function Y(l,T=!1){a.options=T?l:r(a.options,l)}function u(l,T=!1){a.polyfills=T?l:r(a.polyfills,l)}function E(l){a.errorType=l}const S=a,m=l=>T=>l.reduceRight((D,U)=>U(D),T)||T;class h extends Error{}const g=l=>{const T=Object.create(null);l=l._addons.reduce((et,ft)=>ft.beforeRequest&&ft.beforeRequest(et,l._options,T)||et,l);const{_url:D,_options:U,_config:B,_catchers:tt,_resolvers:J,_middlewares:G,_addons:H}=l,X=new Map(tt),ut=r(B.options,U);let Z=D;const f=m(G)((et,ft)=>(Z=et,B.polyfill("fetch")(et,ft)))(D,ut),O=new Error,ct=f.catch(et=>{throw{__wrap:et}}).then(et=>{if(!et.ok){const ft=new h;if(ft.cause=O,ft.stack=ft.stack+`
+CAUSE: `+O.stack,ft.response=et,ft.url=Z,et.type==="opaque")throw ft;return et.text().then(Ct=>{var jt;if(ft.message=Ct,B.errorType==="json"||((jt=et.headers.get("Content-Type"))===null||jt===void 0?void 0:jt.split(";")[0])==="application/json")try{ft.json=JSON.parse(Ct)}catch(Ut){}throw ft.text=Ct,ft.status=et.status,ft})}return et}),dt=et=>et.catch(ft=>{const Ct=ft.__wrap||ft,jt=Ct.status&&X.get(Ct.status)||X.get(Ct.name)||ft.__wrap&&X.has(N)&&X.get(N);if(jt)return jt(Ct,l);throw Ct}),wt=et=>ft=>dt(et?ct.then(Ct=>Ct&&Ct[et]()).then(Ct=>ft?ft(Ct):Ct):ct.then(Ct=>ft?ft(Ct):Ct)),Dt={_wretchReq:l,_fetchReq:f,_sharedState:T,res:wt(null),json:wt("json"),blob:wt("blob"),formData:wt("formData"),arrayBuffer:wt("arrayBuffer"),text:wt("text"),error(et,ft){return X.set(et,ft),this},badRequest(et){return this.error(400,et)},unauthorized(et){return this.error(401,et)},forbidden(et){return this.error(403,et)},notFound(et){return this.error(404,et)},timeout(et){return this.error(408,et)},internalError(et){return this.error(500,et)},fetchError(et){return this.error(N,et)}},qt=H.reduce((et,ft)=>Lt(Lt({},et),ft.resolver),Dt);return J.reduce((et,ft)=>ft(et,l),qt)},rt={_url:"",_options:{},_config:S,_catchers:new Map,_resolvers:[],_deferred:[],_middlewares:[],_addons:[],addon(l){return Lt(It(Lt({},this),{_addons:[...this._addons,l]}),l.wretch)},errorType(l){return It(Lt({},this),{_config:It(Lt({},this._config),{errorType:l})})},polyfills(l,T=!1){return It(Lt({},this),{_config:It(Lt({},this._config),{polyfills:T?l:r(this._config.polyfills,l)})})},url(l,T=!1){if(T)return It(Lt({},this),{_url:l});const D=this._url.split("?");return It(Lt({},this),{_url:D.length>1?D[0]+l+"?"+D[1]:this._url+l})},options(l,T=!1){return It(Lt({},this),{_options:T?l:r(this._options,l)})},headers(l){return It(Lt({},this),{_options:r(this._options,{headers:l||{}})})},accept(l){return this.headers({Accept:l})},content(l){return this.headers({[M]:l})},auth(l){return this.headers({Authorization:l})},catcher(l,T){const D=new Map(this._catchers);return D.set(l,T),It(Lt({},this),{_catchers:D})},resolve(l,T=!1){return It(Lt({},this),{_resolvers:T?[l]:[...this._resolvers,l]})},defer(l,T=!1){return It(Lt({},this),{_deferred:T?[l]:[...this._deferred,l]})},middlewares(l,T=!1){return It(Lt({},this),{_middlewares:T?l:[...this._middlewares,...l]})},fetch(l=this._options.method,T="",D=null){let U=this.url(T).options({method:l});const B=A(U._options.headers),tt=typeof D=="object"&&(!U._options.headers||!B||x(B));return U=D?tt?U.json(D,B):U.body(D):U,g(U._deferred.reduce((J,G)=>G(J,J._url,J._options),U))},get(l=""){return this.fetch("GET",l)},delete(l=""){return this.fetch("DELETE",l)},put(l,T=""){return this.fetch("PUT",T,l)},post(l,T=""){return this.fetch("POST",T,l)},patch(l,T=""){return this.fetch("PATCH",T,l)},head(l=""){return this.fetch("HEAD",l)},opts(l=""){return this.fetch("OPTIONS",l)},body(l){return It(Lt({},this),{_options:It(Lt({},this._options),{body:l})})},json(l,T){const D=A(this._options.headers);return this.content(T||x(D)&&D||e).body(JSON.stringify(l))}};function p(l="",T={}){return It(Lt({},rt),{_url:l,_options:T})}p.default=p,p.options=Y,p.errorType=E,p.polyfills=u,p.WretchError=h;const v=p;function i(l){return typeof l!="undefined"?l:""}const w=(l,T,D,U)=>{let B;if(typeof T=="string")B=T;else{const J=U.polyfill("URLSearchParams",!0,!0);for(const G in T){const H=T[G];if(T[G]instanceof Array)for(const X of H)J.append(G,i(X));else J.append(G,i(H))}B=J.toString()}const tt=l.split("?");return B?D||tt.length<2?tt[0]+"?"+B:l+"&"+B:D?tt[0]:l},z={wretch:{query(l,T=!1){return It(Lt({},this),{_url:w(this._url,l,T,this._config)})}}};let I=[];const V=(l=[])=>{l&&Array.isArray(l)&&l.length>0&&(I=l);const T=()=>I,D=tt=>{I=tt};return{getFavoriteProducts:T,addProductKey:tt=>{const J=T();D([...J,tt])},removeProductKey:tt=>{const J=T();D(J.filter(G=>G!==tt))}}};var at=(l,T,D)=>new Promise((U,B)=>{var tt=H=>{try{G(D.next(H))}catch(X){B(X)}},J=H=>{try{G(D.throw(H))}catch(X){B(X)}},G=H=>H.done?U(H.value):Promise.resolve(H.value).then(tt,J);G((D=D.apply(l,T)).next())});const yt=()=>{const l=window.favoriteProducts||[],{getFavoriteProducts:T,addProductKey:D,removeProductKey:U}=V(l),B=G=>v(G).addon(z);return{getFavoriteProducts:T,addToFavorite:(G,H,X=0)=>at(void 0,null,function*(){return new Promise((ut,Z)=>{B(window.addToFavoriteAction).query({id_product:G,id_product_attribute:H,refresh_list:X}).post().json(f=>{f.success&&D(`${G}_${H}`),ut(f)}).catch(()=>{Z(Error("Something went wrong"))})})}),removeFromFavorite:(G,H,X=0)=>at(void 0,null,function*(){return new Promise((ut,Z)=>{B(window.removeFromFavoriteAction).query({id_product:G,id_product_attribute:H,refresh_list:X}).post().json(f=>{f.success&&U(`${G}_${H}`),ut(f)}).catch(()=>{Z(Error("Something went wrong"))})})})}},nt=(l='[data-action="toggleFavorite"]')=>{const{getFavoriteProducts:T}=V(),D=()=>document.querySelectorAll(l),U="active",B=X=>document.querySelectorAll(`${l}[data-key="${X}"]`);return{getProductIdsFromKey:X=>{const[ut,Z]=X.split("_");return{idProduct:parseInt(ut,10),idProductAttribute:parseInt(Z,10)}},refreshButtons:()=>{D().forEach(X=>{X.dataset[U]=!1}),T().forEach(X=>{B(X).forEach(Z=>{Z.dataset[U]=!0})})},setBtnActive:X=>{const{key:ut}=X.dataset;B(ut).forEach(f=>{f.dataset[U]=!0})},setBtnInactive:X=>{const{key:ut}=X.dataset;B(ut).forEach(f=>{f.dataset[U]=!1})}}};var gt=(l,T,D)=>new Promise((U,B)=>{var tt=H=>{try{G(D.next(H))}catch(X){B(X)}},J=H=>{try{G(D.throw(H))}catch(X){B(X)}},G=H=>H.done?U(H.value):Promise.resolve(H.value).then(tt,J);G((D=D.apply(l,T)).next())});document.addEventListener("DOMContentLoaded",()=>{const{addToFavorite:l,removeFromFavorite:T}=yt(),{getProductIdsFromKey:D,refreshButtons:U,setBtnActive:B,setBtnInactive:tt}=nt(),{success:J,danger:G}=b(),H=(ut,Z="success")=>{Z==="success"?J(ut):G(ut)},X=ut=>{const Z=document.querySelector(".js-favorite-top-content");if(Z){const f=document.createElement("div");f.innerHTML=ut,Z.replaceWith(...f.children)}};document.addEventListener("click",ut=>gt(void 0,null,function*(){const Z=ut.target.matches('[data-action="toggleFavorite"]')?ut.target:ut.target.closest('[data-action="toggleFavorite"]');if(Z){ut.preventDefault();const{idProduct:f,idProductAttribute:O}=D(Z.dataset.key);if(Z.dataset.active==="true")try{const{success:dt,messages:wt,topContent:Dt}=yield T(f,O);H(wt,dt?"success":"error"),dt&&(tt(Z),X(Dt))}catch(dt){H([dt.message],"error")}else try{const{success:dt,messages:wt,topContent:Dt}=yield l(f,O);H(wt,dt?"success":"error"),dt&&(B(Z),X(Dt))}catch(dt){H([dt.message],"error")}window.isFavoriteProductsListingPage&&prestashop.emit("updateFacets",window.location.href)}}),!1),U(),prestashop.on("updatedProduct",()=>{setTimeout(U,1)}),prestashop.on("updatedProductList",()=>{setTimeout(U,1)})})},2058:()=>{"use strict";function _({searchUrl:j,input:t,onType:b,onResult:e,beforeSend:M,onRemoveResult:N,perPage:A,appendTo:x,min:r,timeout:a}){this.searchUrl=j,this.input=t,this.appendTo=document.querySelector(x),this.onType=b||(()=>{}),this.onResult=e||(()=>{}),this.onRemoveResult=N||(()=>{}),this.beforeSend=M||(()=>{}),this.min=r||3,this.perPage=A||10,this.timeout=a||300,this.resultBox=null;const Y={};let u=null;const E="js-search-result",S=()=>this.input.value,m=p=>p.length>=this.min,h=()=>{this.resultBox&&(this.onRemoveResult(),this.resultBox.remove())},g=(p,v)=>{h();const i=document.createElement("div");i.classList.add(E),i.innerHTML=p.content,this.appendTo.appendChild(i),this.resultBox=document.querySelector(`.${E}`),this.onResult({input:this.input,appendTo:this.appendTo,s:v,data:p})},rt=p=>{if(this.beforeSend({input:this.input,appendTo:this.appendTo,s:p}),typeof Y[p]!="undefined"){g(Y[p],p);return}let v={s:p,perPage:this.perPage,ajax:1};v=Object.keys(v).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(v[i])}`).join("&"),fetch(this.searchUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:v}).then(i=>i.text()).then(i=>{i=JSON.parse(i),Y[p]=i,g(i,p)}).catch(i=>console.error(i))};return this.removeResults=()=>{h()},this.input.addEventListener("keyup",()=>{u&&clearTimeout(u);const p=S();if(this.onType({input:this.input,appendTo:this.appendTo,s:p}),!m(p)){h();return}u=setTimeout(()=>{rt(p)},this.timeout)}),this}const R=_,o=()=>{const j=document.querySelector(".js-search-input");if(!j)return;const b=(x=>x&&x.length?x.getAttribute("data-search-controller-url"):null)(document.querySelector("[data-search-controller-url]")),e=document.querySelector("body"),M=j.closest(".js-search-form"),N=document.createElement("div");if(N.classList.add("search-backdrop"),e.appendChild(N),!b)return;const A=new R({searchUrl:b,input:j,appendTo:".js-search-form",perPage:6,onResult:()=>{e.classList.add("search-result-open"),prestashop.pageLazyLoad.update()},onRemoveResult:()=>{e.classList.remove("search-result-open")},beforeSend:()=>{},onType:()=>{}});e.addEventListener("click",({target:x})=>{e.classList.contains("search-result-open")&&x!==M&&!x.closest(".js-search-form")&&(e.classList.remove("search-result-open"),A.removeResults())})};document.addEventListener("DOMContentLoaded",o)},5113:()=>{function _(){const R=document.querySelector("body");function o(){const t=document.querySelector(".js-blockcart");$(t).on("show.bs.dropdown",()=>{R.classList.add("header-dropdown-open","block-cart-open")}),$(t).on("hide.bs.dropdown",b=>{const{target:e}=b;return!e.classList.contains("dropdown-close")&&(e.classList.contains("keep-open")||e.closest(".keep-open")||b.clickEvent&&b.clickEvent.target.closest(".keep-open"))?!1:(R.classList.remove("header-dropdown-open","block-cart-open"),!0)})}prestashop.blockcart=prestashop.blockcart||{};const{showModal:j}=prestashop.blockcart;o(),prestashop.on("updateCart",t=>{const b=document.querySelector(".js-blockcart").dataset.refreshUrl;let e={};if(t&&t.reason&&typeof t.resp!="undefined"&&!t.resp.hasError&&(e={id_customization:t.reason.idCustomization,id_product_attribute:t.reason.idProductAttribute,id_product:t.reason.idProduct,action:t.reason.linkAction,ajax:1}),e=Object.keys(e).map(M=>`${encodeURIComponent(M)}=${encodeURIComponent(e[M])}`).join("&"),t&&t.resp&&t.resp.hasError){const M=document.querySelector("#blockcart-error"),N=document.querySelector(".js-blockcart-alert");N.innerHTML=t.resp.errors.join(" "),$(M).modal("show")}fetch(b,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}).then(M=>M.json()).then(M=>{const N=new DOMParser().parseFromString(M.preview,"text/html").querySelector(".js-blockcart");if(N&&document.querySelector(".js-blockcart").replaceWith(N),M.modal&&j(M.modal),prestashop.emit("updatedBlockCart",M),R.classList.contains("block-cart-open")){const A=R.querySelector('.js-blockcart [data-toggle="dropdown"]');A&&A.click()}o(),R.classList.remove("cart-loading")}).catch(M=>{prestashop.emit("handleError",{eventType:"updateShoppingCart",resp:M})})})}document.addEventListener("DOMContentLoaded",()=>{_()})},9987:(_,R,o)=>{"use strict";var j=o(5311),t=o.n(j),b=o(5511),e=o(9331),M=o(8471),N=o(6801),A=o(1679),x=o(2160);class r{constructor({jqueryPluginCover:s,importer:c}={}){this.jqueryPluginCover=s,this.importer=c,this.jqueryFuncCalled=[],this.setJqueryPlugin()}callJqueryAction(){for(const s of this.jqueryFuncCalled)s.elem[this.jqueryPluginCover](s.args)}fetchFiles(){this.importer.loadFiles(()=>this.callJqueryAction())}setJqueryPlugin(){const s=this;t().fn[this.jqueryPluginCover]=function(c){return s.jqueryFuncCalled.push({elem:this,args:c}),s.fetchFiles(),this}}}const a=r;class Y{constructor({importer:s,events:c,eventSelector:L,preventDefault:W}={}){this.eventSelector=L,this.events=c,this.eventsArray=c.split(" "),this.preventDefault=W,this.importer=s,this.fetchFiles=this.fetchFiles.bind(this),this.bindEvents()}fetchFiles(s=!1){s&&this.preventDefault&&s.preventDefault(),this.importer.loadFiles(()=>{s&&this.eventsArray.includes(s.type)&&(t()(s.target).trigger(s.type),this.unbindEvents())})}bindEvents(){t()(document).on(this.events,this.eventSelector,this.fetchFiles)}unbindEvents(){t()(document).off(this.events,this.eventSelector,this.fetchFiles)}}const u=Y;class E{constructor({files:s,jqueryPluginCover:c=null,enableObserve:L=!1,observeOptions:W=!1,DOMEvents:mt=!1,DOMEventsSelector:vt=!1,DOMEventsPreventDefault:St=!1,onLoadFiles:ht=()=>{}}={}){this.files=s,this.jqueryPluginCover=c,this.enableObserve=L,this.observeOptions=W,this.onLoadFiles=ht,this.jqueryDynamicImport=!1,this.dynamicDOMEvents=!1,this.filesLoaded=!1,c&&(this.jqueryDynamicImport=new a({jqueryPluginCover:c,importer:this})),mt&&vt&&(this.dynamicDOMEvents=new u({events:mt,eventSelector:vt,preventDefault:St,importer:this}))}loadFiles(s=()=>{}){this.filesLoaded||(Promise.all(this.files()).then(c=>{s(),this.onLoadFiles(c)}),this.filesLoaded=!0)}}t()(()=>{const d=new E({jqueryPluginCover:"modal",DOMEvents:"click",DOMEventsSelector:'[data-toggle="modal"]',DOMEventsPreventDefault:!0,files:()=>[o.e(696).then(o.bind(o,2696)),o.e(602).then(o.bind(o,9602))]}),s=new E({jqueryPluginCover:"dropdown",DOMEvents:"click",DOMEventsSelector:'[data-toggle="dropdown"]',DOMEventsPreventDefault:!0,files:()=>[Promise.all([o.e(67),o.e(869)]).then(o.bind(o,6869)),o.e(690).then(o.bind(o,4690))]}),c=new E({jqueryPluginCover:"collapse",DOMEvents:"click",DOMEventsSelector:'[data-toggle="collapse"]',DOMEventsPreventDefault:!0,files:()=>[o.e(29).then(o.bind(o,6029))]}),L=new E({jqueryPluginCover:"popover",files:()=>[Promise.all([o.e(67),o.e(813)]).then(o.bind(o,7813)),o.e(277).then(o.bind(o,2277))]}),W=new E({jqueryPluginCover:"scrollspy",files:()=>[o.e(109).then(o.bind(o,109))]}),mt=new E({jqueryPluginCover:"toast",files:()=>[o.e(124).then(o.bind(o,8124)),o.e(760).then(o.bind(o,3760))]}),vt=new E({jqueryPluginCover:"tooltip",files:()=>[Promise.all([o.e(67),o.e(618)]).then(o.bind(o,7618)),o.e(547).then(o.bind(o,4547))]})});var S=o(3216),m=o.n(S);const h=prestashop;var g=o.n(h);g().themeSelectors={product:{tabs:".tabs .nav-link",activeNavClass:"js-product-nav-active",activeTabClass:"js-product-tab-active",activeTabs:".tabs .nav-link.active, .js-product-nav-active",imagesModal:".js-product-images-modal",thumb:".js-thumb",thumbContainer:".thumb-container, .js-thumb-container",arrows:".js-arrows",selected:".selected, .js-thumb-selected",modalProductCover:".js-modal-product-cover",cover:".js-qv-product-cover",customizationModal:".js-customization-modal"},listing:{searchFilterToggler:"#search_filter_toggler, .js-search-toggler",searchFiltersWrapper:"#search_filters_wrapper",searchFilterControls:"#search_filter_controls",searchFilters:"#search_filters",activeSearchFilters:"#js-active-search-filters",listTop:"#js-product-list-top",list:"#js-product-list",listBottom:"#js-product-list-bottom",listHeader:"#js-product-list-header",searchFiltersClearAll:".js-search-filters-clear-all",searchLink:".js-search-link"},order:{returnForm:"#order-return-form, .js-order-return-form"},arrowDown:".arrow-down, .js-arrow-down",arrowUp:".arrow-up, .js-arrow-up",clear:".clear",fileInput:".js-file-input",contentWrapper:"#content-wrapper, .js-content-wrapper",footer:"#footer, .js-footer",modalContent:".js-modal-content",modal:".js-checkout-modal",touchspin:".js-touchspin",checkout:{termsLink:".js-terms a",giftCheckbox:".js-gift-checkbox",imagesLink:".card-block .cart-summary-products p a, .js-show-details",carrierExtraContent:".carrier-extra-content, .js-carrier-extra-content",btn:".checkout a"},cart:{productLineQty:".js-cart-line-product-quantity",quickview:".quickview",touchspin:".bootstrap-touchspin",promoCode:"#promo-code",displayPromo:".display-promo",promoCodeButton:".promo-code-button",discountCode:".js-discount .code",discountName:"[name=discount_name]",actions:'[data-link-action="delete-from-cart"], [data-link-action="remove-voucher"]'},notifications:{dangerAlert:"#notifications article.alert-danger",container:"#notifications .container"},passwordPolicy:{template:"#password-feedback",hint:".js-hint-password",container:".js-password-strength-feedback",strengthText:".js-password-strength-text",requirementScore:".js-password-requirements-score",requirementLength:".js-password-requirements-length",requirementScoreIcon:".js-password-requirements-score i",requirementLengthIcon:".js-password-requirements-length i",progressBar:".js-password-policy-progress-bar",inputColumn:".js-input-column"}},t()(()=>{g().emit("themeSelectorsInit")});var rt=o(6739),p=o(4919),v=o(9127),i=o(9840);class w{constructor(s){this.getFiles=s}getModule(){return Promise.all(this.getFiles())}}const P=w;var z=Object.defineProperty,I=Object.defineProperties,k=Object.getOwnPropertyDescriptors,V=Object.getOwnPropertySymbols,at=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,yt=(d,s,c)=>s in d?z(d,s,{enumerable:!0,configurable:!0,writable:!0,value:c}):d[s]=c,Tt=(d,s)=>{for(var c in s||(s={}))at.call(s,c)&&yt(d,c,s[c]);if(V)for(var c of V(s))lt.call(s,c)&&yt(d,c,s[c]);return d},nt=(d,s)=>I(d,k(s)),gt=(d,s,c)=>new Promise((L,W)=>{var mt=ht=>{try{St(c.next(ht))}catch(Pt){W(Pt)}},vt=ht=>{try{St(c.throw(ht))}catch(Pt){W(Pt)}},St=ht=>ht.done?L(ht.value):Promise.resolve(ht.value).then(mt,vt);St((c=c.apply(d,s)).next())});const l={thumbs:new P(()=>[o.e(333).then(o.bind(o,8333))]),virtual:new P(()=>[o.e(352).then(o.bind(o,5352)),o.e(840).then(o.bind(o,5840))]),keyboard:new P(()=>[o.e(376).then(o.bind(o,376))]),mousewheel:new P(()=>[o.e(372).then(o.bind(o,8372))]),scrollbar:new P(()=>[o.e(652).then(o.bind(o,5652)),o.e(978).then(o.bind(o,5978))]),parallax:new P(()=>[o.e(190).then(o.bind(o,1190))]),zoom:new P(()=>[o.e(790).then(o.bind(o,9790)),o.e(497).then(o.bind(o,1497))]),freeMode:new P(()=>[o.e(806).then(o.bind(o,4806)),o.e(181).then(o.bind(o,9181))]),controller:new P(()=>[o.e(31).then(o.bind(o,7031)),Promise.all([o.e(250),o.e(484)]).then(o.bind(o,3484))])},T=[rt.Z,p.Z,v.Z];class D{constructor(s,c){this.target=s,this.options=c,this.modules=T,this._modulesToFetch=[],this.SwiperInstance=null}initSlider(){return gt(this,null,function*(){return this.findNeededModulesToFetch(),yield this.fetchNeededModules(),yield this.initSwiper(),this.SwiperInstance})}initSwiper(){this.SwiperInstance=new i.Z(this.target,nt(Tt({},this.options),{modules:this.modules}))}fetchNeededModules(){return gt(this,null,function*(){if(this._modulesToFetch.length>0){const s=[];for(const L of this._modulesToFetch)s.push(L.getFiles());return Promise.all(s.map(L=>Promise.all(L))).then(L=>{for(const W of L)for(const mt of W)typeof mt.default!="undefined"&&(this.modules=[...this.modules,mt.default])})}return Promise.resolve()})}findNeededModulesToFetch(){for(const s in l)Object.prototype.hasOwnProperty.call(l,s)&&typeof this.options[s]!="undefined"&&this._modulesToFetch.push(l[s])}}const U=D;var B=Object.defineProperty,tt=Object.defineProperties,J=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable,ut=(d,s,c)=>s in d?B(d,s,{enumerable:!0,configurable:!0,writable:!0,value:c}):d[s]=c,Z=(d,s)=>{for(var c in s||(s={}))H.call(s,c)&&ut(d,c,s[c]);if(G)for(var c of G(s))X.call(s,c)&&ut(d,c,s[c]);return d},f=(d,s)=>tt(d,J(s));class O{constructor(){this.observeElementClass="js-slider-observed",this.selfInitializedSlidersSelector=".swiper:not(.swiper-custom)"}init(){const s=this;this.observer=new IntersectionObserver(c=>{c.forEach(({intersectionRatio:L,target:W})=>{L>0&&(s.observer.unobserve(W),O.initSlider(W))})}),this.observerElements()}static initSlider(s){new U(s,O.getConfigForSliderElement(s)).initSlider()}static getConfigForSliderElement(s){let c=s.dataset.swiper||{};typeof c=="string"&&(c=JSON.parse(c));const L=s.parentElement,W=L.querySelector(".swiper-button-next"),mt=L.querySelector(".swiper-button-prev"),vt=L.querySelector(".swiper-pagination");return W&&mt&&typeof c.navigation=="undefined"&&(c=f(Z({},c),{navigation:{nextEl:W,prevEl:mt}})),vt&&typeof c.pagination=="undefined"&&(c=f(Z({},c),{pagination:{el:vt,type:"bullets",clickable:!0}})),c}observerElements(){const s=document.querySelectorAll(this.selfInitializedSlidersSelector);for(let c=0;c{g().pageSlider.init()});const dt=()=>g().responsive.current_width{const c=t()(`#${s.id.replace("_desktop_","_mobile_")}`);c.length&&wt(t()(s),c)}),t()("[data-collapse-hide-mobile]").collapse("hide")):(t()("*[id^='_mobile_']").each((d,s)=>{const c=t()(`#${s.id.replace("_mobile_","_desktop_")}`);c.length&&wt(t()(s),c)}),t()("[data-collapse-hide-mobile]").not(".show").collapse("show"),t()("[data-modal-hide-mobile].show").modal("hide")),g().emit("responsive update",{mobile:g().responsive.mobile})}t()(window).on("resize",()=>{const{responsive:d}=g(),s=d.current_width,c=d.min_width,L=window.innerWidth,W=s>=c&&L=c;d.current_width=L,d.mobile=d.current_width{g().responsive.mobile&&Dt()});function qt(){t()(`${prestashop.themeSelectors.order.returnForm} table thead input[type=checkbox]`).on("click",({currentTarget:d})=>{const s=t()(d).prop("checked");t()(`${prestashop.themeSelectors.order.returnForm} table tbody input[type=checkbox]`).each((c,L)=>{t()(L).prop("checked",s)})})}function et(){t()("body#order-detail")&&qt()}t()(document).ready(et),t()(()=>{const d=s=>{t()(".js-thumb").on("click",c=>{t()(".js-thumb").hasClass("selected")&&t()(".js-thumb").removeClass("selected"),t()(c.currentTarget).addClass("selected"),t()(".js-qv-product-cover").attr("src",t()(c.target).data("image-large-src"))}),s.find("#quantity_wanted").TouchSpin({verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:1,max:1e6})};g().on("clickQuickView",s=>{const c={action:"quickview",id_product:s.dataset.idProduct,id_product_attribute:s.dataset.idProductAttribute};t().post(g().urls.pages.product,c,null,"json").then(L=>{t()("body").append(L.quickview_html);const W=t()(`#quickview-modal-${L.product.id}-${L.product.id_product_attribute}`);W.modal("show"),d(W),W.on("hidden.bs.modal",()=>{W.remove()})}).fail(L=>{g().emit("handleError",{eventType:"clickQuickView",resp:L})})})}),t()(()=>{const d=()=>{t()(".js-file-input").on("change",L=>{const W=t()(L.currentTarget)[0],mt=W?W.files[0]:null;W&&mt&&t()(W).prev().text(mt.name)})};(()=>{const L=t()("#quantity_wanted");L.TouchSpin({verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:parseInt(L.attr("min"),10),max:1e6}),L.on("focusout",()=>{(L.val()===""||L.val(){t()(W.currentTarget).trigger("touchspin.stopspin"),g().emit("updateProduct",{eventType:"updatedProductQuantity",event:W})})})(),d();let c=!1;g().on("updateProduct",({eventType:L})=>{c=L}),g().on("updateCart",L=>{g().page.page_name==="product"&&parseInt(L.reason.idProduct,10)===parseInt(t()("#add-to-cart-or-refresh").find('[name="id_product"]').val(),10)&&g().emit("updateProduct",{event:L,resp:{},reason:{productUrl:g().urls.pages.product||""}})}),g().on("updatedProduct",L=>{if(d(),L&&L.product_minimal_quantity){const W=parseInt(L.product_minimal_quantity,10),mt="#quantity_wanted";t()(mt).trigger("touchspin.updatesettings",{min:W})}c==="updatedProductCombination"&&(t()(".js-product-images").replaceWith(L.product_cover_thumbnails),t()(".js-product-images-modal").replaceWith(L.product_images_modal),g().emit("updatedProductCombination",L)),c=!1,g().pageLazyLoad.update()})});function ft(d,s=300){let c;return(...L)=>{clearTimeout(c),c=setTimeout(()=>{d.apply(this,L)},s)}}g().cart=g().cart||{},g().cart.active_inputs=null;const Ct='input[name="product-quantity-spin"]';let jt=!1,Ut=!1,Qt="";const $t={switchErrorStat:()=>{const d=t()(g().themeSelectors.checkout.btn);if((t()(g().themeSelectors.notifications.dangerAlert).length||Qt!==""&&!jt)&&d.addClass("disabled"),Qt!==""){const s=`
+
+
+
+ `;t()(g().themeSelectors.notifications.container).html(s),Qt="",Ut=!1,jt&&d.removeClass("disabled")}else!jt&&Ut&&(jt=!1,Ut=!1,t()(g().themeSelectors.notifications.container).html(""),d.removeClass("disabled"))},checkUpdateOperation:d=>{const{hasError:s,errors:c}=d;jt=s!=null?s:!1;const L=c!=null?c:"";L instanceof Array?Qt=L.join(" "):Qt=L,Ut=!0}};function Kt(){t().each(t()(Ct),(d,s)=>{t()(s).TouchSpin({verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin js-increase-product-quantity",buttonup_class:"btn btn-touchspin js-touchspin js-decrease-product-quantity",min:parseInt(t()(s).attr("min"),10),max:1e6})}),$t.switchErrorStat()}const Gt=d=>window.shouldPreventModal?(d.preventDefault(),!1):!0;t()(()=>{const d=g().themeSelectors.cart.productLineQty,s=[];g().on("updateCart",()=>{t()(g().themeSelectors.cart.quickview).modal("hide"),t()("body").addClass("cart-loading")}),g().on("updatedCart",()=>{window.shouldPreventModal=!1,t()(g().themeSelectors.product.customizationModal).on("show.bs.modal",ot=>{Gt(ot)}),Kt(),t()("body").removeClass("cart-loading")}),Kt();const c=t()("body");function L(ot){return ot==="on.startupspin"||ot==="on.startdownspin"}function W(ot){return ot==="on.startupspin"}function mt(ot){const xt=ot.parents(g().themeSelectors.cart.touchspin).find(d);return xt.is(":focus")?null:xt}function vt(ot){const xt=ot.split("-");let At,bt,Ft="";for(At=0;At{let ot;for(;s.length>0;)ot=s.pop(),ot.abort()},Pt=ot=>t()(ot.parents(g().themeSelectors.cart.touchspin).find("input"));t()(g().themeSelectors.product.customizationModal).on("show.bs.modal",ot=>{Gt(ot)});const Rt=ot=>{ot.preventDefault(),window.shouldPreventModal=!0;const xt=t()(ot.currentTarget),{dataset:At}=ot.currentTarget,bt=St(xt,ot.namespace),Ft={ajax:"1",action:"update"};typeof bt!="undefined"&&t().ajax({url:bt.url,method:"POST",data:Ft,dataType:"json",beforeSend:zt=>{s.push(zt)}}).then(zt=>{const ce=Pt(xt);$t.checkUpdateOperation(zt),ce.val(zt.quantity),g().emit("updateCart",{reason:At,resp:zt})}).fail(zt=>{g().emit("handleError",{eventType:"updateProductInCart",resp:zt,cartAction:bt.type})})};c.on("click",g().themeSelectors.cart.actions,Rt);function kt(ot,xt,At){return ht(),window.shouldPreventModal=!0,t().ajax({url:ot,method:"POST",data:xt,dataType:"json",beforeSend:bt=>{s.push(bt)}}).then(bt=>{$t.checkUpdateOperation(bt),At.val(bt.quantity);const Ft=At&&At.dataset?At.dataset:bt;g().emit("updateCart",{reason:Ft,resp:bt})}).fail(bt=>{g().emit("handleError",{eventType:"updateProductQuantityInCart",resp:bt})})}function Ht(ot){return ot>0?"up":"down"}function _t(ot){return{ajax:"1",qty:Math.abs(ot),action:"update",op:Ht(ot)}}function Yt(ot){const xt=t()(ot.currentTarget),At=xt.data("update-url"),bt=xt.attr("value"),Ft=xt.val();if(Ft!=parseInt(Ft,10)||Ft<0||Number.isNaN(Ft)){window.shouldPreventModal=!1,xt.val(bt);return}const zt=Ft-bt;zt!==0&&(Ft==="0"?xt.closest(".product-line-actions").find('[data-link-action="delete-from-cart"]').click():(xt.attr("value",Ft),kt(At,_t(zt),xt)))}c.on("touchspin.on.stopspin",Ct,ft(Yt)),c.on("focusout keyup",d,ot=>ot.type==="keyup"?(ot.keyCode===13&&(Ut=!0,Yt(ot)),!1):(Ut||Yt(ot),!1)),c.on("click",g().themeSelectors.cart.discountCode,ot=>{ot.stopPropagation(),ot.preventDefault();const xt=t()(ot.currentTarget),At=t()("[name=discount_name]"),bt=At.closest("form");return At.val(xt.text()),bt.trigger("submit"),!1})});/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */g().blockcart=g().blockcart||{},g().blockcart.showModal=d=>{function s(){return t()("#blockcart-modal")}const c=s();c.length&&c.hide(),t()("body").append(d),s().modal("show").on("hidden.bs.modal",L=>{t()(L.currentTarget).remove()})};var Jt=o(8975),te=(d,s,c)=>new Promise((L,W)=>{var mt=ht=>{try{St(c.next(ht))}catch(Pt){W(Pt)}},vt=ht=>{try{St(c.throw(ht))}catch(Pt){W(Pt)}},St=ht=>ht.done?L(ht.value):Promise.resolve(ht.value).then(mt,vt);St((c=c.apply(d,s)).next())});const{passwordPolicy:Bt}=prestashop.themeSelectors,ee="The password policy elements are undefined.",Zt=d=>{switch(d){case 0:return{color:"bg-danger"};case 1:return{color:"bg-danger"};case 2:return{color:"bg-warning"};case 3:return{color:"bg-success"};case 4:return{color:"bg-success"};default:throw new Error("Invalid password strength indicator.")}},ne=(d,s,c)=>te(void 0,null,function*(){const{prestashop:L}=window,W=d.value,mt=s.querySelector(Bt.requirementScoreIcon),vt=yield L.checkPasswordScore(W),St=Zt(vt.score),ht=W.length,Pt=[];$(d).popover("dispose"),s.style.display=W===""?"none":"block",vt.feedback.warning!==""&&vt.feedback.warning in c&&Pt.push(c[vt.feedback.warning]),vt.feedback.suggestions.forEach(Yt=>{Yt in c&&Pt.push(c[Yt])}),$(d).popover({html:!0,placement:"top",content:Pt.join(" ")}).popover("show");const Rt=ht>=parseInt(d.dataset.minlength,10)&&ht<=parseInt(d.dataset.maxlength,10),kt=parseInt(d.dataset.minscore,10)<=vt.score;s.querySelector(Bt.requirementLengthIcon).classList.toggle("text-success",Rt),mt.classList.toggle("text-success",kt),d.classList.remove("border-success","border-danger"),d.classList.add(kt&&Rt?"border-success":"border-danger"),d.classList.add("form-control","border");const Ht=vt.score*20+20,_t=s.querySelector(Bt.progressBar);_t&&(_t.style.width=`${Ht}%`,_t.classList.remove("bg-success","bg-danger","bg-warning"),_t.classList.add(St.color))}),Wt=d=>{document.querySelectorAll(d).forEach(c=>{const L=c==null?void 0:c.querySelector(Bt.inputColumn),W=c==null?void 0:c.querySelector("input"),mt=document.createElement("div"),vt=document.querySelector(Bt.template);let St;if(vt&&c&&L&&W&&(mt.innerHTML=vt.innerHTML,L.append(mt),St=c.querySelector(Bt.container),St)){const ht=document.querySelector(Bt.hint);if(ht){const Pt=JSON.parse(ht.innerHTML),Rt=St.querySelector(Bt.requirementLength),kt=St.querySelector(Bt.requirementScore),Ht=Rt==null?void 0:Rt.querySelector("span"),_t=kt==null?void 0:kt.querySelector("span");Ht&&Rt&&Rt.dataset.translation&&(Ht.innerText=(0,Jt.sprintf)(Rt.dataset.translation,W.dataset.minlength,W.dataset.maxlength)),_t&&kt&&kt.dataset.translation&&(_t.innerText=(0,Jt.sprintf)(kt.dataset.translation,Pt[W.dataset.minscore])),W.addEventListener("keyup",()=>ne(W,St,Pt)),W.addEventListener("blur",()=>{$(W).popover("dispose")})}}return c?{element:c}:{error:new Error(ee)}})};var re=o(7187),Xt=o.n(re);const Vt=()=>{const d=document.createElement("input");return"validity"in d&&"badInput"in d.validity&&"patternMismatch"in d.validity&&"rangeOverflow"in d.validity&&"rangeUnderflow"in d.validity&&"tooLong"in d.validity&&"tooShort"in d.validity&&"typeMismatch"in d.validity&&"valid"in d.validity&&"valueMissing"in d.validity};class n{static init(){n.parentFocus(),n.togglePasswordVisibility(),n.formValidation()}static parentFocus(){t()(".js-child-focus").on("focus",({target:s})=>{t()(s).closest(".js-parent-focus").addClass("focus")}),t()(".js-child-focus").on("focusout",({target:s})=>{t()(s).closest(".js-parent-focus").removeClass("focus")})}static togglePasswordVisibility(){t()('[data-action="show-password"]').on("click",s=>{s.preventDefault(),s.stopImmediatePropagation();const c=t()(s.currentTarget),L=c.closest(".input-group").children("input.js-visible-password");L.attr("type")==="password"?(L.attr("type","text"),c.html(c.data("text-hide"))):(L.attr("type","password"),c.html(c.data("textShow")))})}static formValidation(){const s=document.getElementsByClassName("needs-validation");if(s.length>0){if(!Vt())return;let c=!1;t()("input, textarea",s).on("blur",L=>{const W=t()(L.currentTarget);W.val(W.val().trim())}),Array.prototype.filter.call(s,L=>{L.addEventListener("submit",W=>{if(L.checkValidity()===!1){W.preventDefault(),W.stopPropagation(),t()("input:invalid,select:invalid,textarea:invalid",L).each((vt,St)=>{const ht=t()(St),Pt=ht.closest(".form-group");t()(".js-invalid-feedback-browser",Pt).text(ht[0].validationMessage),c||(c=Pt)});const mt=t()(L);mt.data("disabled",!1),mt.find('[type="submit"]').removeClass("disabled")}L.classList.add("was-validated"),c&&(t()("html, body").animate({scrollTop:c.offset().top},300),c=!1)},!1)})}}}class y{constructor(s){this.$el=t()(s)}init(){const s=this;s.$el.hoverIntent({over:s.toggleClassSubMenu,out:s.toggleClassSubMenu,selector:" > li",timeout:300})}toggleClassSubMenu(){const s=t()(this);let c=s.attr("aria-expanded");typeof c!="undefined"&&(c=c.toLowerCase()==="true",s.toggleClass("main-menu__item--active").attr("aria-expanded",!c),t()(".main-menu__sub",s).attr("aria-expanded",!c).attr("aria-hidden",c))}}var C=o(2732),F=o.n(C);class K{constructor({selector:s=".lazyload"}={}){this.selector=s,this.lazyLoadInstance=null,this.init()}init(){this.lazyLoadInstance=new(F())({elements_selector:this.selector})}update(){this.lazyLoadInstance.update()}}const st=K;class Q{constructor(){this.$body=t()("body")}showLoader(){this.$body.addClass("page-loader-active")}hideLoader(){this.$body.removeClass("page-loader-active")}}const it=Q,pt=(d,s,c={})=>{if(!d)throw new Error("Sticky element: element not found");if(!s)throw new Error("Sticky element: stickyWrapper not found");const{extraOffsetTop:L=0,debounceTime:W=5,zIndex:mt=100}=c;let vt=!1;const St=()=>{const _t=s.getBoundingClientRect();return{top:_t.top,bottom:_t.bottom,height:_t.height,width:_t.width}},ht=typeof L=="function"?L:()=>L,Pt=()=>{const{height:_t}=St();s.style.height=`${_t}px`,d.style.top=`${ht()}px`,d.style.left=0,d.style.right=0,d.style.bottom="auto",d.style.position="fixed",d.style.zIndex=mt,d.classList.add("is-sticky"),vt=!0},Rt=()=>{d.style.top=null,d.style.bottom=null,d.style.position=null,d.style.zIndex=null,d.classList.remove("is-sticky"),s.style.height=null,vt=!1},kt=()=>vt,Ht=()=>{const{top:_t}=St();_t<=ht()?vt||Pt():vt&&Rt()};return window.addEventListener("scroll",ft(Ht,W)),Ht(),{getExtraOffsetTop:ht,getIsSticky:kt}};for(const d in Xt().prototype)g()[d]=Xt().prototype[d];g().pageLazyLoad=new st({selector:".lazyload"}),g().pageLoader=new it;function Et(){const d=window.location.pathname;t()(".js-customer-links a").each((s,c)=>{const L=t()(c);L.attr("href").indexOf(d)!==-1&&L.addClass("active")})}function Ot(){const d=document.querySelector(".js-header-top"),s=document.querySelector(".js-header-top-wrapper");d&&s&&pt(d,s)}t()(()=>{Ot(),Et(),n.init(),m().init();const d=new y("#_desktop_top_menu .js-main-menu");Wt(".field-password-policy"),d.init(),t()(".js-select-link").on("change",({target:s})=>{window.location.href=t()(s).val()})})},7187:_=>{"use strict";var R=typeof Reflect=="object"?Reflect:null,o=R&&typeof R.apply=="function"?R.apply:function(v,i,w){return Function.prototype.apply.call(v,i,w)},j;R&&typeof R.ownKeys=="function"?j=R.ownKeys:Object.getOwnPropertySymbols?j=function(v){return Object.getOwnPropertyNames(v).concat(Object.getOwnPropertySymbols(v))}:j=function(v){return Object.getOwnPropertyNames(v)};function t(p){console&&console.warn&&console.warn(p)}var b=Number.isNaN||function(v){return v!==v};function e(){e.init.call(this)}_.exports=e,_.exports.once=h,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._eventsCount=0,e.prototype._maxListeners=void 0;var M=10;function N(p){if(typeof p!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof p)}Object.defineProperty(e,"defaultMaxListeners",{enumerable:!0,get:function(){return M},set:function(p){if(typeof p!="number"||p<0||b(p))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+p+".");M=p}}),e.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},e.prototype.setMaxListeners=function(v){if(typeof v!="number"||v<0||b(v))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+v+".");return this._maxListeners=v,this};function A(p){return p._maxListeners===void 0?e.defaultMaxListeners:p._maxListeners}e.prototype.getMaxListeners=function(){return A(this)},e.prototype.emit=function(v){for(var i=[],w=1;w0&&(I=i[0]),I instanceof Error)throw I;var k=new Error("Unhandled error."+(I?" ("+I.message+")":""));throw k.context=I,k}var V=z[v];if(V===void 0)return!1;if(typeof V=="function")o(V,this,i);else for(var at=V.length,lt=E(V,at),w=0;w0&&I.length>P&&!I.warned){I.warned=!0;var k=new Error("Possible EventEmitter memory leak detected. "+I.length+" "+String(v)+" listeners added. Use emitter.setMaxListeners() to increase limit");k.name="MaxListenersExceededWarning",k.emitter=p,k.type=v,k.count=I.length,t(k)}return p}e.prototype.addListener=function(v,i){return x(this,v,i,!1)},e.prototype.on=e.prototype.addListener,e.prototype.prependListener=function(v,i){return x(this,v,i,!0)};function r(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function a(p,v,i){var w={fired:!1,wrapFn:void 0,target:p,type:v,listener:i},P=r.bind(w);return P.listener=i,w.wrapFn=P,P}e.prototype.once=function(v,i){return N(i),this.on(v,a(this,v,i)),this},e.prototype.prependOnceListener=function(v,i){return N(i),this.prependListener(v,a(this,v,i)),this},e.prototype.removeListener=function(v,i){var w,P,z,I,k;if(N(i),P=this._events,P===void 0)return this;if(w=P[v],w===void 0)return this;if(w===i||w.listener===i)--this._eventsCount===0?this._events=Object.create(null):(delete P[v],P.removeListener&&this.emit("removeListener",v,w.listener||i));else if(typeof w!="function"){for(z=-1,I=w.length-1;I>=0;I--)if(w[I]===i||w[I].listener===i){k=w[I].listener,z=I;break}if(z<0)return this;z===0?w.shift():S(w,z),w.length===1&&(P[v]=w[0]),P.removeListener!==void 0&&this.emit("removeListener",v,k||i)}return this},e.prototype.off=e.prototype.removeListener,e.prototype.removeAllListeners=function(v){var i,w,P;if(w=this._events,w===void 0)return this;if(w.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):w[v]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete w[v]),this;if(arguments.length===0){var z=Object.keys(w),I;for(P=0;P=0;P--)this.removeListener(v,i[P]);return this};function Y(p,v,i){var w=p._events;if(w===void 0)return[];var P=w[v];return P===void 0?[]:typeof P=="function"?i?[P.listener||P]:[P]:i?m(P):E(P,P.length)}e.prototype.listeners=function(v){return Y(this,v,!0)},e.prototype.rawListeners=function(v){return Y(this,v,!1)},e.listenerCount=function(p,v){return typeof p.listenerCount=="function"?p.listenerCount(v):u.call(p,v)},e.prototype.listenerCount=u;function u(p){var v=this._events;if(v!==void 0){var i=v[p];if(typeof i=="function")return 1;if(i!==void 0)return i.length}return 0}e.prototype.eventNames=function(){return this._eventsCount>0?j(this._events):[]};function E(p,v){for(var i=new Array(v),w=0;w{var j,t,b;/*!
+* hoverIntent v1.10.2 // 2020.04.28 // jQuery v1.7.0+
+* http://briancherne.github.io/jquery-hoverIntent/
+*
+* You may use hoverIntent under the terms of the MIT license. Basically that
+* means you are free to use hoverIntent as long as this header is left intact.
+* Copyright 2007-2019 Brian Cherne
+*/(function(e){"use strict";t=[o(5311)],j=e,b=typeof j=="function"?j.apply(R,t):j,b!==void 0&&(_.exports=b)})(function(e){"use strict";var M={interval:100,sensitivity:6,timeout:0},N=0,A,x,r=function(E){A=E.pageX,x=E.pageY},a=function(E,S,m,h){if(Math.sqrt((m.pX-A)*(m.pX-A)+(m.pY-x)*(m.pY-x)){"use strict"},3454:()=>{"use strict"},8975:(_,R,o)=>{var j;(function(){"use strict";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function b(x){return M(A(x),arguments)}function e(x,r){return b.apply(null,[x].concat(r||[]))}function M(x,r){var a=1,Y=x.length,u,E="",S,m,h,g,rt,p,v,i;for(S=0;S=0),h.type){case"b":u=parseInt(u,10).toString(2);break;case"c":u=String.fromCharCode(parseInt(u,10));break;case"d":case"i":u=parseInt(u,10);break;case"j":u=JSON.stringify(u,null,h.width?parseInt(h.width):0);break;case"e":u=h.precision?parseFloat(u).toExponential(h.precision):parseFloat(u).toExponential();break;case"f":u=h.precision?parseFloat(u).toFixed(h.precision):parseFloat(u);break;case"g":u=h.precision?String(Number(u.toPrecision(h.precision))):parseFloat(u);break;case"o":u=(parseInt(u,10)>>>0).toString(8);break;case"s":u=String(u),u=h.precision?u.substring(0,h.precision):u;break;case"t":u=String(!!u),u=h.precision?u.substring(0,h.precision):u;break;case"T":u=Object.prototype.toString.call(u).slice(8,-1).toLowerCase(),u=h.precision?u.substring(0,h.precision):u;break;case"u":u=parseInt(u,10)>>>0;break;case"v":u=u.valueOf(),u=h.precision?u.substring(0,h.precision):u;break;case"x":u=(parseInt(u,10)>>>0).toString(16);break;case"X":u=(parseInt(u,10)>>>0).toString(16).toUpperCase();break}t.json.test(h.type)?E+=u:(t.number.test(h.type)&&(!v||h.sign)?(i=v?"+":"-",u=u.toString().replace(t.sign,"")):i="",rt=h.pad_char?h.pad_char==="0"?"0":h.pad_char.charAt(1):" ",p=h.width-(i+u).length,g=h.width&&p>0?rt.repeat(p):"",E+=h.align?i+u+g:rt==="0"?i+g+u:g+i+u)}return E}var N=Object.create(null);function A(x){if(N[x])return N[x];for(var r=x,a,Y=[],u=0;r;){if((a=t.text.exec(r))!==null)Y.push(a[0]);else if((a=t.modulo.exec(r))!==null)Y.push("%");else if((a=t.placeholder.exec(r))!==null){if(a[2]){u|=1;var E=[],S=a[2],m=[];if((m=t.key.exec(S))!==null)for(E.push(m[1]);(S=S.substring(m[0].length))!=="";)if((m=t.key_access.exec(S))!==null)E.push(m[1]);else if((m=t.index_access.exec(S))!==null)E.push(m[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");a[2]=E}else u|=2;if(u===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");Y.push({placeholder:a[0],param_no:a[1],keys:a[2],sign:a[3],pad_char:a[4],align:a[5],width:a[6],precision:a[7],type:a[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");r=r.substring(a[0].length)}return N[x]=Y}R.sprintf=b,R.vsprintf=e,typeof window!="undefined"&&(window.sprintf=b,window.vsprintf=e,j=function(){return{sprintf:b,vsprintf:e}}.call(R,o,R,_),j!==void 0&&(_.exports=j))})()},2732:function(_){(function(R,o){_.exports=o()})(this,function(){"use strict";function R(){return R=Object.assign||function(n){for(var y=1;y1,M={elements_selector:".lazy",container:j||o?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_bg_set:"bg-set",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},N=function(n){return R({},M,n)},A=function(n,y){var C,F="LazyLoad::Initialized",K=new n(y);try{C=new CustomEvent(F,{detail:{instance:K}})}catch(st){(C=document.createEvent("CustomEvent")).initCustomEvent(F,!1,!1,{instance:K})}window.dispatchEvent(C)},x="src",r="srcset",a="sizes",Y="poster",u="llOriginalAttrs",E="data",S="loading",m="loaded",h="applied",g="error",rt="native",p="data-",v="ll-status",i=function(n,y){return n.getAttribute(p+y)},w=function(n){return i(n,v)},P=function(n,y){return function(C,F,K){var st="data-ll-status";K!==null?C.setAttribute(st,K):C.removeAttribute(st)}(n,0,y)},z=function(n){return P(n,null)},I=function(n){return w(n)===null},k=function(n){return w(n)===rt},V=[S,m,h,g],at=function(n,y,C,F){n&&(F===void 0?C===void 0?n(y):n(y,C):n(y,C,F))},lt=function(n,y){b?n.classList.add(y):n.className+=(n.className?" ":"")+y},yt=function(n,y){b?n.classList.remove(y):n.className=n.className.replace(new RegExp("(^|\\s+)"+y+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},Tt=function(n){return n.llTempImage},nt=function(n,y){if(y){var C=y._observer;C&&C.unobserve(n)}},gt=function(n,y){n&&(n.loadingCount+=y)},l=function(n,y){n&&(n.toLoadCount=y)},T=function(n){for(var y,C=[],F=0;y=n.children[F];F+=1)y.tagName==="SOURCE"&&C.push(y);return C},D=function(n,y){var C=n.parentNode;C&&C.tagName==="PICTURE"&&T(C).forEach(y)},U=function(n,y){T(n).forEach(y)},B=[x],tt=[x,Y],J=[x,r,a],G=[E],H=function(n){return!!n[u]},X=function(n){return n[u]},ut=function(n){return delete n[u]},Z=function(n,y){if(!H(n)){var C={};y.forEach(function(F){C[F]=n.getAttribute(F)}),n[u]=C}},f=function(n,y){if(H(n)){var C=X(n);y.forEach(function(F){(function(K,st,Q){Q?K.setAttribute(st,Q):K.removeAttribute(st)})(n,F,C[F])})}},O=function(n,y,C){lt(n,y.class_applied),P(n,h),C&&(y.unobserve_completed&&nt(n,y),at(y.callback_applied,n,C))},ct=function(n,y,C){lt(n,y.class_loading),P(n,S),C&&(gt(C,1),at(y.callback_loading,n,C))},dt=function(n,y,C){C&&n.setAttribute(y,C)},wt=function(n,y){dt(n,a,i(n,y.data_sizes)),dt(n,r,i(n,y.data_srcset)),dt(n,x,i(n,y.data_src))},Dt={IMG:function(n,y){D(n,function(C){Z(C,J),wt(C,y)}),Z(n,J),wt(n,y)},IFRAME:function(n,y){Z(n,B),dt(n,x,i(n,y.data_src))},VIDEO:function(n,y){U(n,function(C){Z(C,B),dt(C,x,i(C,y.data_src))}),Z(n,tt),dt(n,Y,i(n,y.data_poster)),dt(n,x,i(n,y.data_src)),n.load()},OBJECT:function(n,y){Z(n,G),dt(n,E,i(n,y.data_src))}},qt=["IMG","IFRAME","VIDEO","OBJECT"],et=function(n,y){!y||function(C){return C.loadingCount>0}(y)||function(C){return C.toLoadCount>0}(y)||at(n.callback_finish,y)},ft=function(n,y,C){n.addEventListener(y,C),n.llEvLisnrs[y]=C},Ct=function(n,y,C){n.removeEventListener(y,C)},jt=function(n){return!!n.llEvLisnrs},Ut=function(n){if(jt(n)){var y=n.llEvLisnrs;for(var C in y){var F=y[C];Ct(n,C,F)}delete n.llEvLisnrs}},Qt=function(n,y,C){(function(F){delete F.llTempImage})(n),gt(C,-1),function(F){F&&(F.toLoadCount-=1)}(C),yt(n,y.class_loading),y.unobserve_completed&&nt(n,C)},$t=function(n,y,C){var F=Tt(n)||n;jt(F)||function(K,st,Q){jt(K)||(K.llEvLisnrs={});var it=K.tagName==="VIDEO"?"loadeddata":"load";ft(K,it,st),ft(K,"error",Q)}(F,function(K){(function(st,Q,it,pt){var Et=k(Q);Qt(Q,it,pt),lt(Q,it.class_loaded),P(Q,m),at(it.callback_loaded,Q,pt),Et||et(it,pt)})(0,n,y,C),Ut(F)},function(K){(function(st,Q,it,pt){var Et=k(Q);Qt(Q,it,pt),lt(Q,it.class_error),P(Q,g),at(it.callback_error,Q,pt),it.restore_on_error&&f(Q,J),Et||et(it,pt)})(0,n,y,C),Ut(F)})},Kt=function(n,y,C){(function(F){return qt.indexOf(F.tagName)>-1})(n)?function(F,K,st){$t(F,K,st),function(Q,it,pt){var Et=Dt[Q.tagName];Et&&(Et(Q,it),ct(Q,it,pt))}(F,K,st)}(n,y,C):function(F,K,st){(function(Q){Q.llTempImage=document.createElement("IMG")})(F),$t(F,K,st),function(Q){H(Q)||(Q[u]={backgroundImage:Q.style.backgroundImage})}(F),function(Q,it,pt){var Et=i(Q,it.data_bg),Ot=i(Q,it.data_bg_hidpi),d=e&&Ot?Ot:Et;d&&(Q.style.backgroundImage='url("'.concat(d,'")'),Tt(Q).setAttribute(x,d),ct(Q,it,pt))}(F,K,st),function(Q,it,pt){var Et=i(Q,it.data_bg_multi),Ot=i(Q,it.data_bg_multi_hidpi),d=e&&Ot?Ot:Et;d&&(Q.style.backgroundImage=d,O(Q,it,pt))}(F,K,st),function(Q,it,pt){var Et=i(Q,it.data_bg_set);if(Et){var Ot=Et.split("|"),d=Ot.map(function(s){return"image-set(".concat(s,")")});Q.style.backgroundImage=d.join(),Q.style.backgroundImage===""&&(d=Ot.map(function(s){return"-webkit-image-set(".concat(s,")")}),Q.style.backgroundImage=d.join()),O(Q,it,pt)}}(F,K,st)}(n,y,C)},Gt=function(n){n.removeAttribute(x),n.removeAttribute(r),n.removeAttribute(a)},Jt=function(n){D(n,function(y){f(y,J)}),f(n,J)},te={IMG:Jt,IFRAME:function(n){f(n,B)},VIDEO:function(n){U(n,function(y){f(y,B)}),f(n,tt),n.load()},OBJECT:function(n){f(n,G)}},Bt=function(n,y){(function(C){var F=te[C.tagName];F?F(C):function(K){if(H(K)){var st=X(K);K.style.backgroundImage=st.backgroundImage}}(C)})(n),function(C,F){I(C)||k(C)||(yt(C,F.class_entered),yt(C,F.class_exited),yt(C,F.class_applied),yt(C,F.class_loading),yt(C,F.class_loaded),yt(C,F.class_error))}(n,y),z(n),ut(n)},ee=["IMG","IFRAME","VIDEO"],Zt=function(n){return n.use_native&&"loading"in HTMLImageElement.prototype},ne=function(n,y,C){n.forEach(function(F){return function(K){return K.isIntersecting||K.intersectionRatio>0}(F)?function(K,st,Q,it){var pt=function(Et){return V.indexOf(w(Et))>=0}(K);P(K,"entered"),lt(K,Q.class_entered),yt(K,Q.class_exited),function(Et,Ot,d){Ot.unobserve_entered&&nt(Et,d)}(K,Q,it),at(Q.callback_enter,K,st,it),pt||Kt(K,Q,it)}(F.target,F,y,C):function(K,st,Q,it){I(K)||(lt(K,Q.class_exited),function(pt,Et,Ot,d){Ot.cancel_on_exit&&function(s){return w(s)===S}(pt)&&pt.tagName==="IMG"&&(Ut(pt),function(s){D(s,function(c){Gt(c)}),Gt(s)}(pt),Jt(pt),yt(pt,Ot.class_loading),gt(d,-1),z(pt),at(Ot.callback_cancel,pt,Et,d))}(K,st,Q,it),at(Q.callback_exit,K,st,it))}(F.target,F,y,C)})},oe=function(n){return Array.prototype.slice.call(n)},Wt=function(n){return n.container.querySelectorAll(n.elements_selector)},re=function(n){return function(y){return w(y)===g}(n)},Xt=function(n,y){return function(C){return oe(C).filter(I)}(n||Wt(y))},Vt=function(n,y){var C=N(n);this._settings=C,this.loadingCount=0,function(F,K){t&&!Zt(F)&&(K._observer=new IntersectionObserver(function(st){ne(st,F,K)},function(st){return{root:st.container===document?null:st.container,rootMargin:st.thresholds||st.threshold+"px"}}(F)))}(C,this),function(F,K){o&&(K._onlineHandler=function(){(function(st,Q){var it;(it=Wt(st),oe(it).filter(re)).forEach(function(pt){yt(pt,st.class_error),z(pt)}),Q.update()})(F,K)},window.addEventListener("online",K._onlineHandler))}(C,this),this.update(y)};return Vt.prototype={update:function(n){var y,C,F=this._settings,K=Xt(n,F);l(this,K.length),!j&&t?Zt(F)?function(st,Q,it){st.forEach(function(pt){ee.indexOf(pt.tagName)!==-1&&function(Et,Ot,d){Et.setAttribute("loading","lazy"),$t(Et,Ot,d),function(s,c){var L=Dt[s.tagName];L&&L(s,c)}(Et,Ot),P(Et,rt)}(pt,Q,it)}),l(it,0)}(K,F,this):(C=K,function(st){st.disconnect()}(y=this._observer),function(st,Q){Q.forEach(function(it){st.observe(it)})}(y,C)):this.loadAll(K)},destroy:function(){this._observer&&this._observer.disconnect(),o&&window.removeEventListener("online",this._onlineHandler),Wt(this._settings).forEach(function(n){ut(n)}),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var y=this,C=this._settings;Xt(n,C).forEach(function(F){nt(F,y),Kt(F,C,y)})},restoreAll:function(){var n=this._settings;Wt(n).forEach(function(y){Bt(y,n)})}},Vt.load=function(n,y){var C=N(y);Kt(n,C)},Vt.resetStatus=function(n){z(n)},o&&function(n,y){if(y)if(y.length)for(var C,F=0;C=y[F];F+=1)A(n,C);else A(n,y)}(Vt,window.lazyLoadOptions),Vt})},5311:_=>{"use strict";_.exports=jQuery},7628:(_,R,o)=>{"use strict";o.d(R,{Jj:()=>N,Me:()=>e});function j(A){return A!==null&&typeof A=="object"&&"constructor"in A&&A.constructor===Object}function t(A={},x={}){Object.keys(x).forEach(r=>{typeof A[r]=="undefined"?A[r]=x[r]:j(x[r])&&j(A[r])&&Object.keys(x[r]).length>0&&t(A[r],x[r])})}const b={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}},createElementNS(){return{}},importNode(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function e(){const A=typeof document!="undefined"?document:{};return t(A,b),A}const M={document:b,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle(){return{getPropertyValue(){return""}}},Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia(){return{}},requestAnimationFrame(A){return typeof setTimeout=="undefined"?(A(),null):setTimeout(A,0)},cancelAnimationFrame(A){typeof setTimeout!="undefined"&&clearTimeout(A)}};function N(){const A=typeof window!="undefined"?window:{};return t(A,M),A}}},Nt={};function q(_){var R=Nt[_];if(R!==void 0)return R.exports;var o=Nt[_]={exports:{}};return Mt[_].call(o.exports,o,o.exports,q),o.exports}q.m=Mt,(()=>{var _=[];q.O=(R,o,j,t)=>{if(o){t=t||0;for(var b=_.length;b>0&&_[b-1][2]>t;b--)_[b]=_[b-1];_[b]=[o,j,t];return}for(var e=1/0,b=0;b<_.length;b++){for(var[o,j,t]=_[b],M=!0,N=0;N=t)&&Object.keys(q.O).every(u=>q.O[u](o[N]))?o.splice(N--,1):(M=!1,t{var R=_&&_.__esModule?()=>_.default:()=>_;return q.d(R,{a:R}),R},q.d=(_,R)=>{for(var o in R)q.o(R,o)&&!q.o(_,o)&&Object.defineProperty(_,o,{enumerable:!0,get:R[o]})},q.f={},q.e=_=>Promise.all(Object.keys(q.f).reduce((R,o)=>(q.f[o](_,R),R),[])),q.u=_=>"js/"+{29:"0442b6fa32f1f5b1088f",31:"f93877c715b23fca6ee8",67:"6cb6b7233c7fe9b905f7",109:"b425e74d3594c4fa9aee",124:"dbec96fd298efc01baed",181:"167a963fdc7dcca50fe9",190:"adbd1d41ed64efc8b506",250:"f492e32d088c89911d80",277:"ad31706d90461f92483e",333:"f465b698dac1cdcd0417",352:"2c1876649b80182cc7e9",372:"a40fe077d67da77c1114",376:"5545f82c1b562520e643",484:"f91f8480ba69f4af39c1",497:"70fb9395801a75b5e29a",547:"f726c8383e56aa648b0e",602:"32577ed76976bbca0f6e",618:"0fb4cfcd31326e2e0765",652:"cbbeb31846ddf66743c4",690:"1e72869527f924c6bfd0",696:"a2299fdc62161d7a2fbe",760:"208afe47a2940553bbe4",790:"41ab0f07a5c82c46667e",806:"347914a3249f64db92d0",813:"f065da0b0b266ab125b4",840:"93041f3b76fe8d147484",869:"e2384bda504aac86515a",978:"c8a247fb4de3385735a5"}[_]+".js",q.miniCssF=_=>"css/"+{181:"167a963fdc7dcca50fe9",250:"f492e32d088c89911d80",277:"ad31706d90461f92483e",497:"70fb9395801a75b5e29a",547:"f726c8383e56aa648b0e",602:"32577ed76976bbca0f6e",690:"1e72869527f924c6bfd0",760:"208afe47a2940553bbe4",840:"93041f3b76fe8d147484",978:"c8a247fb4de3385735a5"}[_]+".css",q.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(_){if(typeof window=="object")return window}}(),q.o=(_,R)=>Object.prototype.hasOwnProperty.call(_,R),(()=>{var _={},R="Falcon-theme:";q.l=(o,j,t,b)=>{if(_[o]){_[o].push(j);return}var e,M;if(t!==void 0)for(var N=document.getElementsByTagName("script"),A=0;A{e.onerror=e.onload=null,clearTimeout(a);var E=_[o];if(delete _[o],e.parentNode&&e.parentNode.removeChild(e),E&&E.forEach(S=>S(u)),Y)return Y(u)},a=setTimeout(r.bind(null,void 0,{type:"timeout",target:e}),12e4);e.onerror=r.bind(null,e.onerror),e.onload=r.bind(null,e.onload),M&&document.head.appendChild(e)}})(),q.r=_=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})},q.p="/themes/falcon/assets/",(()=>{if(typeof document!="undefined"){var _=(t,b,e,M,N)=>{var A=document.createElement("link");A.rel="stylesheet",A.type="text/css";var x=r=>{if(A.onerror=A.onload=null,r.type==="load")M();else{var a=r&&(r.type==="load"?"missing":r.type),Y=r&&r.target&&r.target.href||b,u=new Error("Loading CSS chunk "+t+` failed.
+(`+Y+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=a,u.request=Y,A.parentNode&&A.parentNode.removeChild(A),N(u)}};return A.onerror=A.onload=x,A.href=b,e?e.parentNode.insertBefore(A,e.nextSibling):document.head.appendChild(A),A},R=(t,b)=>{for(var e=document.getElementsByTagName("link"),M=0;Mnew Promise((b,e)=>{var M=q.miniCssF(t),N=q.p+M;if(R(M,N))return b();_(t,N,null,b,e)}),j={505:0};q.f.miniCss=(t,b)=>{var e={181:1,250:1,277:1,497:1,547:1,602:1,690:1,760:1,840:1,978:1};j[t]?b.push(j[t]):j[t]!==0&&e[t]&&b.push(j[t]=o(t).then(()=>{j[t]=0},M=>{throw delete j[t],M}))}}})(),(()=>{var _={505:0};q.f.j=(j,t)=>{var b=q.o(_,j)?_[j]:void 0;if(b!==0)if(b)t.push(b[2]);else if(j!=250){var e=new Promise((x,r)=>b=_[j]=[x,r]);t.push(b[2]=e);var M=q.p+q.u(j),N=new Error,A=x=>{if(q.o(_,j)&&(b=_[j],b!==0&&(_[j]=void 0),b)){var r=x&&(x.type==="load"?"missing":x.type),a=x&&x.target&&x.target.src;N.message="Loading chunk "+j+` failed.
+(`+r+": "+a+")",N.name="ChunkLoadError",N.type=r,N.request=a,b[1](N)}};q.l(M,A,"chunk-"+j,j)}else _[j]=0},q.O.j=j=>_[j]===0;var R=(j,t)=>{var[b,e,M]=t,N,A,x=0;if(b.some(a=>_[a]!==0)){for(N in e)q.o(e,N)&&(q.m[N]=e[N]);if(M)var r=M(q)}for(j&&j(t);xq(9987)),q.O(void 0,[357],()=>q(3454)),q.O(void 0,[357],()=>q(9980)),q.O(void 0,[357],()=>q(2058)),q.O(void 0,[357],()=>q(5113));var se=q.O(void 0,[357],()=>q(6132));se=q.O(se)})();})();
diff --git a/falcon/assets/js/theme.js.map b/falcon/assets/js/theme.js.map
new file mode 100644
index 0000000..cfa5498
--- /dev/null
+++ b/falcon/assets/js/theme.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"js/theme.js","mappings":"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","sources":["webpack://Falcon-theme/./node_modules/bootstrap-touchspin/dist/jquery.bootstrap-touchspin.js","webpack://Falcon-theme/./node_modules/bootstrap/js/dist/alert.js","webpack://Falcon-theme/./node_modules/bootstrap/js/dist/button.js","webpack://Falcon-theme/./node_modules/bootstrap/js/dist/tab.js","webpack://Falcon-theme/./node_modules/bootstrap/js/dist/util.js","webpack://Falcon-theme/./node_modules/bs-custom-file-input/dist/bs-custom-file-input.js","webpack://Falcon-theme/./js/theme/utils/parseToHtml.js","webpack://Falcon-theme/./js/theme/components/useAlertToast.js","webpack://Falcon-theme/./node_modules/wretch/dist/constants.js","webpack://Falcon-theme/./node_modules/wretch/dist/utils.js","webpack://Falcon-theme/./node_modules/wretch/dist/config.js","webpack://Falcon-theme/./node_modules/wretch/dist/middleware.js","webpack://Falcon-theme/./node_modules/wretch/dist/resolver.js","webpack://Falcon-theme/./node_modules/wretch/dist/core.js","webpack://Falcon-theme/./node_modules/wretch/dist/index.js","webpack://Falcon-theme/./node_modules/wretch/dist/addons/queryString.js","webpack://Falcon-theme/../../../modules/is_favoriteproducts/_theme_dev/src/js/theme/components/useFavoriteProductsState.js","webpack://Falcon-theme/../../../modules/is_favoriteproducts/_theme_dev/src/js/theme/components/useFavoriteProducts.js","webpack://Falcon-theme/../../../modules/is_favoriteproducts/_theme_dev/src/js/theme/components/useFavoriteDOMHandler.js","webpack://Falcon-theme/../../../modules/is_favoriteproducts/_theme_dev/src/js/theme/index.js","webpack://Falcon-theme/../../../modules/is_searchbar/_theme_dev/src/js/theme/components/SearchInput.js","webpack://Falcon-theme/../../../modules/is_searchbar/_theme_dev/src/js/theme/index.js","webpack://Falcon-theme/../../../modules/is_shoppingcart/_theme_dev/src/js/theme/index.js","webpack://Falcon-theme/./js/theme/utils/DynamicImportJqueryPlugin.js","webpack://Falcon-theme/./js/theme/utils/DynamicImportDOMEvents.js","webpack://Falcon-theme/./js/theme/utils/DynamicImportHandler.js","webpack://Falcon-theme/./js/theme/components/dynamic-bootstrap-components.js","webpack://Falcon-theme/external var \"prestashop\"","webpack://Falcon-theme/./js/theme/components/selectors.js","webpack://Falcon-theme/./js/theme/components/sliders/DynamicImportSwiperModule.js","webpack://Falcon-theme/./js/theme/components/sliders/SwiperSlider.js","webpack://Falcon-theme/./js/theme/components/sliders/PageSlider.js","webpack://Falcon-theme/./js/theme/components/sliders.js","webpack://Falcon-theme/./js/theme/components/responsive.js","webpack://Falcon-theme/./js/theme/components/customer.js","webpack://Falcon-theme/./js/theme/components/quickview.js","webpack://Falcon-theme/./js/theme/components/product.js","webpack://Falcon-theme/./js/theme/utils/debounce.js","webpack://Falcon-theme/./js/theme/components/cart/cart.js","webpack://Falcon-theme/./js/theme/components/cart/block-cart.js","webpack://Falcon-theme/./js/theme/components/usePasswordPolicy.js","webpack://Falcon-theme/./js/theme/components/form.js","webpack://Falcon-theme/./js/theme/components/TopMenu.js","webpack://Falcon-theme/./js/theme/components/Lazyload.js","webpack://Falcon-theme/./js/theme/components/PageLoader.js","webpack://Falcon-theme/./js/theme/components/useStickyElement.js","webpack://Falcon-theme/./js/theme/index.js","webpack://Falcon-theme/./node_modules/events/events.js","webpack://Falcon-theme/./node_modules/jquery-hoverintent/jquery.hoverIntent.js","webpack://Falcon-theme/./node_modules/sprintf-js/src/sprintf.js","webpack://Falcon-theme/./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack://Falcon-theme/external var \"jQuery\"","webpack://Falcon-theme/./node_modules/ssr-window/ssr-window.esm.js","webpack://Falcon-theme/webpack/bootstrap","webpack://Falcon-theme/webpack/runtime/chunk loaded","webpack://Falcon-theme/webpack/runtime/compat get default export","webpack://Falcon-theme/webpack/runtime/define property getters","webpack://Falcon-theme/webpack/runtime/ensure chunk","webpack://Falcon-theme/webpack/runtime/get javascript chunk filename","webpack://Falcon-theme/webpack/runtime/get mini-css chunk filename","webpack://Falcon-theme/webpack/runtime/global","webpack://Falcon-theme/webpack/runtime/hasOwnProperty shorthand","webpack://Falcon-theme/webpack/runtime/load script","webpack://Falcon-theme/webpack/runtime/make namespace object","webpack://Falcon-theme/webpack/runtime/publicPath","webpack://Falcon-theme/webpack/runtime/css loading","webpack://Falcon-theme/webpack/runtime/jsonp chunk loading","webpack://Falcon-theme/webpack/startup"],"sourcesContent":["/*\n * Bootstrap TouchSpin - v4.3.0\n * A mobile and touch friendly input spinner component for Bootstrap 3 & 4.\n * http://www.virtuosoft.eu/code/bootstrap-touchspin/\n *\n * Made by IstvÃĄn Ujj-MÊszÃĄros\n * Under Apache License v2.0 License\n */\n(function(factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = function(root, jQuery) {\n if (jQuery === undefined) {\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n factory(jQuery);\n }\n}(function($) {\n 'use strict';\n\n var _currentSpinnerId = 0;\n\n $.fn.TouchSpin = function(options) {\n\n var defaults = {\n min: 0, // If null, there is no minimum enforced\n max: 100, // If null, there is no maximum enforced\n initval: '',\n replacementval: '',\n firstclickvalueifempty: null,\n step: 1,\n decimals: 0,\n stepinterval: 100,\n forcestepdivisibility: 'round', // none | floor | round | ceil\n stepintervaldelay: 500,\n verticalbuttons: false,\n verticalup: '+',\n verticaldown: '-',\n verticalupclass: '',\n verticaldownclass: '',\n prefix: '',\n postfix: '',\n prefix_extraclass: '',\n postfix_extraclass: '',\n booster: true,\n boostat: 10,\n maxboostedstep: false,\n mousewheel: true,\n buttondown_class: 'btn btn-primary',\n buttonup_class: 'btn btn-primary',\n buttondown_txt: '-',\n buttonup_txt: '+',\n callback_before_calculation: function(value) {\n return value;\n },\n callback_after_calculation: function(value) {\n return value;\n }\n };\n\n var attributeMap = {\n min: 'min',\n max: 'max',\n initval: 'init-val',\n replacementval: 'replacement-val',\n firstclickvalueifempty: 'first-click-value-if-empty',\n step: 'step',\n decimals: 'decimals',\n stepinterval: 'step-interval',\n verticalbuttons: 'vertical-buttons',\n verticalupclass: 'vertical-up-class',\n verticaldownclass: 'vertical-down-class',\n forcestepdivisibility: 'force-step-divisibility',\n stepintervaldelay: 'step-interval-delay',\n prefix: 'prefix',\n postfix: 'postfix',\n prefix_extraclass: 'prefix-extra-class',\n postfix_extraclass: 'postfix-extra-class',\n booster: 'booster',\n boostat: 'boostat',\n maxboostedstep: 'max-boosted-step',\n mousewheel: 'mouse-wheel',\n buttondown_class: 'button-down-class',\n buttonup_class: 'button-up-class',\n buttondown_txt: 'button-down-txt',\n buttonup_txt: 'button-up-txt'\n };\n\n return this.each(function() {\n\n var settings,\n originalinput = $(this),\n originalinput_data = originalinput.data(),\n _detached_prefix,\n _detached_postfix,\n container,\n elements,\n value,\n downSpinTimer,\n upSpinTimer,\n downDelayTimeout,\n upDelayTimeout,\n spincount = 0,\n spinning = false;\n\n init();\n\n function init() {\n if (originalinput.data('alreadyinitialized')) {\n return;\n }\n\n originalinput.data('alreadyinitialized', true);\n _currentSpinnerId += 1;\n originalinput.data('spinnerid', _currentSpinnerId);\n\n if (!originalinput.is('input')) {\n console.log('Must be an input.');\n return;\n }\n\n _initSettings();\n _setInitval();\n _checkValue();\n _buildHtml();\n _initElements();\n _hideEmptyPrefixPostfix();\n _bindEvents();\n _bindEventsInterface();\n }\n\n function _setInitval() {\n if (settings.initval !== '' && originalinput.val() === '') {\n originalinput.val(settings.initval);\n }\n }\n\n function changeSettings(newsettings) {\n _updateSettings(newsettings);\n _checkValue();\n\n var value = elements.input.val();\n\n if (value !== '') {\n value = Number(settings.callback_before_calculation(elements.input.val()));\n elements.input.val(settings.callback_after_calculation(Number(value).toFixed(settings.decimals)));\n }\n }\n\n function _initSettings() {\n settings = $.extend({}, defaults, originalinput_data, _parseAttributes(), options);\n }\n\n function _parseAttributes() {\n var data = {};\n $.each(attributeMap, function(key, value) {\n var attrName = 'bts-' + value + '';\n if (originalinput.is('[data-' + attrName + ']')) {\n data[key] = originalinput.data(attrName);\n }\n });\n return data;\n }\n\n function _destroy() {\n var $parent = originalinput.parent();\n\n stopSpin();\n\n originalinput.off('.touchspin');\n\n if ($parent.hasClass('bootstrap-touchspin-injected')) {\n originalinput.siblings().remove();\n originalinput.unwrap();\n }\n else {\n $('.bootstrap-touchspin-injected', $parent).remove();\n $parent.removeClass('bootstrap-touchspin');\n }\n\n originalinput.data('alreadyinitialized', false);\n }\n\n function _updateSettings(newsettings) {\n settings = $.extend({}, settings, newsettings);\n\n // Update postfix and prefix texts if those settings were changed.\n if (newsettings.postfix) {\n var $postfix = originalinput.parent().find('.bootstrap-touchspin-postfix');\n\n if ($postfix.length === 0) {\n _detached_postfix.insertAfter(originalinput);\n }\n\n originalinput.parent().find('.bootstrap-touchspin-postfix .input-group-text').text(newsettings.postfix);\n }\n\n if (newsettings.prefix) {\n var $prefix = originalinput.parent().find('.bootstrap-touchspin-prefix');\n\n if ($prefix.length === 0) {\n _detached_prefix.insertBefore(originalinput);\n }\n\n originalinput.parent().find('.bootstrap-touchspin-prefix .input-group-text').text(newsettings.prefix);\n }\n\n _hideEmptyPrefixPostfix();\n }\n\n function _buildHtml() {\n var initval = originalinput.val(),\n parentelement = originalinput.parent();\n\n if (initval !== '') {\n initval = settings.callback_after_calculation(Number(initval).toFixed(settings.decimals));\n }\n\n originalinput.data('initvalue', initval).val(initval);\n originalinput.addClass('form-control');\n\n if (parentelement.hasClass('input-group')) {\n _advanceInputGroup(parentelement);\n }\n else {\n _buildInputGroup();\n }\n }\n\n function _advanceInputGroup(parentelement) {\n parentelement.addClass('bootstrap-touchspin');\n\n var prev = originalinput.prev(),\n next = originalinput.next();\n\n var downhtml,\n uphtml,\n prefixhtml = '' + settings.prefix + ' ',\n postfixhtml = '' + settings.postfix + ' ';\n\n if (prev.hasClass('input-group-btn') || prev.hasClass('input-group-prepend')) {\n downhtml = '' + settings.buttondown_txt + ' ';\n prev.append(downhtml);\n }\n else {\n downhtml = '' + settings.buttondown_txt + ' ';\n $(downhtml).insertBefore(originalinput);\n }\n\n if (next.hasClass('input-group-btn') || next.hasClass('input-group-append')) {\n uphtml = '' + settings.buttonup_txt + ' ';\n next.prepend(uphtml);\n }\n else {\n uphtml = '' + settings.buttonup_txt + ' ';\n $(uphtml).insertAfter(originalinput);\n }\n\n $(prefixhtml).insertBefore(originalinput);\n $(postfixhtml).insertAfter(originalinput);\n\n container = parentelement;\n }\n\n function _buildInputGroup() {\n var html;\n\n var inputGroupSize = '';\n if (originalinput.hasClass('input-sm')) {\n inputGroupSize = 'input-group-sm';\n }\n\n if (originalinput.hasClass('input-lg')) {\n inputGroupSize = 'input-group-lg';\n }\n\n if (settings.verticalbuttons) {\n html = '' + settings.prefix + ' ' + settings.postfix + ' ' + settings.verticalup + ' ' + settings.verticaldown + '
';\n }\n else {\n html = '' + settings.buttondown_txt + ' ' + settings.prefix + ' ' + settings.postfix + ' ' + settings.buttonup_txt + '
';\n }\n\n container = $(html).insertBefore(originalinput);\n\n $('.bootstrap-touchspin-prefix', container).after(originalinput);\n\n if (originalinput.hasClass('input-sm')) {\n container.addClass('input-group-sm');\n }\n else if (originalinput.hasClass('input-lg')) {\n container.addClass('input-group-lg');\n }\n }\n\n function _initElements() {\n elements = {\n down: $('.bootstrap-touchspin-down', container),\n up: $('.bootstrap-touchspin-up', container),\n input: $('input', container),\n prefix: $('.bootstrap-touchspin-prefix', container).addClass(settings.prefix_extraclass),\n postfix: $('.bootstrap-touchspin-postfix', container).addClass(settings.postfix_extraclass)\n };\n }\n\n function _hideEmptyPrefixPostfix() {\n if (settings.prefix === '') {\n _detached_prefix = elements.prefix.detach();\n }\n\n if (settings.postfix === '') {\n _detached_postfix = elements.postfix.detach();\n }\n }\n\n function _bindEvents() {\n originalinput.on('keydown.touchspin', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 38) {\n if (spinning !== 'up') {\n upOnce();\n startUpSpin();\n }\n ev.preventDefault();\n }\n else if (code === 40) {\n if (spinning !== 'down') {\n downOnce();\n startDownSpin();\n }\n ev.preventDefault();\n }\n });\n\n originalinput.on('keyup.touchspin', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 38) {\n stopSpin();\n }\n else if (code === 40) {\n stopSpin();\n }\n });\n\n originalinput.on('blur.touchspin', function() {\n _checkValue();\n originalinput.val(settings.callback_after_calculation(originalinput.val()));\n });\n\n elements.down.on('keydown', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 32 || code === 13) {\n if (spinning !== 'down') {\n downOnce();\n startDownSpin();\n }\n ev.preventDefault();\n }\n });\n\n elements.down.on('keyup.touchspin', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 32 || code === 13) {\n stopSpin();\n }\n });\n\n elements.up.on('keydown.touchspin', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 32 || code === 13) {\n if (spinning !== 'up') {\n upOnce();\n startUpSpin();\n }\n ev.preventDefault();\n }\n });\n\n elements.up.on('keyup.touchspin', function(ev) {\n var code = ev.keyCode || ev.which;\n\n if (code === 32 || code === 13) {\n stopSpin();\n }\n });\n\n elements.down.on('mousedown.touchspin', function(ev) {\n elements.down.off('touchstart.touchspin'); // android 4 workaround\n\n if (originalinput.is(':disabled')) {\n return;\n }\n\n downOnce();\n startDownSpin();\n\n ev.preventDefault();\n ev.stopPropagation();\n });\n\n elements.down.on('touchstart.touchspin', function(ev) {\n elements.down.off('mousedown.touchspin'); // android 4 workaround\n\n if (originalinput.is(':disabled')) {\n return;\n }\n\n downOnce();\n startDownSpin();\n\n ev.preventDefault();\n ev.stopPropagation();\n });\n\n elements.up.on('mousedown.touchspin', function(ev) {\n elements.up.off('touchstart.touchspin'); // android 4 workaround\n\n if (originalinput.is(':disabled')) {\n return;\n }\n\n upOnce();\n startUpSpin();\n\n ev.preventDefault();\n ev.stopPropagation();\n });\n\n elements.up.on('touchstart.touchspin', function(ev) {\n elements.up.off('mousedown.touchspin'); // android 4 workaround\n\n if (originalinput.is(':disabled')) {\n return;\n }\n\n upOnce();\n startUpSpin();\n\n ev.preventDefault();\n ev.stopPropagation();\n });\n\n elements.up.on('mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin', function(ev) {\n if (!spinning) {\n return;\n }\n\n ev.stopPropagation();\n stopSpin();\n });\n\n elements.down.on('mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin', function(ev) {\n if (!spinning) {\n return;\n }\n\n ev.stopPropagation();\n stopSpin();\n });\n\n elements.down.on('mousemove.touchspin touchmove.touchspin', function(ev) {\n if (!spinning) {\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n });\n\n elements.up.on('mousemove.touchspin touchmove.touchspin', function(ev) {\n if (!spinning) {\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n });\n\n originalinput.on('mousewheel.touchspin DOMMouseScroll.touchspin', function(ev) {\n if (!settings.mousewheel || !originalinput.is(':focus')) {\n return;\n }\n\n var delta = ev.originalEvent.wheelDelta || -ev.originalEvent.deltaY || -ev.originalEvent.detail;\n\n ev.stopPropagation();\n ev.preventDefault();\n\n if (delta < 0) {\n downOnce();\n }\n else {\n upOnce();\n }\n });\n }\n\n function _bindEventsInterface() {\n originalinput.on('touchspin.destroy', function() {\n _destroy();\n });\n\n originalinput.on('touchspin.uponce', function() {\n stopSpin();\n upOnce();\n });\n\n originalinput.on('touchspin.downonce', function() {\n stopSpin();\n downOnce();\n });\n\n originalinput.on('touchspin.startupspin', function() {\n startUpSpin();\n });\n\n originalinput.on('touchspin.startdownspin', function() {\n startDownSpin();\n });\n\n originalinput.on('touchspin.stopspin', function() {\n stopSpin();\n });\n\n originalinput.on('touchspin.updatesettings', function(e, newsettings) {\n changeSettings(newsettings);\n });\n }\n\n function _forcestepdivisibility(value) {\n switch (settings.forcestepdivisibility) {\n case 'round':\n return (Math.round(value / settings.step) * settings.step).toFixed(settings.decimals);\n case 'floor':\n return (Math.floor(value / settings.step) * settings.step).toFixed(settings.decimals);\n case 'ceil':\n return (Math.ceil(value / settings.step) * settings.step).toFixed(settings.decimals);\n default:\n return value.toFixed(settings.decimals);\n }\n }\n\n function _checkValue() {\n var val, parsedval, returnval;\n\n val = settings.callback_before_calculation(originalinput.val());\n\n if (val === '') {\n if (settings.replacementval !== '') {\n originalinput.val(settings.replacementval);\n originalinput.trigger('change');\n }\n return;\n }\n\n if (settings.decimals > 0 && val === '.') {\n return;\n }\n\n parsedval = parseFloat(val);\n\n if (isNaN(parsedval)) {\n if (settings.replacementval !== '') {\n parsedval = settings.replacementval;\n }\n else {\n parsedval = 0;\n }\n }\n\n returnval = parsedval;\n\n if (parsedval.toString() !== val) {\n returnval = parsedval;\n }\n\n if ((settings.min !== null) && (parsedval < settings.min)) {\n returnval = settings.min;\n }\n\n if ((settings.max !== null) && (parsedval > settings.max)) {\n returnval = settings.max;\n }\n\n returnval = _forcestepdivisibility(returnval);\n\n if (Number(val).toString() !== returnval.toString()) {\n originalinput.val(returnval);\n originalinput.trigger('change');\n }\n }\n\n function _getBoostedStep() {\n if (!settings.booster) {\n return settings.step;\n }\n else {\n var boosted = Math.pow(2, Math.floor(spincount / settings.boostat)) * settings.step;\n\n if (settings.maxboostedstep) {\n if (boosted > settings.maxboostedstep) {\n boosted = settings.maxboostedstep;\n value = Math.round((value / boosted)) * boosted;\n }\n }\n\n return Math.max(settings.step, boosted);\n }\n }\n\n function valueIfIsNaN() {\n if(typeof(settings.firstclickvalueifempty) === 'number') {\n return settings.firstclickvalueifempty;\n } else {\n return (settings.min + settings.max) / 2;\n }\n }\n\n function upOnce() {\n _checkValue();\n\n value = parseFloat(settings.callback_before_calculation(elements.input.val()));\n\n var initvalue = value;\n var boostedstep;\n\n if (isNaN(value)) {\n value = valueIfIsNaN();\n } else {\n boostedstep = _getBoostedStep();\n value = value + boostedstep;\n }\n\n if ((settings.max !== null) && (value > settings.max)) {\n value = settings.max;\n originalinput.trigger('touchspin.on.max');\n stopSpin();\n }\n\n elements.input.val(settings.callback_after_calculation(Number(value).toFixed(settings.decimals)));\n\n if (initvalue !== value) {\n originalinput.trigger('change');\n }\n }\n\n function downOnce() {\n _checkValue();\n\n value = parseFloat(settings.callback_before_calculation(elements.input.val()));\n\n var initvalue = value;\n var boostedstep;\n\n if (isNaN(value)) {\n value = valueIfIsNaN();\n } else {\n boostedstep = _getBoostedStep();\n value = value - boostedstep;\n }\n\n if ((settings.min !== null) && (value < settings.min)) {\n value = settings.min;\n originalinput.trigger('touchspin.on.min');\n stopSpin();\n }\n\n elements.input.val(settings.callback_after_calculation(Number(value).toFixed(settings.decimals)));\n\n if (initvalue !== value) {\n originalinput.trigger('change');\n }\n }\n\n function startDownSpin() {\n stopSpin();\n\n spincount = 0;\n spinning = 'down';\n\n originalinput.trigger('touchspin.on.startspin');\n originalinput.trigger('touchspin.on.startdownspin');\n\n downDelayTimeout = setTimeout(function() {\n downSpinTimer = setInterval(function() {\n spincount++;\n downOnce();\n }, settings.stepinterval);\n }, settings.stepintervaldelay);\n }\n\n function startUpSpin() {\n stopSpin();\n\n spincount = 0;\n spinning = 'up';\n\n originalinput.trigger('touchspin.on.startspin');\n originalinput.trigger('touchspin.on.startupspin');\n\n upDelayTimeout = setTimeout(function() {\n upSpinTimer = setInterval(function() {\n spincount++;\n upOnce();\n }, settings.stepinterval);\n }, settings.stepintervaldelay);\n }\n\n function stopSpin() {\n clearTimeout(downDelayTimeout);\n clearTimeout(upDelayTimeout);\n clearInterval(downSpinTimer);\n clearInterval(upSpinTimer);\n\n switch (spinning) {\n case 'up':\n originalinput.trigger('touchspin.on.stopupspin');\n originalinput.trigger('touchspin.on.stopspin');\n break;\n case 'down':\n originalinput.trigger('touchspin.on.stopdownspin');\n originalinput.trigger('touchspin.on.stopspin');\n break;\n }\n\n spincount = 0;\n spinning = false;\n }\n\n });\n\n };\n\n}));\n","/*!\n * Bootstrap alert.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util__default[\"default\"].TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n return Alert;\n\n}));\n//# sourceMappingURL=alert.js.map\n","/*!\n * Bootstrap button.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));\n})(this, (function ($) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'button';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.button';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY + DATA_API_KEY + \" \" + (\"blur\" + EVENT_KEY + DATA_API_KEY);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Button;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Button._jQueryInterface;\n };\n\n return Button;\n\n}));\n//# sourceMappingURL=button.js.map\n","/*!\n * Bootstrap tab.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'tab';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.tab';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * Class definition\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util__default[\"default\"].getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default[\"default\"](previous).trigger(hideEvent);\n }\n\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN, {\n relatedTarget: previous\n });\n $__default[\"default\"](previous).trigger(hiddenEvent);\n $__default[\"default\"](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(active);\n $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW).one(Util__default[\"default\"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util__default[\"default\"].reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW);\n }\n\n var parent = element.parentNode;\n\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n\n if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default[\"default\"](this);\n var data = $this.data(DATA_KEY);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Tab;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Tab._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Tab;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Tab._jQueryInterface;\n };\n\n return Tab;\n\n}));\n//# sourceMappingURL=tab.js.map\n","/*!\n * Bootstrap util.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Util = factory(global.jQuery));\n})(this, (function ($) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n return Util;\n\n}));\n//# sourceMappingURL=util.js.map\n","/*!\n * bsCustomFileInput v1.3.4 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2020 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.bsCustomFileInput = factory());\n}(this, (function () { 'use strict';\n\n var Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input'\n };\n\n var textNodeType = 3;\n\n var getDefaultText = function getDefaultText(input) {\n var defaultText = '';\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n defaultText = label.textContent;\n }\n\n return defaultText;\n };\n\n var findFirstChildNode = function findFirstChildNode(element) {\n if (element.childNodes.length > 0) {\n var childNodes = [].slice.call(element.childNodes);\n\n for (var i = 0; i < childNodes.length; i++) {\n var node = childNodes[i];\n\n if (node.nodeType !== textNodeType) {\n return node;\n }\n }\n }\n\n return element;\n };\n\n var restoreDefaultText = function restoreDefaultText(input) {\n var defaultText = input.bsCustomFileInput.defaultText;\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n element.textContent = defaultText;\n }\n };\n\n var fileApi = !!window.File;\n var FAKE_PATH = 'fakepath';\n var FAKE_PATH_SEPARATOR = '\\\\';\n\n var getSelectedFiles = function getSelectedFiles(input) {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files).map(function (file) {\n return file.name;\n }).join(', ');\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n return splittedValue[splittedValue.length - 1];\n }\n\n return input.value;\n };\n\n function handleInputChange() {\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n var inputValue = getSelectedFiles(this);\n\n if (inputValue.length) {\n element.textContent = inputValue;\n } else {\n restoreDefaultText(this);\n }\n }\n }\n\n function handleFormReset() {\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i]);\n }\n }\n\n var customProperty = 'bsCustomFileInput';\n var Event = {\n FORMRESET: 'reset',\n INPUTCHANGE: 'change'\n };\n var bsCustomFileInput = {\n init: function init(inputSelector, formSelector) {\n if (inputSelector === void 0) {\n inputSelector = Selector.CUSTOMFILE;\n }\n\n if (formSelector === void 0) {\n formSelector = Selector.FORM;\n }\n\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input)\n },\n writable: true\n });\n handleInputChange.call(input);\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n Object.defineProperty(formList[_i], customProperty, {\n value: true,\n writable: true\n });\n }\n },\n destroy: function destroy() {\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n return !!form.bsCustomFileInput;\n });\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n restoreDefaultText(input);\n input[customProperty] = undefined;\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n formList[_i2][customProperty] = undefined;\n }\n }\n };\n\n return bsCustomFileInput;\n\n})));\n//# sourceMappingURL=bs-custom-file-input.js.map\n","/**\n * Convert a template string into HTML DOM nodes\n * @param {String} str The template string\n * @return {Node} The template HTML\n */\nconst parseToHtml = (str) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(str, 'text/html');\n\n return doc.body.children[0];\n};\n\nexport default parseToHtml;\n","import parseToHtml from '@js/theme/utils/parseToHtml';\n\nlet id = 0;\n\nconst getId = (prefix = 'alert_toast_') => {\n id += 1;\n return prefix + id;\n};\n\nconst useAlertToast = (params) => {\n const {\n duration = 4000,\n } = params || {};\n const stackTemplateId = 'alert-toast-stack';\n const bodyElement = document.querySelector('body');\n\n const buildToastTemplate = (text, type, toastId) => parseToHtml(`\n \n `);\n\n const buildToastStackTemplate = () => parseToHtml(`\n \n
\n `);\n\n const getToastStackTemplate = () => {\n const getElement = () => document.querySelector(`#${stackTemplateId}`);\n\n if (!getElement()) {\n bodyElement.append(buildToastStackTemplate());\n }\n\n return getElement();\n };\n\n const hideToast = (toast) => {\n toast.classList.remove('show');\n\n const hideDuration = (parseFloat(window.getComputedStyle(toast).transitionDuration)) * 1000;\n\n setTimeout(() => {\n toast.remove();\n }, hideDuration);\n };\n\n const showToast = (text, type, timeOut = false) => {\n const toastId = getId();\n const toast = buildToastTemplate(text, type, toastId);\n const toastStack = getToastStackTemplate();\n timeOut = timeOut || duration;\n\n toastStack.prepend(toast);\n\n const toastInDOM = document.querySelector(`#${toastId}`);\n\n toastInDOM.classList.remove('d-none');\n\n setTimeout(() => {\n toastInDOM.classList.add('show');\n }, 10);\n\n toastInDOM.dataset.timeoutId = setTimeout(() => {\n hideToast(toastInDOM);\n }, timeOut);\n };\n\n const info = (text, timeOut = false) => {\n showToast(text, 'info', timeOut);\n };\n\n const success = (text, timeOut = false) => {\n showToast(text, 'success', timeOut);\n };\n\n const danger = (text, timeOut = false) => {\n showToast(text, 'danger', timeOut);\n };\n\n const warning = (text, timeOut = false) => {\n showToast(text, 'warning', timeOut);\n };\n\n return {\n info,\n success,\n danger,\n warning,\n showToast,\n };\n};\n\nexport default useAlertToast;\n","export const JSON_MIME = \"application/json\";\nexport const CONTENT_TYPE_HEADER = \"Content-Type\";\nexport const FETCH_ERROR = Symbol();\n//# sourceMappingURL=constants.js.map","import { CONTENT_TYPE_HEADER } from \"./constants.js\";\nexport function extractContentType(headers = {}) {\n var _a;\n return (_a = Object.entries(headers).find(([k]) => k.toLowerCase() === CONTENT_TYPE_HEADER.toLowerCase())) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isLikelyJsonMime(value) {\n return /^application\\/.*json.*/.test(value);\n}\nexport const mix = function (one, two, mergeArrays = false) {\n return Object.entries(two).reduce((acc, [key, newValue]) => {\n const value = one[key];\n if (Array.isArray(value) && Array.isArray(newValue)) {\n acc[key] = mergeArrays ? [...value, ...newValue] : newValue;\n }\n else if (typeof value === \"object\" && typeof newValue === \"object\") {\n acc[key] = mix(value, newValue, mergeArrays);\n }\n else {\n acc[key] = newValue;\n }\n return acc;\n }, { ...one });\n};\n//# sourceMappingURL=utils.js.map","import { mix } from \"./utils.js\";\nconst config = {\n // Default options\n options: {},\n // Error type\n errorType: \"text\",\n // Polyfills\n polyfills: {\n // fetch: null,\n // FormData: null,\n // URLSearchParams: null,\n // performance: null,\n // PerformanceObserver: null,\n // AbortController: null\n },\n polyfill(p, doThrow = true, instance = false, ...args) {\n const res = this.polyfills[p] ||\n (typeof self !== \"undefined\" ? self[p] : null) ||\n (typeof global !== \"undefined\" ? global[p] : null);\n if (doThrow && !res)\n throw new Error(p + \" is not defined\");\n return instance && res ? new res(...args) : res;\n }\n};\n/**\n * Sets the default fetch options that will be stored internally when instantiating wretch objects.\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.options({ headers: { \"Accept\": \"application/json\" } });\n *\n * // The fetch request is sent with both headers.\n * wretch(\"...\", { headers: { \"X-Custom\": \"Header\" } }).get().res();\n * ```\n *\n * @param options Default options\n * @param replace If true, completely replaces the existing options instead of mixing in\n */\nexport function setOptions(options, replace = false) {\n config.options = replace ? options : mix(config.options, options);\n}\n/**\n * Sets the default polyfills that will be stored internally when instantiating wretch objects.\n * Useful for browserless environments like `node.js`.\n *\n * Needed for libraries like [fetch-ponyfill](https://github.com/qubyte/fetch-ponyfill).\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.polyfills({\n * fetch: require(\"node-fetch\"),\n * FormData: require(\"form-data\"),\n * URLSearchParams: require(\"url\").URLSearchParams,\n * });\n *\n * // Uses the above polyfills.\n * wretch(\"...\").get().res();\n * ```\n *\n * @param polyfills An object containing the polyfills\n * @param replace If true, replaces the current polyfills instead of mixing in\n */\nexport function setPolyfills(polyfills, replace = false) {\n config.polyfills = replace ? polyfills : mix(config.polyfills, polyfills);\n}\n/**\n * Sets the default method (text, json, âĻ) used to parse the data contained in the response body in case of an HTTP error.\n * As with other static methods, it will affect wretch instances created after calling this function.\n *\n * _Note: if the response Content-Type header is set to \"application/json\", the body will be parsed as json regardless of the errorType._\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.errorType(\"json\")\n *\n * wretch(\"http://server/which/returns/an/error/with/a/json/body\")\n * .get()\n * .res()\n * .catch(error => {\n * // error[errorType] (here, json) contains the parsed body\n * console.log(error.json)\n * })\n * ```\n *\n * If null, defaults to \"text\".\n */\nexport function setErrorType(errorType) {\n config.errorType = errorType;\n}\nexport default config;\n//# sourceMappingURL=config.js.map","/**\n * @private @internal\n */\nexport const middlewareHelper = (middlewares) => (fetchFunction) => {\n return middlewares.reduceRight((acc, curr) => curr(acc), fetchFunction) || fetchFunction;\n};\n//# sourceMappingURL=middleware.js.map","import { middlewareHelper } from \"./middleware.js\";\nimport { mix } from \"./utils.js\";\nimport { FETCH_ERROR } from \"./constants.js\";\n/**\n * This class inheriting from Error is thrown when the fetch response is not \"ok\".\n * It extends Error and adds status, text and body fields.\n */\nexport class WretchError extends Error {\n}\nexport const resolver = (wretch) => {\n const sharedState = Object.create(null);\n wretch = wretch._addons.reduce((w, addon) => addon.beforeRequest &&\n addon.beforeRequest(w, wretch._options, sharedState)\n || w, wretch);\n const { _url: url, _options: opts, _config: config, _catchers: _catchers, _resolvers: resolvers, _middlewares: middlewares, _addons: addons } = wretch;\n const catchers = new Map(_catchers);\n const finalOptions = mix(config.options, opts);\n // The generated fetch request\n let finalUrl = url;\n const _fetchReq = middlewareHelper(middlewares)((url, options) => {\n finalUrl = url;\n return config.polyfill(\"fetch\")(url, options);\n })(url, finalOptions);\n // Throws on an http error\n const referenceError = new Error();\n const throwingPromise = _fetchReq\n .catch(error => {\n throw { __wrap: error };\n })\n .then(response => {\n if (!response.ok) {\n const err = new WretchError();\n // Enhance the error object\n err[\"cause\"] = referenceError;\n err.stack = err.stack + \"\\nCAUSE: \" + referenceError.stack;\n err.response = response;\n err.url = finalUrl;\n if (response.type === \"opaque\") {\n throw err;\n }\n return response.text().then((body) => {\n var _a;\n err.message = body;\n if (config.errorType === \"json\" || ((_a = response.headers.get(\"Content-Type\")) === null || _a === void 0 ? void 0 : _a.split(\";\")[0]) === \"application/json\") {\n try {\n err.json = JSON.parse(body);\n }\n catch (e) { /* ignore */ }\n }\n err.text = body;\n err[\"status\"] = response.status;\n throw err;\n });\n }\n return response;\n });\n // Wraps the Promise in order to dispatch the error to a matching catcher\n const catchersWrapper = (promise) => {\n return promise.catch(err => {\n const error = err.__wrap || err;\n const catcher = (error.status && catchers.get(error.status)) ||\n catchers.get(error.name) || (err.__wrap && catchers.has(FETCH_ERROR) && catchers.get(FETCH_ERROR));\n if (catcher)\n return catcher(error, wretch);\n throw error;\n });\n };\n const bodyParser = funName => cb => funName ?\n // If a callback is provided, then callback with the body result otherwise return the parsed body itself.\n catchersWrapper(throwingPromise.then(_ => _ && _[funName]()).then(_ => cb ? cb(_) : _)) :\n // No body parsing method - return the response\n catchersWrapper(throwingPromise.then(_ => cb ? cb(_) : _));\n const responseChain = {\n _wretchReq: wretch,\n _fetchReq,\n _sharedState: sharedState,\n res: bodyParser(null),\n json: bodyParser(\"json\"),\n blob: bodyParser(\"blob\"),\n formData: bodyParser(\"formData\"),\n arrayBuffer: bodyParser(\"arrayBuffer\"),\n text: bodyParser(\"text\"),\n error(errorId, cb) {\n catchers.set(errorId, cb);\n return this;\n },\n badRequest(cb) { return this.error(400, cb); },\n unauthorized(cb) { return this.error(401, cb); },\n forbidden(cb) { return this.error(403, cb); },\n notFound(cb) { return this.error(404, cb); },\n timeout(cb) { return this.error(408, cb); },\n internalError(cb) { return this.error(500, cb); },\n fetchError(cb) { return this.error(FETCH_ERROR, cb); },\n };\n const enhancedResponseChain = addons.reduce((chain, addon) => ({\n ...chain,\n ...addon.resolver\n }), responseChain);\n return resolvers.reduce((chain, r) => r(chain, wretch), enhancedResponseChain);\n};\n//# sourceMappingURL=resolver.js.map","import { mix, extractContentType, isLikelyJsonMime } from \"./utils.js\";\nimport { JSON_MIME, CONTENT_TYPE_HEADER } from \"./constants.js\";\nimport { resolver } from \"./resolver.js\";\nimport config from \"./config.js\";\nexport const core = {\n _url: \"\",\n _options: {},\n _config: config,\n _catchers: new Map(),\n _resolvers: [],\n _deferred: [],\n _middlewares: [],\n _addons: [],\n addon(addon) {\n return { ...this, _addons: [...this._addons, addon], ...addon.wretch };\n },\n errorType(errorType) {\n return {\n ...this,\n _config: {\n ...this._config,\n errorType\n }\n };\n },\n polyfills(polyfills, replace = false) {\n return {\n ...this,\n _config: {\n ...this._config,\n polyfills: replace ? polyfills : mix(this._config.polyfills, polyfills)\n }\n };\n },\n url(_url, replace = false) {\n if (replace)\n return { ...this, _url };\n const split = this._url.split(\"?\");\n return {\n ...this,\n _url: split.length > 1 ?\n split[0] + _url + \"?\" + split[1] :\n this._url + _url\n };\n },\n options(options, replace = false) {\n return { ...this, _options: replace ? options : mix(this._options, options) };\n },\n headers(headerValues) {\n return { ...this, _options: mix(this._options, { headers: headerValues || {} }) };\n },\n accept(headerValue) {\n return this.headers({ Accept: headerValue });\n },\n content(headerValue) {\n return this.headers({ [CONTENT_TYPE_HEADER]: headerValue });\n },\n auth(headerValue) {\n return this.headers({ Authorization: headerValue });\n },\n catcher(errorId, catcher) {\n const newMap = new Map(this._catchers);\n newMap.set(errorId, catcher);\n return { ...this, _catchers: newMap };\n },\n resolve(resolver, clear = false) {\n return { ...this, _resolvers: clear ? [resolver] : [...this._resolvers, resolver] };\n },\n defer(callback, clear = false) {\n return {\n ...this,\n _deferred: clear ? [callback] : [...this._deferred, callback]\n };\n },\n middlewares(middlewares, clear = false) {\n return {\n ...this,\n _middlewares: clear ? middlewares : [...this._middlewares, ...middlewares]\n };\n },\n fetch(method = this._options.method, url = \"\", body = null) {\n let base = this.url(url).options({ method });\n // \"Jsonify\" the body if it is an object and if it is likely that the content type targets json.\n const contentType = extractContentType(base._options.headers);\n const jsonify = typeof body === \"object\" && (!base._options.headers || !contentType || isLikelyJsonMime(contentType));\n base =\n !body ? base :\n jsonify ? base.json(body, contentType) :\n base.body(body);\n return resolver(base\n ._deferred\n .reduce((acc, curr) => curr(acc, acc._url, acc._options), base));\n },\n get(url = \"\") {\n return this.fetch(\"GET\", url);\n },\n delete(url = \"\") {\n return this.fetch(\"DELETE\", url);\n },\n put(body, url = \"\") {\n return this.fetch(\"PUT\", url, body);\n },\n post(body, url = \"\") {\n return this.fetch(\"POST\", url, body);\n },\n patch(body, url = \"\") {\n return this.fetch(\"PATCH\", url, body);\n },\n head(url = \"\") {\n return this.fetch(\"HEAD\", url);\n },\n opts(url = \"\") {\n return this.fetch(\"OPTIONS\", url);\n },\n body(contents) {\n return { ...this, _options: { ...this._options, body: contents } };\n },\n json(jsObject, contentType) {\n const currentContentType = extractContentType(this._options.headers);\n return this.content(contentType ||\n isLikelyJsonMime(currentContentType) && currentContentType ||\n JSON_MIME).body(JSON.stringify(jsObject));\n }\n};\n//# sourceMappingURL=core.js.map","import { setOptions, setErrorType, setPolyfills } from \"./config.js\";\nimport { core } from \"./core.js\";\nimport { WretchError } from \"./resolver.js\";\n/**\n * Creates a new wretch instance with a base url and base\n * [fetch options](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch).\n *\n * ```ts\n * import wretch from \"wretch\"\n *\n * // Reusable instance\n * const w = wretch(\"https://domain.com\", { mode: \"cors\" })\n * ```\n *\n * @param _url The base url\n * @param _options The base fetch options\n * @returns A fresh wretch instance\n */\nfunction factory(_url = \"\", _options = {}) {\n return { ...core, _url, _options };\n}\nfactory[\"default\"] = factory;\n/** {@inheritDoc setOptions} */\nfactory.options = setOptions;\n/** {@inheritDoc setErrorType} */\nfactory.errorType = setErrorType;\n/** {@inheritDoc setPolyfills} */\nfactory.polyfills = setPolyfills;\nfactory.WretchError = WretchError;\nexport default factory;\n//# sourceMappingURL=index.js.map","function stringify(value) {\n return typeof value !== \"undefined\" ? value : \"\";\n}\nconst appendQueryParams = (url, qp, replace, config) => {\n let queryString;\n if (typeof qp === \"string\") {\n queryString = qp;\n }\n else {\n const usp = config.polyfill(\"URLSearchParams\", true, true);\n for (const key in qp) {\n const value = qp[key];\n if (qp[key] instanceof Array) {\n for (const val of value)\n usp.append(key, stringify(val));\n }\n else {\n usp.append(key, stringify(value));\n }\n }\n queryString = usp.toString();\n }\n const split = url.split(\"?\");\n if (!queryString)\n return replace ? split[0] : url;\n if (replace || split.length < 2)\n return split[0] + \"?\" + queryString;\n return url + \"&\" + queryString;\n};\n/**\n * Adds the ability to append query parameters from a javascript object.\n *\n * ```js\n * import QueryAddon from \"wretch/addons/queryString\"\n *\n * wretch().addon(QueryAddon)\n * ```\n */\nconst queryString = {\n wretch: {\n query(qp, replace = false) {\n return { ...this, _url: appendQueryParams(this._url, qp, replace, this._config) };\n }\n }\n};\nexport default queryString;\n//# sourceMappingURL=queryString.js.map","let favoriteProducts = [];\n\nconst useFavoriteProductsState = (initialValue = []) => {\n if (initialValue && Array.isArray(initialValue) && initialValue.length > 0) {\n favoriteProducts = initialValue;\n }\n\n const getFavoriteProducts = () => favoriteProducts;\n\n const setFavoriteProducts = (products) => {\n favoriteProducts = products;\n };\n\n const addProductKey = (key) => {\n const currentFavoriteProducts = getFavoriteProducts();\n\n setFavoriteProducts([...currentFavoriteProducts, key]);\n };\n\n const removeProductKey = (key) => {\n const currentFavoriteProducts = getFavoriteProducts();\n\n setFavoriteProducts(currentFavoriteProducts.filter((productKey) => productKey !== key));\n };\n\n return {\n getFavoriteProducts,\n addProductKey,\n removeProductKey,\n };\n};\n\nexport default useFavoriteProductsState;\n","import wretch from 'wretch';\nimport QueryStringAddon from 'wretch/addons/queryString';\nimport useFavoriteProductsState from './useFavoriteProductsState';\n\nconst useFavoriteProducts = () => {\n // favoriteProducts is a global variable set via Media::addJsDef\n const initialState = window.favoriteProducts || [];\n const { getFavoriteProducts, addProductKey, removeProductKey } = useFavoriteProductsState(initialState);\n\n const getWretch = (url) => wretch(url).addon(QueryStringAddon);\n\n const addToFavorite = async (idProduct, idProductAttribute, refreshList = 0) => new Promise((resolve, reject) => {\n // addToFavoriteAction is a global variable set via Media::addJsDef\n getWretch(window.addToFavoriteAction)\n .query({\n id_product: idProduct,\n id_product_attribute: idProductAttribute,\n refresh_list: refreshList,\n })\n .post()\n .json((data) => {\n if (data.success) {\n addProductKey(`${idProduct}_${idProductAttribute}`);\n }\n\n resolve(data);\n })\n .catch(() => {\n reject(Error('Something went wrong'));\n });\n });\n\n const removeFromFavorite = async (idProduct, idProductAttribute, refreshList = 0) => new Promise((resolve, reject) => {\n // removeFromFavoriteAction is a global variable set via Media::addJsDef\n getWretch(window.removeFromFavoriteAction)\n .query({\n id_product: idProduct,\n id_product_attribute: idProductAttribute,\n refresh_list: refreshList,\n })\n .post()\n .json((data) => {\n if (data.success) {\n removeProductKey(`${idProduct}_${idProductAttribute}`);\n }\n\n resolve(data);\n })\n .catch(() => {\n reject(Error('Something went wrong'));\n });\n });\n\n return {\n getFavoriteProducts,\n addToFavorite,\n removeFromFavorite,\n };\n};\n\nexport default useFavoriteProducts;\n","import useFavoriteProductsState from './useFavoriteProductsState';\n\nconst useFavoriteDOMHandler = (buttonsSelector = '[data-action=\"toggleFavorite\"]') => {\n const { getFavoriteProducts } = useFavoriteProductsState();\n const getButtons = () => document.querySelectorAll(buttonsSelector);\n const activeDataAttribute = 'active';\n\n const getAllButtonsByProductKey = (key) => document.querySelectorAll(`${buttonsSelector}[data-key=\"${key}\"]`);\n\n const getProductIdsFromKey = (key) => {\n const [idProduct, idProductAttribute] = key.split('_');\n return {\n idProduct: parseInt(idProduct, 10),\n idProductAttribute: parseInt(idProductAttribute, 10),\n };\n };\n\n const setBtnActive = (btn) => {\n const { key } = btn.dataset;\n const allButtons = getAllButtonsByProductKey(key);\n\n allButtons.forEach((currentBtn) => {\n currentBtn.dataset[activeDataAttribute] = true;\n });\n };\n\n const setBtnInactive = (btn) => {\n const { key } = btn.dataset;\n const allButtons = getAllButtonsByProductKey(key);\n\n allButtons.forEach((currentBtn) => {\n currentBtn.dataset[activeDataAttribute] = false;\n });\n };\n\n const refreshButtons = () => {\n getButtons().forEach((btn) => {\n btn.dataset[activeDataAttribute] = false;\n });\n\n getFavoriteProducts().forEach((productKey) => {\n const allButtons = getAllButtonsByProductKey(productKey);\n\n allButtons.forEach((btn) => {\n btn.dataset[activeDataAttribute] = true;\n });\n });\n };\n\n return {\n getProductIdsFromKey,\n refreshButtons,\n setBtnActive,\n setBtnInactive,\n };\n};\n\nexport default useFavoriteDOMHandler;\n","import useAlertToast from '@js/theme/components/useAlertToast';\nimport useFavoriteProducts from './components/useFavoriteProducts';\nimport useFavoriteDOMHandler from './components/useFavoriteDOMHandler';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const {\n addToFavorite,\n removeFromFavorite,\n } = useFavoriteProducts();\n const {\n getProductIdsFromKey,\n refreshButtons,\n setBtnActive,\n setBtnInactive,\n } = useFavoriteDOMHandler();\n const {\n success,\n danger,\n } = useAlertToast();\n\n const handleMessage = (messages, type = 'success') => {\n if (type === 'success') {\n success(messages);\n } else {\n danger(messages);\n }\n };\n\n const updateTopContent = (topContent) => {\n const topContentContainer = document.querySelector('.js-favorite-top-content');\n\n if (topContentContainer) {\n const node = document.createElement('div');\n node.innerHTML = topContent;\n\n topContentContainer.replaceWith(...node.children);\n }\n };\n\n document.addEventListener('click', async (event) => {\n const btn = event.target.matches('[data-action=\"toggleFavorite\"]')\n ? event.target\n : event.target.closest('[data-action=\"toggleFavorite\"]');\n\n if (btn) {\n event.preventDefault();\n const { idProduct, idProductAttribute } = getProductIdsFromKey(btn.dataset.key);\n const isAdded = btn.dataset.active === 'true';\n\n if (isAdded) {\n try {\n const { success: requestSuccess, messages, topContent } = await removeFromFavorite(idProduct, idProductAttribute);\n\n handleMessage(messages, requestSuccess ? 'success' : 'error');\n\n if (requestSuccess) {\n setBtnInactive(btn);\n updateTopContent(topContent);\n }\n } catch (error) {\n handleMessage([error.message], 'error');\n }\n } else {\n try {\n const { success: requestSuccess, messages, topContent } = await addToFavorite(idProduct, idProductAttribute);\n\n handleMessage(messages, requestSuccess ? 'success' : 'error');\n\n if (requestSuccess) {\n setBtnActive(btn);\n updateTopContent(topContent);\n }\n } catch (error) {\n handleMessage([error.message], 'error');\n }\n }\n\n if (window.isFavoriteProductsListingPage) {\n prestashop.emit('updateFacets', window.location.href);\n }\n }\n }, false);\n\n refreshButtons();\n\n prestashop.on('updatedProduct', () => {\n setTimeout(refreshButtons, 1);\n });\n prestashop.on('updatedProductList', () => {\n setTimeout(refreshButtons, 1);\n });\n});\n","function SearchInput({\n searchUrl,\n input,\n onType,\n onResult,\n beforeSend,\n onRemoveResult,\n perPage,\n appendTo,\n min,\n timeout,\n}) {\n this.searchUrl = searchUrl;\n this.input = input;\n this.appendTo = document.querySelector(appendTo);\n this.onType = onType || (() => {});\n this.onResult = onResult || (() => {});\n this.onRemoveResult = onRemoveResult || (() => {});\n this.beforeSend = beforeSend || (() => {});\n this.min = min || 3;\n this.perPage = perPage || 10;\n this.timeout = timeout || 300;\n this.resultBox = null;\n\n const cache = {};\n\n let typeTimeout = null;\n const resultBoxClass = 'js-search-result';\n\n const getInputString = () => this.input.value;\n\n const handleResultIfStringMatchMinLength = (str) => str.length >= this.min;\n\n const resetResultIfExits = () => {\n if (this.resultBox) {\n this.onRemoveResult();\n this.resultBox.remove();\n }\n };\n\n const displayResult = (data, str) => {\n resetResultIfExits();\n\n const element = document.createElement('div');\n element.classList.add(resultBoxClass);\n element.innerHTML = data.content;\n\n this.appendTo.appendChild(element);\n this.resultBox = document.querySelector(`.${resultBoxClass}`);\n\n this.onResult({\n input: this.input,\n appendTo: this.appendTo,\n s: str,\n data,\n });\n };\n\n const handleAjax = (str) => {\n this.beforeSend({\n input: this.input,\n appendTo: this.appendTo,\n s: str,\n });\n\n if (typeof cache[str] !== 'undefined') {\n displayResult(cache[str], str);\n\n return;\n }\n\n let data = {\n s: str,\n perPage: this.perPage,\n ajax: 1,\n };\n\n data = Object.keys(data).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`).join('&');\n\n fetch(this.searchUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: data,\n })\n /// ISSUE WITH RESPONSE.JSON() AND HTML CONTENT INSIDE JSON\n .then((response) => response.text())\n .then((responseData) => {\n responseData = JSON.parse(responseData);\n cache[str] = responseData;\n\n displayResult(responseData, str);\n })\n .catch((err) => console.error(err)); // eslint-disable-line\n };\n\n this.removeResults = () => {\n resetResultIfExits();\n };\n\n this.input.addEventListener('keyup', () => {\n if (typeTimeout) {\n clearTimeout(typeTimeout);\n }\n\n const str = getInputString();\n\n this.onType({\n input: this.input,\n appendTo: this.appendTo,\n s: str,\n });\n\n if (!handleResultIfStringMatchMinLength(str)) {\n resetResultIfExits();\n return;\n }\n\n typeTimeout = setTimeout(() => {\n handleAjax(str);\n }, this.timeout);\n });\n\n return this;\n}\n\nexport default SearchInput;\n","import SearchInput from './components/SearchInput';\n\nconst init = () => {\n const searchInput = document.querySelector('.js-search-input');\n\n if (!searchInput) {\n return;\n }\n\n const getAjaxUrlFromElement = (el) => (el && el.length ? el.getAttribute('data-search-controller-url') : null);\n const ajaxUrl = getAjaxUrlFromElement(document.querySelector('[data-search-controller-url]'));\n const body = document.querySelector('body');\n const inputForm = searchInput.closest('.js-search-form');\n const backdrop = document.createElement('div');\n backdrop.classList.add('search-backdrop');\n body.appendChild(backdrop);\n\n if (!ajaxUrl) {\n return;\n }\n\n const Search = new SearchInput({\n searchUrl: ajaxUrl,\n input: searchInput,\n appendTo: '.js-search-form',\n perPage: 6,\n onResult: () => {\n body.classList.add('search-result-open');\n prestashop.pageLazyLoad.update();\n },\n onRemoveResult: () => {\n body.classList.remove('search-result-open');\n },\n beforeSend: () => {\n // console.log('BEFORE SEND ' + e);\n },\n onType: () => {\n // console.log('ON TYPE ' + e);\n },\n });\n\n body.addEventListener('click', ({ target }) => {\n if (body.classList.contains('search-result-open') && target !== inputForm && !target.closest('.js-search-form')) {\n body.classList.remove('search-result-open');\n Search.removeResults();\n }\n });\n};\n\ndocument.addEventListener('DOMContentLoaded', init);\n","function initShoppingCart() {\n const body = document.querySelector('body');\n\n function bindEvents() {\n const blockCart = document.querySelector('.js-blockcart');\n\n // blockCart.addEventListener('show.bs.dropdown', () => { Change to vanilla js when bootstrap 5 is adopted\n $(blockCart).on('show.bs.dropdown', () => {\n body.classList.add('header-dropdown-open', 'block-cart-open');\n });\n\n // blockCart.addEventListener('hide.bs.dropdown', (e) => { Change to vanilla js when bootstrap 5 is adopted\n $(blockCart).on('hide.bs.dropdown', (e) => {\n const { target } = e;\n if (!target.classList.contains('dropdown-close')\n && (target.classList.contains('keep-open') || target.closest('.keep-open')\n || (e.clickEvent && e.clickEvent.target.closest('.keep-open')))) {\n return false; // returning false should stop the dropdown from hiding.\n }\n body.classList.remove('header-dropdown-open', 'block-cart-open');\n return true;\n });\n }\n\n prestashop.blockcart = prestashop.blockcart || {};\n\n const { showModal } = prestashop.blockcart;\n\n bindEvents();\n\n prestashop.on(\n 'updateCart',\n (event) => {\n const refreshURL = document.querySelector('.js-blockcart').dataset.refreshUrl;\n let requestData = {};\n\n if (event && event.reason && typeof event.resp !== 'undefined' && !event.resp.hasError) {\n requestData = {\n id_customization: event.reason.idCustomization,\n id_product_attribute: event.reason.idProductAttribute,\n id_product: event.reason.idProduct,\n action: event.reason.linkAction,\n ajax: 1,\n };\n }\n\n requestData = Object.keys(requestData).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(requestData[key])}`).join('&');\n\n if (event && event.resp && event.resp.hasError) {\n const errorModal = document.querySelector('#blockcart-error');\n const alertBlock = document.querySelector('.js-blockcart-alert');\n\n alertBlock.innerHTML = event.resp.errors.join(' ');\n // errorModal.modal('show'); Change to vanilla js when bootstrap 5 is adopted\n $(errorModal).modal('show');\n }\n\n fetch(refreshURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: requestData,\n })\n .then((resp) => resp.json())\n .then((resp) => {\n const previewHtml = new DOMParser().parseFromString(resp.preview, 'text/html').querySelector('.js-blockcart');\n\n if (previewHtml) {\n document.querySelector('.js-blockcart').replaceWith(previewHtml);\n }\n\n if (resp.modal) {\n showModal(resp.modal);\n }\n\n prestashop.emit('updatedBlockCart', resp);\n\n if (body.classList.contains('block-cart-open')) {\n const dropdown = body.querySelector('.js-blockcart [data-toggle=\"dropdown\"]');\n\n if (dropdown) {\n dropdown.click();\n }\n }\n\n bindEvents();\n\n body.classList.remove('cart-loading');\n })\n .catch((resp) => {\n prestashop.emit('handleError', { eventType: 'updateShoppingCart', resp });\n });\n },\n );\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n initShoppingCart();\n});\n","import $ from 'jquery';\n\nclass DynamicImportJqueryPlugin {\n constructor({\n jqueryPluginCover,\n importer,\n } = {}) {\n this.jqueryPluginCover = jqueryPluginCover;\n this.importer = importer;\n this.jqueryFuncCalled = [];\n\n this.setJqueryPlugin();\n }\n\n callJqueryAction() {\n for (const fncCall of this.jqueryFuncCalled) {\n fncCall.elem[this.jqueryPluginCover](fncCall.args);\n }\n }\n\n fetchFiles() {\n this.importer.loadFiles(() => this.callJqueryAction());\n }\n\n setJqueryPlugin() {\n const self = this;\n\n /* eslint-disable func-names */\n $.fn[this.jqueryPluginCover] = function (args) {\n self.jqueryFuncCalled.push({\n elem: this,\n args,\n });\n self.fetchFiles();\n\n return this;\n };\n }\n}\n\nexport default DynamicImportJqueryPlugin;\n","import $ from 'jquery';\n\nclass DynamicImportDOMEvents {\n constructor({\n importer,\n events,\n eventSelector,\n preventDefault,\n } = {}) {\n this.eventSelector = eventSelector;\n this.events = events;\n this.eventsArray = events.split(' ');\n this.preventDefault = preventDefault;\n this.importer = importer;\n this.fetchFiles = this.fetchFiles.bind(this);\n\n this.bindEvents();\n }\n\n fetchFiles(e = false) {\n if (e && this.preventDefault) {\n e.preventDefault();\n }\n\n this.importer.loadFiles(() => {\n if (e && this.eventsArray.includes(e.type)) {\n $(e.target).trigger(e.type);\n this.unbindEvents();\n }\n });\n }\n\n bindEvents() {\n $(document).on(this.events, this.eventSelector, this.fetchFiles);\n }\n\n unbindEvents() {\n $(document).off(this.events, this.eventSelector, this.fetchFiles);\n }\n}\n\nexport default DynamicImportDOMEvents;\n","import DynamicImportJqueryPlugin from '@js/theme/utils/DynamicImportJqueryPlugin';\nimport DynamicImportDOMEvents from '@js/theme/utils/DynamicImportDOMEvents';\n\nexport default class DynamicImportHandler {\n constructor({\n files,\n jqueryPluginCover = null,\n enableObserve = false,\n observeOptions = false,\n DOMEvents = false,\n DOMEventsSelector = false,\n DOMEventsPreventDefault = false,\n onLoadFiles = () => {},\n } = {}) {\n this.files = files;\n this.jqueryPluginCover = jqueryPluginCover;\n this.enableObserve = enableObserve;\n this.observeOptions = observeOptions;\n this.onLoadFiles = onLoadFiles;\n\n this.jqueryDynamicImport = false;\n this.dynamicDOMEvents = false;\n this.filesLoaded = false;\n\n if (jqueryPluginCover) {\n this.jqueryDynamicImport = new DynamicImportJqueryPlugin({\n jqueryPluginCover,\n importer: this,\n });\n }\n if (DOMEvents && DOMEventsSelector) {\n this.dynamicDOMEvents = new DynamicImportDOMEvents({\n events: DOMEvents,\n eventSelector: DOMEventsSelector,\n preventDefault: DOMEventsPreventDefault,\n importer: this,\n });\n }\n }\n\n loadFiles(callback = () => {}) {\n if (!this.filesLoaded) {\n Promise.all(this.files()).then((res) => {\n callback();\n this.onLoadFiles(res);\n });\n\n this.filesLoaded = true;\n }\n }\n}\n","import $ from 'jquery';\nimport DynamicImportHandler from '@js/theme/utils/DynamicImportHandler';\n\n$(() => {\n /* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"import\" }] */\n\n const importModal = new DynamicImportHandler({\n jqueryPluginCover: 'modal',\n DOMEvents: 'click',\n DOMEventsSelector: '[data-toggle=\"modal\"]',\n DOMEventsPreventDefault: true,\n files: () => [\n import('bootstrap/js/src/modal'),\n import('@css/dynamic/modal/_index.scss'),\n ],\n });\n\n const importDropdown = new DynamicImportHandler({\n jqueryPluginCover: 'dropdown',\n DOMEvents: 'click',\n DOMEventsSelector: '[data-toggle=\"dropdown\"]',\n DOMEventsPreventDefault: true,\n files: () => [\n import('bootstrap/js/src/dropdown'),\n import('@css/dynamic/dropdown/_index.scss'),\n ],\n });\n\n const importCollapse = new DynamicImportHandler({\n jqueryPluginCover: 'collapse',\n DOMEvents: 'click',\n DOMEventsSelector: '[data-toggle=\"collapse\"]',\n DOMEventsPreventDefault: true,\n files: () => [\n import('bootstrap/js/src/collapse'),\n ],\n });\n\n const importPopover = new DynamicImportHandler({\n jqueryPluginCover: 'popover',\n files: () => [\n import('bootstrap/js/src/popover'),\n import('@css/dynamic/popover/_index.scss'),\n ],\n });\n\n const importScrollspy = new DynamicImportHandler({\n jqueryPluginCover: 'scrollspy',\n files: () => [\n import('bootstrap/js/src/scrollspy'),\n ],\n });\n\n const importToast = new DynamicImportHandler({\n jqueryPluginCover: 'toast',\n files: () => [\n import('bootstrap/js/src/toast'),\n import('@css/dynamic/toast/_index.scss'),\n ],\n });\n\n const importTooltip = new DynamicImportHandler({\n jqueryPluginCover: 'tooltip',\n files: () => [\n import('bootstrap/js/src/tooltip'),\n import('@css/dynamic/tooltip/_index.scss'),\n ],\n });\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = prestashop;","import prestashop from 'prestashop';\nimport $ from 'jquery';\n\nprestashop.themeSelectors = {\n product: {\n tabs: '.tabs .nav-link',\n activeNavClass: 'js-product-nav-active',\n activeTabClass: 'js-product-tab-active',\n activeTabs: '.tabs .nav-link.active, .js-product-nav-active',\n imagesModal: '.js-product-images-modal',\n thumb: '.js-thumb',\n thumbContainer: '.thumb-container, .js-thumb-container',\n arrows: '.js-arrows',\n selected: '.selected, .js-thumb-selected',\n modalProductCover: '.js-modal-product-cover',\n cover: '.js-qv-product-cover',\n customizationModal: '.js-customization-modal',\n },\n listing: {\n searchFilterToggler: '#search_filter_toggler, .js-search-toggler',\n searchFiltersWrapper: '#search_filters_wrapper',\n searchFilterControls: '#search_filter_controls',\n searchFilters: '#search_filters',\n activeSearchFilters: '#js-active-search-filters',\n listTop: '#js-product-list-top',\n list: '#js-product-list',\n listBottom: '#js-product-list-bottom',\n listHeader: '#js-product-list-header',\n searchFiltersClearAll: '.js-search-filters-clear-all',\n searchLink: '.js-search-link',\n },\n order: {\n returnForm: '#order-return-form, .js-order-return-form',\n },\n arrowDown: '.arrow-down, .js-arrow-down',\n arrowUp: '.arrow-up, .js-arrow-up',\n clear: '.clear',\n fileInput: '.js-file-input',\n contentWrapper: '#content-wrapper, .js-content-wrapper',\n footer: '#footer, .js-footer',\n modalContent: '.js-modal-content',\n modal: '.js-checkout-modal',\n touchspin: '.js-touchspin',\n checkout: {\n termsLink: '.js-terms a',\n giftCheckbox: '.js-gift-checkbox',\n imagesLink: '.card-block .cart-summary-products p a, .js-show-details',\n carrierExtraContent: '.carrier-extra-content, .js-carrier-extra-content',\n btn: '.checkout a',\n },\n cart: {\n productLineQty: '.js-cart-line-product-quantity',\n quickview: '.quickview',\n touchspin: '.bootstrap-touchspin',\n promoCode: '#promo-code',\n displayPromo: '.display-promo',\n promoCodeButton: '.promo-code-button',\n discountCode: '.js-discount .code',\n discountName: '[name=discount_name]',\n actions: '[data-link-action=\"delete-from-cart\"], [data-link-action=\"remove-voucher\"]',\n },\n notifications: {\n dangerAlert: '#notifications article.alert-danger',\n container: '#notifications .container',\n },\n passwordPolicy: {\n template: '#password-feedback',\n hint: '.js-hint-password',\n container: '.js-password-strength-feedback',\n strengthText: '.js-password-strength-text',\n requirementScore: '.js-password-requirements-score',\n requirementLength: '.js-password-requirements-length',\n requirementScoreIcon: '.js-password-requirements-score i',\n requirementLengthIcon: '.js-password-requirements-length i',\n progressBar: '.js-password-policy-progress-bar',\n inputColumn: '.js-input-column',\n },\n};\n\n$(() => {\n prestashop.emit('themeSelectorsInit');\n});\n","class DynamicImportSwiperModule {\n constructor(getFiles) {\n this.getFiles = getFiles;\n }\n\n getModule() {\n return Promise.all(this.getFiles());\n }\n}\n\nexport default DynamicImportSwiperModule;\n","import Swiper, {\n Navigation, Pagination, Autoplay,\n} from 'swiper';\n\nimport DynamicImportSwiperModule from '@js/theme/components/sliders/DynamicImportSwiperModule';\n\n/* eslint-disable */\nconst dynamicModulesMap = {\n thumbs: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/thumbs/thumbs.js'),\n ],\n ),\n virtual: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/virtual/virtual.js'),\n import('@node_modules/swiper/modules/virtual/virtual.scss'),\n ],\n ),\n keyboard: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/keyboard/keyboard.js'),\n ],\n ),\n mousewheel: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/mousewheel/mousewheel.js'),\n ],\n ),\n scrollbar: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/scrollbar/scrollbar.js'),\n import('@node_modules/swiper/modules/scrollbar/scrollbar.scss'),\n ],\n ),\n parallax: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/parallax/parallax.js'),\n ],\n ),\n zoom: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/zoom/zoom.js'),\n import('@node_modules/swiper/modules/zoom/zoom.scss'),\n ],\n ),\n freeMode: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/free-mode/free-mode.js'),\n import('@node_modules/swiper/modules/free-mode/free-mode.scss'),\n ],\n ),\n controller: new DynamicImportSwiperModule(\n () => [\n import('@node_modules/swiper/modules/controller/controller.js'),\n import('@node_modules/swiper/modules/controller/controller.scss'),\n ],\n ),\n};\n/* eslint-enable */\n\nconst defaultModules = [Navigation, Pagination, Autoplay];\n\nclass SwiperSlider {\n constructor(target, options) {\n this.target = target;\n this.options = options;\n this.modules = defaultModules;\n this._modulesToFetch = [];\n this.SwiperInstance = null;\n }\n\n async initSlider() {\n this.findNeededModulesToFetch();\n await this.fetchNeededModules();\n await this.initSwiper();\n\n return this.SwiperInstance;\n }\n\n initSwiper() {\n this.SwiperInstance = new Swiper(this.target, {\n ...this.options,\n modules: this.modules,\n });\n }\n\n async fetchNeededModules() {\n if (this._modulesToFetch.length > 0) {\n const modulesPromisesArray = [];\n\n for (const module of this._modulesToFetch) {\n modulesPromisesArray.push(module.getFiles());\n }\n\n const allPromises = Promise.all(\n modulesPromisesArray.map((innerModulesPromisesArray) => Promise.all(innerModulesPromisesArray)),\n );\n\n return allPromises.then((arrayOfModules) => {\n for (const moduleImported of arrayOfModules) {\n for (const module of moduleImported) {\n if (typeof module.default !== 'undefined') {\n this.modules = [...this.modules, module.default];\n }\n }\n }\n });\n }\n\n return Promise.resolve();\n }\n\n findNeededModulesToFetch() {\n for (const dynamicModuleProp in dynamicModulesMap) {\n if (Object.prototype.hasOwnProperty.call(dynamicModulesMap, dynamicModuleProp)\n && typeof this.options[dynamicModuleProp] !== 'undefined') {\n this._modulesToFetch.push(dynamicModulesMap[dynamicModuleProp]);\n }\n }\n }\n}\n\nexport default SwiperSlider;\n","import SwiperSlider from '@js/theme/components/sliders/SwiperSlider';\n\nclass PageSlider {\n constructor() {\n this.observeElementClass = 'js-slider-observed';\n this.selfInitializedSlidersSelector = '.swiper:not(.swiper-custom)';\n }\n\n init() {\n const self = this;\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(({ intersectionRatio, target }) => {\n if (intersectionRatio > 0) {\n self.observer.unobserve(target);\n PageSlider.initSlider(target);\n }\n });\n });\n\n this.observerElements();\n }\n\n static initSlider(target) {\n const swiper = new SwiperSlider(target, PageSlider.getConfigForSliderElement(target));\n swiper.initSlider();\n }\n\n static getConfigForSliderElement(target) {\n let elConfig = target.dataset.swiper || {};\n\n if (typeof elConfig === 'string') {\n elConfig = JSON.parse(elConfig);\n }\n\n const parent = target.parentElement;\n const nextEl = parent.querySelector('.swiper-button-next');\n const prevEl = parent.querySelector('.swiper-button-prev');\n const pagination = parent.querySelector('.swiper-pagination');\n\n if (nextEl && prevEl && typeof elConfig.navigation === 'undefined') {\n elConfig = {\n ...elConfig,\n navigation: {\n nextEl,\n prevEl,\n },\n };\n }\n\n if (pagination && typeof elConfig.pagination === 'undefined') {\n elConfig = {\n ...elConfig,\n pagination: {\n el: pagination,\n type: 'bullets',\n clickable: true,\n },\n };\n }\n\n return elConfig;\n }\n\n observerElements() {\n const elms = document.querySelectorAll(this.selfInitializedSlidersSelector);\n\n for (let i = 0; i < elms.length; i += 1) {\n const elem = elms[i];\n\n if (!elem.classList.contains(this.observeElementClass)) {\n this.observer.observe(elem);\n elem.classList.add(this.observeElementClass);\n }\n }\n }\n\n refresh() {\n this.observerElements();\n }\n}\n\nexport default PageSlider;\n","import prestashop from 'prestashop';\nimport $ from 'jquery';\nimport PageSlider from '@js/theme/components/sliders/PageSlider';\nimport SwiperSlider from '@js/theme/components/sliders/SwiperSlider';\n\nprestashop.pageSlider = new PageSlider();\nprestashop.SwiperSlider = SwiperSlider;\n\n$(() => {\n prestashop.pageSlider.init();\n});\n","import $ from 'jquery';\nimport prestashop from 'prestashop';\n\nconst isMobile = () => prestashop.responsive.current_width < prestashop.responsive.min_width;\n\nprestashop.responsive = prestashop.responsive || {};\n\nprestashop.responsive.current_width = window.innerWidth;\nprestashop.responsive.min_width = 768;\nprestashop.responsive.mobile = isMobile();\n\nfunction swapChildren(obj1, obj2) {\n const temp = obj2.children().detach();\n obj2.empty().append(obj1.children().detach());\n obj1.append(temp);\n}\n\nfunction toggleMobileStyles() {\n if (prestashop.responsive.mobile) {\n $(\"*[id^='_desktop_']\").each((idx, el) => {\n const target = $(`#${el.id.replace('_desktop_', '_mobile_')}`);\n\n if (target.length) {\n swapChildren($(el), target);\n }\n });\n\n $('[data-collapse-hide-mobile]').collapse('hide');\n } else {\n $(\"*[id^='_mobile_']\").each((idx, el) => {\n const target = $(`#${el.id.replace('_mobile_', '_desktop_')}`);\n\n if (target.length) {\n swapChildren($(el), target);\n }\n });\n\n $('[data-collapse-hide-mobile]').not('.show').collapse('show');\n $('[data-modal-hide-mobile].show').modal('hide');\n }\n prestashop.emit('responsive update', {\n mobile: prestashop.responsive.mobile,\n });\n}\n\n$(window).on('resize', () => {\n const { responsive } = prestashop;\n const cw = responsive.current_width;\n const mw = responsive.min_width;\n const w = window.innerWidth;\n const toggle = (cw >= mw && w < mw) || (cw < mw && w >= mw);\n responsive.current_width = w;\n responsive.mobile = responsive.current_width < responsive.min_width;\n if (toggle) {\n toggleMobileStyles();\n }\n});\n\n$(() => {\n if (prestashop.responsive.mobile) {\n toggleMobileStyles();\n }\n});\n","import $ from 'jquery';\n\nfunction initRmaItemSelector() {\n $(`${prestashop.themeSelectors.order.returnForm} table thead input[type=checkbox]`).on('click', ({ currentTarget }) => {\n const checked = $(currentTarget).prop('checked');\n $(`${prestashop.themeSelectors.order.returnForm} table tbody input[type=checkbox]`).each((_, checkbox) => {\n $(checkbox).prop('checked', checked);\n });\n });\n}\n\nfunction setupCustomerScripts() {\n if ($('body#order-detail')) {\n initRmaItemSelector();\n }\n}\n\n$(document).ready(setupCustomerScripts);\n","import $ from 'jquery';\nimport prestashop from 'prestashop';\n\n$(() => {\n const productConfig = (qv) => {\n $('.js-thumb').on('click', (event) => {\n if ($('.js-thumb').hasClass('selected')) {\n $('.js-thumb').removeClass('selected');\n }\n $(event.currentTarget).addClass('selected');\n $('.js-qv-product-cover').attr('src', $(event.target).data('image-large-src'));\n });\n\n qv.find('#quantity_wanted').TouchSpin({\n verticalupclass: 'material-icons touchspin-up',\n verticaldownclass: 'material-icons touchspin-down',\n buttondown_class: 'btn btn-touchspin js-touchspin',\n buttonup_class: 'btn btn-touchspin js-touchspin',\n min: 1,\n max: 1000000,\n });\n };\n\n prestashop.on('clickQuickView', (elm) => {\n const data = {\n action: 'quickview',\n id_product: elm.dataset.idProduct,\n id_product_attribute: elm.dataset.idProductAttribute,\n };\n $.post(prestashop.urls.pages.product, data, null, 'json')\n .then((resp) => {\n $('body').append(resp.quickview_html);\n const productModal = $(\n `#quickview-modal-${resp.product.id}-${resp.product.id_product_attribute}`,\n );\n productModal.modal('show');\n productConfig(productModal);\n productModal.on('hidden.bs.modal', () => {\n productModal.remove();\n });\n })\n .fail((resp) => {\n prestashop.emit('handleError', {\n eventType: 'clickQuickView',\n resp,\n });\n });\n });\n});\n","import $ from 'jquery';\nimport prestashop from 'prestashop';\n\n$(() => {\n const createInputFile = () => {\n $('.js-file-input').on('change', (event) => {\n const target = $(event.currentTarget)[0];\n const file = (target) ? target.files[0] : null;\n\n if (target && file) {\n $(target).prev().text(file.name);\n }\n });\n };\n\n const createProductSpin = () => {\n const $quantityInput = $('#quantity_wanted');\n\n $quantityInput.TouchSpin({\n verticalupclass: 'material-icons touchspin-up',\n verticaldownclass: 'material-icons touchspin-down',\n buttondown_class: 'btn btn-touchspin js-touchspin',\n buttonup_class: 'btn btn-touchspin js-touchspin',\n min: parseInt($quantityInput.attr('min'), 10),\n max: 1000000,\n });\n\n $quantityInput.on('focusout', () => {\n if ($quantityInput.val() === '' || $quantityInput.val() < $quantityInput.attr('min')) {\n $quantityInput.val($quantityInput.attr('min'));\n $quantityInput.trigger('change');\n }\n });\n\n $('body').on('change keyup', '#quantity_wanted', (event) => {\n $(event.currentTarget).trigger('touchspin.stopspin');\n prestashop.emit('updateProduct', {\n eventType: 'updatedProductQuantity',\n event,\n });\n });\n };\n\n createProductSpin();\n createInputFile();\n let updateEvenType = false;\n\n prestashop.on('updateProduct', ({ eventType }) => {\n updateEvenType = eventType;\n });\n\n prestashop.on('updateCart', (event) => {\n if (\n prestashop.page.page_name === 'product'\n && parseInt(event.reason.idProduct, 10) === parseInt($('#add-to-cart-or-refresh').find('[name=\"id_product\"]').val(), 10)) {\n prestashop.emit('updateProduct', {\n event,\n resp: {},\n reason: {\n productUrl: prestashop.urls.pages.product || '',\n },\n });\n }\n });\n\n prestashop.on('updatedProduct', (event) => {\n createInputFile();\n\n if (event && event.product_minimal_quantity) {\n const minimalProductQuantity = parseInt(event.product_minimal_quantity, 10);\n const quantityInputSelector = '#quantity_wanted';\n const quantityInput = $(quantityInputSelector);\n\n // @see http://www.virtuosoft.eu/code/bootstrap-touchspin/ about Bootstrap TouchSpin\n quantityInput.trigger('touchspin.updatesettings', {\n min: minimalProductQuantity,\n });\n }\n\n if (updateEvenType === 'updatedProductCombination') {\n $('.js-product-images').replaceWith(event.product_cover_thumbnails);\n $('.js-product-images-modal').replaceWith(event.product_images_modal);\n prestashop.emit('updatedProductCombination', event);\n }\n\n updateEvenType = false;\n\n prestashop.pageLazyLoad.update();\n });\n});\n","export default function debounce(func, timeout = 300) {\n let timer;\n\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => { func.apply(this, args); }, timeout);\n };\n}\n","import $ from 'jquery';\nimport prestashop from 'prestashop';\nimport debounce from '@js/theme/utils/debounce';\n\nprestashop.cart = prestashop.cart || {};\n\nprestashop.cart.active_inputs = null;\n\nconst spinnerSelector = 'input[name=\"product-quantity-spin\"]';\nlet hasError = false;\nlet isUpdateOperation = false;\nlet errorMsg = '';\n\nconst CheckUpdateQuantityOperations = {\n switchErrorStat: () => {\n /**\n * if errorMsg is not empty or if notifications are shown, we have error to display\n * if hasError is true, quantity was not updated : we don't disable checkout button\n */\n const $checkoutBtn = $(prestashop.themeSelectors.checkout.btn);\n\n if ($(prestashop.themeSelectors.notifications.dangerAlert).length || (errorMsg !== '' && !hasError)) {\n $checkoutBtn.addClass('disabled');\n }\n\n if (errorMsg !== '') {\n const strError = `\n \n \n \n `;\n $(prestashop.themeSelectors.notifications.container).html(strError);\n errorMsg = '';\n isUpdateOperation = false;\n if (hasError) {\n // if hasError is true, quantity was not updated : allow checkout\n $checkoutBtn.removeClass('disabled');\n }\n } else if (!hasError && isUpdateOperation) {\n hasError = false;\n isUpdateOperation = false;\n $(prestashop.themeSelectors.notifications.container).html('');\n $checkoutBtn.removeClass('disabled');\n }\n },\n checkUpdateOperation: (resp) => {\n /**\n * resp.hasError can be not defined but resp.errors not empty: quantity is updated but order cannot be placed\n * when resp.hasError=true, quantity is not updated\n */\n const { hasError: hasErrorOccurred, errors: errorData } = resp;\n hasError = hasErrorOccurred ?? false;\n const errors = errorData ?? '';\n\n // 1.7.2.x returns errors as string, 1.7.3.x returns array\n if (errors instanceof Array) {\n errorMsg = errors.join(' ');\n } else {\n errorMsg = errors;\n }\n\n isUpdateOperation = true;\n },\n};\n\n/**\n * Attach Bootstrap TouchSpin event handlers\n */\nfunction createSpin() {\n $.each($(spinnerSelector), (index, spinner) => {\n $(spinner).TouchSpin({\n verticalupclass: 'material-icons touchspin-up',\n verticaldownclass: 'material-icons touchspin-down',\n buttondown_class: 'btn btn-touchspin js-touchspin js-increase-product-quantity',\n buttonup_class: 'btn btn-touchspin js-touchspin js-decrease-product-quantity',\n min: parseInt($(spinner).attr('min'), 10),\n max: 1000000,\n });\n });\n\n CheckUpdateQuantityOperations.switchErrorStat();\n}\n\nconst preventCustomModalOpen = (event) => {\n if (window.shouldPreventModal) {\n event.preventDefault();\n\n return false;\n }\n\n return true;\n};\n\n$(() => {\n const productLineInCartSelector = prestashop.themeSelectors.cart.productLineQty;\n const promises = [];\n\n prestashop.on('updateCart', () => {\n $(prestashop.themeSelectors.cart.quickview).modal('hide');\n $('body').addClass('cart-loading');\n });\n\n prestashop.on('updatedCart', () => {\n window.shouldPreventModal = false;\n\n $(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => {\n preventCustomModalOpen(modalEvent);\n });\n\n createSpin();\n $('body').removeClass('cart-loading');\n });\n\n createSpin();\n\n const $body = $('body');\n\n function isTouchSpin(namespace) {\n return namespace === 'on.startupspin' || namespace === 'on.startdownspin';\n }\n\n function shouldIncreaseProductQuantity(namespace) {\n return namespace === 'on.startupspin';\n }\n\n function findCartLineProductQuantityInput($target) {\n const $input = $target.parents(prestashop.themeSelectors.cart.touchspin).find(productLineInCartSelector);\n\n if ($input.is(':focus')) {\n return null;\n }\n\n return $input;\n }\n\n function camelize(subject) {\n const actionTypeParts = subject.split('-');\n let i;\n let part;\n let camelizedSubject = '';\n\n for (i = 0; i < actionTypeParts.length; i += 1) {\n part = actionTypeParts[i];\n\n if (i !== 0) {\n part = part.substring(0, 1).toUpperCase() + part.substring(1);\n }\n\n camelizedSubject += part;\n }\n\n return camelizedSubject;\n }\n\n function parseCartAction($target, namespace) {\n if (!isTouchSpin(namespace)) {\n return {\n url: $target.attr('href'),\n type: camelize($target.data('link-action')),\n };\n }\n\n const $input = findCartLineProductQuantityInput($target);\n\n let cartAction = {};\n\n if ($input) {\n if (shouldIncreaseProductQuantity(namespace)) {\n cartAction = {\n url: $input.data('up-url'),\n type: 'increaseProductQuantity',\n };\n } else {\n cartAction = {\n url: $input.data('down-url'),\n type: 'decreaseProductQuantity',\n };\n }\n }\n\n return cartAction;\n }\n\n const abortPreviousRequests = () => {\n let promise;\n while (promises.length > 0) {\n promise = promises.pop();\n promise.abort();\n }\n };\n\n const getTouchSpinInput = ($button) => $($button.parents(prestashop.themeSelectors.cart.touchspin).find('input'));\n\n $(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => {\n preventCustomModalOpen(modalEvent);\n });\n\n const handleCartAction = (event) => {\n event.preventDefault();\n window.shouldPreventModal = true;\n\n const $target = $(event.currentTarget);\n const { dataset } = event.currentTarget;\n\n const cartAction = parseCartAction($target, event.namespace);\n const requestData = {\n ajax: '1',\n action: 'update',\n };\n\n if (typeof cartAction === 'undefined') {\n return;\n }\n\n $.ajax({\n url: cartAction.url,\n method: 'POST',\n data: requestData,\n dataType: 'json',\n beforeSend: (jqXHR) => {\n promises.push(jqXHR);\n },\n })\n .then((resp) => {\n const $quantityInput = getTouchSpinInput($target);\n CheckUpdateQuantityOperations.checkUpdateOperation(resp);\n $quantityInput.val(resp.quantity);\n\n // Refresh cart preview\n prestashop.emit('updateCart', {\n reason: dataset,\n resp,\n });\n })\n .fail((resp) => {\n prestashop.emit('handleError', {\n eventType: 'updateProductInCart',\n resp,\n cartAction: cartAction.type,\n });\n });\n };\n\n $body.on('click', prestashop.themeSelectors.cart.actions, handleCartAction);\n\n function sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, requestData, $target) {\n abortPreviousRequests();\n window.shouldPreventModal = true;\n\n return $.ajax({\n url: updateQuantityInCartUrl,\n method: 'POST',\n data: requestData,\n dataType: 'json',\n beforeSend: (jqXHR) => {\n promises.push(jqXHR);\n },\n })\n .then((resp) => {\n CheckUpdateQuantityOperations.checkUpdateOperation(resp);\n\n $target.val(resp.quantity);\n const dataset = ($target && $target.dataset) ? $target.dataset : resp;\n\n // Refresh cart preview\n prestashop.emit('updateCart', {\n reason: dataset,\n resp,\n });\n })\n .fail((resp) => {\n prestashop.emit('handleError', {\n eventType: 'updateProductQuantityInCart',\n resp,\n });\n });\n }\n\n function getQuantityChangeType($quantity) {\n return $quantity > 0 ? 'up' : 'down';\n }\n\n function getRequestData(quantity) {\n return {\n ajax: '1',\n qty: Math.abs(quantity),\n action: 'update',\n op: getQuantityChangeType(quantity),\n };\n }\n\n function updateProductQuantityInCart(event) {\n const $target = $(event.currentTarget);\n const updateQuantityInCartUrl = $target.data('update-url');\n const baseValue = $target.attr('value');\n\n // There should be a valid product quantity in cart\n const targetValue = $target.val();\n\n /* eslint-disable */\n if (targetValue != parseInt(targetValue, 10) || targetValue < 0 || Number.isNaN(targetValue)) {\n window.shouldPreventModal = false;\n $target.val(baseValue);\n return;\n }\n /* eslint-enable */\n\n // There should be a new product quantity in cart\n const qty = targetValue - baseValue;\n\n if (qty === 0) {\n return;\n }\n\n if (targetValue === '0') {\n $target.closest('.product-line-actions').find('[data-link-action=\"delete-from-cart\"]').click();\n } else {\n $target.attr('value', targetValue);\n sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, getRequestData(qty), $target);\n }\n }\n\n $body.on('touchspin.on.stopspin', spinnerSelector, debounce(updateProductQuantityInCart));\n\n $body.on(\n 'focusout keyup',\n productLineInCartSelector,\n (event) => {\n if (event.type === 'keyup') {\n if (event.keyCode === 13) {\n isUpdateOperation = true;\n updateProductQuantityInCart(event);\n }\n\n return false;\n }\n\n if (!isUpdateOperation) {\n updateProductQuantityInCart(event);\n }\n\n return false;\n },\n );\n\n $body.on(\n 'click',\n prestashop.themeSelectors.cart.discountCode,\n (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n const $code = $(event.currentTarget);\n const $discountInput = $('[name=discount_name]');\n const $discountForm = $discountInput.closest('form');\n\n $discountInput.val($code.text());\n // Show promo code field\n $discountForm.trigger('submit');\n\n return false;\n },\n );\n});\n","/**\n * Copyright since 2007 PrestaShop SA and Contributors\n * PrestaShop is an International Registered Trademark & Property of PrestaShop SA\n *\n * NOTICE OF LICENSE\n *\n * This source file is subject to the Academic Free License 3.0 (AFL-3.0)\n * that is bundled with this package in the file LICENSE.md.\n * It is also available through the world-wide-web at this URL:\n * https://opensource.org/licenses/AFL-3.0\n * If you did not receive a copy of the license and are unable to\n * obtain it through the world-wide-web, please send an email\n * to license@prestashop.com so we can send you a copy immediately.\n *\n * DISCLAIMER\n *\n * Do not edit or add to this file if you wish to upgrade PrestaShop to newer\n * versions in the future. If you wish to customize PrestaShop for your\n * needs please refer to https://devdocs.prestashop.com/ for more information.\n *\n * @author PrestaShop SA and Contributors \n * @copyright Since 2007 PrestaShop SA and Contributors\n * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)\n */\nimport prestashop from 'prestashop';\nimport $ from 'jquery';\n\nprestashop.blockcart = prestashop.blockcart || {};\n\nprestashop.blockcart.showModal = (html) => {\n function getBlockCartModal() {\n return $('#blockcart-modal');\n }\n\n const $blockCartModal = getBlockCartModal();\n\n if ($blockCartModal.length) {\n $blockCartModal.hide();\n }\n\n $('body').append(html);\n\n getBlockCartModal()\n .modal('show')\n .on('hidden.bs.modal', (e) => {\n $(e.currentTarget).remove();\n });\n};\n","import { sprintf } from 'sprintf-js';\n\nconst { passwordPolicy: PasswordPolicyMap } = prestashop.themeSelectors;\n\nconst PASSWORD_POLICY_ERROR = 'The password policy elements are undefined.';\n\nconst getPasswordStrengthFeedback = (\n strength,\n) => {\n switch (strength) {\n case 0:\n return {\n color: 'bg-danger',\n };\n\n case 1:\n return {\n color: 'bg-danger',\n };\n\n case 2:\n return {\n color: 'bg-warning',\n };\n\n case 3:\n return {\n color: 'bg-success',\n };\n\n case 4:\n return {\n color: 'bg-success',\n };\n\n default:\n throw new Error('Invalid password strength indicator.');\n }\n};\n\nconst watchPassword = async (\n elementInput,\n feedbackContainer,\n hints,\n) => {\n const { prestashop } = window;\n const passwordValue = elementInput.value;\n const elementIcon = feedbackContainer.querySelector(PasswordPolicyMap.requirementScoreIcon);\n const result = await prestashop.checkPasswordScore(passwordValue);\n const feedback = getPasswordStrengthFeedback(result.score);\n const passwordLength = passwordValue.length;\n const popoverContent = [];\n\n $(elementInput).popover('dispose');\n\n feedbackContainer.style.display = passwordValue === '' ? 'none' : 'block';\n\n if (result.feedback.warning !== '') {\n if (result.feedback.warning in hints) {\n popoverContent.push(hints[result.feedback.warning]);\n }\n }\n\n result.feedback.suggestions.forEach((suggestion) => {\n if (suggestion in hints) {\n popoverContent.push(hints[suggestion]);\n }\n });\n\n $(elementInput).popover({\n html: true,\n placement: 'top',\n content: popoverContent.join(' '),\n }).popover('show');\n\n const passwordLengthValid = passwordLength >= parseInt(elementInput.dataset.minlength, 10)\n && passwordLength <= parseInt(elementInput.dataset.maxlength, 10);\n const passwordScoreValid = parseInt(elementInput.dataset.minscore, 10) <= result.score;\n\n feedbackContainer.querySelector(PasswordPolicyMap.requirementLengthIcon).classList.toggle(\n 'text-success',\n passwordLengthValid,\n );\n\n elementIcon.classList.toggle(\n 'text-success',\n passwordScoreValid,\n );\n\n // Change input border color depending on the validity\n elementInput\n .classList.remove('border-success', 'border-danger');\n elementInput\n .classList.add(passwordScoreValid && passwordLengthValid ? 'border-success' : 'border-danger');\n elementInput\n .classList.add('form-control', 'border');\n\n const percentage = (result.score * 20) + 20;\n const progressBar = feedbackContainer.querySelector(PasswordPolicyMap.progressBar);\n\n // increase and decrease progress bar\n if (progressBar) {\n progressBar.style.width = `${percentage}%`;\n progressBar.classList.remove('bg-success', 'bg-danger', 'bg-warning');\n progressBar.classList.add(feedback.color);\n }\n};\n\n// Not testable because it manipulates SVG elements, unsupported by JSDom\nconst usePasswordPolicy = (selector) => {\n const elements = document.querySelectorAll(selector);\n elements.forEach((element) => {\n const inputColumn = element?.querySelector(PasswordPolicyMap.inputColumn);\n const elementInput = element?.querySelector('input');\n const templateElement = document.createElement('div');\n const feedbackTemplate = document.querySelector(PasswordPolicyMap.template);\n let feedbackContainer;\n\n if (feedbackTemplate && element && inputColumn && elementInput) {\n templateElement.innerHTML = feedbackTemplate.innerHTML;\n inputColumn.append(templateElement);\n feedbackContainer = element.querySelector(PasswordPolicyMap.container);\n\n if (feedbackContainer) {\n const hintElement = document.querySelector(PasswordPolicyMap.hint);\n\n if (hintElement) {\n const hints = JSON.parse(hintElement.innerHTML);\n\n // eslint-disable-next-line max-len\n const passwordRequirementsLength = feedbackContainer.querySelector(PasswordPolicyMap.requirementLength);\n // eslint-disable-next-line max-len\n const passwordRequirementsScore = feedbackContainer.querySelector(PasswordPolicyMap.requirementScore);\n const passwordLengthText = passwordRequirementsLength?.querySelector('span');\n const passwordRequirementsText = passwordRequirementsScore?.querySelector('span');\n\n if (passwordLengthText && passwordRequirementsLength && passwordRequirementsLength.dataset.translation) {\n passwordLengthText.innerText = sprintf(\n passwordRequirementsLength.dataset.translation,\n elementInput.dataset.minlength,\n elementInput.dataset.maxlength,\n );\n }\n\n if (passwordRequirementsText && passwordRequirementsScore && passwordRequirementsScore.dataset.translation) {\n passwordRequirementsText.innerText = sprintf(\n passwordRequirementsScore.dataset.translation,\n hints[elementInput.dataset.minscore],\n );\n }\n\n // eslint-disable-next-line max-len\n elementInput.addEventListener('keyup', () => watchPassword(elementInput, feedbackContainer, hints));\n elementInput.addEventListener('blur', () => {\n $(elementInput).popover('dispose');\n });\n }\n }\n }\n\n if (element) {\n return {\n element,\n };\n }\n\n return {\n error: new Error(PASSWORD_POLICY_ERROR),\n };\n });\n};\n\nexport default usePasswordPolicy;\n","import $ from 'jquery';\n\nconst supportedValidity = () => {\n const input = document.createElement('input');\n\n return (\n 'validity' in input\n && 'badInput' in input.validity\n && 'patternMismatch' in input.validity\n && 'rangeOverflow' in input.validity\n && 'rangeUnderflow' in input.validity\n && 'tooLong' in input.validity\n && 'tooShort' in input.validity\n && 'typeMismatch' in input.validity\n && 'valid' in input.validity\n && 'valueMissing' in input.validity\n );\n};\n\nexport default class Form {\n static init() {\n Form.parentFocus();\n Form.togglePasswordVisibility();\n Form.formValidation();\n }\n\n static parentFocus() {\n $('.js-child-focus').on('focus', ({ target }) => {\n $(target).closest('.js-parent-focus').addClass('focus');\n });\n $('.js-child-focus').on('focusout', ({ target }) => {\n $(target).closest('.js-parent-focus').removeClass('focus');\n });\n }\n\n static togglePasswordVisibility() {\n $('[data-action=\"show-password\"]').on('click', (e) => {\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const $btn = $(e.currentTarget);\n const $input = $btn\n .closest('.input-group')\n .children('input.js-visible-password');\n\n if ($input.attr('type') === 'password') {\n $input.attr('type', 'text');\n $btn.html($btn.data('text-hide'));\n } else {\n $input.attr('type', 'password');\n $btn.html($btn.data('textShow'));\n }\n });\n }\n\n static formValidation() {\n // Fetch all the forms we want to apply custom Bootstrap validation styles to\n const forms = document.getElementsByClassName('needs-validation');\n\n if (forms.length > 0) {\n if (!supportedValidity()) {\n return;\n }\n // Loop over them and prevent submission\n let divToScroll = false;\n\n $('input, textarea', forms).on('blur', (e) => {\n const $field = $(e.currentTarget);\n $field.val($field.val().trim());\n });\n\n Array.prototype.filter.call(forms, (form) => {\n form.addEventListener(\n 'submit',\n (event) => {\n if (form.checkValidity() === false) {\n event.preventDefault();\n event.stopPropagation();\n $('input:invalid,select:invalid,textarea:invalid', form).each((index, field) => {\n const $field = $(field);\n const $parent = $field.closest('.form-group');\n\n $('.js-invalid-feedback-browser', $parent).text(\n $field[0].validationMessage,\n );\n if (!divToScroll) {\n divToScroll = $parent;\n }\n });\n\n const $form = $(form);\n $form.data('disabled', false);\n $form.find('[type=\"submit\"]').removeClass('disabled');\n }\n form.classList.add('was-validated');\n if (divToScroll) {\n $('html, body').animate(\n { scrollTop: divToScroll.offset().top },\n 300,\n );\n divToScroll = false;\n }\n },\n false,\n );\n });\n }\n }\n}\n","import $ from 'jquery';\n\nexport default class TopMenu {\n constructor(el) {\n this.$el = $(el);\n }\n\n init() {\n const self = this;\n self.$el.hoverIntent({\n over: self.toggleClassSubMenu,\n out: self.toggleClassSubMenu,\n selector: ' > li',\n timeout: 300,\n });\n }\n\n toggleClassSubMenu() {\n const $item = $(this);\n let expanded = $item.attr('aria-expanded');\n\n if (typeof expanded !== 'undefined') {\n expanded = expanded.toLowerCase() === 'true';\n $item.toggleClass('main-menu__item--active').attr('aria-expanded', !expanded);\n $('.main-menu__sub', $item)\n .attr('aria-expanded', !expanded)\n .attr('aria-hidden', expanded);\n }\n }\n}\n","import LazyLoad from 'vanilla-lazyload';\n\nclass PageLazyLoad {\n constructor({ selector = '.lazyload' } = {}) {\n this.selector = selector;\n this.lazyLoadInstance = null;\n this.init();\n }\n\n init() {\n this.lazyLoadInstance = new LazyLoad({\n elements_selector: this.selector,\n });\n }\n\n update() {\n this.lazyLoadInstance.update();\n }\n}\n\nexport default PageLazyLoad;\n","import $ from 'jquery';\n\nclass PageLoader {\n constructor() {\n this.$body = $('body');\n }\n\n showLoader() {\n this.$body.addClass('page-loader-active');\n }\n\n hideLoader() {\n this.$body.removeClass('page-loader-active');\n }\n}\n\nexport default PageLoader;\n","import debounce from '@js/theme/utils/debounce';\n\n/**\n * Returns sticky element data\n * @param element\n * @returns {{getTop: ((function(): number)), getTopOffset: ((function(): number)), getFullTopOffset: (function(): number)}}\n */\nexport default (element, stickyWrapper, options = {}) => {\n if (!element) {\n throw new Error('Sticky element: element not found');\n }\n\n if (!stickyWrapper) {\n throw new Error('Sticky element: stickyWrapper not found');\n }\n\n const {\n extraOffsetTop = 0,\n debounceTime = 5,\n zIndex = 100,\n } = options;\n let isSticky = false;\n const getWrapperRect = () => {\n const wrapperRect = stickyWrapper.getBoundingClientRect();\n\n return {\n top: wrapperRect.top,\n bottom: wrapperRect.bottom,\n height: wrapperRect.height,\n width: wrapperRect.width,\n };\n };\n const getExtraOffsetTop = typeof extraOffsetTop === 'function' ? extraOffsetTop : () => extraOffsetTop;\n const setElementSticky = () => {\n const { height } = getWrapperRect();\n stickyWrapper.style.height = `${height}px`;\n element.style.top = `${getExtraOffsetTop()}px`;\n element.style.left = 0;\n element.style.right = 0;\n element.style.bottom = 'auto';\n element.style.position = 'fixed';\n element.style.zIndex = zIndex;\n element.classList.add('is-sticky');\n isSticky = true;\n };\n const unsetElementSticky = () => {\n element.style.top = null;\n element.style.bottom = null;\n element.style.position = null;\n element.style.zIndex = null;\n element.classList.remove('is-sticky');\n stickyWrapper.style.height = null;\n isSticky = false;\n };\n const getIsSticky = () => isSticky;\n const handleSticky = () => {\n const { top } = getWrapperRect();\n\n if (top <= getExtraOffsetTop()) {\n if (!isSticky) {\n setElementSticky();\n }\n } else if (isSticky) {\n unsetElementSticky();\n }\n };\n\n window.addEventListener('scroll', debounce(handleSticky, debounceTime));\n handleSticky();\n\n return {\n getExtraOffsetTop,\n getIsSticky,\n };\n};\n","import $ from 'jquery';\nimport '@js/theme/vendors/bootstrap/bootstrap-imports';\nimport 'bootstrap-touchspin';\nimport 'jquery-hoverintent';\nimport '@js/theme/components/dynamic-bootstrap-components';\nimport bsCustomFileInput from 'bs-custom-file-input';\n\nimport '@js/theme/components/selectors';\nimport '@js/theme/components/sliders';\nimport '@js/theme/components/responsive';\nimport '@js/theme/components/customer';\nimport '@js/theme/components/quickview';\nimport '@js/theme/components/product';\nimport '@js/theme/components/cart/cart';\nimport '@js/theme/components/cart/block-cart';\n\nimport usePasswordPolicy from '@js/theme/components/usePasswordPolicy';\nimport prestashop from 'prestashop';\nimport EventEmitter from 'events';\nimport Form from '@js/theme/components/form';\nimport TopMenu from '@js/theme/components/TopMenu';\n\nimport PageLazyLoad from '@js/theme/components/Lazyload';\nimport PageLoader from '@js/theme/components/PageLoader';\nimport useStickyElement from '@js/theme/components/useStickyElement';\n\n/* eslint-disable */\n// \"inherit\" EventEmitter\nfor (const i in EventEmitter.prototype) {\n prestashop[i] = EventEmitter.prototype[i];\n}\n/* eslint-enable */\n\nprestashop.pageLazyLoad = new PageLazyLoad({\n selector: '.lazyload',\n});\n\nprestashop.pageLoader = new PageLoader();\n\nfunction accLinksTriggerActive() {\n const url = window.location.pathname;\n $('.js-customer-links a').each((i, el) => {\n const $el = $(el);\n\n if ($el.attr('href').indexOf(url) !== -1) {\n $el.addClass('active');\n }\n });\n}\n\nfunction initStickyHeader() {\n const header = document.querySelector('.js-header-top');\n const headerWrapper = document.querySelector('.js-header-top-wrapper');\n\n if (header && headerWrapper) {\n useStickyElement(header, headerWrapper);\n }\n}\n\n$(() => {\n initStickyHeader();\n accLinksTriggerActive();\n Form.init();\n bsCustomFileInput.init();\n const topMenu = new TopMenu('#_desktop_top_menu .js-main-menu');\n usePasswordPolicy('.field-password-policy');\n\n topMenu.init();\n\n $('.js-select-link').on('change', ({ target }) => {\n window.location.href = $(target).val();\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/*!\n * hoverIntent v1.10.2 // 2020.04.28 // jQuery v1.7.0+\n * http://briancherne.github.io/jquery-hoverIntent/\n *\n * You may use hoverIntent under the terms of the MIT license. Basically that\n * means you are free to use hoverIntent as long as this header is left intact.\n * Copyright 2007-2019 Brian Cherne\n */\n\n/**\n * hoverIntent is similar to jQuery's built-in \"hover\" method except that\n * instead of firing the handlerIn function immediately, hoverIntent checks\n * to see if the user's mouse has slowed down (beneath the sensitivity\n * threshold) before firing the event. The handlerOut function is only\n * called after a matching handlerIn.\n *\n * // basic usage ... just like .hover()\n * .hoverIntent( handlerIn, handlerOut )\n * .hoverIntent( handlerInOut )\n *\n * // basic usage ... with event delegation!\n * .hoverIntent( handlerIn, handlerOut, selector )\n * .hoverIntent( handlerInOut, selector )\n *\n * // using a basic configuration object\n * .hoverIntent( config )\n *\n * @param handlerIn function OR configuration object\n * @param handlerOut function OR selector for delegation OR undefined\n * @param selector selector OR undefined\n * @author Brian Cherne \n */\n\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('jquery'));\n } else if (jQuery && !jQuery.fn.hoverIntent) {\n factory(jQuery);\n }\n})(function($) {\n 'use strict';\n\n // default configuration values\n var _cfg = {\n interval: 100,\n sensitivity: 6,\n timeout: 0\n };\n\n // counter used to generate an ID for each instance\n var INSTANCE_COUNT = 0;\n\n // current X and Y position of mouse, updated during mousemove tracking (shared across instances)\n var cX, cY;\n\n // saves the current pointer position coordinates based on the given mousemove event\n var track = function(ev) {\n cX = ev.pageX;\n cY = ev.pageY;\n };\n\n // compares current and previous mouse positions\n var compare = function(ev,$el,s,cfg) {\n // compare mouse positions to see if pointer has slowed enough to trigger `over` function\n if ( Math.sqrt( (s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY) ) < cfg.sensitivity ) {\n $el.off(s.event,track);\n delete s.timeoutId;\n // set hoverIntent state as active for this element (permits `out` handler to trigger)\n s.isActive = true;\n // overwrite old mouseenter event coordinates with most recent pointer position\n ev.pageX = cX; ev.pageY = cY;\n // clear coordinate data from state object\n delete s.pX; delete s.pY;\n return cfg.over.apply($el[0],[ev]);\n } else {\n // set previous coordinates for next comparison\n s.pX = cX; s.pY = cY;\n // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)\n s.timeoutId = setTimeout( function(){compare(ev, $el, s, cfg);} , cfg.interval );\n }\n };\n\n // triggers given `out` function at configured `timeout` after a mouseleave and clears state\n var delay = function(ev,$el,s,out) {\n var data = $el.data('hoverIntent');\n if (data) {\n delete data[s.id];\n }\n return out.apply($el[0],[ev]);\n };\n\n // checks if `value` is a function\n var isFunction = function(value) {\n return typeof value === 'function';\n };\n\n $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {\n // instance ID, used as a key to store and retrieve state information on an element\n var instanceId = INSTANCE_COUNT++;\n\n // extend the default configuration and parse parameters\n var cfg = $.extend({}, _cfg);\n if ( $.isPlainObject(handlerIn) ) {\n cfg = $.extend(cfg, handlerIn);\n if ( !isFunction(cfg.out) ) {\n cfg.out = cfg.over;\n }\n } else if ( isFunction(handlerOut) ) {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );\n } else {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );\n }\n\n // A private function for handling mouse 'hovering'\n var handleHover = function(e) {\n // cloned event to pass to handlers (copy required for event object to be passed in IE)\n var ev = $.extend({},e);\n\n // the current target of the mouse event, wrapped in a jQuery object\n var $el = $(this);\n\n // read hoverIntent data from element (or initialize if not present)\n var hoverIntentData = $el.data('hoverIntent');\n if (!hoverIntentData) { $el.data('hoverIntent', (hoverIntentData = {})); }\n\n // read per-instance state from element (or initialize if not present)\n var state = hoverIntentData[instanceId];\n if (!state) { hoverIntentData[instanceId] = state = { id: instanceId }; }\n\n // state properties:\n // id = instance ID, used to clean up data\n // timeoutId = timeout ID, reused for tracking mouse position and delaying \"out\" handler\n // isActive = plugin state, true after `over` is called just until `out` is called\n // pX, pY = previously-measured pointer coordinates, updated at each polling interval\n // event = string representing the namespaced event used for mouse tracking\n\n // clear any existing timeout\n if (state.timeoutId) { state.timeoutId = clearTimeout(state.timeoutId); }\n\n // namespaced event used to register and unregister mousemove tracking\n var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent'+instanceId;\n\n // handle the event, based on its type\n if (e.type === 'mouseenter') {\n // do nothing if already active\n if (state.isActive) { return; }\n // set \"previous\" X and Y position based on initial entry point\n state.pX = ev.pageX; state.pY = ev.pageY;\n // update \"current\" X and Y position based on mousemove\n $el.off(mousemove,track).on(mousemove,track);\n // start polling interval (self-calling timeout) to compare mouse coordinates over time\n state.timeoutId = setTimeout( function(){compare(ev,$el,state,cfg);} , cfg.interval );\n } else { // \"mouseleave\"\n // do nothing if not already active\n if (!state.isActive) { return; }\n // unbind expensive mousemove event\n $el.off(mousemove,track);\n // if hoverIntent state is true, then call the mouseOut function after the specified delay\n state.timeoutId = setTimeout( function(){delay(ev,$el,state,cfg.out);} , cfg.timeout );\n }\n };\n\n // listen for mouseenter and mouseleave\n return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);\n };\n});\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\n","module.exports = jQuery;","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + {\"29\":\"0442b6fa32f1f5b1088f\",\"31\":\"f93877c715b23fca6ee8\",\"67\":\"6cb6b7233c7fe9b905f7\",\"109\":\"b425e74d3594c4fa9aee\",\"124\":\"dbec96fd298efc01baed\",\"181\":\"167a963fdc7dcca50fe9\",\"190\":\"adbd1d41ed64efc8b506\",\"250\":\"f492e32d088c89911d80\",\"277\":\"ad31706d90461f92483e\",\"333\":\"f465b698dac1cdcd0417\",\"352\":\"2c1876649b80182cc7e9\",\"372\":\"a40fe077d67da77c1114\",\"376\":\"5545f82c1b562520e643\",\"484\":\"f91f8480ba69f4af39c1\",\"497\":\"70fb9395801a75b5e29a\",\"547\":\"f726c8383e56aa648b0e\",\"602\":\"32577ed76976bbca0f6e\",\"618\":\"0fb4cfcd31326e2e0765\",\"652\":\"cbbeb31846ddf66743c4\",\"690\":\"1e72869527f924c6bfd0\",\"696\":\"a2299fdc62161d7a2fbe\",\"760\":\"208afe47a2940553bbe4\",\"790\":\"41ab0f07a5c82c46667e\",\"806\":\"347914a3249f64db92d0\",\"813\":\"f065da0b0b266ab125b4\",\"840\":\"93041f3b76fe8d147484\",\"869\":\"e2384bda504aac86515a\",\"978\":\"c8a247fb4de3385735a5\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + {\"181\":\"167a963fdc7dcca50fe9\",\"250\":\"f492e32d088c89911d80\",\"277\":\"ad31706d90461f92483e\",\"497\":\"70fb9395801a75b5e29a\",\"547\":\"f726c8383e56aa648b0e\",\"602\":\"32577ed76976bbca0f6e\",\"690\":\"1e72869527f924c6bfd0\",\"760\":\"208afe47a2940553bbe4\",\"840\":\"93041f3b76fe8d147484\",\"978\":\"c8a247fb4de3385735a5\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"Falcon-theme:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/themes/falcon/assets/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t505: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"181\":1,\"250\":1,\"277\":1,\"497\":1,\"547\":1,\"602\":1,\"690\":1,\"760\":1,\"840\":1,\"978\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t505: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(250 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkFalcon_theme\"] = self[\"webpackChunkFalcon_theme\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [357], () => (__webpack_require__(9987)))\n__webpack_require__.O(undefined, [357], () => (__webpack_require__(3454)))\n__webpack_require__.O(undefined, [357], () => (__webpack_require__(9980)))\n__webpack_require__.O(undefined, [357], () => (__webpack_require__(2058)))\n__webpack_require__.O(undefined, [357], () => (__webpack_require__(5113)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [357], () => (__webpack_require__(6132)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["factory","$","_currentSpinnerId","options","defaults","value","attributeMap","settings","originalinput","originalinput_data","_detached_prefix","_detached_postfix","container","elements","downSpinTimer","upSpinTimer","downDelayTimeout","upDelayTimeout","spincount","spinning","init","_initSettings","_setInitval","_checkValue","_buildHtml","_initElements","_hideEmptyPrefixPostfix","_bindEvents","_bindEventsInterface","changeSettings","newsettings","_updateSettings","_parseAttributes","data","key","attrName","_destroy","$parent","stopSpin","$postfix","$prefix","initval","parentelement","_advanceInputGroup","_buildInputGroup","prev","next","downhtml","uphtml","prefixhtml","postfixhtml","html","inputGroupSize","ev","code","upOnce","startUpSpin","downOnce","startDownSpin","delta","e","_forcestepdivisibility","val","parsedval","returnval","_getBoostedStep","boosted","valueIfIsNaN","initvalue","boostedstep","global","module","Util","_interopDefaultLegacy","$__default","Util__default","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","SELECTOR_DISMISS","Alert","element","_proto","rootElement","customEvent","selector","parent","closeEvent","_this","transitionDuration","event","config","$element","alertInstance","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE","SELECTOR_BUTTON","Button","triggerChangeEvent","addAriaPressed","input","activeElement","avoidTriggerChange","button","initialButton","inputBtn","buttons","len","_i","_len","_button","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_DISABLED","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","hideEvent","showEvent","complete","hiddenEvent","shownEvent","callback","_this2","activeElements","active","isTransitioning","dropdownChild","dropdownElement","dropdownToggleList","$this","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","getSpecialTransitionEndEvent","transitionEndEmulator","duration","called","setTransitionEndSupport","prefix","hrefAttr","_","transitionDelay","floatTransitionDuration","floatTransitionDelay","componentName","configTypes","property","expectedTypes","valueType","root","version","minMajor","ltMajor","minMinor","minPatch","maxMajor","Selector","textNodeType","getDefaultText","defaultText","label","findFirstChildNode","childNodes","node","restoreDefaultText","fileApi","FAKE_PATH","FAKE_PATH_SEPARATOR","getSelectedFiles","file","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","customProperty","Event","bsCustomFileInput","inputSelector","formSelector","customFileInputList","formList","form","_i2","_len2","str","id","getId","params","stackTemplateId","bodyElement","buildToastTemplate","text","type","toastId","buildToastStackTemplate","getToastStackTemplate","getElement","hideToast","toast","hideDuration","showToast","timeOut","toastStack","toastInDOM","JSON_MIME","CONTENT_TYPE_HEADER","FETCH_ERROR","extractContentType","headers","_a","k","isLikelyJsonMime","mix","one","two","mergeArrays","acc","newValue","p","doThrow","instance","args","res","setOptions","replace","setPolyfills","polyfills","setErrorType","errorType","middlewareHelper","middlewares","fetchFunction","curr","WretchError","resolver","wretch","sharedState","w","addon","url","opts","_catchers","resolvers","addons","catchers","finalOptions","finalUrl","_fetchReq","referenceError","throwingPromise","error","response","err","body","catchersWrapper","promise","catcher","bodyParser","funName","cb","responseChain","errorId","enhancedResponseChain","chain","r","core","_url","split","headerValues","headerValue","newMap","clear","method","base","contentType","jsonify","contents","jsObject","currentContentType","_options","stringify","appendQueryParams","qp","queryString","usp","favoriteProducts","initialValue","getFavoriteProducts","setFavoriteProducts","products","currentFavoriteProducts","productKey","initialState","addProductKey","removeProductKey","getWretch","idProduct","idProductAttribute","refreshList","resolve","reject","buttonsSelector","getButtons","activeDataAttribute","getAllButtonsByProductKey","btn","currentBtn","addToFavorite","removeFromFavorite","getProductIdsFromKey","refreshButtons","setBtnActive","setBtnInactive","success","danger","handleMessage","messages","updateTopContent","topContent","topContentContainer","requestSuccess","SearchInput","searchUrl","onType","onResult","beforeSend","onRemoveResult","perPage","appendTo","min","timeout","cache","typeTimeout","resultBoxClass","getInputString","handleResultIfStringMatchMinLength","resetResultIfExits","displayResult","handleAjax","responseData","searchInput","ajaxUrl","el","inputForm","backdrop","Search","initShoppingCart","bindEvents","blockCart","showModal","refreshURL","requestData","errorModal","alertBlock","resp","previewHtml","dropdown","DynamicImportJqueryPlugin","jqueryPluginCover","importer","fncCall","self","DynamicImportDOMEvents","events","eventSelector","preventDefault","DynamicImportHandler","files","enableObserve","observeOptions","DOMEvents","DOMEventsSelector","DOMEventsPreventDefault","onLoadFiles","importModal","importDropdown","importCollapse","importPopover","importScrollspy","importToast","importTooltip","DynamicImportSwiperModule","getFiles","dynamicModulesMap","defaultModules","SwiperSlider","modulesPromisesArray","innerModulesPromisesArray","arrayOfModules","moduleImported","dynamicModuleProp","PageSlider","entries","intersectionRatio","elConfig","nextEl","prevEl","pagination","elms","elem","isMobile","swapChildren","obj1","obj2","temp","toggleMobileStyles","idx","responsive","cw","mw","toggle","initRmaItemSelector","currentTarget","checked","checkbox","setupCustomerScripts","productConfig","qv","elm","productModal","createInputFile","$quantityInput","updateEvenType","eventType","minimalProductQuantity","quantityInputSelector","debounce","func","timer","spinnerSelector","hasError","isUpdateOperation","errorMsg","CheckUpdateQuantityOperations","$checkoutBtn","strError","hasErrorOccurred","errorData","errors","createSpin","index","spinner","preventCustomModalOpen","productLineInCartSelector","promises","modalEvent","$body","isTouchSpin","namespace","shouldIncreaseProductQuantity","findCartLineProductQuantityInput","$target","$input","camelize","subject","actionTypeParts","part","camelizedSubject","parseCartAction","cartAction","abortPreviousRequests","getTouchSpinInput","$button","handleCartAction","dataset","jqXHR","sendUpdateQuantityInCartRequest","updateQuantityInCartUrl","getQuantityChangeType","$quantity","getRequestData","quantity","updateProductQuantityInCart","baseValue","targetValue","qty","$code","$discountInput","$discountForm","getBlockCartModal","$blockCartModal","PasswordPolicyMap","PASSWORD_POLICY_ERROR","getPasswordStrengthFeedback","strength","watchPassword","elementInput","feedbackContainer","hints","prestashop","passwordValue","elementIcon","result","feedback","passwordLength","popoverContent","suggestion","passwordLengthValid","passwordScoreValid","percentage","progressBar","inputColumn","templateElement","feedbackTemplate","hintElement","passwordRequirementsLength","passwordRequirementsScore","passwordLengthText","passwordRequirementsText","sprintf","supportedValidity","Form","$btn","forms","divToScroll","$field","field","$form","TopMenu","$item","expanded","PageLazyLoad","PageLoader","stickyWrapper","extraOffsetTop","debounceTime","zIndex","isSticky","getWrapperRect","wrapperRect","getExtraOffsetTop","setElementSticky","height","unsetElementSticky","getIsSticky","handleSticky","top","accLinksTriggerActive","$el","initStickyHeader","header","headerWrapper","useStickyElement","topMenu","ReflectApply","receiver","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","once","defaultMaxListeners","checkListener","listener","arg","n","_getMaxListeners","that","doError","er","handler","listeners","arrayClone","_addListener","prepend","m","existing","onceWrapper","_onceWrap","state","wrapped","list","position","originalListener","spliceOne","keys","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","arr","copy","ret","name","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","_cfg","INSTANCE_COUNT","cX","cY","track","compare","s","cfg","delay","out","isFunction","handlerIn","handlerOut","instanceId","handleHover","hoverIntentData","mousemove","re","sprintf_format","sprintf_parse","vsprintf","fmt","argv","parse_tree","cursor","tree_length","output","ph","pad","pad_character","pad_length","is_positive","sign","sprintf_cache","_fmt","match","arg_names","field_list","replacement_field","field_match","exports","t","o","a","c","l","u","d","f","g","v","b","h","E","I","y","A","L","O","x","C","N","M","z","T","R","G","j","H","V","F","B","J","P","S","U","q","K","Q","W","X","Y","Z","nn","tn","en","on","an","rn","cn","ln","un","sn","dn","fn","_n","gn","vn","bn","mn","pn","hn","En","isObject","extend","src","ssrDocument","getDocument","doc","ssrWindow","getWindow","win","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","deferred","chunkIds","priority","notFulfilled","fulfilled","getter","definition","chunkId","prop","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","onScriptComplete","doneFns","createStylesheet","fullhref","oldTag","linkTag","onLinkComplete","realHref","findStylesheet","href","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/falcon/assets/preload.html b/falcon/assets/preload.html
new file mode 100644
index 0000000..ef4f8e4
--- /dev/null
+++ b/falcon/assets/preload.html
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/falcon/config/.htaccess b/falcon/config/.htaccess
new file mode 100644
index 0000000..3de9e40
--- /dev/null
+++ b/falcon/config/.htaccess
@@ -0,0 +1,10 @@
+# Apache 2.2
+
+ Order deny,allow
+ Deny from all
+
+
+# Apache 2.4
+
+ Require all denied
+
diff --git a/falcon/config/assets.yml b/falcon/config/assets.yml
new file mode 100644
index 0000000..502302c
--- /dev/null
+++ b/falcon/config/assets.yml
@@ -0,0 +1,58 @@
+css:
+ product:
+ fileName: product.css
+ media: all
+ priority: 200
+ include:
+ - product
+ checkout:
+ fileName: checkout.css
+ media: all
+ priority: 200
+ include:
+ - cart
+ - checkout
+ - order-confirmation
+ listing:
+ fileName: listing.css
+ media: all
+ priority: 200
+ include:
+ - category
+ - prices-drop
+ - new-products
+ - best-sales
+ - manufacturer
+ - search
+ - module-is_favoriteproducts-favorite
+
+js:
+ runtime: # This file is only used to handle HMR for multiple entry points
+ fileName: runtime.js
+ priority: 1
+ swipervendor:
+ fileName: swipervendor.js
+ priority: 1
+ product:
+ fileName: product.js
+ priority: 200
+ include:
+ - product
+ checkout:
+ fileName: checkout.js
+ priority: 200
+ include:
+ - cart
+ - checkout
+ - order-confirmation
+ listing:
+ fileName: listing.js
+ priority: 200
+ include:
+ - category
+ - prices-drop
+ - new-products
+ - best-sales
+ - manufacturer
+ - search
+ - module-is_favoriteproducts-favorite
diff --git a/falcon/config/theme.yml b/falcon/config/theme.yml
new file mode 100644
index 0000000..33e17d1
--- /dev/null
+++ b/falcon/config/theme.yml
@@ -0,0 +1,136 @@
+name: falcon
+display_name: Falcon theme
+version: 3.1.2
+author:
+ name: "Igor StÄpieÅ"
+ email: "igor@istepien.dev"
+ url: "https://github.com/Oksydan"
+
+meta:
+ compatibility:
+ from: 8.0.0
+ to: ~
+
+ available_layouts:
+ layout-full-width:
+ name: Full Width
+ description: No side columns, ideal for distraction-free pages such as product pages.
+ layout-both-columns:
+ name: Three Columns
+ description: One large central column and 2 side columns.
+ layout-left-column:
+ name: Two Columns, small left column
+ description: Two columns with a small left column
+ layout-right-column:
+ name: Two Columns, small right column
+ description: Two columns with a small right column
+
+assets:
+ # If you're using this theme as child and you want to load
+ # the parent theme assets, uncomment this line.
+# use_parent_assets: true
+
+ # The following lines are showing how to load assets in your page
+ # Uncomment and change value to start loading css or js files
+# css:
+# all:
+# - id: custom-lib-style
+# path: assets/css/custom-lib.css
+# product:
+# - id: product-style
+# path: assets/css/product.css
+# media: all
+# priority: 200
+# js:
+# cart:
+# - id: cat-extra-lib
+# path: assets/js/cart-lib.js
+
+
+global_settings:
+ configuration:
+ PS_IMAGE_QUALITY: png
+ modules:
+ to_enable:
+ - ps_linklist
+ - is_themecore
+ - is_shoppingcart
+ - is_imageslider
+ - is_searchbar
+ to_disable:
+ - blockreassurance
+ - ps_searchbar
+ - ps_shoppingcart
+ - ps_imageslider
+ - blockwishlist
+ hooks:
+ modules_to_hook:
+ displayNav1:
+ - ps_contactinfo
+ displayNav2:
+ - ps_languageselector
+ - ps_currencyselector
+ displayTop:
+ - is_searchbar
+ - ps_customersignin
+ - is_shoppingcart
+ - ps_mainmenu
+ displayHome:
+ - is_imageslider
+ - ps_featuredproducts
+ - ps_banner
+ - ps_customtext
+ displayFooterBefore:
+ - ps_emailsubscription
+ - ps_socialfollow
+ displayFooter:
+ - ps_linklist
+ - ps_customeraccountlinks
+ - ps_contactinfo
+ displayLeftColumn:
+ - ps_categorytree
+ - ps_facetedsearch
+ displayProductAdditionalInfo:
+ - ps_sharebuttons
+ displayOrderConfirmation2:
+ - ps_featuredproducts
+
+ image_types:
+ cart_default:
+ width: 125
+ height: 125
+ scope: [products]
+ small_default:
+ width: 98
+ height: 98
+ scope: [products, categories, manufacturers, suppliers]
+ medium_default:
+ width: 452
+ height: 452
+ scope: [products, manufacturers, suppliers]
+ home_default:
+ width: 250
+ height: 250
+ scope: [products, manufacturers]
+ large_default:
+ width: 800
+ height: 800
+ scope: [products, manufacturers, suppliers]
+ category_default:
+ width: 141
+ height: 180
+ scope: [categories]
+ stores_default:
+ width: 170
+ height: 115
+ scope: [stores]
+ new_password_policy_feature: true
+
+theme_settings:
+ default_layout: layout-full-width
+ layouts:
+ category: layout-left-column
+ best-sales: layout-left-column
+ new-products: layout-left-column
+ prices-drop: layout-left-column
+ contact: layout-left-column
diff --git a/falcon/modules/.DS_Store b/falcon/modules/.DS_Store
new file mode 100644
index 0000000..e0ef547
Binary files /dev/null and b/falcon/modules/.DS_Store differ
diff --git a/falcon/modules/blockreassurance/views/templates/hook/blockreassurance.tpl b/falcon/modules/blockreassurance/views/templates/hook/blockreassurance.tpl
new file mode 100644
index 0000000..7711d36
--- /dev/null
+++ b/falcon/modules/blockreassurance/views/templates/hook/blockreassurance.tpl
@@ -0,0 +1,38 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+{if $elements}
+
+
+ {foreach from=$elements item=element}
+
+
+
+
{$element.text}
+
+
+ {/foreach}
+
+
+{/if}
diff --git a/falcon/modules/contactform/views/templates/widget/contactform.tpl b/falcon/modules/contactform/views/templates/widget/contactform.tpl
new file mode 100644
index 0000000..b1ed2dd
--- /dev/null
+++ b/falcon/modules/contactform/views/templates/widget/contactform.tpl
@@ -0,0 +1,133 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
diff --git a/falcon/modules/productcomments/index.php b/falcon/modules/productcomments/index.php
new file mode 100644
index 0000000..45df26c
--- /dev/null
+++ b/falcon/modules/productcomments/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../');
+exit;
diff --git a/falcon/modules/productcomments/views/css/index.php b/falcon/modules/productcomments/views/css/index.php
new file mode 100644
index 0000000..45df26c
--- /dev/null
+++ b/falcon/modules/productcomments/views/css/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../');
+exit;
diff --git a/falcon/modules/productcomments/views/css/productcomments.css b/falcon/modules/productcomments/views/css/productcomments.css
new file mode 100644
index 0000000..936ffd8
--- /dev/null
+++ b/falcon/modules/productcomments/views/css/productcomments.css
@@ -0,0 +1 @@
+/* EMPTY */
diff --git a/falcon/modules/productcomments/views/img/index.php b/falcon/modules/productcomments/views/img/index.php
new file mode 100644
index 0000000..45df26c
--- /dev/null
+++ b/falcon/modules/productcomments/views/img/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../');
+exit;
diff --git a/falcon/modules/productcomments/views/img/small_stars.png b/falcon/modules/productcomments/views/img/small_stars.png
new file mode 100644
index 0000000..32473ed
Binary files /dev/null and b/falcon/modules/productcomments/views/img/small_stars.png differ
diff --git a/falcon/modules/productcomments/views/img/star_active.svg b/falcon/modules/productcomments/views/img/star_active.svg
new file mode 100644
index 0000000..f30456b
--- /dev/null
+++ b/falcon/modules/productcomments/views/img/star_active.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/falcon/modules/productcomments/views/img/star_gray.svg b/falcon/modules/productcomments/views/img/star_gray.svg
new file mode 100644
index 0000000..377843a
--- /dev/null
+++ b/falcon/modules/productcomments/views/img/star_gray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/falcon/modules/productcomments/views/img/stars.png b/falcon/modules/productcomments/views/img/stars.png
new file mode 100644
index 0000000..77a6ab9
Binary files /dev/null and b/falcon/modules/productcomments/views/img/stars.png differ
diff --git a/falcon/modules/productcomments/views/index.php b/falcon/modules/productcomments/views/index.php
new file mode 100644
index 0000000..fe9938d
--- /dev/null
+++ b/falcon/modules/productcomments/views/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../../');
+exit;
diff --git a/falcon/modules/productcomments/views/js/index.php b/falcon/modules/productcomments/views/js/index.php
new file mode 100644
index 0000000..45df26c
--- /dev/null
+++ b/falcon/modules/productcomments/views/js/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../');
+exit;
diff --git a/falcon/modules/productcomments/views/js/jquery.rating.plugin.js b/falcon/modules/productcomments/views/js/jquery.rating.plugin.js
new file mode 100644
index 0000000..8c2dd35
--- /dev/null
+++ b/falcon/modules/productcomments/views/js/jquery.rating.plugin.js
@@ -0,0 +1,164 @@
+/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+
+jQuery.fn.rating = function(generalOptions) {
+ const $ratings = $(this);
+
+ $ratings.each(function initRating() {
+ const $ratingComponent = $(this);
+ var options = generalOptions ? generalOptions : {};
+ const ratingAddedClass = 'js-rating-added';
+ if (!options.grade && $ratingComponent.data('grade')) {
+ options.grade = $ratingComponent.data('grade');
+ }
+ if (!options.min && $ratingComponent.data('min')) {
+ options.min = $ratingComponent.data('min');
+ }
+ if (!options.max && $ratingComponent.data('max')) {
+ options.max = $ratingComponent.data('max');
+ }
+ if (!options.input && $ratingComponent.data('input')) {
+ options.input = $ratingComponent.data('input');
+ }
+ var componentOptions = jQuery.extend({
+ grade: null,
+ input: null,
+ min: 1,
+ max: 5,
+ starWidth: 20
+ }, options);
+
+ if ($ratingComponent.hasClass(ratingAddedClass)) {
+ return;
+ }
+
+ const minValue = Math.min(componentOptions.min, componentOptions.max);
+ const maxValue = Math.max(componentOptions.min, componentOptions.max);
+ const ratingValue = Math.min(Math.max(minValue, componentOptions.grade), maxValue);
+
+ $ratingComponent.html('');
+ $ratingComponent.append('
');
+ $ratingComponent.append('
');
+
+ const emptyStars = $('.star-empty', this);
+ const fullStars = $('.star-full', this);
+ const emptyStar = $('
');
+ const fullStar = $('
');
+
+ var ratingInput;
+ if (componentOptions.input) {
+ ratingInput = $(' ');
+ ratingInput.val(ratingValue);
+ ratingInput.css('display', 'none');
+ ratingInput.change(displayInteractiveGrade);
+ $ratingComponent.append(ratingInput);
+ initInteractiveGrade();
+ } else {
+ displayGrade(ratingValue);
+ }
+
+ function initInteractiveGrade() {
+ emptyStars.html('');
+ fullStars.html('');
+ var newStar;
+ for (var i = minValue; i <= maxValue; ++i) {
+ newStar = emptyStar.clone();
+ newStar.data('grade', i);
+ newStar.hover(function overStar() {
+ var overIndex = $('.star', fullStars).index($(this));
+ $('.star', fullStars).each(function overStars() {
+ $(this).removeClass('star-on');
+ var starIndex = $('.star', fullStars).index($(this));
+ if (starIndex <= overIndex) {
+ $(this).addClass('star-hover');
+ } else {
+ $(this).removeClass('star-hover');
+ }
+ });
+ });
+ newStar.click(function selectGrade() {
+ var selectedGrade = $(this).data('grade');
+ ratingInput.val(selectedGrade);
+ });
+ fullStars.append(newStar);
+ }
+
+ fullStars.hover(function(){}, displayInteractiveGrade);
+ displayInteractiveGrade();
+ }
+
+ function displayInteractiveGrade() {
+ $('.star', fullStars).each(function displayStar() {
+ var starValue = $(this).data('grade');
+ $(this).removeClass('star-hover');
+ if (starValue <= ratingInput.val()) {
+ $(this).addClass('star-on');
+ } else {
+ $(this).removeClass('star-on');
+ }
+ });
+ }
+
+ function displayGrade(grade) {
+ emptyStars.html('');
+ fullStars.html('');
+ var newStar;
+ for (var i = minValue; i <= maxValue; ++i) {
+ if (i <= Math.floor(grade)) {
+ newStar = emptyStar.clone();
+ newStar.css('visibility', 'hidden');
+ emptyStars.append(newStar);
+ fullStars.append(fullStar.clone());
+ } else if (i > Math.ceil(grade)) {
+ newStar = emptyStar.clone();
+ emptyStars.append(newStar.clone());
+ } else {
+ //This the partial star composed of
+ // - one invisible partial empty star
+ // - one visible partial empty star (remaining part)
+ // - one visible partial full star
+ var fullWidth = (grade - i + 1) * componentOptions.starWidth;
+ var emptyWidth = componentOptions.starWidth - fullWidth;
+ newStar = emptyStar.clone();
+ newStar.css('visibility', 'hidden');
+ newStar.css('width', fullWidth);
+ emptyStars.append(newStar);
+
+ newStar = emptyStar.clone();
+ newStar.css('width', emptyWidth);
+ newStar.css('background-position', '0px -'+fullWidth+'px');
+ newStar.css('background-position', '-'+fullWidth+'px 0px');
+ newStar.css('marginLeft', 0);
+ emptyStars.append(newStar);
+
+ fullStar.css('width', fullWidth);
+ fullStars.append(fullStar.clone());
+ }
+
+ $ratingComponent.addClass(ratingAddedClass);
+ }
+ }
+ });
+}
diff --git a/falcon/modules/productcomments/views/js/list-comments.js b/falcon/modules/productcomments/views/js/list-comments.js
new file mode 100644
index 0000000..013c848
--- /dev/null
+++ b/falcon/modules/productcomments/views/js/list-comments.js
@@ -0,0 +1,171 @@
+/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+
+jQuery(document).ready(function () {
+ const $ = jQuery;
+ const commentsList = $('#product-comments-list');
+ const emptyProductComment = $('#empty-product-comment');
+ const commentsListUrl = commentsList.data('list-comments-url');
+ const updateCommentUsefulnessUrl = commentsList.data('update-comment-usefulness-url');
+ const reportCommentUrl = commentsList.data('report-comment-url');
+ const commentPrototype = commentsList.data('comment-item-prototype');
+
+ emptyProductComment.hide();
+ $('.comments-note .grade-stars').rating();
+
+ prestashop.on('updatedProduct', function() {
+ $('.product-comments-additional-info .grade-stars').rating();
+ })
+
+ document.addEventListener('updateRating', function() {
+ $('.comments-note .grade-stars').rating();
+ });
+
+ const updateCommentPostErrorModal = $('#update-comment-usefulness-post-error');
+
+ const confirmAbuseModal = $('#report-comment-confirmation');
+ const reportCommentPostErrorModal = $('#report-comment-post-error');
+ const reportCommentPostedModal = $('#report-comment-posted');
+
+ function showUpdatePostCommentErrorModal(errorMessage) {
+ $('#update-comment-usefulness-post-error-message').html(errorMessage);
+ updateCommentPostErrorModal.modal('show');
+ }
+
+ function showReportCommentErrorModal(errorMessage) {
+ $('#report-comment-post-error-message').html(errorMessage);
+ reportCommentPostErrorModal.modal('show');
+ }
+
+ function paginateComments(page) {
+ $.get(commentsListUrl, {page: page}, function(jsonResponse) {
+ if (jsonResponse.comments && jsonResponse.comments.length > 0) {
+ populateComments(jsonResponse.comments);
+ if (jsonResponse.comments_nb > jsonResponse.comments_per_page) {
+ $('#product-comments-list-pagination').pagination({
+ currentPage: page,
+ items: jsonResponse.comments_nb,
+ itemsOnPage: jsonResponse.comments_per_page,
+ cssStyle: '',
+ prevText: 'chevron_left ',
+ nextText: 'chevron_right ',
+ useAnchors: false,
+ displayedPages: 2,
+ onPageClick: paginateComments
+ });
+ } else {
+ $('#product-comments-list-pagination').hide();
+ }
+ } else {
+ commentsList.html('');
+ emptyProductComment.show();
+ commentsList.append(emptyProductComment);
+ }
+ });
+ }
+
+ function populateComments(comments) {
+ commentsList.html('');
+ comments.forEach(addComment);
+ }
+
+ function addComment(comment) {
+ var commentTemplate = commentPrototype;
+ var customerName = comment.customer_name;
+ if (!customerName) {
+ customerName = comment.firstname+' '+comment.lastname;
+ }
+ commentTemplate = commentTemplate.replace(/@COMMENT_ID@/, comment.id_product_comment);
+ commentTemplate = commentTemplate.replace(/@PRODUCT_ID@/, comment.id_product);
+ commentTemplate = commentTemplate.replace(/@CUSTOMER_NAME@/, customerName);
+ commentTemplate = commentTemplate.replace(/@COMMENT_DATE@/, comment.date_add);
+ commentTemplate = commentTemplate.replace(/@COMMENT_TITLE@/, comment.title);
+ commentTemplate = commentTemplate.replace(/@COMMENT_COMMENT@/, comment.content);
+ commentTemplate = commentTemplate.replace(/@COMMENT_USEFUL_ADVICES@/, comment.usefulness);
+ commentTemplate = commentTemplate.replace(/@COMMENT_NOT_USEFUL_ADVICES@/, (comment.total_usefulness - comment.usefulness));
+ commentTemplate = commentTemplate.replace(/@COMMENT_TOTAL_ADVICES@/, comment.total_usefulness);
+
+ const $comment = $(commentTemplate);
+ $('.grade-stars', $comment).rating({
+ grade: comment.grade
+ });
+ $('.js-useful-review', $comment).click(function(e) {
+ e.preventDefault();
+ updateCommentUsefulness($comment, comment.id_product_comment, 1);
+ });
+ $('.js-not-useful-review', $comment).click(function(e) {
+ e.preventDefault();
+ updateCommentUsefulness($comment, comment.id_product_comment, 0);
+ });
+ $('.js-report-abuse', $comment).click(function(e) {
+ e.preventDefault();
+ confirmCommentAbuse(comment.id_product_comment);
+ });
+
+ commentsList.append($comment);
+ }
+
+ function updateCommentUsefulness($comment, commentId, usefulness) {
+ $.post(updateCommentUsefulnessUrl, {id_product_comment: commentId, usefulness: usefulness}, function(jsonData){
+ if (jsonData) {
+ if (jsonData.success) {
+ $('.js-useful-review-value', $comment).html(jsonData.usefulness);
+ $('.js-not-useful-review-value', $comment).html(jsonData.total_usefulness - jsonData.usefulness);
+ } else {
+ const decodedErrorMessage = $("
").html(jsonData.error).text();
+ showUpdatePostCommentErrorModal(decodedErrorMessage);
+ }
+ } else {
+ showUpdatePostCommentErrorModal(productCommentUpdatePostErrorMessage);
+ }
+ }).fail(function() {
+ showUpdatePostCommentErrorModal(productCommentUpdatePostErrorMessage);
+ });
+ }
+
+ function confirmCommentAbuse(commentId) {
+ confirmAbuseModal.modal('show');
+ confirmAbuseModal.one('modal:confirm', function(event, confirm) {
+ if (!confirm) {
+ return;
+ }
+ $.post(reportCommentUrl, {id_product_comment: commentId}, function(jsonData){
+ if (jsonData) {
+ if (jsonData.success) {
+ reportCommentPostedModal.modal('show');
+ } else {
+ showReportCommentErrorModal(jsonData.error);
+ }
+ } else {
+ showReportCommentErrorModal(productCommentAbuseReportErrorMessage);
+ }
+ }).fail(function() {
+ showReportCommentErrorModal(productCommentAbuseReportErrorMessage);
+ });
+ })
+ }
+
+ paginateComments(1);
+});
diff --git a/falcon/modules/productcomments/views/js/post-comment.js b/falcon/modules/productcomments/views/js/post-comment.js
new file mode 100644
index 0000000..02398c2
--- /dev/null
+++ b/falcon/modules/productcomments/views/js/post-comment.js
@@ -0,0 +1,129 @@
+/**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+
+jQuery(document).ready(function () {
+ const $ = jQuery;
+ $('body').on('click', '.js-post-product-comment', function (event) {
+ event.preventDefault();
+ showPostCommentModal();
+ });
+
+ const postCommentModal = $('#post-product-comment-modal');
+ postCommentModal.on('hidden.bs.modal', function () {
+ postCommentModal.modal('hide');
+ clearPostCommentForm();
+ });
+
+ const commentPostedModal = $('#product-comment-posted-modal');
+ const commentPostErrorModal = $('#product-comment-post-error');
+
+ function showPostCommentModal() {
+ commentPostedModal.modal('hide');
+ commentPostErrorModal.modal('hide');
+ postCommentModal.modal('show');
+ }
+
+ function showCommentPostedModal() {
+ postCommentModal.modal('hide');
+ commentPostErrorModal.modal('hide');
+ clearPostCommentForm();
+ commentPostedModal.modal('show');
+ }
+
+ function showPostErrorModal(errorMessage) {
+ postCommentModal.modal('hide');
+ commentPostedModal.modal('hide');
+ clearPostCommentForm();
+ $('#product-comment-post-error-message').html(errorMessage);
+ commentPostErrorModal.modal('show');
+ }
+
+ function clearPostCommentForm() {
+ $('#post-product-comment-form input[type="text"]').val('');
+ $('#post-product-comment-form input[type="text"]').removeClass('vis-invalid');
+ $('#post-product-comment-form textarea').val('');
+ $('#post-product-comment-form textarea').removeClass('is-invalid');
+ $('#post-product-comment-form .criterion-rating input').val(3).change();
+ }
+
+ function initCommentModal() {
+ $('#post-product-comment-modal .grade-stars').rating();
+ $('body').on('click', '.js-post-product-comment', function (event) {
+ event.preventDefault();
+ showPostCommentModal();
+ });
+
+ $('#post-product-comment-form').submit(submitCommentForm);
+ }
+
+ function submitCommentForm(event) {
+ event.preventDefault();
+ var formData = $(this).serializeArray();
+ if (!validateFormData(formData)) {
+ return;
+ }
+ $.post($(this).attr('action'), $(this).serialize(), function(jsonData) {
+ if (jsonData) {
+ if (jsonData.success) {
+ clearPostCommentForm();
+ showCommentPostedModal();
+ } else {
+ if (jsonData.errors) {
+ var errorList = '';
+ for (var i = 0; i < jsonData.errors.length; ++i) {
+ errorList += '' + jsonData.errors[i] + ' ';
+ }
+ errorList += ' ';
+ showPostErrorModal(errorList);
+ } else {
+ const decodedErrorMessage = $("
").html(jsonData.error).text();
+ showPostErrorModal(decodedErrorMessage);
+ }
+ }
+ } else {
+ showPostErrorModal(productCommentPostErrorMessage);
+ }
+ }).fail(function() {
+ showPostErrorModal(productCommentPostErrorMessage);
+ });
+ }
+
+ function validateFormData(formData) {
+ var isValid = true;
+ formData.forEach(function(formField) {
+ const fieldSelector = '#post-product-comment-form [name="'+formField.name+'"]';
+ if (!formField.value) {
+ $(fieldSelector).addClass('is-invalid');
+ isValid = false;
+ } else {
+ $(fieldSelector).removeClass('is-invalid');
+ }
+ });
+
+ return isValid;
+ }
+
+ initCommentModal();
+});
diff --git a/falcon/modules/productcomments/views/js/productListingComments.js b/falcon/modules/productcomments/views/js/productListingComments.js
new file mode 100644
index 0000000..0eb49bf
--- /dev/null
+++ b/falcon/modules/productcomments/views/js/productListingComments.js
@@ -0,0 +1,151 @@
+/**
+ * 2007-2019 PrestaShop SA and Contributors
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to http://www.prestashop.com for more information.
+ *
+ * @author PrestaShop SA
+ * @copyright 2007-2019 PrestaShop SA and Contributors
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
+ * International Registered Trademark & Property of PrestaShop SA
+ */
+
+
+$(document).ready(function() {
+ productListingComments.init();
+ productListingComments.load();
+});
+
+
+var productListingComments = (function () {
+
+ var data = {
+ productIDs: [],
+ commentsLoadingInProgress: false,
+ ajaxIDsLimit: 50,
+ ajaxUrl: ''
+ }
+
+ var DOMStrings = {
+ productListReviewsContainer: '.product-list-reviews',
+ productListReviewsNumberOfComments: '.comments-nb',
+ productListReviewsStarsContainer: '.grade-stars',
+ productContainer: '.js-product-miniature'
+ };
+
+ var DOMClasses = {
+ inProgress: 'reviews-loading',
+ reviewsLoaded: 'reviews-loaded',
+ hasReviews: 'has-reviews'
+ };
+
+ function setEvents() {
+ prestashop.on('updatedProductList', function() {
+ addProductsIDs();
+ });
+ }
+
+
+ function setAjaxUrl() {
+ if (data.ajaxUrl !== '')
+ return;
+
+ var url = $(DOMStrings.productListReviewsContainer).first().data('url');
+ data.ajaxUrl = url;
+ }
+
+ function getNewProductsReviewsElements() {
+ var $productListReviews = $(DOMStrings.productContainer)
+ .not('.' + DOMClasses.reviewsLoaded + ', .' + DOMClasses.inProgress)
+ .addClass(DOMClasses.inProgress)
+ .find(DOMStrings.productListReviewsContainer);
+
+ return $productListReviews;
+ }
+
+ function addProductsIDs() {
+
+ var $productsList = getNewProductsReviewsElements(),
+ seenIds = {};
+
+ $productsList.each(function () {
+ var id = $(this).data('id');
+ seenIds[id] = true;
+ });
+
+
+ var IDsArray = Object.keys(seenIds);
+ var prevDataIDs = data.productIDs.splice(0);
+ data.productIDs = prevDataIDs.concat(IDsArray);
+
+ if (!data.commentsLoadingInProgress) {
+ loadProductsData();
+ }
+ }
+
+ function loadProductsData() {
+ if (data.productIDs.length === 0)
+ return;
+
+ data.commentsLoadingInProgress = true;
+
+ var dataIDsCopy = data.productIDs.slice(0);
+ selectedProductIDs = dataIDsCopy.splice(0, data.ajaxIDsLimit);
+
+
+ $.get(data.ajaxUrl, { id_products: selectedProductIDs }, function (jsonData) {
+ if (jsonData) {
+ $.each(jsonData.products, function(i, elem) {
+ var productData = elem;
+ var $productsReviewsContainer = $('.product-list-reviews[data-id="' + productData.id_product + '"]');
+
+ $productsReviewsContainer.each(function () {
+ var $self = $(this);
+
+ if (productData.comments_nb > 0) {
+ $self.find(DOMStrings.productListReviewsStarsContainer).rating({ grade: productData.average_grade, starWidth: 16 });
+ $self.find(DOMStrings.productListReviewsNumberOfComments).text('(' + productData.comments_nb + ')');
+ $self.closest(DOMStrings.productContainer).addClass(DOMClasses.hasReviews);
+ $self.css('visibility', 'visible');
+ }
+
+ $self.closest(DOMStrings.productContainer).addClass(DOMClasses.reviewsLoaded);
+ $self.closest(DOMStrings.productContainer).removeClass(DOMClasses.inProgress);
+
+ });
+ data.productIDs.shift();
+ });
+
+ data.commentsLoadingInProgress = false;
+ if (data.productIDs.length > 0) {
+ loadProductsData();
+ }
+
+ }
+ });
+ }
+
+
+ return {
+ load: function () {
+ addProductsIDs();
+ },
+ init: function () {
+ setAjaxUrl();
+ setEvents();
+ }
+ }
+})();
diff --git a/falcon/modules/productcomments/views/templates/hook/alert-modal.tpl b/falcon/modules/productcomments/views/templates/hook/alert-modal.tpl
new file mode 100644
index 0000000..d9cc1e3
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/alert-modal.tpl
@@ -0,0 +1,58 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+{assign var='icon' value=$icon|default:'check_circle'}
+{assign var='modal_message' value=$modal_message|default:''}
+
+
+
+
diff --git a/falcon/modules/productcomments/views/templates/hook/average-grade-stars.tpl b/falcon/modules/productcomments/views/templates/hook/average-grade-stars.tpl
new file mode 100644
index 0000000..4cbf79a
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/average-grade-stars.tpl
@@ -0,0 +1,30 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+{if $nb_comments != 0}
+
+{/if}
diff --git a/falcon/modules/productcomments/views/templates/hook/confirm-modal.tpl b/falcon/modules/productcomments/views/templates/hook/confirm-modal.tpl
new file mode 100644
index 0000000..d2dd1c6
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/confirm-modal.tpl
@@ -0,0 +1,69 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+{assign var='icon' value=$icon|default:'check_circle'}
+{assign var='modal_message' value=$modal_message|default:''}
+
+
+
+
diff --git a/falcon/modules/productcomments/views/templates/hook/empty-product-comment.tpl b/falcon/modules/productcomments/views/templates/hook/empty-product-comment.tpl
new file mode 100644
index 0000000..7f0e5a2
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/empty-product-comment.tpl
@@ -0,0 +1,37 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+
diff --git a/falcon/modules/productcomments/views/templates/hook/index.php b/falcon/modules/productcomments/views/templates/hook/index.php
new file mode 100644
index 0000000..45df26c
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/index.php
@@ -0,0 +1,34 @@
+
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ */
+header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+
+header('Cache-Control: no-store, no-cache, must-revalidate');
+header('Cache-Control: post-check=0, pre-check=0', false);
+header('Pragma: no-cache');
+
+header('Location: ../');
+exit;
diff --git a/falcon/modules/productcomments/views/templates/hook/post-comment-modal.tpl b/falcon/modules/productcomments/views/templates/hook/post-comment-modal.tpl
new file mode 100644
index 0000000..46ba938
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/post-comment-modal.tpl
@@ -0,0 +1,105 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+
+
+
+
+{* Comment posted modal *}
+{if $moderation_active}
+ {assign var='comment_posted_message' value={l s='Your comment has been submitted and will be available once approved by a moderator.' d='Modules.Productcomments.Shop'}}
+{else}
+ {assign var='comment_posted_message' value={l s='Your comment has been added!' d='Modules.Productcomments.Shop'}}
+{/if}
+{include file='module:productcomments/views/templates/hook/alert-modal.tpl'
+ modal_id='product-comment-posted-modal'
+ modal_title={l s='Review sent' d='Modules.Productcomments.Shop'}
+ modal_message=$comment_posted_message
+}
+
+{* Comment post error modal *}
+{include file='module:productcomments/views/templates/hook/alert-modal.tpl'
+ modal_id='product-comment-post-error'
+ modal_title={l s='Your review cannot be sent' d='Modules.Productcomments.Shop'}
+ icon='error'
+}
diff --git a/falcon/modules/productcomments/views/templates/hook/product-additional-info-quickview.tpl b/falcon/modules/productcomments/views/templates/hook/product-additional-info-quickview.tpl
new file mode 100644
index 0000000..3d7c120
--- /dev/null
+++ b/falcon/modules/productcomments/views/templates/hook/product-additional-info-quickview.tpl
@@ -0,0 +1,39 @@
+{**
+ * Copyright since 2007 PrestaShop SA and Contributors
+ * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
+ * that is bundled with this package in the file LICENSE.md.
+ * It is also available through the world-wide-web at this URL:
+ * https://opensource.org/licenses/AFL-3.0
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@prestashop.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
+ * versions in the future. If you wish to customize PrestaShop for your
+ * needs please refer to https://devdocs.prestashop.com/ for more information.
+ *
+ * @author PrestaShop SA and Contributors
+ * @copyright Since 2007 PrestaShop SA and Contributors
+ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
+ *}
+
+{if $nb_comments != 0}
+
+
+
+