UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

1 lines 66.6 kB
import{n as extend,u as now,t as nextTick,f as elementIsChildOf,x as showWarning,e as elementChildren,a as createElement,j as elementParents,q as getTranslate,l as elementStyle,v as setCSSProperty,i as elementOuterSize,g as elementNextAll,k as elementPrevAll,b as elementIndex,d as deleteProps}from"./utils.min.mjs";let supportCached,deviceCached,browserCached;function calcSupport(){return"undefined"==typeof window?{touch:!1}:{touch:"ontouchstart"in window||navigator.maxTouchPoints>0}}function getSupport(){return supportCached||(supportCached=calcSupport()),supportCached}function calcDevice({userAgent:e}={}){if("undefined"==typeof window)return{ios:!1,android:!1};const t=getSupport(),s=navigator.platform,i=e||navigator.userAgent,r={ios:!1,android:!1},n=/(Android);?[\s/]+([\d.]+)?/.test(i),a=/(iPhone\sOS|iOS|iPod)/.test(i),o=/iPad/.test(i),l="MacIntel"===s&&t.touch&&navigator.maxTouchPoints>1,d=o||l;return n&&!("Win32"===s)&&(r.os="android",r.android=!0),(d||a)&&(r.os="ios",r.ios=!0),r}function getDevice(e={}){return deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){if("undefined"==typeof window)return{isSafari:!1,isWebView:!1,need3dFix:!1};const e=getDevice(),t=navigator.userAgent,s=t.toLowerCase(),i=s.includes("safari")&&!s.includes("chrome")&&!s.includes("android"),r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t);return{isSafari:i,isWebView:r,need3dFix:i||r&&e.ios}}function getBrowser(){return browserCached||(browserCached=calcBrowser()),browserCached}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{if(s.shadowRoot){const t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`);t&&!t.lazyPreloaderManaged&&t.remove()}})),t&&!t.lazyPreloaderManaged&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&(e.params.grid.rows??1)>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{void 0!==t.column&&n.includes(t.column)&&unlazy(e,s)})}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(t<r||t>n)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i<r)&&unlazy(e,i)};function getBreakpoint(e,t="window",s){if(!e||"container"===t&&!s)return;let i=!1;const r="window"===t?window.innerHeight:s.clientHeight,n=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:r*t,point:e}}return{value:e,point:e}});n.sort((e,t)=>parseInt(String(e.value),10)-parseInt(String(t.value),10));for(let e=0;e<n.length;e+=1){const{point:r,value:a}=n[e];"window"===t?window.matchMedia(`(min-width: ${a}px)`).matches&&(i=r):a<=s.clientWidth&&(i=r)}return i||"max"}const isGridEnabled=(e,t)=>!!(e.grid&&t.grid&&t.grid.rows>1);function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a="window"!==i.breakpointsBase&&i.breakpointsBase?"container":i.breakpointsBase,o=["window","container"].includes(i.breakpointsBase)||!i.breakpointsBase?e.el:document.querySelector(i.breakpointsBase),l=e.getBreakpoint(n,a,o);if(!l||e.currentBreakpoint===l)return;const d=(l in n?n[l]:void 0)||e.originalParams,c=isGridEnabled(e,i),p=isGridEnabled(e,d),u=e.params.grabCursor,h=d.grabCursor,m=i.enabled;c&&!p?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!c&&p&&(r.classList.add(`${i.containerModifierClass}grid`),(d.grid.fill&&"column"===d.grid.fill||!d.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),u&&!h?e.unsetGrabCursor():!u&&h&&e.setGrabCursor();const f=(e,t)=>e[t];["navigation","pagination","scrollbar"].forEach(t=>{const s=f(d,t);if(void 0===s)return;const r=f(i,t),n="object"==typeof r&&null!==r&&r.enabled,a="object"==typeof s&&null!==s&&s.enabled,o=e[t];n&&!a&&o?.disable?.(),!n&&a&&o?.enable?.()});const v=d.direction&&d.direction!==i.direction,g=i.loop&&(d.slidesPerView!==i.slidesPerView||v),w=i.loop;v&&s&&e.changeDirection(),extend(e.params,d);const S=e.params.enabled,T=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!S?e.disable():!m&&S&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",d),s&&(g?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!w&&T?(e.loopCreate(t),e.updateSlides()):w&&!T&&e.loopDestroy()),e.emit("breakpoint",d)}var breakpoints={setBreakpoint:setBreakpoint,getBreakpoint:getBreakpoint};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow};function prepareClasses(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.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&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}var classes={addClasses:addClasses,removeClasses:removeClasses};const defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",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,snapToSlideEdge:!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,loopAddBlankSlides:!0,loopAdditionalSlides:0,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",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=function(...s){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(i,s)};return r.__emitterProxy=t,i.on(e,r,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)})}),s):s},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let s,i,r;if("string"==typeof e[0]||Array.isArray(e[0]))s=e[0],i=e.slice(1,e.length),r=t;else{const n=e[0];s=n.events,i=n.data??[],r=n.context||t}i.unshift(r);return(Array.isArray(s)?s:s.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...i])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,i)})}),t}};function onClick(e){const t=this;t.destroyed||t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onDocumentTouchStart(){const e=this;e.destroyed||e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}function onLoad(e){const t=this;t.destroyed||(processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update())}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual?.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;if(!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o)e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0);else{const t=a?e.virtual.slides.length:e.slides.length;e.slideTo(t-1,0,!1,!0)}if(e.autoplay&&e.autoplay.running&&e.autoplay.paused){const t=e.autoplay;clearTimeout(t.resizeTimeout),t.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)}e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onScroll(){const e=this;if(e.destroyed)return;const{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onTouchEnd(e){const t=this;if(t.destroyed)return;const s=t.touchEventsData;let i=e.originalEvent??e;if("touchend"===i.type||"touchcancel"===i.type){const e=[...i.changedTouches].find(e=>e.identifier===s.touchId);if(!e||e.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:a,slidesGrid:o,enabled:l}=t;if(!l)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=now(),c=d-s.touchStartTime;if(t.allowClick){const e=i.path??(i.composedPath&&i.composedPath());t.updateClickedSlide(e&&e[0],e),t.emit("tap click",i),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=now(),nextTick(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let p;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,p=r.followFinger?a?t.translate:-t.translate:-(s.currentTranslate??0),r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:p});const u=p>=-t.maxTranslate()&&!t.params.loop;let h=0,m=t.slidesSizesGrid[0];for(let e=0;e<o.length;e+=e<r.slidesPerGroupSkip?1:r.slidesPerGroup){const t=e<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;void 0!==o[e+t]?(u||p>=o[e]&&p<o[e+t])&&(h=e,m=o[e+t]-o[e]):(u||p>=o[e])&&(h=e,m=o[o.length-1]-o[o.length-2])}let f=null,v=null;r.rewind&&(t.isBeginning?v=r.virtual?.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(f=0));const g=(p-o[h])/m,w=h<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;if(c>r.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(g>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?f:h+w):t.slideTo(h)),"prev"===t.swipeDirection&&(g>1-r.longSwipesRatio?t.slideTo(h+w):null!==v&&g<0&&Math.abs(g)>r.longSwipesRatio?t.slideTo(v):t.slideTo(h))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(h+w):t.slideTo(h):("next"===t.swipeDirection&&t.slideTo(null!==f?f:h+w),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:h))}}function onTouchMove(e){const t=this;if(t.destroyed)return;const s=t.touchEventsData,{params:i,touches:r,rtlTranslate:n,enabled:a}=t;if(!a)return;if(!i.simulateTouch&&"mouse"===e.pointerType)return;const o=e,l=o.originalEvent??o;if("pointermove"===l.type){if(null!==s.touchId)return;if(l.pointerId!==s.pointerId)return}let d;if("touchmove"===l.type){const e=[...l.changedTouches].find(e=>e.identifier===s.touchId);if(!e||e.identifier!==s.touchId)return;d=e}else d=l;if(!s.isTouched)return void(s.startMoving&&s.isScrolling&&t.emit("touchMoveOpposite",l));const c=d.pageX,p=d.pageY;if(l.preventedByNestedSwiper)return r.startX=c,void(r.startY=p);if(!t.allowTouchMove)return l.target.matches(s.focusableElements)||(t.allowClick=!1),void(s.isTouched&&(Object.assign(r,{startX:c,startY:p,currentX:c,currentY:p}),s.touchStartTime=now()));if(i.touchReleaseOnEdges&&!i.loop)if(t.isVertical()){if(p<r.startY&&t.translate<=t.maxTranslate()||p>r.startY&&t.translate>=t.minTranslate())return s.isTouched=!1,void(s.isMoved=!1)}else{if(n&&(c>r.startX&&-t.translate<=t.maxTranslate()||c<r.startX&&-t.translate>=t.minTranslate()))return;if(!n&&(c<r.startX&&t.translate<=t.maxTranslate()||c>r.startX&&t.translate>=t.minTranslate()))return}if(document.activeElement&&document.activeElement.matches(s.focusableElements)&&document.activeElement!==l.target&&"mouse"!==l.pointerType&&document.activeElement.blur(),document.activeElement&&l.target===document.activeElement&&l.target.matches(s.focusableElements))return s.isMoved=!0,void(t.allowClick=!1);s.allowTouchCallbacks&&t.emit("touchMove",l),r.previousX=r.currentX,r.previousY=r.currentY,r.currentX=c,r.currentY=p;const u=r.currentX-r.startX,h=r.currentY-r.startY;if(t.params.threshold&&Math.sqrt(u**2+h**2)<t.params.threshold)return;if(void 0===s.isScrolling){let e;t.isHorizontal()&&r.currentY===r.startY||t.isVertical()&&r.currentX===r.startX?s.isScrolling=!1:u*u+h*h>=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,s.isScrolling=t.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(s.isScrolling&&t.emit("touchMoveOpposite",l),void 0===s.startMoving&&(r.currentX===r.startX&&r.currentY===r.startY||(s.startMoving=!0)),s.isScrolling||"touchmove"===l.type&&s.preventTouchMoveFromPointerMove)return void(s.isTouched=!1);if(!s.startMoving)return;t.allowClick=!1,!i.cssMode&&l.cancelable&&l.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&l.stopPropagation();let m=t.isHorizontal()?u:h,f=t.isHorizontal()?r.currentX-r.previousX:r.currentY-r.previousY;i.oneWayMovement&&(m=Math.abs(m)*(n?1:-1),f=Math.abs(f)*(n?1:-1)),r.diff=m,m*=i.touchRatio,n&&(m=-m,f=-f);const v=t.touchesDirection;t.swipeDirection=m>0?"prev":"next",t.touchesDirection=f>0?"prev":"next";const g=t.params.loop&&!i.cssMode,w="next"===t.touchesDirection&&t.allowSlideNext||"prev"===t.touchesDirection&&t.allowSlidePrev;if(!s.isMoved){if(g&&w&&t.loopFix({direction:t.swipeDirection}),s.startTranslate=t.getTranslate(),t.setTransition(0),t.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});t.wrapperEl.dispatchEvent(e)}s.allowMomentumBounce=!1,!i.grabCursor||!0!==t.allowSlideNext&&!0!==t.allowSlidePrev||t.setGrabCursor(!0),t.emit("sliderFirstMove",l)}if((new Date).getTime(),!1!==i._loopSwapReset&&s.isMoved&&s.allowThresholdMove&&v!==t.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(r,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:s.currentTranslate}),s.loopSwapReset=!0,void(s.startTranslate=s.currentTranslate);t.emit("sliderMove",l),s.isMoved=!0;const S=s.startTranslate??0;s.currentTranslate=m+S;let T=!0,b=i.resistanceRatio;if(i.touchReleaseOnEdges&&(b=0),m>0?(g&&w&&s.allowThresholdMove&&s.currentTranslate>(i.centeredSlides?t.minTranslate()-t.slidesSizesGrid[t.activeIndex+1]-("auto"!==i.slidesPerView&&t.slides.length-i.slidesPerView>=2?t.slidesSizesGrid[t.activeIndex+1]+t.params.spaceBetween:0)-t.params.spaceBetween:t.minTranslate())&&t.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),s.currentTranslate>t.minTranslate()&&(T=!1,i.resistance&&(s.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+S+m)**b))):m<0&&(g&&w&&s.allowThresholdMove&&s.currentTranslate<(i.centeredSlides?t.maxTranslate()+t.slidesSizesGrid[t.slidesSizesGrid.length-1]+t.params.spaceBetween+("auto"!==i.slidesPerView&&t.slides.length-i.slidesPerView>=2?t.slidesSizesGrid[t.slidesSizesGrid.length-1]+t.params.spaceBetween:0):t.maxTranslate())&&t.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:t.slides.length-("auto"===i.slidesPerView?t.slidesPerViewDynamic():Math.ceil(parseFloat(String(i.slidesPerView))))}),s.currentTranslate<t.maxTranslate()&&(T=!1,i.resistance&&(s.currentTranslate=t.maxTranslate()+1-(t.maxTranslate()-S-m)**b))),T&&(l.preventedByNestedSwiper=!0),!t.allowSlideNext&&"next"===t.swipeDirection&&(s.currentTranslate??0)<S&&(s.currentTranslate=S),!t.allowSlidePrev&&"prev"===t.swipeDirection&&(s.currentTranslate??0)>S&&(s.currentTranslate=S),t.allowSlidePrev||t.allowSlideNext||(s.currentTranslate=S),i.threshold>0){if(!(Math.abs(m)>i.threshold||s.allowThresholdMove))return void(s.currentTranslate=s.startTranslate);if(!s.allowThresholdMove)return s.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,s.currentTranslate=s.startTranslate,void(r.diff=t.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}i.followFinger&&!i.cssMode&&((i.freeMode&&i.freeMode.enabled&&t.freeMode||i.watchSlidesProgress)&&(t.updateActiveIndex(),t.updateSlidesClasses()),i.freeMode&&i.freeMode.enabled&&t.freeMode&&t.freeMode.onTouchMove(),t.updateProgress(s.currentTranslate),t.setTranslate(s.currentTranslate??0))}function closestElement(e,t){return function t(s){if(!s||s===document||s===window)return null;let i=s;i.assignedSlot&&(i=i.assignedSlot);const r=i.closest(e);if(!r&&!i.getRootNode)return null;const n=i.getRootNode();return r||t(n.host)}(t)}function preventEdgeSwipe(e,t,s){const{params:i}=e,r=i.edgeSwipeDetection,n=i.edgeSwipeThreshold;return!r||!(s<=n||s>=window.innerWidth-n)||"prevent"===r&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this;if(t.destroyed)return;const s=e.originalEvent??e,i=t.touchEventsData;if("pointerdown"===s.type){const e=s;if(null!==i.pointerId&&i.pointerId!==e.pointerId)return;i.pointerId=e.pointerId}else"touchstart"===s.type&&1===s.targetTouches.length&&(i.touchId=s.targetTouches[0].identifier);if("touchstart"===s.type)return void preventEdgeSwipe(t,s,s.targetTouches[0].pageX);const{params:r,touches:n,enabled:a}=t;if(!a)return;if(!r.simulateTouch&&"mouse"===s.pointerType)return;if(t.animating&&r.preventInteractionOnTransition)return;!t.animating&&r.cssMode&&r.loop&&t.loopFix();let o=s.target;if("wrapper"===r.touchEventsTarget&&!elementIsChildOf(o,t.wrapperEl))return;const l=s;if("number"==typeof l.which&&3===l.which)return;if("number"==typeof l.button&&l.button>0)return;if(i.isTouched&&i.isMoved)return;const d=!!r.noSwipingClass&&""!==r.noSwipingClass,c=s.composedPath?s.composedPath():s.path;d&&s.target&&s.target.shadowRoot&&c&&(o=c[0]);const p=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,u=!(!s.target||!s.target.shadowRoot);if(r.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(r.swipeHandler&&"string"==typeof r.swipeHandler&&!o.closest(r.swipeHandler))return;const h=s;n.currentX=h.pageX,n.currentY=h.pageY;const m=n.currentX,f=n.currentY;if(!preventEdgeSwipe(t,s,m))return;Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=m,n.startY=f,i.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,r.threshold>0&&(i.allowThresholdMove=!1);let v=!0;o.matches(i.focusableElements)&&(v=!1,"SELECT"===o.nodeName&&(i.isTouched=!1)),document.activeElement&&document.activeElement.matches(i.focusableElements)&&document.activeElement!==o&&("mouse"===h.pointerType||"mouse"!==h.pointerType&&!o.matches(i.focusableElements))&&document.activeElement.blur();const g=v&&t.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!g||o.isContentEditable||s.preventDefault(),r.freeMode&&r.freeMode.enabled&&t.freeMode&&t.animating&&!r.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",s)}const events=(e,t)=>{const{params:s,el:i,wrapperEl:r,device:n}=e,a=!!s.nested,o="on"===t?"addEventListener":"removeEventListener",l=t;if(!i||"string"==typeof i)return;document[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:a}),i[o]("touchstart",e.onTouchStart,{passive:!1}),i[o]("pointerdown",e.onTouchStart,{passive:!1}),document[o]("touchmove",e.onTouchMove,{passive:!1,capture:a}),document[o]("pointermove",e.onTouchMove,{passive:!1,capture:a}),document[o]("touchend",e.onTouchEnd,{passive:!0}),document[o]("pointerup",e.onTouchEnd,{passive:!0}),document[o]("pointercancel",e.onTouchEnd,{passive:!0}),document[o]("touchcancel",e.onTouchEnd,{passive:!0}),document[o]("pointerout",e.onTouchEnd,{passive:!0}),document[o]("pointerleave",e.onTouchEnd,{passive:!0}),document[o]("contextmenu",e.onTouchEnd,{passive:!0}),(s.preventClicks||s.preventClicksPropagation)&&i[o]("click",e.onClick,!0),s.cssMode&&r[o]("scroll",e.onScroll);const d=t=>{e[l](t,onResize,!0)};s.updateOnWindowResize?d(n.ios||n.android?"resize orientationchange observerUpdate":"resize observerUpdate"):d("observerUpdate"),i[o]("load",e.onLoad,{capture:!0})};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function loopCreate(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual?.enabled)return;const n=()=>{elementChildren(r,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",String(t))})},a=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||a)&&(()=>{const e=elementChildren(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const o=i.slidesPerGroup*(a?i.grid.rows:1),l=s.slides.length%o!==0,d=a&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t<e;t+=1){const e=s.isElement?createElement("swiper-slide",[i.slideBlankClass]):createElement("div",[i.slideClass,i.slideBlankClass]);s.slidesEl.append(e)}};if(l){if(i.loopAddBlankSlides){c(o-s.slides.length%o),s.recalcSlides(),s.updateSlides()}else showWarning("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");n()}else if(d){if(i.loopAddBlankSlides){c(i.grid.rows-s.slides.length%i.grid.rows),s.recalcSlides(),s.updateSlides()}else showWarning("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");n()}else n();const p=i.centeredSlides||!!i.slidesOffsetBefore||!!i.slidesOffsetAfter;s.loopFix({slideRealIndex:e,direction:p?void 0:"next",initial:t})}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual?.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=e,s=void 0===t.swiperSlideIndex?Number(e.getAttribute("data-swiper-slide-index")):t.swiperSlideIndex;i[s]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}function loopFix(e={}){const{slideRealIndex:t,slideTo:s=!0,direction:i,setTranslate:r,activeSlideIndex:n,initial:a,byController:o,byMousewheel:l}=e;let d=n;const c=this;if(!c.params.loop)return;c.emit("beforeLoopFix");const{slides:p,allowSlidePrev:u,allowSlideNext:h,slidesEl:m,params:f}=c,{centeredSlides:v,slidesOffsetBefore:g,slidesOffsetAfter:w,initialSlide:S}=f,T=v||!!g||!!w;if(c.allowSlidePrev=!0,c.allowSlideNext=!0,c.virtual&&f.virtual?.enabled){if(s){const e=c.virtual.slides.length,t=c.virtual.slidesBefore??0;T||0!==c.snapIndex?T&&c.snapIndex<f.slidesPerView?c.slideTo(e+c.snapIndex,0,!1,!0):c.snapIndex===c.snapGrid.length-1&&c.slideTo(t,0,!1,!0):c.slideTo(e,0,!1,!0)}return c.allowSlidePrev=u,c.allowSlideNext=h,void c.emit("loopFix")}let b=f.slidesPerView;"auto"===b?b=c.slidesPerViewDynamic():(b=Math.ceil(parseFloat(String(f.slidesPerView))),T&&b%2==0&&(b+=1));const x=f.slidesPerGroupAuto?b:f.slidesPerGroup;let y=T?Math.max(x,Math.ceil(b/2)):x;y%x!==0&&(y+=x-y%x),y+=f.loopAdditionalSlides,c.loopedSlides=y;const E=c.grid&&f.grid&&f.grid.rows>1;p.length<b+y||"cards"===c.params.effect&&p.length<b+2*y?showWarning("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):E&&"row"===f.grid.fill&&showWarning("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const C=[],P=[],M=E?Math.ceil(p.length/f.grid.rows):p.length,k=a&&M-S<b&&!T;let I=k?S:c.activeIndex;void 0===d?d=c.getSlideIndex(p.find(e=>e.classList.contains(f.slideActiveClass))):I=d;const L="next"===i||!i,z="prev"===i||!i;let O=0,A=0;const G=(E?p[d].column??0:d)+(T&&void 0===r?-b/2+.5:0);if(G<y){O=Math.max(y-G,x);for(let e=0;e<y-G;e+=1){const t=e-Math.floor(e/M)*M;if(E){const e=M-t-1;for(let t=p.length-1;t>=0;t-=1)p[t].column===e&&C.push(t)}else C.push(M-t-1)}}else if(G+b>M-y){A=Math.max(G-(M-2*y),x),k&&(A=Math.max(A,b-M+S+1));for(let e=0;e<A;e+=1){const t=e-Math.floor(e/M)*M;E?p.forEach((e,s)=>{e.column===t&&P.push(s)}):P.push(t)}}if(c.__preventObserver__=!0,requestAnimationFrame(()=>{c.__preventObserver__=!1}),"cards"===c.params.effect&&p.length<b+2*y&&(P.includes(d)&&P.splice(P.indexOf(d),1),C.includes(d)&&C.splice(C.indexOf(d),1)),z&&C.forEach(e=>{const t=p[e];t.swiperLoopMoveDOM=!0,m.prepend(t),t.swiperLoopMoveDOM=!1}),L&&P.forEach(e=>{const t=p[e];t.swiperLoopMoveDOM=!0,m.append(t),t.swiperLoopMoveDOM=!1}),c.recalcSlides(),"auto"===f.slidesPerView?c.updateSlides():E&&(C.length>0&&z||P.length>0&&L)&&c.slides.forEach((e,t)=>{c.grid.updateSlide(t,e,c.slides)}),f.watchSlidesProgress&&c.updateSlidesOffset(),s)if(C.length>0&&z){if(void 0===t){const e=c.slidesGrid[I],t=c.slidesGrid[I+O]-e;l?c.setTranslate(c.translate-t):(c.slideTo(I+Math.ceil(O),0,!1,!0),r&&(c.touchEventsData.startTranslate=c.touchEventsData.startTranslate-t,c.touchEventsData.currentTranslate=c.touchEventsData.currentTranslate-t))}else if(r){const e=E?C.length/f.grid.rows:C.length;c.slideTo(c.activeIndex+e,0,!1,!0),c.touchEventsData.currentTranslate=c.translate}}else if(P.length>0&&L)if(void 0===t){const e=c.slidesGrid[I],t=c.slidesGrid[I-A]-e;l?c.setTranslate(c.translate-t):(c.slideTo(I-A,0,!1,!0),r&&(c.touchEventsData.startTranslate=c.touchEventsData.startTranslate-t,c.touchEventsData.currentTranslate=c.touchEventsData.currentTranslate-t))}else{const e=E?P.length/f.grid.rows:P.length;c.slideTo(c.activeIndex-e,0,!1,!0)}c.allowSlidePrev=u,c.allowSlideNext=h;const D=c.controller?.control;if(D&&!o){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:d,byController:!0};Array.isArray(D)?D.forEach(t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})}):D instanceof c.constructor&&D.params.loop&&D.loopFix({...e,slideTo:D.params.slidesPerView===f.slidesPerView&&s})}c.emit("loopFix")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function moduleExtendParams(e,t){return function(s={}){const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const Observer=({swiper:e,extendParams:t,on:s})=>{const i=[],r=(t,s={})=>{const r=window.MutationObserver||window.WebkitMutationObserver;if(!r)return;const n=new r(t=>{if(e.__preventObserver__)return;if(1===t.length)return void e.emit("observerUpdate",t[0]);const s=function(){e.emit("observerUpdate",t[0])};window.requestAnimationFrame?window.requestAnimationFrame(s):window.setTimeout(s,0)});n.observe(t,{attributes:void 0===s.attributes||s.attributes,childList:e.isElement||void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),i.push(n)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",()=>{if(e.params.observer){if(e.params.observeParents){const t=elementParents(e.hostEl);for(let e=0;e<t.length;e+=1)r(t[e])}r(e.hostEl,{childList:e.params.observeSlideChildren}),r(e.wrapperEl,{attributes:!1})}}),s("destroy",()=>{i.forEach(e=>{e.disconnect()}),i.splice(0,i.length)})},Resize=({swiper:e,on:t,emit:s})=>{let i=null,r=null;const n=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},a=()=>{e&&!e.destroyed&&e.initialized&&s("orientationchange")};t("init",()=>{e.params.resizeObserver&&void 0!==window.ResizeObserver?e&&!e.destroyed&&e.initialized&&(i=new ResizeObserver(t=>{r=window.requestAnimationFrame(()=>{const{width:s,height:i}=e;let r=s,a=i;t.forEach(({contentBoxSize:t,contentRect:s,target:i})=>{if(i&&i!==e.el)return;const n=Array.isArray(t)?t[0]:t;r=s?s.width:n.inlineSize,a=s?s.height:n.blockSize}),r===s&&a===i||n()})}),i.observe(e.el)):(window.addEventListener("resize",n),window.addEventListener("orientationchange",a))}),t("destroy",()=>{r&&window.cancelAnimationFrame(r),i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),window.removeEventListener("resize",n),window.removeEventListener("orientationchange",a)})};function slideNext(e,t=!0,s){const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex<n.slidesPerGroupSkip?1:o,d=i.virtual&&n.virtual?.enabled;if(n.loop){if(a&&!d&&n.loopPreventsSliding)return!1;if(i.loopFix({direction:"next"}),i._clientLeft=i.wrapperEl.clientLeft,i.activeIndex===i.slides.length-1&&n.cssMode)return requestAnimationFrame(()=>{i.slideTo(i.activeIndex+l,e,t,s)}),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)}function slidePrev(e,t=!0,s){const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual?.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map(e=>p(e)),m=r.freeMode&&r.freeMode.enabled;let f=n[h.indexOf(u)-1];if(void 0===f&&(r.cssMode||m)){let e;n.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=m?n[e]:n[e>0?e-1:e])}let v=0;if(void 0!==f&&(v=a.indexOf(f),v<0&&(v=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(v=v-i.slidesPerViewDynamic("previous",!0)+1,v=Math.max(v,0))),r.rewind&&i.isBeginning){const r=i.params.virtual?.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{i.slideTo(v,e,t,s)}),!0):i.slideTo(v,e,t,s)}function slideReset(e,t=!0,s){const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)}function slideTo(e=0,t,s=!0,i,r){"string"==typeof e&&(e=parseInt(e,10));const n=this;let a=e;a<0&&(a=0);const{params:o,snapGrid:l,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:u,wrapperEl:h,enabled:m}=n;if(!m&&!i&&!r||n.destroyed||n.animating&&o.preventInteractionOnTransition)return!1;void 0===t&&(t=n.params.speed);const f=Math.min(n.params.slidesPerGroupSkip,a);let v=f+Math.floor((a-f)/n.params.slidesPerGroup);v>=l.length&&(v=l.length-1);const g=-l[v];if(o.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*g),s=Math.floor(100*d[e]),i=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<i-(i-s)/2?a=e:t>=s&&t<i&&(a=e+1):t>=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():g<n.translate&&g<n.minTranslate()))return!1;if(!n.allowSlidePrev&&g>n.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a<p?"prev":"reset";const S=n.virtual&&n.params.virtual?.enabled;if(!(S&&r)&&(u&&-g===n.translate||!u&&g===n.translate))return n.updateActiveIndex(a),o.autoHeight&&n.updateAutoHeight(),n.updateSlidesClasses(),"slide"!==o.effect&&n.setTranslate(g),"reset"!==w&&(n.transitionStart(s,w),n.transitionEnd(s,w)),!1;if(o.cssMode){const e=n.isHorizontal(),s=u?g:-g;return 0===t?(S&&(n.wrapperEl.style.scrollSnapType="none",n._immediateVirtual=!0),S&&!n._cssModeVirtualInitialSet&&(n.params.initialSlide??0)>0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=s})):h[e?"scrollLeft":"scrollTop"]=s,S&&requestAnimationFrame(()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1})):h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"}),!0}const T=getBrowser().isSafari;return S&&!r&&T&&n.isElement&&n.virtual.update(!1,!1,a),n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.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 slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s,clickedSlide:i,clickedIndex:r}=e;if(void 0===i||void 0===r)return;const n="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,o=e.getSlideIndexWhenGrid(r);const l=e.isElement?"swiper-slide":`.${t.slideClass}`,d=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;a=parseInt(i.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(a):o>(d?(e.slides.length-n)/2-(e.params.grid.rows-1):e.slides.length-n)?(e.loopFix(),o=e.getSlideIndex(elementChildren(s,`${l}[data-swiper-slide-index="${a}"]`)[0]),nextTick(()=>{e.slideTo(o)})):e.slideTo(o)}else e.slideTo(o)}function slideToClosest(e,t=!0,s,i=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToLoop(e=0,t,s=!0,i){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual?.enabled)a+=r.virtual.slidesBefore??0;else{let e;if(n){const t=a*r.params.grid.rows,s=r.slides.find(e=>Number(e.getAttribute("data-swiper-slide-index"))===t);e=s?.column??0}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s,slidesOffsetBefore:o,slidesOffsetAfter:l}=r.params,d=s||!!o||!!l;let c;"auto"===r.params.slidesPerView?c=r.slidesPerViewDynamic():(c=Math.ceil(parseFloat(String(r.params.slidesPerView))),d&&c%2==0&&(c+=1));let p=t-e<c;if(d&&(p=p||e<Math.ceil(c/2)),i&&d&&"auto"!==r.params.slidesPerView&&!n&&(p=!1),p){const s=d?e<r.activeIndex?"prev":"next":e-r.activeIndex-1<r.params.slidesPerView?"next":"prev";r.loopFix({direction:s,slideTo:!0,activeSlideIndex:"next"===s?e+1:e-t+1,slideRealIndex:"next"===s?r.realIndex:void 0})}if(n){const e=a*r.params.grid.rows,t=r.slides.find(t=>Number(t.getAttribute("data-swiper-slide-index"))===e);a=t?.column??0}else a=r.getSlideIndexByData(a)}return requestAnimationFrame(()=>{r.slideTo(a,t,s,i)}),r}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function setTransition(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)}function transitionEmit({swiper:e,runCallbacks:t,direction:s,step:i}){const{activeIndex:r,previousIndex:n}=e;let a=s;a||(a=r>n?"next":r<n?"prev":"reset"),e.emit(`transition${i}`),t&&"reset"===a?e.emit(`slideResetTransition${i}`):t&&r!==n&&(e.emit(`slideChangeTransition${i}`),"next"===a?e.emit(`slideNextTransition${i}`):e.emit(`slidePrevTransition${i}`))}function transitionEnd(e=!0,t){const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),transitionEmit({swiper:s,runCallbacks:e,direction:t,step:"End"}))}function transitionStart(e=!0,t){const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),transitionEmit({swiper:s,runCallbacks:e,direction:t,step:"Start"}))}var transition={setTransition:setTransition,transitionStart:transitionStart,transitionEnd:transitionEnd};function getSwiperTranslate(e=(this.isHorizontal()?"x":"y")){const{params:t,rtlTranslate:s,translate:i,wrapperEl:r}=this;if(t.virtualTranslate)return s?-i:i;if(t.cssMode)return i;let n=getTranslate(r,e);return n+=this.cssOverflowAdjustment(),s&&(n=-n),n||0}function maxTranslate(){return-this.snapGrid[this.snapGrid.length-1]}function minTranslate(){return-this.snapGrid[0]}function setTranslate(e,t){const s=this,{rtlTranslate:i,params:r,wrapperEl:n,progress:a}=s;let o=0,l=0;let d;s.isHorizontal()?o=i?-e:e:l=e,r.roundLengths&&(o=Math.floor(o),l=Math.floor(l)),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?o:l,r.cssMode?n[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-o:-l:r.virtualTranslate||(s.isHorizontal()?o-=s.cssOverflowAdjustment():l-=s.cssOverflowAdjustment(),n.style.transform=`translate3d(${o}px, ${l}px, 0px)`);const c=s.maxTranslate()-s.minTranslate();d=0===c?0:(e-s.minTranslate())/c,d!==a&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)}function translateTo(e=0,t=this.params.speed,s=!0,i=!0,r){const n=this,{params:a,wrapperEl:o}=n;if(n.animating&&a.preventInteractionOnTransition)return!1;const l=n.minTranslate(),d=n.maxTranslate();let c;if(c=i&&e>l?l:i&&e<d?d:e,n.updateProgress(c),a.cssMode){const e=n.isHorizontal();return 0===t?o[e?"scrollLeft":"scrollTop"]=-c:o.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"}),!0}return 0===t?(n.setTransition(0),n.setTranslate(c),s&&(n.emit("beforeTransitionStart",t,r),n.emit("transitionEnd"))):(n.setTransition(t),n.setTranslate(c),s&&(n.emit("beforeTransitionStart",t,r),n.emit("transitionStart")),n.animating||(n.animating=!0,n.onTranslateToWrapperTransitionEnd||(n.onTranslateToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onTranslateToWrapperTransitionEnd),n.onTranslateToWrapperTransitionEnd=null,delete n.onTranslateToWrapperTransitionEnd,n.animating=!1,s&&n.emit("transitionEnd"))}),n.wrapperEl.addEventListener("transitionend",n.onTranslateToWrapperTransitionEnd))),!0}var translate={getTranslate:getSwiperTranslate,setTranslate:setTranslate,minTranslate:minTranslate,maxTranslate:maxTranslate,translateTo:translateTo};function getActiveIndexByTranslate(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e<t.length;e+=1)void 0!==t[e+1]?i>=t[e]&&i<t[e+1]-(t[e+1]-t[e])/2?r=e:i>=t[e]&&i<t[e+1]&&(r=e+1):i>=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{const s=t.virtual.slides;let i=e-(t.virtual.slidesBefore??0);return i<0&&(i=s.length+i),i>=s.length&&(i-=s.length),i};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual?.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual?.enabled)u=r.loop?c(d):d;else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual?.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(r=0;r<Math.ceil(t.params.slidesPerView);r+=1){const e=t.activeIndex+r;if(e>t.slides.length&&!i)break;const n=a(e);n&&s.push(n)}else{const e=a(t.activeIndex);e&&s.push(e)}for(r=0;r<s.length;r+=1)if(void 0!==s[r]){const e=s[r].offsetHeight;n=e>n?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)});let n,a=!1;if(r)for(let e=0;e<s.slides.length;e+=1)if(s.slides[e]===r){a=!0,n=e;break}if(!r||!a)return s.clickedSlide=void 0,void(s.clickedIndex=void 0);s.clickedSlide=r,s.virtual&&s.params.virtual?.enabled?s.clickedIndex=parseInt(r.getAttribute("data-swiper-slide-index"),10):s.clickedIndex=n,i.slideToClickedSlide&&void 0!==s.clickedIndex&&s.clickedIndex!==s.activeIndex&&s.slideToClickedSlide()}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a}=t,o=t.progressLoop;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||"0",10)-parseInt(elementStyle(i,"padding-right")||"0",10),s=s-parseInt(elementStyle(i,"padding-top")||"0",10)-parseInt(elementStyle(i,"padding-bottom")||"0",10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||"0")}const s=e.params,{wrapperEl:i,slidesEl:r,rtlTranslate:n,wrongRTL:a}=e,o=!(!e.virtual||!s.virtual?.enabled),l=o?e.virtual.slides.length:e.slides.length,d=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),c=o?e.virtual.slides.length:d.length;let p=[];const u=[],h=[],m=t=>"function"==typeof t?t.call(e):t,f=m(s.slidesOffsetBefore),v=m(s.slidesOffsetAfter),g=e.snapGrid.length,w=e.slidesGrid.length,S=e.size-f-v;let T=s.spaceBetween,b=-f,x=0,y=0;if(void 0===S)return;"string"==typeof T&&T.indexOf("%")>=0?T=parseFloat(T.replace("%",""))/100*S:"string"==typeof T&&(T=parseFloat(T)),e.virtualSize=-T-f-v,d.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after","")),s.cssMode&&(setCSSProperty(i,"--swiper-slides-offset-before",`${f}px`),setCSSProperty(i,"--swiper-slides-offset-after",`${v}px`));const E=s.grid&&s.grid.rows>1&&e.grid;E?e.grid.initSlides(d):e.grid&&e.grid.unsetSlides();let C=0;const P="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>{const t=s.breakpoints[e];return void 0!==t?.slidesPerView}).length>0;for(let i=0;i<c;i+=1){C=0;const r=d[i];if(!r||(E&&e.grid.updateSlide(i,r,d),"none"!==elementStyle(r,"display"))){if(o&&"auto"===s.slidesPerView)s.virtual?.slidesPerViewAutoSlideSize&&(C=s.virtual.slidesPerViewAutoSlideSize),C&&r&&(s.roundLengths&&(C=Math.floor(C)),r.style[e.getDirectionLabel("width")]=`${C}px`);else if("auto"===s.slidesPerVie