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