{"version":3,"sources":["all.js"],"names":["modules","name","path","index","Object","freeze","__proto__","isObject$1","obj","constructor","extend$1","target","src","keys","forEach","key","length","console","log","document","addEventListener","module","elements","querySelectorAll","element","Promise","resolve","then","lightboxGallery","reject","queueMicrotask","setTimeout","bind","Error","__variableDynamicImportRuntime0__","moduleImport","default","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","querySelector","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","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","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","e","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","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","pathEl","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","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","isFreeMode","freeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","slot","elementsQueue","elementToCheck","elementIsChildOfSlot","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","checkProps","createElementIfNotDefined","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetIsButton","pagination","clickable","isHidden","toggle","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","prototypeGroup","protoMethod","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","parents","parentElement","elementParents","disconnect","link","rel","head","appendChild","loadSwiperStyles","triggers","dialog","close","mainSwiper","thumbnailsSwiper","mainSwiperInstance","thumbnailsSwiperInstance","handleTriggerClick","currentTarget","showModal","handleThumbEnterKey","a11y","nextSlideMessage","prevSlideMessage","keyboard","onlyInViewport","pageUpDown","trigger","thumb"],"mappings":"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","file":"all.js","sourcesContent":["(function () {\n 'use strict';\n\n const modules = [\n {\n name: 'lightbox-gallery',\n path: 'lightbox-gallery'\n }\n // Add other modules here following the same pattern\n ];\n\n var index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n modules: modules\n });\n\n function __variableDynamicImportRuntime0__(path) {\n switch (path) {\n case './modules/index.js': return Promise.resolve().then(function () { return index; });\n case './modules/lightbox-gallery.js': return Promise.resolve().then(function () { return lightboxGallery; });\n default: return new Promise(function(resolve, reject) {\n (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(\n reject.bind(null, new Error(\"Unknown variable dynamic import: \" + path))\n );\n })\n }\n }\n\n console.log(\"Load script.js\");\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n modules.forEach((module) => {\n const elements = document.querySelectorAll(\n `[data-module=\"${module.name}\"]`\n );\n\n if (elements) {\n elements.forEach((element) => {\n // Add the .js extension in the static part of the import\n __variableDynamicImportRuntime0__(`./modules/${module.path}.js`).then((moduleImport) => {\n moduleImport.default(element);\n });\n });\n }\n });\n });\n\n /**\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 */\n function isObject$1(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n }\n function extend$1(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) {\n extend$1(target[key], src[key]);\n }\n });\n }\n const 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 };\n function getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend$1(doc, ssrDocument);\n return doc;\n }\n const 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 };\n function getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend$1(win, ssrWindow);\n return win;\n }\n\n function classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n }\n\n function 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 }\n function nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n }\n function now() {\n return Date.now();\n }\n function getComputedStyle$1(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n }\n function getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle$1(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n }\n function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n }\n function 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 }\n function extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n }\n function setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n }\n function animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n }\n function elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n }\n function elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot?.children || []), ...(elementToCheck.assignedElements?.() || []));\n }\n }\n function elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n }\n function showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n }\n function createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n }\n function 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 }\n function 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 }\n function elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n }\n function 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 function 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 function elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n }\n function makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n }\n\n let support;\n function calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n }\n function getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n }\n\n let deviceCached;\n function calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n }\n function getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n }\n\n let browser;\n function calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n }\n function getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n }\n\n function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n }\n\n function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n }\n\n /* eslint-disable no-underscore-dangle */\n\n var eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n };\n\n 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 = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n }\n\n function updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n }\n\n 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 const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n }\n\n function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n }\n\n const toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n };\n function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n }\n\n 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 {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n }\n\n const toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n };\n function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n }\n\n 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 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n };\n const unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n };\n const preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n };\n\n function getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n }\n 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 const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n }\n\n function updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n }\n\n var update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n };\n\n function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n }\n\n function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n }\n\n function minTranslate() {\n return -this.snapGrid[0];\n }\n\n function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n }\n\n function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n }\n\n var translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n };\n\n function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n }\n\n function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n }\n\n function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n }\n\n var transition = {\n setTransition,\n transitionStart,\n transitionEnd\n };\n\n function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n }\n\n function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n };\n\n function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n }\n\n function loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n }\n\n function loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n }\n\n var loop = {\n loopCreate,\n loopFix,\n loopDestroy\n };\n\n function setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n }\n\n 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\n var grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n };\n\n // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n function closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n }\n function preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n }\n function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n }\n\n function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n }\n\n function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n }\n\n 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\n function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n }\n\n function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n }\n\n function onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n }\n\n const events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n };\n function attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n }\n function detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n }\n var events$1 = {\n attachEvents,\n detachEvents\n };\n\n const isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n };\n function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n }\n\n function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = {\n setBreakpoint,\n getBreakpoint\n };\n\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 function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n }\n\n function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n }\n\n var classes = {\n addClasses,\n removeClasses\n };\n\n function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n }\n var checkOverflow$1 = {\n checkOverflow\n };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n };\n\n function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n }\n\n /* eslint no-param-reassign: \"off\" */\n const prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n };\n const extendedDefaults = {};\n class Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n }\n Object.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n });\n Swiper.use([Resize, Observer]);\n\n 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\n function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n }\n\n function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n }\n\n function loadSwiperStyles() {\n // Check if Swiper CSS is already loaded\n if (!document.querySelector('link[href*=\"swiper-bundle.min.css\"]')) {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = \"https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css\";\n document.head.appendChild(link);\n }\n }\n\n function LightboxGallery(element) {\n // Load Swiper styles when module initializes\n loadSwiperStyles();\n\n const triggers = element.querySelectorAll(\".lightbox-gallery__button\");\n const dialog = element.querySelector(\".lightbox-gallery__dialog\");\n const close = element.querySelector(\".lightbox-gallery__dialog-close\");\n const mainSwiper = element.querySelector(\".lightbox-gallery__dialog-swiper\");\n const thumbnailsSwiper = element.querySelector(\n \".lightbox-gallery__dialog-thumbnails-swiper\"\n );\n const thumbs = element.querySelectorAll(\".lightbox-gallery__dialog-thumb\");\n\n let mainSwiperInstance = null;\n let thumbnailsSwiperInstance = null;\n\n // Function to disable scrolling\n const disableScroll = () => {\n document.body.style.overflow = \"hidden\";\n document.documentElement.style.overflow = \"hidden\";\n };\n\n // Function to enable scrolling\n const enableScroll = () => {\n document.body.style.overflow = \"\";\n document.documentElement.style.overflow = \"\";\n };\n\n const handleTriggerClick = (e) => {\n const target = e.currentTarget;\n const index = target.getAttribute(\"data-index\");\n\n mainSwiperInstance?.slideTo(index);\n dialog.showModal();\n disableScroll(); // Disable scrolling when modal opens\n };\n\n const handleThumbEnterKey = (e) => {\n const target = e.currentTarget;\n const index = target.getAttribute(\"data-index\");\n\n if (e.key === \"Enter\") {\n mainSwiperInstance?.slideTo(index);\n }\n };\n\n // Initialize thumbnails swiper first\n thumbnailsSwiperInstance = new Swiper(thumbnailsSwiper, {\n modules: [Navigation, Thumb],\n a11y: {\n enabled: true,\n nextSlideMessage: \"Next slide\",\n prevSlideMessage: \"Previous slide\",\n },\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n pageUpDown: true,\n },\n slidesPerView: \"auto\",\n spaceBetween: 40,\n navigation: {\n nextEl: \".swiper-button-next-thumbnails\",\n prevEl: \".swiper-button-prev-thumbnails\",\n },\n preventClicksPropagation: true,\n preventClicks: false,\n });\n\n // Then initialize main swiper with thumbs\n mainSwiperInstance = new Swiper(mainSwiper, {\n modules: [Navigation, Thumb],\n a11y: {\n enabled: true,\n nextSlideMessage: \"Next slide\",\n prevSlideMessage: \"Previous slide\",\n },\n keyboard: {\n enabled: true,\n onlyInViewport: true,\n pageUpDown: true,\n },\n slidesPerView: 1,\n navigation: {\n nextEl: \".swiper-button-next-main\",\n prevEl: \".swiper-button-prev-main\",\n },\n preventClicksPropagation: true,\n preventClicks: false,\n thumbs: {\n swiper: thumbnailsSwiperInstance,\n slideThumbActiveClass: \"lightbox-gallery__dialog-picture--active\",\n },\n });\n\n triggers.forEach((trigger, index) => {\n trigger.setAttribute(\"data-index\", index);\n trigger.addEventListener(\"click\", handleTriggerClick);\n });\n\n thumbs.forEach((thumb, index) => {\n thumb.setAttribute(\"data-index\", index);\n thumb.addEventListener(\"keydown\", handleThumbEnterKey);\n });\n\n close.addEventListener(\"click\", () => {\n dialog.close();\n enableScroll(); // Re-enable scrolling when modal closes\n });\n }\n\n var lightboxGallery = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': LightboxGallery\n });\n\n})();\n\n"]}