{"version":3,"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","deleteProps","object","e","nextTick","delay","now","el","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","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","startTime","time","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","getSupport","deviceCached","calcDevice","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","Number","isWebView","test","isSafariBrowser","getBrowser","Resize","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","observerUpdate","attributes","childList","isElement","characterData","init","observeParents","containerParents","hostEl","observeSlideChildren","destroy","disconnect","splice","eventsEmitter","events","handler","priority","self","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","unshift","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","unsetSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","remove","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","slideSelector","closest","lazyEl","lazyPreloaderClass","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEnd","transitionDuration","transitionDelay","transitionEmit","direction","step","transitionStart","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","isInitialVirtual","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","indexAsNumber","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","slidesToAdd","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndex","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","loopFixed","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isTouchEvent","proceed","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","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","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","slideInView","complete","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","res","slideSlots","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","offset","tempDOM","innerHTML","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","getSlides","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","domSlidesAssigned","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","targetElContainsTarget","rtlFactor","positions","sign","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","getEl","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","_s","targetIsButton","find","pagination","clickable","isHidden","toggle","classesToSelector","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","getMoveDirection","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","scrollbarDisabledClass","dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","Parallax","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","currentScale","currentRotate","elements","parallaxEl","parallaxDuration","_swiper","Zoom","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","isScaling","fakeGestureTouched","fakeGestureMoved","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","defineProperty","get","set","getDistanceBetweenTouches","x1","y1","x2","y2","distance","getMaxRatio","naturalWidth","imageMaxRatio","getScaleOrigin","getSlideSelector","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","allowTouchMoveTimeout","preventTouchMove","scaledWidth","scaledHeight","scaleRatio","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","in","out","Controller","inverse","by","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","isFinite","setControlledTransition","removeSpline","controlElements","controlElement","onControllerSwiper","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","liveRegion","preventFocusHandler","focusTargetSlideEl","visibilityChangedTimestamp","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","hasClickablePagination","updatePagination","initNavEl","wrapperId","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","ariaLabelMessage","paginationEl","History","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","activeSlideHash","setHash","Autoplay","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","calcTimeLeft","getSlideDelay","currentSlideDelay","run","delayForce","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","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","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","onInit","onUpdate","appendElement","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows","shadowEl","requireUpdateOnVirtual","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","getSlide","eventTriggered","transitionEndTarget","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","wrapperRotate","cubeShadowEl","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","shadowContainer","EffectFlip","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","CAROUSEL_TYPE","Carousel","DEFAULT","componentDidLoad","slotElements","swiperSectionElement","parentTarget","containerId","defaultSettings","startIndex","timeLineSettings","_total","customHTML","status","dataset","name","carouselType","TIMELINE","h","Host","ref","class"],"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/modules/virtual.mjs","node_modules/swiper/modules/keyboard.mjs","node_modules/swiper/modules/mousewheel.mjs","node_modules/swiper/shared/create-element-if-not-defined.mjs","node_modules/swiper/modules/navigation.mjs","node_modules/swiper/shared/classes-to-selector.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/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/modules/effect-fade.mjs","node_modules/swiper/modules/effect-cube.mjs","node_modules/swiper/shared/create-shadow.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/swiper-bundle.mjs","src/webcomponents/lk-carousel/helper.tsx","src/webcomponents/lk-carousel/lk-carousel.tsx"],"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 const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.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 // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n 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 (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].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 && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].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 if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\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 if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.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 if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { 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 if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.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 { 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","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","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","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\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 if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n 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 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 image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.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 || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.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 if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.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 eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","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 { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { 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","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/**\n * Swiper 11.1.15\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: November 18, 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","enum CAROUSEL_TYPE {\n DEFAULT = 'default',\n TIMELINE = 'timeline',\n}\n\nexport { CAROUSEL_TYPE }","import { Component, h, Host, Prop } from '@stencil/core';\nimport Swiper from 'swiper/swiper-bundle.mjs';\nimport 'swiper/swiper-bundle.css';\nimport { CAROUSEL_TYPE } from './helper';\n\n@Component({\n tag: 'lk-carousel'\n})\n\nexport class Carousel {\n\n @Prop() containerId: string;\n @Prop() startIndex: number = 0;\n @Prop() freeMode: boolean = false;\n @Prop() slidesPerView: number = 1;\n @Prop() carouselType: CAROUSEL_TYPE = CAROUSEL_TYPE.DEFAULT;\n\n private swiperSectionElement?: HTMLInputElement;\n slotElements?: any;\n \n componentDidLoad() {\n if(this.slotElements.length > 10) this.swiperSectionElement.classList.add('over-10');\n\n const parentTarget = `.swiper-section${this.containerId}`;\n\n const a11y = {\n prevSlideMessage: 'Forrige bilde',\n nextSlideMessage: 'Neste bilde',\n firstSlideMessage: 'Dette er det første bildet',\n lastSlideMessage: 'Dette er det siste bildet',\n paginationBulletMessage: 'Gå til bilde nummer {{index}}',\n };\n\n const navigation = {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n ...(this.slotElements.length == 1) && {disabledClass: 'disabled_swiper_button_one_photo'}\n };\n\n const defaultSettings = {\n grabCursor: true,\n freeMode: this.freeMode,\n slidesPerView: 1,\n initialSlide: this.startIndex,\n breakpoints: {\n 768: {\n slidesPerView: this.slidesPerView,\n }\n },\n pagination: {\n clickable: true,\n el: `.swiper-pagination${this.containerId}`\n },\n a11y,\n navigation\n };\n\n //Combine default settings with timeline settings\n const timeLineSettings = { \n ...defaultSettings,\n ...{\n watchOverflow: true,\n slidesPerView: 'auto',\n spaceBetween: 10,\n centeredSlides: true,\n slideToClickedSlide: true,\n // nested settings are not copied\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n type: 'custom',\n renderCustom: (_swiper, current, _total) => {\n let customHTML = ''\n const slides = [...this.slotElements]\n slides.map((slide, index) => {\n const status = slide.dataset.name\n customHTML += `
`\n })\n return customHTML\n },\n }\n },\n };\n\n switch (this.carouselType) {\n case CAROUSEL_TYPE.TIMELINE:\n return new Swiper( parentTarget , timeLineSettings);\n default:\n return new Swiper( parentTarget , defaultSettings);\n }\n }\n\n render() {\n return (\n \n
this.swiperSectionElement = el as HTMLInputElement} class={`\n swiper swiper-section \n swiper-section${this.containerId} \n ${this.carouselType == CAROUSEL_TYPE.TIMELINE ? 'swiper-section-timeline': ''}\n `}>\n
this.slotElements = el.children}>\n \n
\n
<
\n
>
\n
\n
\n
\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}