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