{"version":3,"file":"swiper-bundle.min.js","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","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","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","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","tag","classes","classList","add","Array","isArray","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevSlide","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","e","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","append","recalcSlides","currentSlideTranslate","diff","touches","controller","control","loopParams","c","loopDestroy","newSlidesOrder","swiperSlideIndex","onTouchStart","touchEventsData","evCache","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","type","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","shadowEl","getWrapperSelector","trim","getWrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","module","m","installModule","createElementIfNotDefined","checkProps","classesToSelector","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","_s","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","newSlideIndex","currentSlideIndex","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","timeout","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","run","delayForce","currentSlideDelay","activeSlideEl","getSlideDelay","proceed","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave"],"sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/events-emitter.js","../src/shared/process-lazy-preloader.js","../src/core/update/index.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/translate/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/transition/transitionEmit.js","../src/core/slide/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/loop/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/onLoad.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/core/transition/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/grab-cursor/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/breakpoints/index.js","../src/core/breakpoints/getBreakpoint.js","../src/core/classes/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/shared/create-element-if-not-defined.js","../src/shared/classes-to-selector.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/swiper.js","../src/modules/navigation/navigation.js","../src/modules/pagination/pagination.js","../src/modules/autoplay/autoplay.js"],"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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow, getDocument } from 'ssr-window';\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 = 0) {\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\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .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 =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\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 (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\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(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[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}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\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\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}\n\nfunction getSlideTransformEl(slideEl) {\n return (\n slideEl.querySelector('.swiper-slide-transform') ||\n (slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform')) ||\n slideEl\n );\n}\n\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach((el) => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter((el) => el.matches(selector));\n}\n\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [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}\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}\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}\n\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return (\n el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] +\n parseFloat(\n window\n .getComputedStyle(el, null)\n .getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top'),\n ) +\n parseFloat(\n window\n .getComputedStyle(el, null)\n .getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'),\n )\n );\n }\n return el.offsetWidth;\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n getSlideTransformEl,\n // dom\n findElementsInElements,\n createElement,\n elementChildren,\n elementOffset,\n elementPrevAll,\n elementNextAll,\n elementStyle,\n elementIndex,\n elementParents,\n elementTransitionEnd,\n elementOuterSize,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll:\n document.documentElement &&\n document.documentElement.style &&\n 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\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 = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\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}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\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\n .split('Version/')[1]\n .split(' ')[0]\n .split('.')\n .map((num) => Number(num));\n needPerspectiveFix = major < 16 || (major === 16 && minor < 2);\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\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\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(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\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\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\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 (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\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 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\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","export const 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 const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\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};\n\nexport const 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 =\n swiper.params.slidesPerView === 'auto'\n ? swiper.slidesPerViewDynamic()\n : 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(\n ...Array.from({ length: amount }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }),\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 (\n let i = Math.max(activeIndex - amount, 0);\n i <= Math.min(slideIndexLastInView + amount, len - 1);\n i += 1\n ) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { elementStyle } from '../../shared/utils.js';\n\nexport default function 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 =\n width -\n parseInt(elementStyle(el, 'padding-left') || 0, 10) -\n parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height =\n height -\n parseInt(elementStyle(el, 'padding-top') || 0, 10) -\n parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import {\n elementChildren,\n elementOuterSize,\n elementStyle,\n setCSSProperty,\n} from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { wrapperEl, slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = 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\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\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\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\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\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, slidesLength, getDirectionLabel);\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[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()\n ? elementOuterSize(slide, 'width', true)\n : 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 { clientWidth, offsetWidth } = slide;\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n 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 (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\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[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\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\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\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(\n (swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup,\n );\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\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .forEach((slideEl) => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\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\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\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\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","export default function 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\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","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement\n ? swiper.isHorizontal()\n ? swiper.wrapperEl.offsetLeft\n : swiper.wrapperEl.offsetTop\n : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset =\n (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) -\n minusOffset -\n swiper.cssOverflowAdjustment();\n }\n}\n","export default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach((slideEl) => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\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\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\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n","export default function 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 { progress, isBeginning, isEnd, progressLoop } = 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\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\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\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\n swiper.emit('progress', progress);\n}\n","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\n\nexport default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, slidesEl, activeIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n const getFilteredSlide = (selector) => {\n return elementChildren(\n slidesEl,\n `.${params.slideClass}${selector}, swiper-slide${selector}`,\n )[0];\n };\n slides.forEach((slideEl) => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n\n let activeSlide;\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 activeSlide = slides[activeIndex];\n }\n\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}\n","import { preload } from '../../shared/process-lazy-preloader.js';\n\nexport function getActiveIndexByTranslate(swiper) {\n const { slidesGrid, params } = 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 (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\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}\nexport default function 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\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) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(\n swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex,\n 10,\n );\n } else {\n realIndex = activeIndex;\n }\n\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n\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\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 (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\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\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\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({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\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(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\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","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\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\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 (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\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 (\n !swiper.allowSlideNext &&\n (rtl\n ? translate > swiper.translate && translate > swiper.minTranslate()\n : translate < swiper.translate && translate < swiper.minTranslate())\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\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({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\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\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\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n\n index = indexAsNumber;\n }\n\n const swiper = this;\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 newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { enabled, params, animating } = swiper;\n if (!enabled) return swiper;\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({ direction: 'next' });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\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","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, snapGrid, slidesGrid, rtlTranslate, enabled, animating } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n\n swiper.loopFix({ direction: 'prev' });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\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\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 (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\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 =\n swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\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\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\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\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import { elementChildren, nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, slidesEl } = swiper;\n\n const slidesPerView =\n 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 (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(\n elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0],\n );\n\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(\n elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0],\n );\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { elementChildren } from '../../shared/utils.js';\n\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const { params, slidesEl } = swiper;\n if (!params.loop || (swiper.virtual && swiper.params.virtual.enabled)) return;\n\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n\n swiper.loopFix({ slideRealIndex, direction: params.centeredSlides ? undefined : 'next' });\n}\n","export default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel,\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n\n const { slides, allowSlidePrev, allowSlideNext, slidesEl, params } = swiper;\n\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\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\n const slidesPerView =\n params.slidesPerView === 'auto'\n ? swiper.slidesPerViewDynamic()\n : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - (loopedSlides % params.slidesPerGroup);\n }\n swiper.loopedSlides = loopedSlides;\n\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n\n let activeIndex = swiper.activeIndex;\n\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(\n swiper.slides.filter((el) => el.classList.contains(params.slideActiveClass))[0],\n );\n } else {\n activeIndex = activeSlideIndex;\n }\n\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(\n activeSlideIndex - (swiper.slides.length - loopedSlides * 2),\n params.slidesPerGroup,\n );\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n\n if (isPrev) {\n prependSlidesIndexes.forEach((index) => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach((index) => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\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 + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\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.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\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(loopParams);\n });\n } else if (\n swiper.controller.control instanceof swiper.constructor &&\n swiper.controller.control.params.loop\n ) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { params, slidesEl } = swiper;\n if (!params.loop || (swiper.virtual && swiper.params.virtual.enabled)) return;\n swiper.recalcSlides();\n\n const newSlidesOrder = [];\n swiper.slides.forEach((slideEl) => {\n const index =\n typeof slideEl.swiperSlideIndex === 'undefined'\n ? slideEl.getAttribute('data-swiper-slide-index') * 1\n : 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","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\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}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${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 (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, targetEl)\n : targetEl.closest(noSwipingSelector))\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\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 const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\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 (\n document.activeElement &&\n document.activeElement.matches(data.focusableElements) &&\n document.activeElement !== targetEl\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !targetEl.isContentEditable\n ) {\n e.preventDefault();\n }\n if (\n params.freeMode &&\n params.freeMode.enabled &&\n swiper.freeMode &&\n swiper.animating &&\n !params.cssMode\n ) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n\n const pointerIndex = data.evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n\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 prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\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 (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\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)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\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()\n ? touchAngle > params.touchAngle\n : 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 (\n data.isScrolling ||\n (swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1)\n ) {\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\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal()\n ? touches.currentX - touches.previousX\n : touches.currentY - touches.previousY;\n\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\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n\n const isLoop = swiper.params.loop && !params.cssMode;\n\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({ direction: swiper.swipeDirection });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (\n data.isMoved &&\n prevTouchesDirection !== swiper.touchesDirection &&\n isLoop &&\n Math.abs(diff) >= 1\n ) {\n // need another loop fix\n swiper.loopFix({ direction: swiper.swipeDirection, setTranslate: true });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (\n isLoop &&\n !loopFixed &&\n data.currentTranslate >\n (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())\n ) {\n swiper.loopFix({ direction: 'prev', setTranslate: true, activeSlideIndex: 0 });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (\n isLoop &&\n !loopFixed &&\n data.currentTranslate <\n (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())\n ) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex:\n swiper.slides.length -\n (params.slidesPerView === 'auto'\n ? swiper.slidesPerViewDynamic()\n : Math.ceil(parseFloat(params.slidesPerView, 10))),\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\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()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\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","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex((cachedEv) => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed =\n event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\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 // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\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);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\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\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex =\n params.virtual && params.virtual.enabled && swiper.virtual\n ? swiper.virtual.slides.length - 1\n : 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)\n swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (\n rewindLastIndex !== null &&\n ratio < 0 &&\n Math.abs(ratio) > params.longSwipesRatio\n ) {\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 =\n swiper.navigation &&\n (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","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides &&\n !isVirtualLoop\n ) {\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\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\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function 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","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = 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\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\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\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\n\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (\n swiper.params.cssMode ||\n (swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight)\n ) {\n return;\n }\n swiper.update();\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nimport onLoad from './onLoad.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, el, wrapperEl, device } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, { passive: false });\n document[domMethod]('pointermove', swiper.onTouchMove, { passive: false, capture });\n document[domMethod]('pointerup', swiper.onTouchEnd, { passive: true });\n document[domMethod]('pointercancel', swiper.onTouchEnd, { passive: true });\n document[domMethod]('pointerout', swiper.onTouchEnd, { passive: true });\n document[domMethod]('pointerleave', swiper.onTouchEnd, { passive: true });\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](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, { capture: true });\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { realIndex, initialized, params, el } = 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\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\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\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(\n `${params.containerModifierClass}grid`,\n `${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\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\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n 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\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}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\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 enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\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, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\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\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n\n // rewind\n rewind: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n maxBackfaceHiddenSlides: 10,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\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 (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport {\n extend,\n deleteProps,\n createElement,\n elementChildren,\n elementStyle,\n elementIndex,\n} from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader, preload } from '../shared/process-lazy-preloader.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n const document = getDocument();\n\n if (\n params.el &&\n typeof params.el === 'string' &&\n document.querySelectorAll(params.el).length > 1\n ) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\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({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\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\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\n // Classes\n classNames: [],\n\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\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\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\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 evCache: [],\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\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\n getSlideIndex(slideEl) {\n const { slidesEl, params } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n\n getSlideIndexByData(index) {\n return this.getSlideIndex(\n this.slides.filter(\n (slideEl) => slideEl.getAttribute('data-swiper-slide-index') * 1 === index,\n )[0],\n );\n }\n\n recalcSlides() {\n const swiper = this;\n const { slidesEl, params } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\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\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\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\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 (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\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({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? 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 += 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\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : 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\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach((imageEl) => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\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 (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !params.centeredSlides\n ) {\n const slides =\n 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\n changeDirection(newDirection, needUpdate = true) {\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 (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.forEach((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\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\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\n el.swiper = swiper;\n if (el.shadowEl) {\n swiper.isElement = true;\n }\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\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\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement ? el : wrapperEl,\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\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\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(\n swiper.params.initialSlide + swiper.virtual.slidesBefore,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\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\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].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\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, el, wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach((slideEl) => {\n slideEl.classList.remove(\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n );\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\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\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\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}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n 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","export default function 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","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\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 { value, point };\n }\n return { value: point, 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 { point, value } = 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","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","function 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}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, el, device } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n { 'watch-progress': params.watchSlidesProgress },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { el, classNames } = swiper;\n\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n","import { createElement, elementChildren } from './utils.js';\n\nexport default function 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","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\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\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\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\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\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\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\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\n swiper.navigation = {\n nextEl: null,\n prevEl: null,\n };\n\n const makeElementsArray = (el) => {\n if (!Array.isArray(el)) el = [el].filter((e) => !!e);\n return el;\n };\n\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n res.length > 1 &&\n swiper.el.querySelectorAll(el).length === 1\n ) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\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 { nextEl, prevEl } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\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\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl,\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n\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\n nextEl.forEach((el) => initButton(el, 'next'));\n prevEl.forEach((el) => initButton(el, 'prev'));\n }\n function destroy() {\n let { nextEl, prevEl } = 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\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 { nextEl, prevEl } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl]\n .filter((el) => !!el)\n .forEach((el) =>\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass),\n );\n });\n on('click', (_s, e) => {\n let { nextEl, prevEl } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !prevEl.includes(targetEl) &&\n !nextEl.includes(targetEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n 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]\n .filter((el) => !!el)\n .forEach((el) => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\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', // '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\n swiper.pagination = {\n el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n const makeElementsArray = (el) => {\n if (!Array.isArray(el)) el = [el].filter((e) => !!e);\n return el;\n };\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n (Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0)\n );\n }\n\n function setSideBullets(bulletEl, position) {\n const { bulletActiveClass } = 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\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 newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false,\n });\n }\n\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\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\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const total = swiper.params.loop\n ? Math.ceil(slidesLength / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current =\n swiper.params.slidesPerGroup > 1\n ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup)\n : 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 (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\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'] = `${\n bulletSize * (params.dynamicMainBullets + 4)\n }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 = [\n ...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(\n (suffix) => `${params.bulletActiveClass}${suffix}`,\n ),\n ]\n .map((s) => (typeof s === 'string' && s.includes(' ') ? s.split(' ') : s))\n .flat();\n bulletEl.classList.remove(...classesToRemove);\n });\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\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 =\n (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\n .querySelectorAll(classesToSelector(params.progressbarFillClass))\n .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 =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil(slidesLength / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n numberOfBullets > slidesLength\n ) {\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 ``;\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(\n ...subEl.querySelectorAll(classesToSelector(params.bulletClass)),\n );\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n 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.shadowRoot.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\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n Array.isArray(el) &&\n el.length > 1\n ) {\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\n Object.assign(swiper.pagination, {\n el,\n });\n\n el = makeElementsArray(el);\n el.forEach((subEl) => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(params.clickableClass);\n }\n\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\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\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\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(\n swiper.isHorizontal() ? params.horizontalClass : params.verticalClass,\n );\n if (params.clickable) {\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n\n if (swiper.pagination.bullets)\n swiper.pagination.bullets.forEach((subEl) =>\n subEl.classList.remove(...params.bulletActiveClass.split(' ')),\n );\n }\n\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let { el } = 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\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 { el } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach((subEl) =>\n subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass),\n );\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n let { el } = swiper.pagination;\n if (!Array.isArray(el)) el = [el].filter((element) => !!element);\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n el &&\n el.length > 0 &&\n !targetEl.classList.contains(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n 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\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let { el } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach((subEl) =>\n subEl.classList.remove(swiper.params.pagination.paginationDisabledClass),\n );\n }\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let { el } = 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\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy,\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\n\nexport default function Autoplay({ swiper, extendParams, on, emit, params }) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\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\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 resume();\n }\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\n ? autoplayTimeLeft\n : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter((slideEl) =>\n slideEl.classList.contains('swiper-slide-active'),\n )[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\n const run = (delayForce) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n\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 (\n !Number.isNaN(currentSlideDelay) &&\n currentSlideDelay > 0 &&\n typeof delayForce === 'undefined'\n ) {\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\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\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\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\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\n const resume = () => {\n if (\n (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) ||\n swiper.destroyed ||\n !swiper.autoplay.running\n )\n 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\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\n const onPointerEnter = (e) => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pause(true);\n };\n\n const onPointerLeave = (e) => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\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\n const detachMouseEvents = () => {\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\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\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\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n\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\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume,\n });\n}\n"],"mappings":"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"}