swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
13 lines (12 loc) • 183 kB
JavaScript
/**
* Swiper Custom Element 14.0.2
* 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: July 7, 2026
*/
!function(){"use strict";function e(e=""){return e.trim().split(" ").filter(e=>!!e.trim())}function t(e,t=0){return setTimeout(e,t)}function i(){return Date.now()}function s(e,t="x"){const i=function(e){return window.getComputedStyle(e,null)}(e),s=i.transform||i.webkitTransform;if(!s||"none"===s)return 0;const r=new DOMMatrixReadOnly(s);return"x"===t?r.m41:r.m42}function r(e){return"object"==typeof e&&null!==e&&e.constructor===Object&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function a(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!!e&&"object"==typeof e&&(1===e.nodeType||11===e.nodeType)}function n(e,...t){const i=Object(e);for(let e=0;e<t.length;e+=1){const s=t[e];if(null==s||a(s))continue;const o=s,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 s=o[e];r(i[e])&&r(s)?s.__swiper__?i[e]=s:n(i[e],s):!r(i[e])&&r(s)?(i[e]={},s.__swiper__?i[e]=s:n(i[e],s)):i[e]=s}}return i}function o(e,t,i){e.style.setProperty(t,i)}function l(e){const t=e.querySelector(".swiper-slide-transform");if(t)return t;if(e.shadowRoot){const t=e.shadowRoot.querySelector(".swiper-slide-transform");if(t)return t}return e}function d(e,t=""){const i=[...e.children];return e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function p(e){try{console.warn(e)}catch{}}function c(t,i=[]){const s=document.createElement(t);return s.classList.add(...Array.isArray(i)?i:e(i)),s}function u(e){const t=e.getBoundingClientRect();return{top:t.top+window.scrollY-(e.clientTop||0),left:t.left+window.scrollX-(e.clientLeft||0)}}function h(e,t){return window.getComputedStyle(e,null).getPropertyValue(t)}function m(e){if(e&&e.parentNode)return[...e.parentNode.children].indexOf(e)}function f(e,t){const i=[];let s=e.parentElement;for(;s;)t&&!s.matches(t)||i.push(s),s=s.parentElement;return i}function g(e,t){t&&e.addEventListener("transitionend",function(i){i.target===e&&t.call(e,i)},{once:!0})}function w(e,t,i){{const i=window.getComputedStyle(e,null);return e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getPropertyValue("width"===t?"margin-left":"margin-bottom"))}}function v(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function b(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}function y(e,t=""){const i=globalThis.trustedTypes;e.innerHTML=void 0!==i?i.createPolicy("html",{createHTML:e=>e}).createHTML(t):t}let x,S,E;function T(){return x||(x="undefined"==typeof window?{touch:!1}:{touch:"ontouchstart"in window||navigator.maxTouchPoints>0}),x}function M(e={}){return S||(S=function({userAgent:e}={}){if("undefined"==typeof window)return{ios:!1,android:!1};const t=T(),i=navigator.platform,s=e||navigator.userAgent,r={ios:!1,android:!1},a=/(Android);?[\s/]+([\d.]+)?/.test(s),n=/(iPhone\sOS|iOS|iPod)/.test(s),o=/iPad/.test(s),l="MacIntel"===i&&t.touch&&navigator.maxTouchPoints>1,d=o||l;return a&&!("Win32"===i)&&(r.os="android",r.android=!0),(d||n)&&(r.os="ios",r.ios=!0),r}(e)),S}function C(){return E||(E=function(){if("undefined"==typeof window)return{isSafari:!1,isWebView:!1,need3dFix:!1};const e=M(),t=navigator.userAgent,i=t.toLowerCase(),s=i.includes("safari")&&!i.includes("chrome")&&!i.includes("android"),r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t);return{isSafari:s,isWebView:r,need3dFix:s||r&&e.ios}}()),E}const P=(e,t)=>{if(!e||e.destroyed||!e.params)return;const i=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(i){let t=i.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(i.shadowRoot?t=i.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{if(i.shadowRoot){const t=i.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`);t&&!t.lazyPreloaderManaged&&t.remove()}})),t&&!t.lazyPreloaderManaged&&t.remove()}},z=(e,t)=>{if(!e.slides[t])return;const i=e.slides[t].querySelector('[loading="lazy"]');i&&i.removeAttribute("loading")},L=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const i=e.slides.length;if(!i||!t||t<0)return;t=Math.min(t,i);const s="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 i=r,a=[i-t];return a.push(...Array.from({length:t}).map((e,t)=>i+s+t)),void e.slides.forEach((t,i)=>{void 0!==t.column&&a.includes(t.column)&&z(e,i)})}const a=r+s-1;if(e.params.rewind||e.params.loop)for(let s=r-t;s<=a+t;s+=1){const t=(s%i+i)%i;(t<r||t>a)&&z(e,t)}else for(let s=Math.max(r-t,0);s<=Math.min(a+t,i-1);s+=1)s!==r&&(s>a||s<r)&&z(e,s)};const k=(e,t)=>!!(e.grid&&t.grid&&t.grid.rows>1);var A={setBreakpoint:function(){const e=this,{realIndex:t,initialized:i,params:s,el:r}=e,a=s.breakpoints;if(!a||a&&0===Object.keys(a).length)return;const o="window"!==s.breakpointsBase&&s.breakpointsBase?"container":s.breakpointsBase,l=["window","container"].includes(s.breakpointsBase)||!s.breakpointsBase?e.el:document.querySelector(s.breakpointsBase),d=e.getBreakpoint(a,o,l);if(!d||e.currentBreakpoint===d)return;const p=(d in a?a[d]:void 0)||e.originalParams,c=k(e,s),u=k(e,p),h=e.params.grabCursor,m=p.grabCursor,f=s.enabled;c&&!u?(r.classList.remove(`${s.containerModifierClass}grid`,`${s.containerModifierClass}grid-column`),e.emitContainerClasses()):!c&&u&&(r.classList.add(`${s.containerModifierClass}grid`),(p.grid.fill&&"column"===p.grid.fill||!p.grid.fill&&"column"===s.grid.fill)&&r.classList.add(`${s.containerModifierClass}grid-column`),e.emitContainerClasses()),h&&!m?e.unsetGrabCursor():!h&&m&&e.setGrabCursor();const g=(e,t)=>e[t];["navigation","pagination","scrollbar"].forEach(t=>{const i=g(p,t);if(void 0===i)return;const r=g(s,t),a="object"==typeof r&&null!==r&&r.enabled,n="object"==typeof i&&null!==i&&i.enabled,o=e[t];a&&!n&&o?.disable?.(),!a&&n&&o?.enable?.()});const w=p.direction&&p.direction!==s.direction,v=s.loop&&(p.slidesPerView!==s.slidesPerView||w),b=s.loop;w&&i&&e.changeDirection(),n(e.params,p);const y=e.params.enabled,x=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),f&&!y?e.disable():!f&&y&&e.enable(),e.currentBreakpoint=d,e.emit("_beforeBreakpoint",p),i&&(v?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!b&&x?(e.loopCreate(t),e.updateSlides()):b&&!x&&e.loopDestroy()),e.emit("breakpoint",p)},getBreakpoint:function(e,t="window",i){if(!e||"container"===t&&!i)return;let s=!1;const r="window"===t?window.innerHeight:i.clientHeight,a=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}});a.sort((e,t)=>parseInt(String(e.value),10)-parseInt(String(t.value),10));for(let e=0;e<a.length;e+=1){const{point:r,value:n}=a[e];"window"===t?window.matchMedia(`(min-width: ${n}px)`).matches&&(s=r):n<=i.clientWidth&&(s=r)}return s||"max"}};var I={checkOverflow:function(){const e=this,{isLocked:t,params:i}=e,{slidesOffsetBefore:s}=i;if(s){const t=e.slides.length-1,i=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*s;e.isLocked=e.size>i}else e.isLocked=1===e.snapGrid.length;!0===i.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===i.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}};var $={addClasses:function(){const e=this,{classNames:t,params:i,rtl:s,el:r,device:a}=e,n=function(e,t){const i=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(s=>{e[s]&&i.push(t+s)}):"string"==typeof e&&i.push(t+e)}),i}(["initialized",i.direction,{"free-mode":e.params.freeMode&&i.freeMode.enabled},{autoheight:i.autoHeight},{rtl:s},{grid:i.grid&&i.grid.rows>1},{"grid-column":i.grid&&i.grid.rows>1&&"column"===i.grid.fill},{android:a.android},{ios:a.ios},{"css-mode":i.cssMode},{centered:i.cssMode&&i.centeredSlides},{"watch-progress":i.watchSlidesProgress}],i.containerModifierClass);t.push(...n),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 O={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 D={on(e,t,i){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof t)return s;const r=i?"unshift":"push";return e.split(" ").forEach(e=>{s.eventsListeners[e]||(s.eventsListeners[e]=[]),s.eventsListeners[e][r](t)}),s},once(e,t,i){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof t)return s;const r=function(...i){s.off(e,r),r.__emitterProxy&&delete r.__emitterProxy,t.apply(s,i)};return r.__emitterProxy=t,s.on(e,r,i)},onAny(e,t){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof e)return i;const s=t?"unshift":"push";return i.eventsAnyListeners.indexOf(e)<0&&i.eventsAnyListeners[s](e),i},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const i=t.eventsAnyListeners.indexOf(e);return i>=0&&t.eventsAnyListeners.splice(i,1),t},off(e,t){const i=this;return!i.eventsListeners||i.destroyed?i:i.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?i.eventsListeners[e]=[]:i.eventsListeners[e]&&i.eventsListeners[e].forEach((s,r)=>{(s===t||s.__emitterProxy&&s.__emitterProxy===t)&&i.eventsListeners[e].splice(r,1)})}),i):i},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let i,s,r;if("string"==typeof e[0]||Array.isArray(e[0]))i=e[0],s=e.slice(1,e.length),r=t;else{const a=e[0];i=a.events,s=a.data??[],r=a.context||t}s.unshift(r);return(Array.isArray(i)?i:i.split(" ")).forEach(e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach(t=>{t.apply(r,[e,...s])}),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach(e=>{e.apply(r,s)})}),t}};function _(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 G(){const e=this;e.destroyed||e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}function R(e){const t=this;t.destroyed||(P(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update())}function B(){const e=this,{params:t,el:i}=e;if(i&&0===i.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:s,allowSlidePrev:r,snapGrid:a}=e,n=e.virtual&&e.params.virtual?.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=n&&t.loop;if(!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o)e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0);else{const t=n?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=s,e.params.watchOverflow&&a!==e.snapGrid&&e.checkOverflow()}function X(){const e=this;if(e.destroyed)return;const{wrapperEl:t,rtlTranslate:i,enabled:s}=e;if(!s)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 a=e.maxTranslate()-e.minTranslate();r=0===a?0:(e.translate-e.minTranslate())/a,r!==e.progress&&e.updateProgress(i?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function H(e){const s=this;if(s.destroyed)return;const r=s.touchEventsData;let a=e.originalEvent??e;if("touchend"===a.type||"touchcancel"===a.type){const e=[...a.changedTouches].find(e=>e.identifier===r.touchId);if(!e||e.identifier!==r.touchId)return}else{if(null!==r.touchId)return;if(a.pointerId!==r.pointerId)return}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(s.browser.isSafari||s.browser.isWebView)))return}r.pointerId=null,r.touchId=null;const{params:n,touches:o,rtlTranslate:l,slidesGrid:d,enabled:p}=s;if(!p)return;if(!n.simulateTouch&&"mouse"===a.pointerType)return;if(r.allowTouchCallbacks&&s.emit("touchEnd",a),r.allowTouchCallbacks=!1,!r.isTouched)return r.isMoved&&n.grabCursor&&s.setGrabCursor(!1),r.isMoved=!1,void(r.startMoving=!1);n.grabCursor&&r.isMoved&&r.isTouched&&(!0===s.allowSlideNext||!0===s.allowSlidePrev)&&s.setGrabCursor(!1);const c=i(),u=c-r.touchStartTime;if(s.allowClick){const e=a.path??(a.composedPath&&a.composedPath());s.updateClickedSlide(e&&e[0],e),s.emit("tap click",a),u<300&&c-r.lastClickTime<300&&s.emit("doubleTap doubleClick",a)}if(r.lastClickTime=i(),t(()=>{s.destroyed||(s.allowClick=!0)}),!r.isTouched||!r.isMoved||!s.swipeDirection||0===o.diff&&!r.loopSwapReset||r.currentTranslate===r.startTranslate&&!r.loopSwapReset)return r.isTouched=!1,r.isMoved=!1,void(r.startMoving=!1);let h;if(r.isTouched=!1,r.isMoved=!1,r.startMoving=!1,h=n.followFinger?l?s.translate:-s.translate:-(r.currentTranslate??0),n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void s.freeMode.onTouchEnd({currentPos:h});const m=h>=-s.maxTranslate()&&!s.params.loop;let f=0,g=s.slidesSizesGrid[0];for(let e=0;e<d.length;e+=e<n.slidesPerGroupSkip?1:n.slidesPerGroup){const t=e<n.slidesPerGroupSkip-1?1:n.slidesPerGroup;void 0!==d[e+t]?(m||h>=d[e]&&h<d[e+t])&&(f=e,g=d[e+t]-d[e]):(m||h>=d[e])&&(f=e,g=d[d.length-1]-d[d.length-2])}let w=null,v=null;n.rewind&&(s.isBeginning?v=n.virtual?.enabled&&s.virtual?s.virtual.slides.length-1:s.slides.length-1:s.isEnd&&(w=0));const b=(h-d[f])/g,y=f<n.slidesPerGroupSkip-1?1:n.slidesPerGroup;if(u>n.longSwipesMs){if(!n.longSwipes)return void s.slideTo(s.activeIndex);"next"===s.swipeDirection&&(b>=n.longSwipesRatio?s.slideTo(n.rewind&&s.isEnd?w:f+y):s.slideTo(f)),"prev"===s.swipeDirection&&(b>1-n.longSwipesRatio?s.slideTo(f+y):null!==v&&b<0&&Math.abs(b)>n.longSwipesRatio?s.slideTo(v):s.slideTo(f))}else{if(!n.shortSwipes)return void s.slideTo(s.activeIndex);s.navigation&&(a.target===s.navigation.nextEl||a.target===s.navigation.prevEl)?a.target===s.navigation.nextEl?s.slideTo(f+y):s.slideTo(f):("next"===s.swipeDirection&&s.slideTo(null!==w?w:f+y),"prev"===s.swipeDirection&&s.slideTo(null!==v?v:f))}}function N(e){const t=this;if(t.destroyed)return;const s=t.touchEventsData,{params:r,touches:a,rtlTranslate:n,enabled:o}=t;if(!o)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;const l=e,d=l.originalEvent??l;if("pointermove"===d.type){if(null!==s.touchId)return;if(d.pointerId!==s.pointerId)return}let p;if("touchmove"===d.type){const e=[...d.changedTouches].find(e=>e.identifier===s.touchId);if(!e||e.identifier!==s.touchId)return;p=e}else p=d;if(!s.isTouched)return void(s.startMoving&&s.isScrolling&&t.emit("touchMoveOpposite",d));const c=p.pageX,u=p.pageY;if(d.preventedByNestedSwiper)return a.startX=c,void(a.startY=u);if(!t.allowTouchMove)return d.target.matches(s.focusableElements)||(t.allowClick=!1),void(s.isTouched&&(Object.assign(a,{startX:c,startY:u,currentX:c,currentY:u}),s.touchStartTime=i()));if(r.touchReleaseOnEdges&&!r.loop)if(t.isVertical()){if(u<a.startY&&t.translate<=t.maxTranslate()||u>a.startY&&t.translate>=t.minTranslate())return s.isTouched=!1,void(s.isMoved=!1)}else{if(n&&(c>a.startX&&-t.translate<=t.maxTranslate()||c<a.startX&&-t.translate>=t.minTranslate()))return;if(!n&&(c<a.startX&&t.translate<=t.maxTranslate()||c>a.startX&&t.translate>=t.minTranslate()))return}if(document.activeElement&&document.activeElement.matches(s.focusableElements)&&document.activeElement!==d.target&&"mouse"!==d.pointerType&&document.activeElement.blur(),document.activeElement&&d.target===document.activeElement&&d.target.matches(s.focusableElements))return s.isMoved=!0,void(t.allowClick=!1);s.allowTouchCallbacks&&t.emit("touchMove",d),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=c,a.currentY=u;const h=a.currentX-a.startX,m=a.currentY-a.startY;if(t.params.threshold&&Math.sqrt(h**2+m**2)<t.params.threshold)return;if(void 0===s.isScrolling){let e;t.isHorizontal()&&a.currentY===a.startY||t.isVertical()&&a.currentX===a.startX?s.isScrolling=!1:h*h+m*m>=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(h))/Math.PI,s.isScrolling=t.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(s.isScrolling&&t.emit("touchMoveOpposite",d),void 0===s.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(s.startMoving=!0)),s.isScrolling||"touchmove"===d.type&&s.preventTouchMoveFromPointerMove)return void(s.isTouched=!1);if(!s.startMoving)return;t.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let f=t.isHorizontal()?h:m,g=t.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;r.oneWayMovement&&(f=Math.abs(f)*(n?1:-1),g=Math.abs(g)*(n?1:-1)),a.diff=f,f*=r.touchRatio,n&&(f=-f,g=-g);const w=t.touchesDirection;t.swipeDirection=f>0?"prev":"next",t.touchesDirection=g>0?"prev":"next";const v=t.params.loop&&!r.cssMode,b="next"===t.touchesDirection&&t.allowSlideNext||"prev"===t.touchesDirection&&t.allowSlidePrev;if(!s.isMoved){if(v&&b&&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,!r.grabCursor||!0!==t.allowSlideNext&&!0!==t.allowSlidePrev||t.setGrabCursor(!0),t.emit("sliderFirstMove",d)}if((new Date).getTime(),!1!==r._loopSwapReset&&s.isMoved&&s.allowThresholdMove&&w!==t.touchesDirection&&v&&b&&Math.abs(f)>=1)return Object.assign(a,{startX:c,startY:u,currentX:c,currentY:u,startTranslate:s.currentTranslate}),s.loopSwapReset=!0,void(s.startTranslate=s.currentTranslate);t.emit("sliderMove",d),s.isMoved=!0;const y=s.startTranslate??0;s.currentTranslate=f+y;let x=!0,S=r.resistanceRatio;if(r.touchReleaseOnEdges&&(S=0),f>0?(v&&b&&s.allowThresholdMove&&s.currentTranslate>(r.centeredSlides?t.minTranslate()-t.slidesSizesGrid[t.activeIndex+1]-("auto"!==r.slidesPerView&&t.slides.length-r.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()&&(x=!1,r.resistance&&(s.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+y+f)**S))):f<0&&(v&&b&&s.allowThresholdMove&&s.currentTranslate<(r.centeredSlides?t.maxTranslate()+t.slidesSizesGrid[t.slidesSizesGrid.length-1]+t.params.spaceBetween+("auto"!==r.slidesPerView&&t.slides.length-r.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"===r.slidesPerView?t.slidesPerViewDynamic():Math.ceil(parseFloat(String(r.slidesPerView))))}),s.currentTranslate<t.maxTranslate()&&(x=!1,r.resistance&&(s.currentTranslate=t.maxTranslate()+1-(t.maxTranslate()-y-f)**S))),x&&(d.preventedByNestedSwiper=!0),!t.allowSlideNext&&"next"===t.swipeDirection&&(s.currentTranslate??0)<y&&(s.currentTranslate=y),!t.allowSlidePrev&&"prev"===t.swipeDirection&&(s.currentTranslate??0)>y&&(s.currentTranslate=y),t.allowSlidePrev||t.allowSlideNext||(s.currentTranslate=y),r.threshold>0){if(!(Math.abs(f)>r.threshold||s.allowThresholdMove))return void(s.currentTranslate=s.startTranslate);if(!s.allowThresholdMove)return s.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,s.currentTranslate=s.startTranslate,void(a.diff=t.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&t.freeMode||r.watchSlidesProgress)&&(t.updateActiveIndex(),t.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&t.freeMode&&t.freeMode.onTouchMove(),t.updateProgress(s.currentTranslate),t.setTranslate(s.currentTranslate??0))}function Y(e,t,i){const{params:s}=e,r=s.edgeSwipeDetection,a=s.edgeSwipeThreshold;return!r||!(i<=a||i>=window.innerWidth-a)||"prevent"===r&&(t.preventDefault(),!0)}function q(e){const t=this;if(t.destroyed)return;const s=e.originalEvent??e,r=t.touchEventsData;if("pointerdown"===s.type){const e=s;if(null!==r.pointerId&&r.pointerId!==e.pointerId)return;r.pointerId=e.pointerId}else"touchstart"===s.type&&1===s.targetTouches.length&&(r.touchId=s.targetTouches[0].identifier);if("touchstart"===s.type)return void Y(t,s,s.targetTouches[0].pageX);const{params:a,touches:n,enabled:o}=t;if(!o)return;if(!a.simulateTouch&&"mouse"===s.pointerType)return;if(t.animating&&a.preventInteractionOnTransition)return;!t.animating&&a.cssMode&&a.loop&&t.loopFix();let l=s.target;if("wrapper"===a.touchEventsTarget&&!function(e,t){let i=t.contains(e);!i&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const i=[t];for(;i.length>0;){const t=i.shift();if(e===t)return!0;i.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}return!1}(e,t)));return i}(l,t.wrapperEl))return;const d=s;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 p=!!a.noSwipingClass&&""!==a.noSwipingClass,c=s.composedPath?s.composedPath():s.path;p&&s.target&&s.target.shadowRoot&&c&&(l=c[0]);const u=a.noSwipingSelector?a.noSwipingSelector:`.${a.noSwipingClass}`,h=!(!s.target||!s.target.shadowRoot);if(a.noSwiping&&(h?(m=u,function e(t){if(!t||t===document||t===window)return null;let i=t;i.assignedSlot&&(i=i.assignedSlot);const s=i.closest(m);if(!s&&!i.getRootNode)return null;const r=i.getRootNode();return s||e(r.host)}(l)):l.closest(u)))return void(t.allowClick=!0);var m;if(a.swipeHandler&&"string"==typeof a.swipeHandler&&!l.closest(a.swipeHandler))return;const f=s;n.currentX=f.pageX,n.currentY=f.pageY;const g=n.currentX,w=n.currentY;if(!Y(t,s,g))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=g,n.startY=w,r.touchStartTime=i(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,a.threshold>0&&(r.allowThresholdMove=!1);let v=!0;l.matches(r.focusableElements)&&(v=!1,"SELECT"===l.nodeName&&(r.isTouched=!1)),document.activeElement&&document.activeElement.matches(r.focusableElements)&&document.activeElement!==l&&("mouse"===f.pointerType||"mouse"!==f.pointerType&&!l.matches(r.focusableElements))&&document.activeElement.blur();const b=v&&t.allowTouchMove&&a.touchStartPreventDefault;!a.touchStartForcePreventDefault&&!b||l.isContentEditable||s.preventDefault(),a.freeMode&&a.freeMode.enabled&&t.freeMode&&t.animating&&!a.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",s)}const V=(e,t)=>{const{params:i,el:s,wrapperEl:r,device:a}=e,n=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",l=t;if(!s||"string"==typeof s)return;document[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:n}),s[o]("touchstart",e.onTouchStart,{passive:!1}),s[o]("pointerdown",e.onTouchStart,{passive:!1}),document[o]("touchmove",e.onTouchMove,{passive:!1,capture:n}),document[o]("pointermove",e.onTouchMove,{passive:!1,capture:n}),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}),(i.preventClicks||i.preventClicksPropagation)&&s[o]("click",e.onClick,!0),i.cssMode&&r[o]("scroll",e.onScroll);const d=t=>{e[l](t,B,!0)};i.updateOnWindowResize?d(a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate"):d("observerUpdate"),s[o]("load",e.onLoad,{capture:!0})};var j={loopCreate:function(e,t){const i=this,{params:s,slidesEl:r}=i;if(!s.loop||i.virtual&&i.params.virtual?.enabled)return;const a=()=>{d(r,`.${s.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",String(t))})},n=i.grid&&s.grid&&s.grid.rows>1;s.loopAddBlankSlides&&(s.slidesPerGroup>1||n)&&(()=>{const e=d(r,`.${s.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(i.recalcSlides(),i.updateSlides())})();const o=s.slidesPerGroup*(n?s.grid.rows:1),l=i.slides.length%o!==0,u=n&&i.slides.length%s.grid.rows!==0,h=e=>{for(let t=0;t<e;t+=1){const e=i.isElement?c("swiper-slide",[s.slideBlankClass]):c("div",[s.slideClass,s.slideBlankClass]);i.slidesEl.append(e)}};if(l){if(s.loopAddBlankSlides){h(o-i.slides.length%o),i.recalcSlides(),i.updateSlides()}else p("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)");a()}else if(u){if(s.loopAddBlankSlides){h(s.grid.rows-i.slides.length%s.grid.rows),i.recalcSlides(),i.updateSlides()}else p("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)");a()}else a();const m=s.centeredSlides||!!s.slidesOffsetBefore||!!s.slidesOffsetAfter;i.loopFix({slideRealIndex:e,direction:m?void 0:"next",initial:t})},loopFix:function(e={}){const{slideRealIndex:t,slideTo:i=!0,direction:s,setTranslate:r,activeSlideIndex:a,initial:n,byController:o,byMousewheel:l}=e;let d=a;const c=this;if(!c.params.loop)return;c.emit("beforeLoopFix");const{slides:u,allowSlidePrev:h,allowSlideNext:m,slidesEl:f,params:g}=c,{centeredSlides:w,slidesOffsetBefore:v,slidesOffsetAfter:b,initialSlide:y}=g,x=w||!!v||!!b;if(c.allowSlidePrev=!0,c.allowSlideNext=!0,c.virtual&&g.virtual?.enabled){if(i){const e=c.virtual.slides.length,t=c.virtual.slidesBefore??0;x||0!==c.snapIndex?x&&c.snapIndex<g.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=h,c.allowSlideNext=m,void c.emit("loopFix")}let S=g.slidesPerView;"auto"===S?S=c.slidesPerViewDynamic():(S=Math.ceil(parseFloat(String(g.slidesPerView))),x&&S%2==0&&(S+=1));const E=g.slidesPerGroupAuto?S:g.slidesPerGroup;let T=x?Math.max(E,Math.ceil(S/2)):E;T%E!==0&&(T+=E-T%E),T+=g.loopAdditionalSlides,c.loopedSlides=T;const M=c.grid&&g.grid&&g.grid.rows>1;u.length<S+T||"cards"===c.params.effect&&u.length<S+2*T?p("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&&p("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const C=[],P=[],z=M?Math.ceil(u.length/g.grid.rows):u.length,L=n&&z-y<S&&!x;let k=L?y:c.activeIndex;void 0===d?d=c.getSlideIndex(u.find(e=>e.classList.contains(g.slideActiveClass))):k=d;const A="next"===s||!s,I="prev"===s||!s;let $=0,O=0;const D=(M?u[d].column??0:d)+(x&&void 0===r?-S/2+.5:0);if(D<T){$=Math.max(T-D,E);for(let e=0;e<T-D;e+=1){const t=e-Math.floor(e/z)*z;if(M){const e=z-t-1;for(let t=u.length-1;t>=0;t-=1)u[t].column===e&&C.push(t)}else C.push(z-t-1)}}else if(D+S>z-T){O=Math.max(D-(z-2*T),E),L&&(O=Math.max(O,S-z+y+1));for(let e=0;e<O;e+=1){const t=e-Math.floor(e/z)*z;M?u.forEach((e,i)=>{e.column===t&&P.push(i)}):P.push(t)}}if(c.__preventObserver__=!0,requestAnimationFrame(()=>{c.__preventObserver__=!1}),"cards"===c.params.effect&&u.length<S+2*T&&(P.includes(d)&&P.splice(P.indexOf(d),1),C.includes(d)&&C.splice(C.indexOf(d),1)),I&&C.forEach(e=>{const t=u[e];t.swiperLoopMoveDOM=!0,f.prepend(t),t.swiperLoopMoveDOM=!1}),A&&P.forEach(e=>{const t=u[e];t.swiperLoopMoveDOM=!0,f.append(t),t.swiperLoopMoveDOM=!1}),c.recalcSlides(),"auto"===g.slidesPerView?c.updateSlides():M&&(C.length>0&&I||P.length>0&&A)&&c.slides.forEach((e,t)=>{c.grid.updateSlide(t,e,c.slides)}),g.watchSlidesProgress&&c.updateSlidesOffset(),i)if(C.length>0&&I){if(void 0===t){const e=c.slidesGrid[k],t=c.slidesGrid[k+$]-e;l?c.setTranslate(c.translate-t):(c.slideTo(k+Math.ceil($),0,!1,!0),r&&(c.touchEventsData.startTranslate=c.touchEventsData.startTranslate-t,c.touchEventsData.currentTranslate=c.touchEventsData.currentTranslate-t))}else if(r){const e=M?C.length/g.grid.rows:C.length;c.slideTo(c.activeIndex+e,0,!1,!0),c.touchEventsData.currentTranslate=c.translate}}else if(P.length>0&&A)if(void 0===t){const e=c.slidesGrid[k],t=c.slidesGrid[k-O]-e;l?c.setTranslate(c.translate-t):(c.slideTo(k-O,0,!1,!0),r&&(c.touchEventsData.startTranslate=c.touchEventsData.startTranslate-t,c.touchEventsData.currentTranslate=c.touchEventsData.currentTranslate-t))}else{const e=M?P.length/g.grid.rows:P.length;c.slideTo(c.activeIndex-e,0,!1,!0)}c.allowSlidePrev=h,c.allowSlideNext=m;const _=c.controller?.control;if(_&&!o){const e={slideRealIndex:t,direction:s,setTranslate:r,activeSlideIndex:d,byController:!0};Array.isArray(_)?_.forEach(t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===g.slidesPerView&&i})}):_ instanceof c.constructor&&_.params.loop&&_.loopFix({...e,slideTo:_.params.slidesPerView===g.slidesPerView&&i})}c.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:i}=e;if(!t.loop||!i||e.virtual&&e.params.virtual?.enabled)return;e.recalcSlides();const s=[];e.slides.forEach(e=>{const t=e,i=void 0===t.swiperSlideIndex?Number(e.getAttribute("data-swiper-slide-index")):t.swiperSlideIndex;s[i]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),s.forEach(e=>{i.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function W(e,t){return function(i={}){const s=Object.keys(i)[0],r=i[s];"object"==typeof r&&null!==r?(!0===e[s]&&(e[s]={enabled:!0}),"navigation"===s&&e[s]&&e[s].enabled&&!e[s].prevEl&&!e[s].nextEl&&(e[s].auto=!0),["pagination","scrollbar"].indexOf(s)>=0&&e[s]&&e[s].enabled&&!e[s].el&&(e[s].auto=!0),s in e&&"enabled"in r?("object"!=typeof e[s]||"enabled"in e[s]||(e[s].enabled=!0),e[s]||(e[s]={enabled:!1}),n(t,i)):n(t,i)):n(t,i)}}var F={slideTo:function(e=0,t,i=!0,s,r){"string"==typeof e&&(e=parseInt(e,10));const a=this;let n=e;n<0&&(n=0);const{params:o,snapGrid:l,slidesGrid:d,previousIndex:p,activeIndex:c,rtlTranslate:u,wrapperEl:h,enabled:m}=a;if(!m&&!s&&!r||a.destroyed||a.animating&&o.preventInteractionOnTransition)return!1;void 0===t&&(t=a.params.speed);const f=Math.min(a.params.slidesPerGroupSkip,n);let g=f+Math.floor((n-f)/a.params.slidesPerGroup);g>=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*w),i=Math.floor(100*d[e]),s=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=i&&t<s-(s-i)/2?n=e:t>=i&&t<s&&(n=e+1):t>=i&&(n=e)}if(a.initialized&&n!==c){if(!a.allowSlideNext&&(u?w>a.translate&&w>a.minTranslate():w<a.translate&&w<a.minTranslate()))return!1;if(!a.allowSlidePrev&&w>a.translate&&w>a.maxTranslate()&&(c||0)!==n)return!1}let v;n!==(p||0)&&i&&a.emit("beforeSlideChangeStart"),a.updateProgress(w),v=n>c?"next":n<c?"prev":"reset";const b=a.virtual&&a.params.virtual?.enabled;if(!(b&&r)&&(u&&-w===a.translate||!u&&w===a.translate))return a.updateActiveIndex(n),o.autoHeight&&a.updateAutoHeight(),a.updateSlidesClasses(),"slide"!==o.effect&&a.setTranslate(w),"reset"!==v&&(a.transitionStart(i,v),a.transitionEnd(i,v)),!1;if(o.cssMode){const e=a.isHorizontal(),i=u?w:-w;return 0===t?(b&&(a.wrapperEl.style.scrollSnapType="none",a._immediateVirtual=!0),b&&!a._cssModeVirtualInitialSet&&(a.params.initialSlide??0)>0?(a._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=i})):h[e?"scrollLeft":"scrollTop"]=i,b&&requestAnimationFrame(()=>{a.wrapperEl.style.scrollSnapType="",a._immediateVirtual=!1})):h.scrollTo({[e?"left":"top"]:i,behavior:"smooth"}),!0}const y=C().isSafari;return b&&!r&&y&&a.isElement&&a.virtual.update(!1,!1,n),a.setTransition(t),a.setTranslate(w),a.updateActiveIndex(n),a.updateSlidesClasses(),a.emit("beforeTransitionStart",t,s),a.transitionStart(i,v),0===t?a.transitionEnd(i,v):a.animating||(a.animating=!0,a.onSlideToWrapperTransitionEnd||(a.onSlideToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onSlideToWrapperTransitionEnd),a.onSlideToWrapperTransitionEnd=null,delete a.onSlideToWrapperTransitionEnd,a.transitionEnd(i,v))}),a.wrapperEl.addEventListener("transitionend",a.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t,i=!0,s){if("string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const a=r.grid&&r.params.grid&&r.params.grid.rows>1;let n=e;if(r.params.loop)if(r.virtual&&r.params.virtual?.enabled)n+=r.virtual.slidesBefore??0;else{let e;if(a){const t=n*r.params.grid.rows,i=r.slides.find(e=>Number(e.getAttribute("data-swiper-slide-index"))===t);e=i?.column??0}else e=r.getSlideIndexByData(n);const t=a?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:i,slidesOffsetBefore:o,slidesOffsetAfter:l}=r.params,d=i||!!o||!!l;let p;"auto"===r.params.slidesPerView?p=r.slidesPerViewDynamic():(p=Math.ceil(parseFloat(String(r.params.slidesPerView))),d&&p%2==0&&(p+=1));let c=t-e<p;if(d&&(c=c||e<Math.ceil(p/2)),s&&d&&"auto"!==r.params.slidesPerView&&!a&&(c=!1),c){const i=d?e<r.activeIndex?"prev":"next":e-r.activeIndex-1<r.params.slidesPerView?"next":"prev";r.loopFix({direction:i,slideTo:!0,activeSlideIndex:"next"===i?e+1:e-t+1,slideRealIndex:"next"===i?r.realIndex:void 0})}if(a){const e=n*r.params.grid.rows,t=r.slides.find(t=>Number(t.getAttribute("data-swiper-slide-index"))===e);n=t?.column??0}else n=r.getSlideIndexByData(n)}return requestAnimationFrame(()=>{r.slideTo(n,t,i,s)}),r},slideNext:function(e,t=!0,i){const s=this,{enabled:r,params:a,animating:n}=s;if(!r||s.destroyed)return s;void 0===e&&(e=s.params.speed);let o=a.slidesPerGroup;"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(o=Math.max(s.slidesPerViewDynamic("current",!0),1));const l=s.activeIndex<a.slidesPerGroupSkip?1:o,d=s.virtual&&a.virtual?.enabled;if(a.loop){if(n&&!d&&a.loopPreventsSliding)return!1;if(s.loopFix({direction:"next"}),s._clientLeft=s.wrapperEl.clientLeft,s.activeIndex===s.slides.length-1&&a.cssMode)return requestAnimationFrame(()=>{s.slideTo(s.activeIndex+l,e,t,i)}),!0}return a.rewind&&s.isEnd?s.slideTo(0,e,t,i):s.slideTo(s.activeIndex+l,e,t,i)},slidePrev:function(e,t=!0,i){const s=this,{params:r,snapGrid:a,slidesGrid:n,rtlTranslate:o,enabled:l,animating:d}=s;if(!l||s.destroyed)return s;void 0===e&&(e=s.params.speed);const p=s.virtual&&r.virtual?.enabled;if(r.loop){if(d&&!p&&r.loopPreventsSliding)return!1;s.loopFix({direction:"prev"}),s._clientLeft=s.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(o?s.translate:-s.translate),h=a.map(e=>c(e)),m=r.freeMode&&r.freeMode.enabled;let f=a[h.indexOf(u)-1];if(void 0===f&&(r.cssMode||m)){let e;a.forEach((t,i)=>{u>=t&&(e=i)}),void 0!==e&&(f=m?a[e]:a[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=s.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(g=g-s.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),r.rewind&&s.isBeginning){const r=s.params.virtual?.enabled&&s.virtual?s.virtual.slides.length-1:s.slides.length-1;return s.slideTo(r,e,t,i)}return r.loop&&0===s.activeIndex&&r.cssMode?(requestAnimationFrame(()=>{s.slideTo(g,e,t,i)}),!0):s.slideTo(g,e,t,i)},slideReset:function(e,t=!0,i){const s=this;if(!s.destroyed)return void 0===e&&(e=s.params.speed),s.slideTo(s.activeIndex,e,t,i)},slideToClosest:function(e,t=!0,i,s=.5){const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let a=r.activeIndex;const n=Math.min(r.params.slidesPerGroupSkip,a),o=n+Math.floor((a-n)/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)*s&&(a+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*s&&(a-=r.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,r.slidesGrid.length-1),r.slideTo(a,e,t,i)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:i,slidesEl:s,clickedSlide:r,clickedIndex:a}=e;if(void 0===r||void 0===a)return;const n="auto"===i.slidesPerView?e.slidesPerViewDynamic():i.slidesPerView;let o,l=e.getSlideIndexWhenGrid(a);const p=e.isElement?"swiper-slide":`.${i.slideClass}`,c=e.grid&&e.params.grid&&e.params.grid.rows>1;if(i.loop){if(e.animating)return;o=parseInt(r.getAttribute("data-swiper-slide-index"),10),i.centeredSlides?e.slideToLoop(o):l>(c?(e.slides.length-n)/2-(e.params.grid.rows-1):e.slides.length-n)?(e.loopFix(),l=e.getSlideIndex(d(s,`${p}[data-swiper-slide-index="${o}"]`)[0]),t(()=>{e.slideTo(l)})):e.slideTo(l)}else e.slideTo(l)}};function U({swiper:e,runCallbacks:t,direction:i,step:s}){const{activeIndex:r,previousIndex:a}=e;let n=i;n||(n=r>a?"next":r<a?"prev":"reset"),e.emit(`transition${s}`),t&&"reset"===n?e.emit(`slideResetTransition${s}`):t&&r!==a&&(e.emit(`slideChangeTransition${s}`),"next"===n?e.emit(`slideNextTransition${s}`):e.emit(`slidePrevTransition${s}`))}var Z={getTranslate:function(e=(this.isHorizontal()?"x":"y")){const{params:t,rtlTranslate:i,translate:r,wrapperEl:a}=this;if(t.virtualTranslate)return i?-r:r;if(t.cssMode)return r;let n=s(a,e);return n+=this.cssOverflowAdjustment(),i&&(n=-n),n||0},setTranslate:function(e,t){const i=this,{rtlTranslate:s,params:r,wrapperEl:a,progress:n}=i;let o,l=0,d=0;i.isHorizontal()?l=s?-e:e:d=e,r.roundLengths&&(l=Math.floor(l),d=Math.floor(d)),i.previousTranslate=i.translate,i.translate=i.isHorizontal()?l:d,r.cssMode?a[i.isHorizontal()?"scrollLeft":"scrollTop"]=i.isHorizontal()?-l:-d:r.virtualTranslate||(i.isHorizontal()?l-=i.cssOverflowAdjustment():d-=i.cssOverflowAdjustment(),a.style.transform=`translate3d(${l}px, ${d}px, 0px)`);const p=i.maxTranslate()-i.minTranslate();o=0===p?0:(e-i.minTranslate())/p,o!==n&&i.updateProgress(e),i.emit("setTranslate",i.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,i=!0,s=!0,r){const a=this,{params:n,wrapperEl:o}=a;if(a.animating&&n.preventInteractionOnTransition)return!1;const l=a.minTranslate(),d=a.maxTranslate();let p;if(p=s&&e>l?l:s&&e<d?d:e,a.updateProgress(p),n.cssMode){const e=a.isHorizontal();return 0===t?o[e?"scrollLeft":"scrollTop"]=-p:o.scrollTo({[e?"left":"top"]:-p,behavior:"smooth"}),!0}return 0===t?(a.setTransition(0),a.setTranslate(p),i&&(a.emit("beforeTransitionStart",t,r),a.emit("transitionEnd"))):(a.setTransition(t),a.setTranslate(p),i&&(a.emit("beforeTransitionStart",t,r),a.emit("transitionStart")),a.animating||(a.animating=!0,a.onTranslateToWrapperTransitionEnd||(a.onTranslateToWrapperTransitionEnd=function(e){a&&!a.destroyed&&e.target===this&&(a.wrapperEl.removeEventListener("transitionend",a.onTranslateToWrapperTransitionEnd),a.onTranslateToWrapperTransitionEnd=null,delete a.onTranslateToWrapperTransitionEnd,a.animating=!1,i&&a.emit("transitionEnd"))}),a.wrapperEl.addEventListener("transitionend",a.onTranslateToWrapperTransitionEnd))),!0}};const K=(e,t,i)=>{t&&!e.classList.contains(i)?e.classList.add(i):!t&&e.classList.contains(i)&&e.classList.remove(i)};const Q=(e,t,i)=>{t&&!e.classList.contains(i)?e.classList.add(i):!t&&e.classList.contains(i)&&e.classList.remove(i)};var J={updateSize:function(){const e=this;let t,i;const s=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:s.clientWidth,i=void 0!==e.params.height&&null!==e.params.height?e.params.height:s.clientHeight,0===t&&e.isHorizontal()||0===i&&e.isVertical()||(t=t-parseInt(h(s,"padding-left")||"0",10)-parseInt(h(s,"padding-right")||"0",10),i=i-parseInt(h(s,"padding-top")||"0",10)-parseInt(h(s,"padding-bottom")||"0",10),Number.isNaN(t)&&(t=0),Number.isNaN(i)&&(i=0),Object.assign(e,{width:t,height:i,size:e.isHorizontal()?t:i}))},updateSlides:function(){const e=this;function t(t,i){return parseFloat(t.getPropertyValue(e.getDirectionLabel(i))||"0")}const i=e.params,{wrapperEl:s,slidesEl:r,rtlTranslate:a,wrongRTL:n}=e,l=!(!e.virtual||!i.virtual?.enabled),p=l?e.virtual.slides.length:e.slides.length,c=d(r,`.${e.params.slideClass}, swiper-slide`),u=l?e.virtual.slides.length:c.length;let m=[];const f=[],g=[],v=t=>"function"==typeof t?t.call(e):t,b=v(i.slidesOffsetBefore),y=v(i.slidesOffsetAfter),x=e.snapGrid.length,S=e.slidesGrid.length,E=e.size-b-y;let T=i.spaceBetween,M=-b,C=0,P=0;if(void 0===E)return;"string"==typeof T&&T.indexOf("%")>=0?T=parseFloat(T.replace("%",""))/100*E:"string"==typeof T&&(T=parseFloat(T)),e.virtualSize=-T-b-y,c.forEach(e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),i.centeredSlides&&i.cssMode&&(o(s,"--swiper-centered-offset-before",""),o(s,"--swiper-centered-offset-after","")),i.cssMode&&(o(s,"--swiper-slides-offset-before",`${b}px`),o(s,"--swiper-slides-offset-after",`${y}px`));const z=i.grid&&i.grid.rows>1&&e.grid;z?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();let L=0;const k="auto"===i.slidesPerView&&i.breakpoints&&Object.keys(i.breakpoints).filter(e=>{const t=i.breakpoints[e];return void 0!==t?.slidesPerView}).length>0;for(let s=0;s<u;s+=1){L=0;const r=c[s];if(!r||(z&&e.grid.updateSlide(s,r,c),"none"!==h(r,"display"))){if(l&&"auto"===i.slidesPerView)i.virtual?.slidesPerViewAutoSlideSize&&(L=i.virtual.slidesPerViewAutoSlideSize),L&&r&&(i.roundLengths&&(L=Math.floor(L)),r.style[e.getDirectionLabel("width")]=`${L}px`);else if("auto"===i.slidesPerView){k&&(r.style[e.getDirectionLabel("width")]="");const s=getComputedStyle(r),a=r.style.transform,n=r.style.webkitTransform;if(a&&(r.style.transform="none"),n&&(r.style.webkitTransform="none"),i.roundLengths)L=e.isHorizontal()?w(r,"width"):w(r,"height");else{const e=t(s,"width"),i=t(s,"padding-left"),a=t(s,"padding-right"),n=t(s,"margin-left"),o=t(s,"margin-right"),l=s.getPropertyValue("box-sizing");if(l&&"border-box"===l)L=e+n+o;else{const{clientWidth:t,offsetWidth:s}=r;L=e+i+a+n+o+(s-t)}}a&&(r.style.transform=a),n&&(r.style.webkitTransform=n),i.roundLengths&&(L=Math.floor(L))}else L=(E-(i.slidesPerView-1)*T)/i.slidesPerView,i.roundLengths&&(L=Math.floor(L)),r&&(r.style[e.getDirectionLabel("width")]=`${L}px`);r&&(r.swiperSlideSize=L),g.push(L),i.centeredSlides?(M=M+L/2+C/2+T,0===C&&0!==s&&(M=M-E/2-T),0===s&&(M=M-E/2-T),Math.abs(M)<.001&&(M=0),i.roundLengths&&(M=Math.floor(M)),P%i.slidesPerGroup===0&&m.push(M),f.push(M)):(i.roundLengths&&(M=Math.floor(M)),(P-Math.min(e.params.slidesPerGroupSkip,P))%e.params.slidesPerGroup===0&&m.push(M),f.push(M),M=M+L+T),e.virtualSize+=L+T,C=L,P+=1}}if(e.virtualSize=Math.max(e.virtualSize,E)+y,a&&n&&("slide"===i.effect||"coverflow"===i.effect)&&(s.style.width=`${e.virtualSize+T}px`),i.setWrapperSize&&(s.style[e.getDirectionLabel("width")]=`${e.virtualSize+T}px`),z&&e.grid.updateWrapperSize(L,m),!i.centeredSlides){const t="auto"!==i.slidesPerView&&i.slidesPerView%1!=0,s=i.snapToSlideEdge&&!i.loop&&("auto"===i.slidesPerView||t);let r=m.length;if(s){let e;if("auto"===i.slidesPerView){e=1;let t=0;for(let i=g.length-1;i>=0&&(t+=g[i]+(i<g.length-1?T:0),t<=E);i-=1)e=g.length-i}else e=Math.floor(i.slidesPerView);r=Math.max(u-e,0)}const a=[];for(let t=0;t<m.length;t+=1){let n=m[t];i.roundLengths&&(n=Math.floor(n)),s?t<=r&&a.push(n):m[t]<=e.virtualSize-E&&a.push(n)}m=a,Math.floor(e.virtualSize-E)-Math.floor(m[m.length-1])>1&&(s||m.push(e.virtualSize-E))}if(l&&i.loop){const t=g[0]+T,s=(e.virtual.slidesBefore??0)+(e.virtual.slidesAfter??0);if(i.slidesPerGroup>1){const e=Math.ceil(s/i.slidesPerGroup),r=t*i.slidesPerGroup;for(let t=0;t<e;t+=1)m.push(m[m.length-1]+r)}for(let r=0;r<s;r+=1)1===i.slidesPerGroup&&m.push(m[m.length-1]+t),f.push(f[f.length-1]+t),e.virtualSize+=t}if(0===m.length&&(m=[0]),0!==T){const t=e.isHorizontal()&&a?"marginLeft":e.getDirectionLabel("marginRight");c.filter((e,t)=>!(i.cssMode&&!i.loop)||t!==c.length-1).forEach(e=>{e.style[t]=`${T}px`})}if(i.centeredSlides&&i.centeredSlidesBounds){let e=0;g.forEach(t=>{e+=t+(T||0)}),e-=T;const t=e>E?e-E:0;m=m.map(e=>e<=0?-b:e>t?t+y:e)}if(i.centerInsufficientSlides){let e=0;if(g.forEach(t=>{e+=t+(T||0)}),e-=T,e<E){const t=(E-e)/2;m.forEach((e,i)=>{m[i]=e-t}),f.forEach((e,i)=>{f[i]=e+t})}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:f,slidesSizesGrid:g}),i.centeredSlides&&i.cssMode&&!i.centeredSlidesBounds){o(s,"--swiper-centered-offset-before",-m[0]+"px"),o(s,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],i=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+i)}if(u!==p&&e.emit("slidesLengthChange"),m.length!==x&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==S&&e.emit("slidesGridLengthChange"),i.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||i.cssMode||"slide"!==i.effect&&"fade"!==i.effect)){const t=`${i.containerModifierClass}backface-hidden`,s=e.el.classList.contains(t);u<=i.maxBackfaceHiddenSlides?s||e.el.classList.add(t):s&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,i=[],s=t.virtual&&t.params.virtual?.enabled;let r,a=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>s?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=>{i.push(e)});else for(r=0;r<Math.ceil(t.params.slidesPerView);r+=1){const e=t.activeIndex+r;if(e>t.slides.length&&!s)break;const a=n(e);a&&i.push(a)}else{const e=n(t.activeIndex);e&&i.push(e)}for(r=0;r<i.length;r+=1)if(void 0!==i[r]){const e=i[r].offsetHeight;a=e>a?e:a}(a||0===a)&&(t.wrapperEl.style.height=`${a}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,i=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=(e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop)-i-e.cssOverflowAdjustment()},updateSlidesProgress:function(e=this&&this.translate||0){const t=this,i=t.params,{slides:s,rtlTranslate:r,snapGrid:a}=t;if(0===s.length)return;void 0===s[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;r&&(n=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=i.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<s.length;e+=1){const l=s[e];let d=l.swiperSlideOffset??0;i.cssMode&&i.centeredSlides&&(d-=s[0].swiperSlideOffset??0);const p=l.swiperSlideSize??0,c=(n+(i.centeredSlides?t.minTranslate():0)-d)/(p+o),u=(n-a[0]+(i.centeredSlides?t.minTranslate():0)-d)/(p+o),h=-(n-d),m=h+t.slidesSizesGrid[e],f=h>=0&&h<=t.size-t.slidesSizesGrid[e],g=h>=0&&h<t.size-1||m>1&&m<=t.size||h<=0&&m>=t.size;g&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),Q(l,g,i.slideVisibleClass),Q(l,f,i.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-u:u}},updateProgress:function(e){const t=this;if(void 0===e){const i=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*i||0}const i=t.params,s=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:a,isEnd:n}=t,o=t.progressLoop;const l=a,d=n;if(0===s)r=0,a=!0,n=!0;else{r=(e-t.minTranslate())/s;const i=Math.abs(e-t.minTranslate()