{"version":3,"sources":["webpack:///./node_modules/swiper/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","activeElement","nodeName","querySelector","querySelectorAll","getElementById","createEvent","createElement","children","childNodes","style","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","CustomEvent","this","getComputedStyle","getPropertyValue","screen","matchMedia","requestAnimationFrame","callback","setTimeout","id","clearTimeout","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","args","trigger","on","Methods","addClass","classes","classNames","map","c","classList","add","removeClass","remove","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","setAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","addEventListener","dom7Listeners","off","handlers","handler","dom7proxy","removeEventListener","splice","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","methodName","writable","nextTick","delay","now","Date","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","support","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","emit","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","setTranslate","slidesGrid","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","destroyed","currentPos","onTouchEnd","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","isEnd","isBeginning","centeredSlides","slides","autoplay","running","paused","run","watchOverflow","checkOverflow","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","method","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","onTouchStart","move","end","cancel","onClick","updateOnWindowResize","isGridEnabled","grid","rows","init","initialSlide","resizeObserver","createElements","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","self","eventsListeners","onceHandler","__emitterProxy","eventsAnyListeners","eventHandler","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","size","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","Image","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","swipers","newParams","browser","modules","__modules__","mod","extendParams","once","swiperParams","defaults","passedParams","eventName","onAny","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","cls","slideEl","updates","getSlideClasses","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","options","getWrapper","wrapper","mount","deleteInstance","cleanStyles","object","deleteProps","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","element","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","destroy","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets"],"mappings":"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","file":"2.bundle.js","sourcesContent":["/**\n * SSR Window 4.0.1\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: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * SSR Window 4.0.1\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: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n 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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\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\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default 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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // 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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\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 // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n 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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\n slidesPerViewDynamic(view = 'current', exact = false) {\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\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\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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\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\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\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}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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 }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\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}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\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 const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\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\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}"],"sourceRoot":""}