{"version":3,"file":"570.f165561e1fddefd9.js","mappings":"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","names":["isObject","obj","constructor","Object","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","to","arguments","undefined","i","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","s","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","top","scrollY","scrollTop","clientTop","left","scrollX","scrollLeft","clientLeft","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","getDevice","overrides","calcDevice","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getBrowser","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","destroyed","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","index","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","transitionEmit","runCallbacks","direction","step","previousIndex","emit","preventEdgeSwipe","event","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","data","touchEventsData","type","pointerId","targetTouches","touchId","identifier","pageX","touches","enabled","simulateTouch","pointerType","animating","preventInteractionOnTransition","cssMode","loopFix","targetEl","touchEventsTarget","elementIsChildOf","isChild","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","shift","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","noSwiping","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","allowClick","swipeHandler","currentX","currentY","pageY","startY","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","touchStartForcePreventDefault","allowTouchMove","touchStartPreventDefault","isContentEditable","freeMode","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","find","t","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","setTransition","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","centeredSlides","slidesSizesGrid","spaceBetween","setTranslate","activeSlideIndex","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","onTouchEnd","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","currentPos","swipeToLast","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","isBeginning","virtual","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","isVirtual","updateSlides","slideToLoop","autoplay","running","paused","resizeTimeout","resume","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","onLoad","autoHeight","update","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","events","method","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","initialSlide","resizeObserver","createElements","eventsPrefix","url","setWrapperSize","virtualTranslate","effect","breakpointsBase","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","uniqueNavElements","slideToClickedSlide","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideBlankClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","on","handler","priority","self","eventsListeners","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","context","_len2","_key2","unshift","clientWidth","clientHeight","parseInt","isNaN","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","originalProgress","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","getFilteredSlide","activeSlide","prevSlide","nextSlide","elementNextAll","nextEls","nextElementSibling","next","elementPrevAll","prevEls","previousElementSibling","prev","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","getAttribute","initialized","pathEl","slideFound","clickedSlide","clickedIndex","getSwiperTranslate","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","transitionStart","transitionEnd","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","slideRealIndex","slideNext","perGroup","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGrid","addBlankSlides","amountOfSlides","append","recalcSlides","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","addClasses","classNames","suffixes","prepareClasses","entries","prefix","resultClasses","item","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","deleteProps","object","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","Resize","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","Virtual","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","forceActiveIndex","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","timeout","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","PIXEL_STEP","deltaY","deltaX","deltaMode","LINE_HEIGHT","PAGE_HEIGHT","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","disableOnInteraction","stop","releaseScroll","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","pagination","clickable","isHidden","toggle","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","getMoveDirection","total","firstIndex","lastIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","enableDraggable","disableDraggable","scrollbarDisabledClass","Parallax","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","Zoom","zoom","limitToOriginalSize","maxRatio","panOnMouseMove","containerClass","zoomedSlideClass","currentScale","isScaling","isPanningWithMouse","mousePanStart","mousePanSensitivity","fakeGestureTouched","fakeGestureMoved","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","getMaxRatio","naturalWidth","eventWithinSlide","getSlideSelector","eventWithinZoomContainer","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","isMousePan","onMouseMove","scaledHeight","preventTouchMove","scaleRatio","onTransitionEnd","DOMMatrix","f","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","scaledWidth","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","newPositionX","newPositionY","momentumDuration","in","out","Controller","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","x2","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","multiplier","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","addElControls","controls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","getRandomNumber","repeat","randomChar","round","random","live","addElId","addElLive","updateNavigation","updatePagination","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","Autoplay","timeLeft","waitForTransition","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","raf","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","onInit","onUpdate","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","Manipulation","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale2","zFactor","EffectFlip","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","custom","translateString","rotateString","opacityString","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","subProgress","prevY","paramsList","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","startsWith","parentObjName","subObjName","SwiperCSS","ClassToExtend","DummyHTMLElement","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsNavigation","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","updateSwiper","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperElementRegisterParams","customElements","define","SwiperSlide","lazy","lazyDiv","SwiperComponent","_SwiperComponent","resize","EventEmitter","afterinit","overFlow","swiperElement","signal","ngAfterViewInit","swiperConstructor","nativeElement","swiperOptions","showOverFlow","onAfterInit","ngOnInit","selectors","viewQuery","rf","ctx","i0","SwiperElementComponent","_SwiperElementComponent","standalone","features","ngContentSelectors","_c0","decls","vars","template"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./node_modules/swiper/shared/ssr-window.esm.mjs","./node_modules/swiper/shared/utils.mjs","./node_modules/swiper/shared/swiper-core.mjs","./node_modules/swiper/shared/create-element-if-not-defined.mjs","./node_modules/swiper/shared/classes-to-selector.mjs","./node_modules/swiper/modules/manipulation.mjs","./node_modules/swiper/shared/effect-init.mjs","./node_modules/swiper/shared/effect-target.mjs","./node_modules/swiper/shared/effect-virtual-transition-end.mjs","./node_modules/swiper/shared/create-shadow.mjs","./node_modules/swiper/swiper-bundle.mjs","./node_modules/swiper/modules/virtual.mjs","./node_modules/swiper/modules/keyboard.mjs","./node_modules/swiper/modules/mousewheel.mjs","./node_modules/swiper/modules/navigation.mjs","./node_modules/swiper/modules/pagination.mjs","./node_modules/swiper/modules/scrollbar.mjs","./node_modules/swiper/modules/parallax.mjs","./node_modules/swiper/modules/zoom.mjs","./node_modules/swiper/modules/controller.mjs","./node_modules/swiper/modules/a11y.mjs","./node_modules/swiper/modules/history.mjs","./node_modules/swiper/modules/hash-navigation.mjs","./node_modules/swiper/modules/autoplay.mjs","./node_modules/swiper/modules/thumbs.mjs","./node_modules/swiper/modules/free-mode.mjs","./node_modules/swiper/modules/grid.mjs","./node_modules/swiper/modules/effect-fade.mjs","./node_modules/swiper/modules/effect-cube.mjs","./node_modules/swiper/modules/effect-flip.mjs","./node_modules/swiper/modules/effect-coverflow.mjs","./node_modules/swiper/modules/effect-creative.mjs","./node_modules/swiper/modules/effect-cards.mjs","./node_modules/swiper/shared/update-swiper.mjs","./node_modules/swiper/shared/get-element-params.mjs","./node_modules/swiper/swiper-element-bundle.mjs","./src/app/modules/shared/components/swiper-component/swiper-component.component.ts","./src/app/modules/shared/components/swiper-component/swiper-component.component.html","./src/app/modules/shared/components/swiper-element/swiper-element.component.ts","./src/app/modules/shared/components/swiper-element/swiper-element.component.html"],"sourcesContent":["/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 11.2.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit, forceActiveIndex) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n _loopSwapReset: false,\n watchSlidesProgress: true,\n loopAdditionalSlides: 3,\n centeredSlides: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`));\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 11.2.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2025\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n