UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

13 lines (12 loc) 66.1 kB
/** * Swiper 14.0.0 * Most modern mobile touch slider and framework with hardware accelerated transitions * https://swiperjs.com * * Copyright 2014-2026 Vladimir Kharlampidi * * Released under the MIT License * * Released on: June 26, 2026 */ var Swiper=function(){"use strict";function e(e,t=0){return setTimeout(e,t)}function t(){return Date.now()}function s(e,t="x"){const s=function(e){return window.getComputedStyle(e,null)}(e),i=s.transform||s.webkitTransform;if(!i||"none"===i)return 0;const r=new DOMMatrixReadOnly(i);return"x"===t?r.m41:r.m42}function i(e){return"object"==typeof e&&null!==e&&e.constructor===Object&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function r(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!!e&&"object"==typeof e&&(1===e.nodeType||11===e.nodeType)}function n(e,...t){const s=Object(e);for(let e=0;e<t.length;e+=1){const a=t[e];if(null==a||r(a))continue;const o=a,l=Object.keys(Object(o)).filter(e=>"__proto__"!==e&&"constructor"!==e&&"prototype"!==e);for(const e of l){const t=Object.getOwnPropertyDescriptor(o,e);if(!t||!t.enumerable)continue;const r=o[e];i(s[e])&&i(r)?r.__swiper__?s[e]=r:n(s[e],r):!i(s[e])&&i(r)?(s[e]={},r.__swiper__?s[e]=r:n(s[e],r)):s[e]=r}}return s}function a(e,t,s){e.style.setProperty(t,s)}function o(e,t=""){const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter(e=>e.matches(t)):s}function l(e){try{console.warn(e)}catch{}}function d(e,t=[]){const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}(t)),s}function c(e,t){return window.getComputedStyle(e,null).getPropertyValue(t)}function p(e){if(e&&e.parentNode)return[...e.parentNode.children].indexOf(e)}function u(e,t,s){{const s=window.getComputedStyle(e,null);return e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(s.getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(s.getPropertyValue("width"===t?"margin-left":"margin-bottom"))}}let f,h,m;function g(){return f||(f="undefined"==typeof window?{touch:!1}:{touch:"ontouchstart"in window||navigator.maxTouchPoints>0}),f}function v(e={}){return h||(h=function({userAgent:e}={}){if("undefined"==typeof window)return{ios:!1,android:!1};const t=g(),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}(e)),h}function w(){return m||(m=function(){if("undefined"==typeof window)return{isSafari:!1,isWebView:!1,need3dFix:!1};const e=v(),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}}()),m}const S=(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()}},T=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},b=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)&&T(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)&&T(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)&&T(e,i)};const y=(e,t)=>!!(e.grid&&t.grid&&t.grid.rows>1);var x={setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,a=i.breakpoints;if(!a||a&&0===Object.keys(a).length)return;const o="window"!==i.breakpointsBase&&i.breakpointsBase?"container":i.breakpointsBase,l=["window","container"].includes(i.breakpointsBase)||!i.breakpointsBase?e.el:document.querySelector(i.breakpointsBase),d=e.getBreakpoint(a,o,l);if(!d||e.currentBreakpoint===d)return;const c=(d in a?a[d]:void 0)||e.originalParams,p=y(e,i),u=y(e,c),f=e.params.grabCursor,h=c.grabCursor,m=i.enabled;p&&!u?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!p&&u&&(r.classList.add(`${i.containerModifierClass}grid`),(c.grid.fill&&"column"===c.grid.fill||!c.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!h?e.unsetGrabCursor():!f&&h&&e.setGrabCursor();const g=(e,t)=>e[t];["navigation","pagination","scrollbar"].forEach(t=>{const s=g(c,t);if(void 0===s)return;const r=g(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=c.direction&&c.direction!==i.direction,w=i.loop&&(c.slidesPerView!==i.slidesPerView||v),S=i.loop;v&&s&&e.changeDirection(),n(e.params,c);const T=e.params.enabled,b=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!T?e.disable():!m&&T&&e.enable(),e.currentBreakpoint=d,e.emit("_beforeBreakpoint",c),s&&(w?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!S&&b?(e.loopCreate(t),e.updateSlides()):S&&!b&&e.loopDestroy()),e.emit("breakpoint",c)},getBreakpoint:function(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"}};var E={checkOverflow:function(){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 M={addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(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}(["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()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}};const P={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 C={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 I(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 L(){const e=this;e.destroyed||e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}function k(e){const t=this;t.destroyed||(S(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update())}function O(){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 z(){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 A(s){const i=this;if(i.destroyed)return;const r=i.touchEventsData;let n=s.originalEvent??s;if("touchend"===n.type||"touchcancel"===n.type){const e=[...n.changedTouches].find(e=>e.identifier===r.touchId);if(!e||e.identifier!==r.touchId)return}else{if(null!==r.touchId)return;if(n.pointerId!==r.pointerId)return}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(n.type)){if(!(["pointercancel","contextmenu"].includes(n.type)&&(i.browser.isSafari||i.browser.isWebView)))return}r.pointerId=null,r.touchId=null;const{params:a,touches:o,rtlTranslate:l,slidesGrid:d,enabled:c}=i;if(!c)return;if(!a.simulateTouch&&"mouse"===n.pointerType)return;if(r.allowTouchCallbacks&&i.emit("touchEnd",n),r.allowTouchCallbacks=!1,!r.isTouched)return r.isMoved&&a.grabCursor&&i.setGrabCursor(!1),r.isMoved=!1,void(r.startMoving=!1);a.grabCursor&&r.isMoved&&r.isTouched&&(!0===i.allowSlideNext||!0===i.allowSlidePrev)&&i.setGrabCursor(!1);const p=t(),u=p-r.touchStartTime;if(i.allowClick){const e=n.path??(n.composedPath&&n.composedPath());i.updateClickedSlide(e&&e[0],e),i.emit("tap click",n),u<300&&p-r.lastClickTime<300&&i.emit("doubleTap doubleClick",n)}if(r.lastClickTime=t(),e(()=>{i.destroyed||(i.allowClick=!0)}),!r.isTouched||!r.isMoved||!i.swipeDirection||0===o.diff&&!r.loopSwapReset||r.currentTranslate===r.startTranslate&&!r.loopSwapReset)return r.isTouched=!1,r.isMoved=!1,void(r.startMoving=!1);let f;if(r.isTouched=!1,r.isMoved=!1,r.startMoving=!1,f=a.followFinger?l?i.translate:-i.translate:-(r.currentTranslate??0),a.cssMode)return;if(a.freeMode&&a.freeMode.enabled)return void i.freeMode.onTouchEnd({currentPos:f});const h=f>=-i.maxTranslate()&&!i.params.loop;let m=0,g=i.slidesSizesGrid[0];for(let e=0;e<d.length;e+=e<a.slidesPerGroupSkip?1:a.slidesPerGroup){const t=e<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;void 0!==d[e+t]?(h||f>=d[e]&&f<d[e+t])&&(m=e,g=d[e+t]-d[e]):(h||f>=d[e])&&(m=e,g=d[d.length-1]-d[d.length-2])}let v=null,w=null;a.rewind&&(i.isBeginning?w=a.virtual?.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1:i.isEnd&&(v=0));const S=(f-d[m])/g,T=m<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;if(u>a.longSwipesMs){if(!a.longSwipes)return void i.slideTo(i.activeIndex);"next"===i.swipeDirection&&(S>=a.longSwipesRatio?i.slideTo(a.rewind&&i.isEnd?v:m+T):i.slideTo(m)),"prev"===i.swipeDirection&&(S>1-a.longSwipesRatio?i.slideTo(m+T):null!==w&&S<0&&Math.abs(S)>a.longSwipesRatio?i.slideTo(w):i.slideTo(m))}else{if(!a.shortSwipes)return void i.slideTo(i.activeIndex);i.navigation&&(n.target===i.navigation.nextEl||n.target===i.navigation.prevEl)?n.target===i.navigation.nextEl?i.slideTo(m+T):i.slideTo(m):("next"===i.swipeDirection&&i.slideTo(null!==v?v:m+T),"prev"===i.swipeDirection&&i.slideTo(null!==w?w:m))}}function G(e){const s=this;if(s.destroyed)return;const i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:o}=s;if(!o)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;const l=e,d=l.originalEvent??l;if("pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}let c;if("touchmove"===d.type){const e=[...d.changedTouches].find(e=>e.identifier===i.touchId);if(!e||e.identifier!==i.touchId)return;c=e}else c=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const p=c.pageX,u=c.pageY;if(d.preventedByNestedSwiper)return n.startX=p,void(n.startY=u);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:p,startY:u,currentX:p,currentY:u}),i.touchStartTime=t()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(u<n.startY&&s.translate<=s.maxTranslate()||u>n.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else{if(a&&(p>n.startX&&-s.translate<=s.maxTranslate()||p<n.startX&&-s.translate>=s.minTranslate()))return;if(!a&&(p<n.startX&&s.translate<=s.maxTranslate()||p>n.startX&&s.translate>=s.minTranslate()))return}if(document.activeElement&&document.activeElement.matches(i.focusableElements)&&document.activeElement!==d.target&&"mouse"!==d.pointerType&&document.activeElement.blur(),document.activeElement&&d.target===document.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=p,n.currentY=u;const f=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+h**2)<s.params.threshold)return;if(void 0===i.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?i.isScrolling=!1:f*f+h*h>=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===d.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?f:h,g=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),g=Math.abs(g)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,g=-g);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const w=s.params.loop&&!r.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(w&&S&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),!1!==r._loopSwapReset&&i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&w&&S&&Math.abs(m)>=1)return Object.assign(n,{startX:p,startY:u,currentX:p,currentY:u,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0;const T=i.startTranslate??0;i.currentTranslate=m+T;let b=!0,y=r.resistanceRatio;if(r.touchReleaseOnEdges&&(y=0),m>0?(w&&S&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(b=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+T+m)**y))):m<0&&(w&&S&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(String(r.slidesPerView))))}),i.currentTranslate<s.maxTranslate()&&(b=!1,r.resistance&&(i.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-T-m)**y))),b&&(d.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&(i.currentTranslate??0)<T&&(i.currentTranslate=T),!s.allowSlidePrev&&"prev"===s.swipeDirection&&(i.currentTranslate??0)>T&&(i.currentTranslate=T),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=T),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate??0))}function D(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 _(e){const s=this;if(s.destroyed)return;const i=e.originalEvent??e,r=s.touchEventsData;if("pointerdown"===i.type){const e=i;if(null!==r.pointerId&&r.pointerId!==e.pointerId)return;r.pointerId=e.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void D(s,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:o}=s;if(!o)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(s.animating&&n.preventInteractionOnTransition)return;!s.animating&&n.cssMode&&n.loop&&s.loopFix();let l=i.target;if("wrapper"===n.touchEventsTarget&&!function(e,t){let s=t.contains(e);!s&&t instanceof HTMLSlotElement&&(s=[...t.assignedElements()].includes(e),s||(s=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}return!1}(e,t)));return s}(l,s.wrapperEl))return;const d=i;if("number"==typeof d.which&&3===d.which)return;if("number"==typeof d.button&&d.button>0)return;if(r.isTouched&&r.isMoved)return;const c=!!n.noSwipingClass&&""!==n.noSwipingClass,p=i.composedPath?i.composedPath():i.path;c&&i.target&&i.target.shadowRoot&&p&&(l=p[0]);const u=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(f?(h=u,function e(t){if(!t||t===document||t===window)return null;let s=t;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(h);if(!i&&!s.getRootNode)return null;const r=s.getRootNode();return i||e(r.host)}(l)):l.closest(u)))return void(s.allowClick=!0);var h;if(n.swipeHandler&&"string"==typeof n.swipeHandler&&!l.closest(n.swipeHandler))return;const m=i;a.currentX=m.pageX,a.currentY=m.pageY;const g=a.currentX,v=a.currentY;if(!D(s,i,g))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=g,a.startY=v,r.touchStartTime=t(),s.allowClick=!0,s.updateSize(),s.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let w=!0;l.matches(r.focusableElements)&&(w=!1,"SELECT"===l.nodeName&&(r.isTouched=!1)),document.activeElement&&document.activeElement.matches(r.focusableElements)&&document.activeElement!==l&&("mouse"===m.pointerType||"mouse"!==m.pointerType&&!l.matches(r.focusableElements))&&document.activeElement.blur();const S=w&&s.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!S||l.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.animating&&!n.cssMode&&s.freeMode.onTouchStart(),s.emit("touchStart",i)}const V=(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,O,!0)};s.updateOnWindowResize?d(n.ios||n.android?"resize orientationchange observerUpdate":"resize observerUpdate"):d("observerUpdate"),i[o]("load",e.onLoad,{capture:!0})};var B={loopCreate:function(e,t){const s=this,{params:i,slidesEl:r}=s;if(!i.loop||s.virtual&&s.params.virtual?.enabled)return;const n=()=>{o(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=o(r,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const c=i.slidesPerGroup*(a?i.grid.rows:1),p=s.slides.length%c!==0,u=a&&s.slides.length%i.grid.rows!==0,f=e=>{for(let t=0;t<e;t+=1){const e=s.isElement?d("swiper-slide",[i.slideBlankClass]):d("div",[i.slideClass,i.slideBlankClass]);s.slidesEl.append(e)}};if(p){if(i.loopAddBlankSlides){f(c-s.slides.length%c),s.recalcSlides(),s.updateSlides()}else l("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(u){if(i.loopAddBlankSlides){f(i.grid.rows-s.slides.length%i.grid.rows),s.recalcSlides(),s.updateSlides()}else l("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 h=i.centeredSlides||!!i.slidesOffsetBefore||!!i.slidesOffsetAfter;s.loopFix({slideRealIndex:e,direction:h?void 0:"next",initial:t})},loopFix:function(e={}){const{slideRealIndex:t,slideTo:s=!0,direction:i,setTranslate:r,activeSlideIndex:n,initial:a,byController:o,byMousewheel:d}=e;let c=n;const p=this;if(!p.params.loop)return;p.emit("beforeLoopFix");const{slides:u,allowSlidePrev:f,allowSlideNext:h,slidesEl:m,params:g}=p,{centeredSlides:v,slidesOffsetBefore:w,slidesOffsetAfter:S,initialSlide:T}=g,b=v||!!w||!!S;if(p.allowSlidePrev=!0,p.allowSlideNext=!0,p.virtual&&g.virtual?.enabled){if(s){const e=p.virtual.slides.length,t=p.virtual.slidesBefore??0;b||0!==p.snapIndex?b&&p.snapIndex<g.slidesPerView?p.slideTo(e+p.snapIndex,0,!1,!0):p.snapIndex===p.snapGrid.length-1&&p.slideTo(t,0,!1,!0):p.slideTo(e,0,!1,!0)}return p.allowSlidePrev=f,p.allowSlideNext=h,void p.emit("loopFix")}let y=g.slidesPerView;"auto"===y?y=p.slidesPerViewDynamic():(y=Math.ceil(parseFloat(String(g.slidesPerView))),b&&y%2==0&&(y+=1));const x=g.slidesPerGroupAuto?y:g.slidesPerGroup;let E=b?Math.max(x,Math.ceil(y/2)):x;E%x!==0&&(E+=x-E%x),E+=g.loopAdditionalSlides,p.loopedSlides=E;const M=p.grid&&g.grid&&g.grid.rows>1;u.length<y+E||"cards"===p.params.effect&&u.length<y+2*E?l("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"):M&&"row"===g.grid.fill&&l("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const P=[],C=[],I=M?Math.ceil(u.length/g.grid.rows):u.length,L=a&&I-T<y&&!b;let k=L?T:p.activeIndex;void 0===c?c=p.getSlideIndex(u.find(e=>e.classList.contains(g.slideActiveClass))):k=c;const O="next"===i||!i,z="prev"===i||!i;let A=0,G=0;const D=(M?u[c].column??0:c)+(b&&void 0===r?-y/2+.5:0);if(D<E){A=Math.max(E-D,x);for(let e=0;e<E-D;e+=1){const t=e-Math.floor(e/I)*I;if(M){const e=I-t-1;for(let t=u.length-1;t>=0;t-=1)u[t].column===e&&P.push(t)}else P.push(I-t-1)}}else if(D+y>I-E){G=Math.max(D-(I-2*E),x),L&&(G=Math.max(G,y-I+T+1));for(let e=0;e<G;e+=1){const t=e-Math.floor(e/I)*I;M?u.forEach((e,s)=>{e.column===t&&C.push(s)}):C.push(t)}}if(p.__preventObserver__=!0,requestAnimationFrame(()=>{p.__preventObserver__=!1}),"cards"===p.params.effect&&u.length<y+2*E&&(C.includes(c)&&C.splice(C.indexOf(c),1),P.includes(c)&&P.splice(P.indexOf(c),1)),z&&P.forEach(e=>{const t=u[e];t.swiperLoopMoveDOM=!0,m.prepend(t),t.swiperLoopMoveDOM=!1}),O&&C.forEach(e=>{const t=u[e];t.swiperLoopMoveDOM=!0,m.append(t),t.swiperLoopMoveDOM=!1}),p.recalcSlides(),"auto"===g.slidesPerView?p.updateSlides():M&&(P.length>0&&z||C.length>0&&O)&&p.slides.forEach((e,t)=>{p.grid.updateSlide(t,e,p.slides)}),g.watchSlidesProgress&&p.updateSlidesOffset(),s)if(P.length>0&&z){if(void 0===t){const e=p.slidesGrid[k],t=p.slidesGrid[k+A]-e;d?p.setTranslate(p.translate-t):(p.slideTo(k+Math.ceil(A),0,!1,!0),r&&(p.touchEventsData.startTranslate=p.touchEventsData.startTranslate-t,p.touchEventsData.currentTranslate=p.touchEventsData.currentTranslate-t))}else if(r){const e=M?P.length/g.grid.rows:P.length;p.slideTo(p.activeIndex+e,0,!1,!0),p.touchEventsData.currentTranslate=p.translate}}else if(C.length>0&&O)if(void 0===t){const e=p.slidesGrid[k],t=p.slidesGrid[k-G]-e;d?p.setTranslate(p.translate-t):(p.slideTo(k-G,0,!1,!0),r&&(p.touchEventsData.startTranslate=p.touchEventsData.startTranslate-t,p.touchEventsData.currentTranslate=p.touchEventsData.currentTranslate-t))}else{const e=M?C.length/g.grid.rows:C.length;p.slideTo(p.activeIndex-e,0,!1,!0)}p.allowSlidePrev=f,p.allowSlideNext=h;const _=p.controller?.control;if(_&&!o){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:c,byController:!0};Array.isArray(_)?_.forEach(t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===g.slidesPerView&&s})}):_ instanceof p.constructor&&_.params.loop&&_.loopFix({...e,slideTo:_.params.slidesPerView===g.slidesPerView&&s})}p.emit("loopFix")},loopDestroy:function(){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 N(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}),n(t,s)):n(t,s)):n(t,s)}}var H={slideTo:function(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:f,enabled:h}=n;if(!h&&!i&&!r||n.destroyed||n.animating&&o.preventInteractionOnTransition)return!1;void 0===t&&(t=n.params.speed);const m=Math.min(n.params.slidesPerGroupSkip,a);let g=m+Math.floor((a-m)/n.params.slidesPerGroup);g>=l.length&&(g=l.length-1);const v=-l[g];if(o.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*v),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?v>n.translate&&v>n.minTranslate():v<n.translate&&v<n.minTranslate()))return!1;if(!n.allowSlidePrev&&v>n.translate&&v>n.maxTranslate()&&(p||0)!==a)return!1}let S;a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(v),S=a>p?"next":a<p?"prev":"reset";const T=n.virtual&&n.params.virtual?.enabled;if(!(T&&r)&&(u&&-v===n.translate||!u&&v===n.translate))return n.updateActiveIndex(a),o.autoHeight&&n.updateAutoHeight(),n.updateSlidesClasses(),"slide"!==o.effect&&n.setTranslate(v),"reset"!==S&&(n.transitionStart(s,S),n.transitionEnd(s,S)),!1;if(o.cssMode){const e=n.isHorizontal(),s=u?v:-v;return 0===t?(T&&(n.wrapperEl.style.scrollSnapType="none",n._immediateVirtual=!0),T&&!n._cssModeVirtualInitialSet&&(n.params.initialSlide??0)>0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{f[e?"scrollLeft":"scrollTop"]=s})):f[e?"scrollLeft":"scrollTop"]=s,T&&requestAnimationFrame(()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1})):f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"}),!0}const b=w().isSafari;return T&&!r&&b&&n.isElement&&n.virtual.update(!1,!1,a),n.setTransition(t),n.setTranslate(v),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):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,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(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},slideNext:function(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)},slidePrev:function(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),f=n.map(e=>p(e)),h=r.freeMode&&r.freeMode.enabled;let m=n[f.indexOf(u)-1];if(void 0===m&&(r.cssMode||h)){let e;n.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(m=h?n[e]:n[e>0?e-1:e])}let g=0;if(void 0!==m&&(g=a.indexOf(m),g<0&&(g=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,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(g,e,t,s)}),!0):i.slideTo(g,e,t,s)},slideReset:function(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)},slideToClosest:function(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)},slideToClickedSlide:function(){const t=this;if(t.destroyed)return;const{params:s,slidesEl:i,clickedSlide:r,clickedIndex:n}=t;if(void 0===r||void 0===n)return;const a="auto"===s.slidesPerView?t.slidesPerViewDynamic():s.slidesPerView;let l,d=t.getSlideIndexWhenGrid(n);const c=t.isElement?"swiper-slide":`.${s.slideClass}`,p=t.grid&&t.params.grid&&t.params.grid.rows>1;if(s.loop){if(t.animating)return;l=parseInt(r.getAttribute("data-swiper-slide-index"),10),s.centeredSlides?t.slideToLoop(l):d>(p?(t.slides.length-a)/2-(t.params.grid.rows-1):t.slides.length-a)?(t.loopFix(),d=t.getSlideIndex(o(i,`${c}[data-swiper-slide-index="${l}"]`)[0]),e(()=>{t.slideTo(d)})):t.slideTo(d)}else t.slideTo(d)}};function $({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}`))}var F={getTranslate:function(e=(this.isHorizontal()?"x":"y")){const{params:t,rtlTranslate:i,translate:r,wrapperEl:n}=this;if(t.virtualTranslate)return i?-r:r;if(t.cssMode)return r;let a=s(n,e);return a+=this.cssOverflowAdjustment(),i&&(a=-a),a||0},setTranslate:function(e,t){const s=this,{rtlTranslate:i,params:r,wrapperEl:n,progress:a}=s;let o,l=0,d=0;s.isHorizontal()?l=i?-e:e:d=e,r.roundLengths&&(l=Math.floor(l),d=Math.floor(d)),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?l:d,r.cssMode?n[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-l:-d:r.virtualTranslate||(s.isHorizontal()?l-=s.cssOverflowAdjustment():d-=s.cssOverflowAdjustment(),n.style.transform=`translate3d(${l}px, ${d}px, 0px)`);const c=s.maxTranslate()-s.minTranslate();o=0===c?0:(e-s.minTranslate())/c,o!==a&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(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}};const R=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const j=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};var W={updateSize:function(){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(c(i,"padding-left")||"0",10)-parseInt(c(i,"padding-right")||"0",10),s=s-parseInt(c(i,"padding-top")||"0",10)-parseInt(c(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}))},updateSlides:function(){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:l}=e,d=!(!e.virtual||!s.virtual?.enabled),p=d?e.virtual.slides.length:e.slides.length,f=o(r,`.${e.params.slideClass}, swiper-slide`),h=d?e.virtual.slides.length:f.length;let m=[];const g=[],v=[],w=t=>"function"==typeof t?t.call(e):t,S=w(s.slidesOffsetBefore),T=w(s.slidesOffsetAfter),b=e.snapGrid.length,y=e.slidesGrid.length,x=e.size-S-T;let E=s.spaceBetween,M=-S,P=0,C=0;if(void 0===x)return;"string"==typeof E&&E.indexOf("%")>=0?E=parseFloat(E.replace("%",""))/100*x:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E-S-T,f.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(a(i,"--swiper-centered-offset-before",""),a(i,"--swiper-centered-offset-after","")),s.cssMode&&(a(i,"--swiper-slides-offset-before",`${S}px`),a(i,"--swiper-slides-offset-after",`${T}px`));const I=s.grid&&s.grid.rows>1&&e.grid;I?e.grid.initSlides(f):e.grid&&e.grid.unsetSlides();let L=0;const k="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<h;i+=1){L=0;const r=f[i];if(!r||(I&&e.grid.updateSlide(i,r,f),"none"!==c(r,"display"))){if(d&&"auto"===s.slidesPerView)s.virtual?.slidesPerViewAutoSlideSize&&(L=s.virtual.slidesPerViewAutoSlideSize),L&&r&&(s.roundLengths&&(L=Math.floor(L)),r.style[e.getDirectionLabel("width")]=`${L}px`);else if("auto"===s.slidesPerView){k&&(r.style[e.getDirectionLabel("width")]="");const i=getComputedStyle(r),n=r.style.transform,a=r.style.webkitTransform;if(n&&(r.style.transform="none"),a&&(r.style.webkitTransform="none"),s.roundLengths)L=e.isHorizontal()?u(r,"width"):u(r,"height");else{const e=t(i,"width"),s=t(i,"padding-left"),n=t(i,"padding-right"),a=t(i,"margin-left"),o=t(i,"margin-right"),l=i.getPropertyValue("box-sizing");if(l&&"border-box"===l)L=e+a+o;else{const{clientWidth:t,offsetWidth:i}=r;L=e+s+n+a+o+(i-t)}}n&&(r.style.transform=n),a&&(r.style.webkitTransform=a),s.roundLengths&&(L=Math.floor(L))}else L=(x-(s.slidesPerView-1)*E)/s.slidesPerView,s.roundLengths&&(L=Math.floor(L)),r&&(r.style[e.getDirectionLabel("width")]=`${L}px`);r&&(r.swiperSlideSize=L),v.push(L),s.centeredSlides?(M=M+L/2+P/2+E,0===P&&0!==i&&(M=M-x/2-E),0===i&&(M=M-x/2-E),Math.abs(M)<.001&&(M=0),s.roundLengths&&(M=Math.floor(M)),C%s.slidesPerGroup===0&&m.push(M),g.push(M)):(s.roundLengths&&(M=Math.floor(M)),(C-Math.min(e.params.slidesPerGroupSkip,C))%e.params.slidesPerGroup===0&&m.push(M),g.push(M),M=M+L+E),e.virtualSize+=L+E,P=L,C+=1}}if(e.virtualSize=Math.max(e.virtualSize,x)+T,n&&l&&("slide"===s.effect||"coverflow"===s.effect)&&(i.style.width=`${e.virtualSize+E}px`),s.setWrapperSize&&(i.style[e.getDirectionLabel("width")]=`${e.virtualSize+E}px`),I&&e.grid.updateWrapperSize(L,m),!s.centeredSlides){const t="auto"!==s.slidesPerView&&s.slidesPerView%1!=0,i=s.snapToSlideEdge&&!s.loop&&("auto"===s.slidesPerView||t);let r=m.length;if(i){let e;if("auto"===s.slidesPerView){e=1;let t=0;for(let s=v.length-1;s>=0&&(t+=v[s]+(s<v.length-1?E:0),t<=x);s-=1)e=v.length-s}else e=Math.floor(s.slidesPerView);r=Math.max(h-e,0)}const n=[];for(let t=0;t<m.length;t+=1){let a=m[t];s.roundLengths&&(a=Math.floor(a)),i?t<=r&&n.push(a):m[t]<=e.virtualSize-x&&n.push(a)}m=n,Math.floor(e.virtualSize-x)-Math.floor(m[m.length-1])>1&&(i||m.push(e.virtualSize-x))}if(d&&s.loop){const t=v[0]+E,i=(e.virtual.slidesBefore??0)+(e.virtual.slidesAfter??0);if(s.slidesPerGroup>1){const e=Math.ceil(i/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let t=0;t<e;t+=1)m.push(m[m.length-1]+r)}for(let r=0;r<i;r+=1)1===s.slidesPerGroup&&m.push(m[m.length-1]+t),g.push(g[g.length-1]+t),e.virtualSize+=t}if(0===m.length&&(m=[0]),0!==E){const t=e.isHorizontal()&&n?"marginLeft":e.getDirectionLabel("marginRight");f.filter((e,t)=>!(s.cssMode&&!s.loop)||t!==f.length-1).forEach(e=>{e.style[t]=`${E}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;v.forEach(t=>{e+=t+(E||0)}),e-=E;const t=e>x?e-x:0;m=m.map(e=>e<=0?-S:e>t?t+T:e)}if(s.centerInsufficientSlides){let e=0;if(v.forEach(t=>{e+=t+(E||0)}),e-=E,e<x){const t=(x-e)/2;m.forEach((e,s)=>{m[s]=e-t}),g.forEach((e,s)=>{g[s]=e+t})}}if(Object.assign(e,{slides:f,snapGrid:m,slidesGrid:g,slidesSizesGrid:v}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){a(i,"--swiper-centered-offset-before",-m[0]+"px"),a(i,"--swiper-centered-offset-after",e.size/2-v[v.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(h!==p&&e.emit("slidesLengthChange"),m.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),g.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(d||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);h<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(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`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i<t.length;i+=1)t[i].swiperSlideOffset=(e.isHorizontal()?t[i].offsetLeft:t[i].offsetTop)-s-e.cssOverflowAdjustment()},updateSlidesProgress:function(e=this&&this.translate||0){const t=this,s=t.params,{slides:i,rtlTranslate:r,snapGrid:n}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let a=-e;r&&(a=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e<i.length;e+=1){const l=i[e];let d=l.swiperSlideOffset??0;s.cssMode&&s.centeredSlides&&(d-=i[0].swiperSlideOffset??0);const c=l.swiperSlideSize??0,p=(a+(s.centeredSlides?t.minTranslate():0)-d)/(c+o),u=(a-n[0]+(s.centeredSlides?t.minTranslate():0)-d)/(c+o),f=-(a-d),h=f+t.slidesSizesGrid[e],m=f>=0&&f<=t.size-t.slidesSizesGrid[e],g=f>=0&&f<t.size-1||h>1&&h<=t.size||f<=0&&h>=t.size;g&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),j(l,g,s.slideVisibleClass),j(l,m,s.slideFullyVisibleClass),l.progress=r?-p:p,l.originalProgress=r?-u:u}},updateProgress:function(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)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=!(!e.virtual||!s.virtual?.enabled),a=e.grid&&s.grid&&s.grid.rows>1,l=e=>o(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let d,c,p;if(n)if(s.loop){const t=e.virtual.slides;let s