{"version":3,"file":"1076.js","mappings":"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","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","filter","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","noExtend","i","nextSource","keysArray","indexOf","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","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","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","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","toggleSlideClasses","condition","className","contains","remove","processLazyPreloader","imageEl","destroyed","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","index","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","includes","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","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","t","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","setTransition","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","centeredSlides","slidesSizesGrid","setTranslate","activeSlideIndex","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","onTouchEnd","isSafari","isWebView","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","spaceBetween","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","Number","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","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","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","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","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","getBrowser","calcBrowser","needPerspectiveFix","toLowerCase","String","major","minor","num","test","isSafariBrowser","need3dFix","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","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","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","PIXEL_STEP","deltaY","deltaX","deltaMode","LINE_HEIGHT","PAGE_HEIGHT","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","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","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","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","getMaxRatio","naturalWidth","eventWithinSlide","getSlideSelector","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","preventTouchMove","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","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","itemRoleDescriptionMessage","slideRole","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","isVisible","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","disableOnInteraction","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","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale2","zFactor","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","r","custom","translateString","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","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","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams"],"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"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && 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 Object.keys(src).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 return [...element.children].filter(el => el.matches(selector));\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}\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, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v 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: 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;\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 if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n 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\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\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\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 slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\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.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\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.filter(slideEl => slideEl.column === activeIndex)[0];\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 // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\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.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].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.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].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 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } 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.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n 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 (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = 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) {\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].filter(t => t.identifier === data.touchId)[0];\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) {\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 });\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 (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] : 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.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].filter(t => t.identifier === data.touchId)[0];\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\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\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const 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 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.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, 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 el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\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 swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\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.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\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.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\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) {\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 = swiper.activeIndex || 0;\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 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 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.autoplayDisableOnInteraction) 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);\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 if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\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 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 swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } 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.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').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 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 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 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 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 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 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n allowTouchMove();\n return;\n }\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 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 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 }\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 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 }\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 controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\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 itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\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) 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 swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\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\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 swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\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.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\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) {\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.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n 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 swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n 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.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\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 onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', 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 } 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 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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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 if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\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(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${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 } 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 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 if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\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(${rotateX}deg) rotateY(${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 } 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 // 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 if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${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 } 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 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 if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\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(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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 watchSlidesProgress: 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 && currentParams.thumbs && !currentParams.thumbs.swiper) {\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.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\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.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\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-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-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-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