{"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","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","slideEl","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","remove","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getAttribute","visibleSlides","activeIndex","offsetHeight","minusOffset","isElement","offsetLeft","offsetTop","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","getSlideIndex","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","realIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","initialized","runCallbacksOnInit","updateClickedSlide","e","closest","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","slidesPerViewDynamic","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","prepend","append","recalcSlides","currentSlideTranslate","diff","touches","controller","control","loopParams","c","loopDestroy","newSlidesOrder","swiperSlideIndex","removeAttribute","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","timeout","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","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","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","classesToSelector","createElementIfNotDefined","checkProps","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","pfx","bulletSize","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","makeElementsArray","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","total","firstIndex","midIndex","subEl","suffix","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","_s","isHidden","toggle","disabledClass","navigationDisabledClass","getEl","res","toggleEl","disabled","tagName","onPrevClick","onNextClick","initButton","destroyButton"],"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/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/shared/process-lazy-preloader.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/classes-to-selector.js","../src/shared/create-element-if-not-defined.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/swiper.js","../src/modules/pagination/pagination.js","../src/modules/navigation/navigation.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: document.documentElement && '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","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 }\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 + params.spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + params.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 (params.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 + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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 + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\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) - minusOffset;\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 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 + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.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.getSlideIndex(\n swiper.slides.filter((el) => el.getAttribute('data-swiper-slide-index') === '0')[0],\n );\n const lastSlideIndex = swiper.getSlideIndex(\n swiper.slides.filter(\n (el) => el.getAttribute('data-swiper-slide-index') * 1 === swiper.slides.length - 1,\n )[0],\n );\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","export 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 snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\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 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 if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\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 translate < swiper.translate &&\n 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.getSlideIndex(\n swiper.slides.filter(\n (slideEl) => slideEl.getAttribute('data-swiper-slide-index') * 1 === newIndex,\n )[0],\n );\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('swiper-slide-active'))[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 slidesEl.prepend(swiper.slides[index]);\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach((index) => {\n slidesEl.append(swiper.slides[index]);\n });\n }\n\n swiper.recalcSlides();\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.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 { slides, params, slidesEl } = swiper;\n if (!params.loop || (swiper.virtual && swiper.params.virtual.enabled)) return;\n swiper.recalcSlides();\n\n const newSlidesOrder = [];\n 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 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 swiper.params.freeMode &&\n swiper.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 (swiper.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 (swiper.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 swiper.params.virtual && swiper.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","let timeout;\nexport 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(timeout);\n timeout = 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","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","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\n\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\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 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\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 now,\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 } 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 // 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: now(),\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 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 if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\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 (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.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\n // Init Flag\n swiper.initialized = true;\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","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\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","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 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 if (index < swiper.loopedSlides || index > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: index < swiper.loopedSlides ? 'prev' : 'next',\n activeSlideIndex: index,\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 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 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 } else {\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\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.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 bulletEl.classList.remove(\n ...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(\n (suffix) => `${params.bulletActiveClass}${suffix}`,\n ),\n );\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);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(`${params.bulletActiveClass}-main`);\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);\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`);\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 paginationHTML += `<${params.bulletElement} 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\n el.forEach((subEl) => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets = [\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),\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","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"],"mappings":"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"}