{"version":3,"sources":["webpack:///./src/@core/components/toastification/ToastificationContent.vue?5afb","webpack:///src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/components/toastification/ToastificationContent.vue?5e2e","webpack:///./src/@core/components/toastification/ToastificationContent.vue","webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?e0cc","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/vue-jwt-decode/dist/lib/vue-jwt-decode.min.js","webpack:///./src/utils/formatting.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/views/product/ProductDetailsRelatedProducts.vue?1b64","webpack:///./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js","webpack:///./src/views/product/ProductDetails.vue?ad5b","webpack:///./src/views/product/ProductDetailsRelatedProducts.vue?161f","webpack:///src/views/product/ProductDetailsRelatedProducts.vue","webpack:///./src/views/product/ProductDetailsRelatedProducts.vue?f94d","webpack:///./src/views/product/ProductDetailsRelatedProducts.vue","webpack:///src/views/product/ProductDetails.vue","webpack:///./src/views/product/ProductDetails.vue?bef0","webpack:///./src/views/product/ProductDetails.vue","webpack:///./src/auth/utils.js","webpack:///./src/assets/images/default.jpg","webpack:///./src/views/product/ProductDetails.vue?b859","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./src/@core/utils/utils.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","variant","icon","class","domProps","_s","title","_e","text","on","$event","$emit","hideClose","staticRenderFns","components","BAvatar","props","type","String","default","Boolean","component","$","getOwnPropertyDescriptor","f","toLength","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","nativeStartsWith","startsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","prototype","writable","target","proto","forced","searchString","that","index","arguments","length","undefined","search","call","slice","classof","module","exports","value","TypeError","isObject","wellKnownSymbol","MATCH","it","isRegExp","t","n","e","r","o","i","l","m","c","d","Object","defineProperty","configurable","enumerable","get","__esModule","hasOwnProperty","p","s","a","window","self","Function","__g","version","__e","propertyIsEnumerable","split","ceil","floor","isNaN","install","$jwtDec","jwtDec","decode","JSON","parse","atob","assign","u","toString","apply","document","createElement","F","G","v","S","y","P","B","x","W","h","b","j","virtual","R","U","Symbol","forEach","keys","join","concat","getOwnPropertySymbols","push","max","valueOf","random","formatPrice","input","price","Number","formattedPrice","toFixed","fixRegExpWellKnownSymbolLogic","anObject","toObject","toInteger","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","O","replacer","regexp","indexOf","res","done","rx","functionalReplace","global","fullUnicode","unicode","lastIndex","results","result","matchStr","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","groups","replacerArgs","replacement","getSubstitution","str","tailPos","symbols","match","ch","capture","charAt","g","SwiperClass","Vue","CoreNames","ComponentEvents","ComponentPropNames","DEFAULT_CLASSES","freeze","containerClass","wrapperClass","slideClass","SWIPER_EVENTS","__spreadArrays","il","Array","k","jl","SlotNames","kebabcase","string","replace","toLowerCase","handleClickSlideEvent","swiper","event","emit","_a","_b","eventPath","composedPath","path","slides_1","from","slides","paths","includes","some","item","clickedIndex","reallyIndex","clickedSlide","dataset","swiperSlideIndex","reallyIndexValue","isInteger","ClickSlide","bindSwiperEvents","eventName","arguments$1","args","_i","kebabcaseName","INSTANCE_NAME_KEY","getDirective","globalOptions","getStandardisedOptionByAttrs","vnode","key","_d","data","getSwiperInstanceName","element","binding","arg","id","SwiperInstance","getSwiperInstance","instanceName","context","getSwipeOptions","getBooleanValueByInput","getEventEmiter","handlers","componentOptions","listeners","name","handle","fns","bind","className","addEventListener","emitEvent","inserted","swiperOptions","vueContext","destroyed","Ready","componentUpdated","_f","_g","_j","_k","_l","_m","autoUpdate","AutoUpdate","isLoop","loop","loopDestroy","update","navigation","pagination","loopCreate","unbind","autoDestroy","AutoDestroy","initialized","destroy","DeleteInstanceOnDestroy","CleanupStylesOnDestroy","getSwiperComponent","extend","SwiperComponent","defaultOptions","required","options","computed","swiperInstance","cache","set","methods","handleSwiperClick","autoReLoopSwiper","updateSwiper","destroySwiper","initSwiper","$el","mounted","activated","updated","beforeDestroy","$nextTick","click","$slots","ParallaxBg","Pagination","PrevButton","NextButton","Scrollbar","SwiperSlideComponent","$parent","parent","getInstaller","installed","directive","SwiperDirective","exporter","VueAwesomeSwiper","Swiper","SwiperSlide","showLoading","product","ref","Description","keyCode","handleOk","model","callback","$$v","requestedQte","expression","_v","productKey","image","Nom_Fournisseur","Unit_Price_pharmacien_TTC","star","getRatingColor","getRatingClass","Unit_Price_pharmacien","Prix_Public","getCategoryColor","Family","Subfamily","DLC","DCI","Code_PCT","isAdministrator","handleCartActionClick","handleFileChange","relatedProductsKey","handleEventGoTo","directives","rawName","No","productSlug","goTo","imageLoading","defaultImage","slot","setup","_useRouter","useRouter","route","params","slug","require","slidesPerView","spaceBetween","nextEl","prevEl","breakpoints","relatedProducts","fetchProduct","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","resp","response","wrap","_context","prev","next","axios","sent","FamilyNo","post","CategoryNo","SubfamilyNo","then","content","Creation_Date","t0","console","error","stop","ECommerceProductDetailsRelatedProducts","imageResponse","watch","newSlug","_this","$refs","show","setTimeout","focus","_this2","hide","$store","dispatch","code","qte","$toast","clear","ToastificationContent","promotion","state","catch","log","_this3","file","files","reader","FileReader","onload","_ref2","_callee2","readerEvt","binaryString","filestring","_context2","btoa","sendApiRequest","$swal","fire","showConfirmButton","timer","_x","readAsBinaryString","getFileExtension","filename","parts","fileName","_this4","Promise","resolve","reject","formData","FormData","append","$route","$http","$router","Matrice","isUserLoggedIn","token","localStorage","getItem","useJwt","jwtConfig","storageTokenKeyName","isTokenNotExp","Date","now","VueJwtDecode","exp","getHomeRouteForLoggedInUser","userRole","gerRole","role","isPharmacy","METHOD_NAME","error1","error2","obj","constructor","src","doc","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","win","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","clearTimeout","matchMedia","Dom7","arr","selector","els","tempParent","html","trim","toCreate","innerHTML","nodeType","unique","uniqueArray","addClass","classes","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","getAttribute","attrName","removeAttr","removeAttribute","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","eventType","targetSelector","listener","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","includeMargins","styles","offsetWidth","parseFloat","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","prop","each","matchedItems","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parentNode","closest","find","foundElements","found","removeChild","toAdd","fn","Class","Methods","outerWidth","outerHeight","offset","methodName","Utils","object","delay","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","MozTransform","OTransform","MsTransform","msTransform","m41","m42","url","query","param","urlToParse","paramsPart","decodeURIComponent","to","nextSource","keysArray","nextIndex","len","nextKey","desc","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","eventsListeners","priority","method","onceHandler","f7proxy","eventHandler","isArray","eventsArray","instanceParams","instance","modules","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","create","use","static","installModule","updateSize","width","height","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","slidesPerColumnFill","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","z","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","nextTick","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","onResize","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","onClick","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","innerWidth","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","isPicture","complete","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","wasLocked","lastSlidePosition","checkOverflow$1","defaults","init","uniqueNavElements","prototypes","images","extendedDefaults","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","Device$1","Support$1","support","isSafari","isEdge","isWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","attach","observeSlideChildren","disconnect","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","overwriteParams","Keyboard","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Keyboard$1","enable","disable","isEventSupported","isSupported","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","mouseEntered","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","timeout","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","raw","animateSlider","releaseScroll","getTime","handleMouseEnter","handleMouseLeave","Mousewheel$1","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onNextClick","onPrevClick","Navigation$1","hideOnClick","hiddenClass","isHidden","current","total","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","number","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","opacity","divider","moveDivider","display","clientX","clientY","dragStartPos","positionRatio","getPointerPosition","setDragPosition","dragTimeout","snapOnRelease","activeListener","onDragStart","onDragMove","onDragEnd","$swiperEl","dragClass","dragEl","draggable","enableDraggable","disableDraggable","Scrollbar$1","Parallax","currentOpacity","currentScale","parallax","setTransform","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","x1","y1","x2","y2","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","getDistanceBetweenTouches","$imageEl","$imageWrapEl","maxRatio","isScaling","scaleMove","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","onGestureStart","onGestureChange","onGestureEnd","Zoom$1","onTransitionEnd","Lazy","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","loadInSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$1","loadOnTransitionStart","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","getInterpolateFunction","inverse","setControlledTransition","Controller$1","a11y","label","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","disableEl","makeElNotFocusable","enableEl","makeElFocusable","bulletEl","$bulletEl","addElRole","addElLabel","paginationBulletMessage","onEnterKey","A11y","notificationClass","updateNavigation","updatePagination","History","hashNavigation","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","slugify","currentState","slideHistory","History$1","setHistory","HashNavigation","newHash","activeSlideHash","slideHash","watchState","onHashCange","HashNavigation$1","setHash","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","Autoplay$1","disableOnInteraction","pause","visibilityState","onVisibilityChange","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectFlip","Coverflow","coverflowEffect","center","depth","slideOffset","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","ws","perspectiveOrigin","EffectCoverflow","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Thumbs$1","thisNumberValue","repeat","fails","nativeToFixed","pow","acc","FORCED","fractionDigits","fractDigits","multiply","c2","divide","dataToString","RangeError","_typeof","isToday","date","today","getDate","getMonth","getFullYear","vm","getCurrentInstance","proxy","reactive","_objectSpread","toRefs","router"],"mappings":"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","file":"js/chunk-c5354252.f7d12d6d.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toastification\"},[_c('div',{staticClass:\"d-flex align-items-start\"},[_c('b-avatar',{staticClass:\"mr-75 flex-shrink-0\",attrs:{\"variant\":_vm.variant,\"size\":\"1.8rem\"}},[_c('feather-icon',{attrs:{\"icon\":_vm.icon,\"size\":\"15\"}})],1),_c('div',{staticClass:\"d-flex flex-grow-1\"},[_c('div',[(_vm.title)?_c('h5',{staticClass:\"mb-0 font-weight-bolder toastification-title\",class:(\"text-\" + _vm.variant),domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),(_vm.text)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_vm._e()]),_c('span',{staticClass:\"cursor-pointer toastification-close-icon ml-auto \",on:{\"click\":function($event){return _vm.$emit('close-toast')}}},[(!_vm.hideClose)?_c('feather-icon',{staticClass:\"text-body\",attrs:{\"icon\":\"XIcon\"}}):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ToastificationContent.vue?vue&type=template&id=5d2e9f06&scoped=true\"\nimport script from \"./ToastificationContent.vue?vue&type=script&lang=js\"\nexport * from \"./ToastificationContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./ToastificationContent.vue?vue&type=style&index=0&id=5d2e9f06&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d2e9f06\",\n null\n \n)\n\nexport default component.exports","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=style&index=0&id=5d2e9f06&prod&lang=scss&scoped=true\"","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define([],n):\"object\"==typeof exports?exports[\"vue-jwt-decode\"]=n():t[\"vue-jwt-decode\"]=n()}(this,function(){return function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r={};return n.m=t,n.c=r,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,\"a\",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p=\"/vue-jwt-decode/dist\",n(n.s=10)}([function(t,n,r){t.exports=!r(1)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){var r=t.exports={version:\"2.5.3\"};\"number\"==typeof __e&&(__e=r)},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,r){var e=r(16);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==e(t)?t.split(\"\"):Object(t)}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(6),o=r(5);t.exports=function(t){return e(o(t))}},function(t,n,r){\"use strict\";var e=r(11),o=r.n(e);n.a={install:function(t){t.prototype.$jwtDec=this,t.jwtDec=this},decode:function(t){if(\"string\"!=typeof t&!t instanceof String)return null;var n=t.split(\".\");if(n.length<2)return null;var r=JSON.parse(atob(n[0])),e=JSON.parse(atob(n[1]));return o()({},r,e)}}},function(t,n,r){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0});var e=r(9);n.default=e.a},function(t,n,r){t.exports={default:r(12),__esModule:!0}},function(t,n,r){r(38),t.exports=r(4).Object.assign},function(t,n){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,n,r){var e=r(3);t.exports=function(t){if(!e(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n,r){var e=r(8),o=r(34),u=r(33);t.exports=function(t){return function(n,r,i){var c,f=e(n),a=o(f.length),s=u(i,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(13);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n,r){var e=r(3),o=r(2).document,u=e(o)&&e(o.createElement);t.exports=function(t){return u?o.createElement(t):{}}},function(t,n){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,n,r){var e=r(2),o=r(4),u=r(17),i=r(22),c=function(t,n,r){var f,a,s,p=t&c.F,l=t&c.G,v=t&c.S,y=t&c.P,d=t&c.B,x=t&c.W,h=l?o:o[n]||(o[n]={}),b=h.prototype,j=l?e:v?e[n]:(e[n]||{}).prototype;l&&(r=n);for(f in r)(a=!p&&j&&void 0!==j[f])&&f in h||(s=a?j[f]:r[f],h[f]=l&&\"function\"!=typeof j[f]?r[f]:d&&a?u(s,e):x&&j[f]==s?function(t){var n=function(n,r,e){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,e)}return t.apply(this,arguments)};return n.prototype=t.prototype,n}(s):y&&\"function\"==typeof s?u(Function.call,s):s,y&&((h.virtual||(h.virtual={}))[f]=s,t&c.R&&b&&!b[f]&&i(b,f,s)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(25),o=r(30);t.exports=r(0)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){t.exports=!r(0)&&!r(1)(function(){return 7!=Object.defineProperty(r(18)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,n,r){\"use strict\";var e=r(28),o=r(26),u=r(29),i=r(35),c=r(6),f=Object.assign;t.exports=!f||r(1)(function(){var t={},n={},r=Symbol(),e=\"abcdefghijklmnopqrst\";return t[r]=7,e.split(\"\").forEach(function(t){n[t]=t}),7!=f({},t)[r]||Object.keys(f({},n)).join(\"\")!=e})?function(t,n){for(var r=i(t),f=arguments.length,a=1,s=o.f,p=u.f;f>a;)for(var l,v=c(arguments[a++]),y=s?e(v).concat(s(v)):e(v),d=y.length,x=0;d>x;)p.call(v,l=y[x++])&&(r[l]=v[l]);return r}:f},function(t,n,r){var e=r(14),o=r(23),u=r(36),i=Object.defineProperty;n.f=r(0)?Object.defineProperty:function(t,n,r){if(e(t),n=u(n,!0),e(r),o)try{return i(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(21),o=r(8),u=r(15)(!1),i=r(31)(\"IE_PROTO\");t.exports=function(t,n){var r,c=o(t),f=0,a=[];for(r in c)r!=i&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~u(a,r)||a.push(r));return a}},function(t,n,r){var e=r(27),o=r(19);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(32)(\"keys\"),o=r(37);t.exports=function(t){return e[t]||(e[t]=o(t))}},function(t,n,r){var e=r(2),o=e[\"__core-js_shared__\"]||(e[\"__core-js_shared__\"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,n,r){var e=r(7),o=Math.max,u=Math.min;t.exports=function(t,n){return t=e(t),t<0?o(t+n,0):u(t,n)}},function(t,n,r){var e=r(7),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(5);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e=r(3);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if(\"function\"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+e).toString(36))}},function(t,n,r){var e=r(20);e(e.S+e.F,\"Object\",{assign:r(24)})}])});\n//# sourceMappingURL=vue-jwt-decode.min.js.map","export function formatPrice(input) {\r\n // Convert the input to a number if it's a string or integer\r\n const price = Number(input);\r\n\r\n // Check if the input is a valid number\r\n if (isNaN(price)) {\r\n return \"Invalid input\";\r\n }\r\n\r\n // Format the price with 3 digits after the decimal point\r\n const formattedPrice = price.toFixed(3);\r\n\r\n // Return the formatted price as a string\r\n return formattedPrice;\r\n}\r\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetailsRelatedProducts.vue?vue&type=style&index=0&id=097d4c8b&prod&lang=scss\"","\n/*!\n * vue-awesome-swiper v4.1.1\n * Copyright (c) Surmon. All rights reserved.\n * Released under the MIT License.\n * Surmon \n */\n\n(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports,require('swiper'),require('vue')):typeof define==='function'&&define.amd?define(['exports','swiper','vue'],f):(g=g||self,f(g.VueAwesomeSwiper={},g.Swiper,g.Vue));}(this,(function(exports, SwiperClass, Vue){'use strict';SwiperClass=SwiperClass&&Object.prototype.hasOwnProperty.call(SwiperClass,'default')?SwiperClass['default']:SwiperClass;Vue=Vue&&Object.prototype.hasOwnProperty.call(Vue,'default')?Vue['default']:Vue;/**\r\n * @file vue-awesome-swiper\r\n * @module constants\r\n * @author Surmon \r\n */\r\nvar CoreNames;\r\n(function (CoreNames) {\r\n CoreNames[\"SwiperComponent\"] = \"Swiper\";\r\n CoreNames[\"SwiperSlideComponent\"] = \"SwiperSlide\";\r\n CoreNames[\"SwiperDirective\"] = \"swiper\";\r\n CoreNames[\"SwiperInstance\"] = \"$swiper\";\r\n})(CoreNames || (CoreNames = {}));\r\nvar DEFAULT_CLASSES = Object.freeze({\r\n containerClass: 'swiper-container',\r\n wrapperClass: 'swiper-wrapper',\r\n slideClass: 'swiper-slide'\r\n});\r\nvar ComponentEvents;\r\n(function (ComponentEvents) {\r\n ComponentEvents[\"Ready\"] = \"ready\";\r\n ComponentEvents[\"ClickSlide\"] = \"clickSlide\";\r\n})(ComponentEvents || (ComponentEvents = {}));\r\nvar ComponentPropNames;\r\n(function (ComponentPropNames) {\r\n ComponentPropNames[\"AutoUpdate\"] = \"autoUpdate\";\r\n ComponentPropNames[\"AutoDestroy\"] = \"autoDestroy\";\r\n ComponentPropNames[\"DeleteInstanceOnDestroy\"] = \"deleteInstanceOnDestroy\";\r\n ComponentPropNames[\"CleanupStylesOnDestroy\"] = \"cleanupStylesOnDestroy\";\r\n})(ComponentPropNames || (ComponentPropNames = {}));\r\n// https://swiperjs.com/api/#events\r\nvar SWIPER_EVENTS = [\r\n 'init',\r\n 'beforeDestroy',\r\n 'slideChange',\r\n 'slideChangeTransitionStart',\r\n 'slideChangeTransitionEnd',\r\n 'slideNextTransitionStart',\r\n 'slideNextTransitionEnd',\r\n 'slidePrevTransitionStart',\r\n 'slidePrevTransitionEnd',\r\n 'transitionStart',\r\n 'transitionEnd',\r\n 'touchStart',\r\n 'touchMove',\r\n 'touchMoveOpposite',\r\n 'sliderMove',\r\n 'touchEnd',\r\n 'click',\r\n 'tap',\r\n 'doubleTap',\r\n 'imagesReady',\r\n 'progress',\r\n 'reachBeginning',\r\n 'reachEnd',\r\n 'fromEdge',\r\n 'setTranslate',\r\n 'setTransition',\r\n 'resize',\r\n 'observerUpdate',\r\n 'beforeLoopFix',\r\n 'loopFix'\r\n];/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module utils\r\n * @author Surmon \r\n */\r\nvar kebabcase = function (string) {\r\n return string\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module event\r\n * @author Surmon \r\n */\r\nvar handleClickSlideEvent = function (swiper, event, emit) {\r\n var _a, _b, _c;\r\n if (swiper && !(swiper.destroyed)) {\r\n var eventPath = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)) || event.path;\r\n if ((event === null || event === void 0 ? void 0 : event.target) && eventPath) {\r\n var slides_1 = Array.from(swiper.slides);\r\n var paths = Array.from(eventPath);\r\n // Click slide || slide[children]\r\n if (slides_1.includes(event.target) || paths.some(function (item) { return slides_1.includes(item); })) {\r\n var clickedIndex = swiper.clickedIndex;\r\n var reallyIndex = Number((_c = (_b = swiper.clickedSlide) === null || _b === void 0 ? void 0 : _b.dataset) === null || _c === void 0 ? void 0 : _c.swiperSlideIndex);\r\n var reallyIndexValue = Number.isInteger(reallyIndex) ? reallyIndex : null;\r\n emit(ComponentEvents.ClickSlide, clickedIndex, reallyIndexValue);\r\n emit(kebabcase(ComponentEvents.ClickSlide), clickedIndex, reallyIndexValue);\r\n }\r\n }\r\n }\r\n};\r\nvar bindSwiperEvents = function (swiper, emit) {\r\n SWIPER_EVENTS.forEach(function (eventName) {\r\n swiper.on(eventName, function () {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments$1[_i];\r\n }\r\n emit.apply(void 0, __spreadArrays([eventName], args));\r\n var kebabcaseName = kebabcase(eventName);\r\n if (kebabcaseName !== eventName) {\r\n emit.apply(void 0, __spreadArrays([kebabcaseName], args));\r\n }\r\n });\r\n });\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module directive\r\n * @author Surmon \r\n */\r\nvar INSTANCE_NAME_KEY = 'instanceName';\r\nfunction getDirective(SwiperClass, globalOptions) {\r\n var getStandardisedOptionByAttrs = function (vnode, key) {\r\n var _a, _b, _c, _d;\r\n var value = (_b = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[key];\r\n return value !== undefined\r\n ? value\r\n : (_d = (_c = vnode.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d[kebabcase(key)];\r\n };\r\n // Get swiper instace name in directive\r\n var getSwiperInstanceName = function (element, binding, vnode) {\r\n return (binding.arg ||\r\n getStandardisedOptionByAttrs(vnode, INSTANCE_NAME_KEY) ||\r\n element.id ||\r\n CoreNames.SwiperInstance);\r\n };\r\n var getSwiperInstance = function (element, binding, vnode) {\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n return vnode.context[instanceName] || null;\r\n };\r\n var getSwipeOptions = function (binding) {\r\n return binding.value || globalOptions;\r\n };\r\n var getBooleanValueByInput = function (input) {\r\n return [true, undefined, null, ''].includes(input);\r\n };\r\n // Emit event in Vue directive\r\n var getEventEmiter = function (vnode) {\r\n var _a, _b;\r\n var handlers = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.on) || ((_b = vnode.componentOptions) === null || _b === void 0 ? void 0 : _b.listeners);\r\n return function (name) {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments$1[_i];\r\n }\r\n var _a;\r\n var handle = (_a = handlers) === null || _a === void 0 ? void 0 : _a[name];\r\n if (handle) {\r\n handle.fns.apply(handle, args);\r\n }\r\n };\r\n };\r\n return {\r\n // Init\r\n bind: function (element, binding, vnode) {\r\n // auto class name\r\n if (element.className.indexOf(DEFAULT_CLASSES.containerClass) === -1) {\r\n element.className += ((element.className ? ' ' : '') + DEFAULT_CLASSES.containerClass);\r\n }\r\n // bind click event\r\n element.addEventListener('click', function (event) {\r\n var emitEvent = getEventEmiter(vnode);\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n handleClickSlideEvent(swiper, event, emitEvent);\r\n });\r\n },\r\n // DOM inserted\r\n inserted: function (element, binding, vnode) {\r\n var context = vnode.context;\r\n var swiperOptions = getSwipeOptions(binding);\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n var emitEvent = getEventEmiter(vnode);\r\n var vueContext = context;\r\n var swiper = vueContext === null || vueContext === void 0 ? void 0 : vueContext[instanceName];\r\n // Swiper will destroy but not delete instance, when used \r\n if (!swiper || swiper.destroyed) {\r\n swiper = new SwiperClass(element, swiperOptions);\r\n vueContext[instanceName] = swiper;\r\n bindSwiperEvents(swiper, emitEvent);\r\n emitEvent(ComponentEvents.Ready, swiper);\r\n // MARK: Reinstance when the nexttick with \r\n // Vue.nextTick(instancing) | setTimeout(instancing)\r\n }\r\n },\r\n // On options changed or DOM updated\r\n componentUpdated: function (element, binding, vnode) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\r\n var autoUpdate = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoUpdate);\r\n if (getBooleanValueByInput(autoUpdate)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper) {\r\n var swiperOptions = getSwipeOptions(binding);\r\n var isLoop = swiperOptions.loop;\r\n if (isLoop) {\r\n (_b = (_a = swiper) === null || _a === void 0 ? void 0 : _a.loopDestroy) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n (_c = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _c === void 0 ? void 0 : _c.call(swiper);\r\n (_e = (_d = swiper.navigation) === null || _d === void 0 ? void 0 : _d.update) === null || _e === void 0 ? void 0 : _e.call(_d);\r\n (_g = (_f = swiper.pagination) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.call(_f);\r\n (_j = (_h = swiper.pagination) === null || _h === void 0 ? void 0 : _h.update) === null || _j === void 0 ? void 0 : _j.call(_h);\r\n if (isLoop) {\r\n (_l = (_k = swiper) === null || _k === void 0 ? void 0 : _k.loopCreate) === null || _l === void 0 ? void 0 : _l.call(_k);\r\n (_m = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _m === void 0 ? void 0 : _m.call(swiper);\r\n }\r\n }\r\n }\r\n },\r\n // Destroy this directive\r\n unbind: function (element, binding, vnode) {\r\n var _a;\r\n var autoDestroy = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoDestroy);\r\n if (getBooleanValueByInput(autoDestroy)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper && swiper.initialized) {\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.destroy) === null || _a === void 0 ? void 0 : _a.call(swiper, getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.DeleteInstanceOnDestroy)), getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.CleanupStylesOnDestroy)));\r\n }\r\n }\r\n }\r\n };\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperComponent\r\n * @author Surmon \r\n */\r\nvar SlotNames;\r\n(function (SlotNames) {\r\n SlotNames[\"ParallaxBg\"] = \"parallax-bg\";\r\n SlotNames[\"Pagination\"] = \"pagination\";\r\n SlotNames[\"Scrollbar\"] = \"scrollbar\";\r\n SlotNames[\"PrevButton\"] = \"button-prev\";\r\n SlotNames[\"NextButton\"] = \"button-next\";\r\n})(SlotNames || (SlotNames = {}));\r\nfunction getSwiperComponent(SwiperClass) {\r\n var _a;\r\n return Vue.extend({\r\n name: CoreNames.SwiperComponent,\r\n props: (_a = {\r\n defaultOptions: {\r\n type: Object,\r\n required: false,\r\n default: function () { return ({}); }\r\n },\r\n // eslint-disable-next-line vue/require-default-prop\r\n options: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n _a[ComponentPropNames.AutoUpdate] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/550/files\r\n _a[ComponentPropNames.AutoDestroy] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/388\r\n _a[ComponentPropNames.DeleteInstanceOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a[ComponentPropNames.CleanupStylesOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a),\r\n data: function () {\r\n var _a;\r\n return _a = {},\r\n _a[CoreNames.SwiperInstance] = null,\r\n _a;\r\n },\r\n computed: {\r\n swiperInstance: {\r\n cache: false,\r\n set: function (swiper) {\r\n this[CoreNames.SwiperInstance] = swiper;\r\n },\r\n get: function () {\r\n return this[CoreNames.SwiperInstance];\r\n }\r\n },\r\n swiperOptions: function () {\r\n return this.options || this.defaultOptions;\r\n },\r\n wrapperClass: function () {\r\n return this.swiperOptions.wrapperClass || DEFAULT_CLASSES.wrapperClass;\r\n }\r\n },\r\n methods: {\r\n // Feature: click event\r\n handleSwiperClick: function (event) {\r\n handleClickSlideEvent(this.swiperInstance, event, this.$emit.bind(this));\r\n },\r\n autoReLoopSwiper: function () {\r\n var _a, _b;\r\n if (this.swiperInstance && this.swiperOptions.loop) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/593\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/544\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/545/files\r\n var swiper = this.swiperInstance;\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.loopDestroy) === null || _a === void 0 ? void 0 : _a.call(swiper);\r\n (_b = swiper === null || swiper === void 0 ? void 0 : swiper.loopCreate) === null || _b === void 0 ? void 0 : _b.call(swiper);\r\n }\r\n },\r\n updateSwiper: function () {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n if (this[ComponentPropNames.AutoUpdate] && this.swiperInstance) {\r\n this.autoReLoopSwiper();\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.swiperInstance.navigation) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_f = (_e = this.swiperInstance.pagination) === null || _e === void 0 ? void 0 : _e.render) === null || _f === void 0 ? void 0 : _f.call(_e);\r\n (_h = (_g = this.swiperInstance.pagination) === null || _g === void 0 ? void 0 : _g.update) === null || _h === void 0 ? void 0 : _h.call(_g);\r\n }\r\n },\r\n destroySwiper: function () {\r\n var _a, _b;\r\n if (this[ComponentPropNames.AutoDestroy] && this.swiperInstance) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/341\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/340\r\n if (this.swiperInstance.initialized) {\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, this[ComponentPropNames.DeleteInstanceOnDestroy], this[ComponentPropNames.CleanupStylesOnDestroy]);\r\n }\r\n }\r\n },\r\n initSwiper: function () {\r\n this.swiperInstance = new SwiperClass(this.$el, this.swiperOptions);\r\n bindSwiperEvents(this.swiperInstance, this.$emit.bind(this));\r\n this.$emit(ComponentEvents.Ready, this.swiperInstance);\r\n }\r\n },\r\n mounted: function () {\r\n if (!this.swiperInstance) {\r\n this.initSwiper();\r\n }\r\n },\r\n // Update swiper when the parent component activated with `keep-alive`.\r\n activated: function () {\r\n this.updateSwiper();\r\n },\r\n updated: function () {\r\n this.updateSwiper();\r\n },\r\n beforeDestroy: function () {\r\n // https://github.com/surmon-china/vue-awesome-swiper/commit/2924a9d4d3d1cf51c0d46076410b1f804b2b8a43#diff-7f4e0261ac562c0f354cb91a1ca8864f\r\n this.$nextTick(this.destroySwiper);\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n staticClass: DEFAULT_CLASSES.containerClass,\r\n on: {\r\n click: this.handleSwiperClick\r\n }\r\n }, [\r\n this.$slots[SlotNames.ParallaxBg],\r\n createElement('div', {\r\n class: this.wrapperClass\r\n }, this.$slots.default),\r\n this.$slots[SlotNames.Pagination],\r\n this.$slots[SlotNames.PrevButton],\r\n this.$slots[SlotNames.NextButton],\r\n this.$slots[SlotNames.Scrollbar]\r\n ]);\r\n }\r\n });\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperSlideComponent\r\n * @author Surmon \r\n */\r\nvar SwiperSlideComponent = Vue.extend({\r\n name: CoreNames.SwiperSlideComponent,\r\n computed: {\r\n slideClass: function () {\r\n var _a, _b;\r\n return ((_b = (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.swiperOptions) === null || _b === void 0 ? void 0 : _b.slideClass) || DEFAULT_CLASSES.slideClass;\r\n }\r\n },\r\n methods: {\r\n update: function () {\r\n var _a;\r\n var parent = this.$parent;\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/632\r\n if (parent[ComponentPropNames.AutoUpdate]) {\r\n (_a = parent === null || parent === void 0 ? void 0 : parent.swiperInstance) === null || _a === void 0 ? void 0 : _a.update();\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.update();\r\n },\r\n updated: function () {\r\n this.update();\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n class: this.slideClass\r\n }, this.$slots.default);\r\n }\r\n});/**\r\n * @file vue-awesome-swiper\r\n * @module exporter\r\n * @author Surmon \r\n */\r\nvar getInstaller = function (SwiperClass) {\r\n var install = function (Vue, globalOptions) {\r\n if (install.installed)\r\n { return; }\r\n var SwiperComponent = getSwiperComponent(SwiperClass);\r\n if (globalOptions) {\r\n SwiperComponent.options.props.defaultOptions.default = function () { return globalOptions; };\r\n }\r\n Vue.component(CoreNames.SwiperComponent, SwiperComponent);\r\n Vue.component(CoreNames.SwiperSlideComponent, SwiperSlideComponent);\r\n Vue.directive(CoreNames.SwiperDirective, getDirective(SwiperClass, globalOptions));\r\n install.installed = true;\r\n };\r\n return install;\r\n};\r\nfunction exporter(SwiperClass) {\r\n var _a;\r\n return _a = {\r\n version: '4.1.1',\r\n install: getInstaller(SwiperClass),\r\n directive: getDirective(SwiperClass)\r\n },\r\n _a[CoreNames.SwiperComponent] = getSwiperComponent(SwiperClass),\r\n _a[CoreNames.SwiperSlideComponent] = SwiperSlideComponent,\r\n _a;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module default-export\r\n * @author Surmon \r\n */\r\nvar VueAwesomeSwiper = exporter(SwiperClass);\r\nvar version = VueAwesomeSwiper.version;\r\nvar install = VueAwesomeSwiper.install;\r\nvar directive = VueAwesomeSwiper.directive;\r\nvar Swiper = VueAwesomeSwiper.Swiper;\r\nvar SwiperSlide = VueAwesomeSwiper.SwiperSlide;exports.Swiper=Swiper;exports.SwiperSlide=SwiperSlide;exports.default=VueAwesomeSwiper;exports.directive=directive;exports.install=install;exports.version=version;Object.defineProperty(exports,'__esModule',{value:true});})));","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-ecommerce-details\"},[_c('b-overlay',{attrs:{\"show\":_vm.showLoading,\"spinner-variant\":\"primary\"}},[(_vm.product != null)?_c('b-modal',{ref:\"arrival-modal\",attrs:{\"centered\":\"\",\"size\":\"sm\",\"id\":\"modal-prevent-closing\",\"title\":_vm.product.Description,\"hide-footer\":\"\"}},[_c('b-form-input',{ref:\"qte-input\",attrs:{\"placeholder\":\"La quantité demandée\",\"type\":\"number\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleOk($event)}},model:{value:(_vm.requestedQte),callback:function ($$v) {_vm.requestedQte=$$v},expression:\"requestedQte\"}}),_c('div',{staticClass:\"d-block text-center\"},[_c('b-button',{staticClass:\"mt-1\",attrs:{\"variant\":\"relief-success\"},on:{\"click\":_vm.handleOk}},[_vm._v(\"Valider\")])],1)],1):_vm._e(),(_vm.product)?_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-body',[_c('b-row',{staticClass:\"my-2\"},[_c('b-col',{key:_vm.productKey,staticClass:\"d-flex align-items-center justify-content-center mb-2 mb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"5\"}},[_c('b-overlay',{attrs:{\"show\":_vm.showLoading,\"spinner-variant\":\"primary\"}},[_c('div',{staticClass:\"d-flex align-items-center justify-content-center\"},[(_vm.imageLoading)?_c('div',{staticClass:\"loading\"}):_c('b-img',{staticClass:\"product-img\",attrs:{\"src\":_vm.product.image,\"alt\":(\"Image of \" + (_vm.product.name)),\"fluid\":\"\"}})],1)])],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"7\"}},[_c('h4',[_vm._v(_vm._s(_vm.product.Description))]),_c('b-card-text',{staticClass:\"item-company mb-0\"},[_c('span',[_vm._v(\"fourni par\")]),_c('b-link',{staticClass:\"company-name\"},[_vm._v(\" \"+_vm._s(_vm.product.Nom_Fournisseur)+\" \")])],1),_c('div',{staticClass:\"ecommerce-details-price d-flex flex-wrap mt-1\"},[_c('h4',{staticClass:\"item-price mr-1\"},[_vm._v(\" \"+_vm._s(_vm.formatPrice(_vm.product.Unit_Price_pharmacien_TTC))+\" TND \")]),_c('ul',{staticClass:\"unstyled-list list-inline pl-1 border-left\"},_vm._l((5),function(star){return _c('li',{key:star,staticClass:\"ratings-list-item ml-25\"},[_c('feather-icon',{class:[_vm.getRatingColor(), _vm.getRatingClass(star)],attrs:{\"icon\":\"StarIcon\",\"size\":\"16\"}})],1)}),0)]),_c('b-card-text',[_vm._v(\"Prix H.T - \"),_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(_vm.formatPrice(_vm.product.Unit_Price_pharmacien))+\" TND\")])]),_c('b-card-text',[_vm._v(\"Prix T.T.C - \"),_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(_vm.formatPrice(_vm.product.Unit_Price_pharmacien_TTC))+\" TND\")])]),_c('b-card-text',[_vm._v(\"Prix Public - \"),_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(_vm.formatPrice(_vm.product.Prix_Public))+\" TND\")])]),_c('ul',{staticClass:\"product-features list-unstyled\"},[_c('li',[_c('feather-icon',{attrs:{\"icon\":\"LayersIcon\"}}),_c('span',[_vm._v(\"Catégorie : \"),_c('b-badge',{attrs:{\"variant\":_vm.getCategoryColor()}},[_vm._v(\" \"+_vm._s(_vm.product.Family)+\" \")])],1)],1),_c('li',[_c('feather-icon',{attrs:{\"icon\":\"FolderIcon\"}}),_c('span',[_vm._v(\"Famille : \"+_vm._s(_vm.product.Subfamily))])],1)]),_c('hr'),_c('div',{staticClass:\"product-color-options\"},[_c('ul',{staticClass:\"product-features list-unstyled\"},[_c('li',[_c('feather-icon',{attrs:{\"icon\":\"ClockIcon\"}}),_c('span',[_vm._v(\"DLC : \"+_vm._s(_vm.product.DLC))])],1),_c('li',[_c('feather-icon',{attrs:{\"icon\":\"InfoIcon\"}}),_c('span',[_vm._v(\"DCI : \"+_vm._s(_vm.product.DCI))])],1),_c('li',[_c('feather-icon',{attrs:{\"icon\":\"CodeIcon\"}}),_c('span',[_vm._v(\"PCT : \"+_vm._s(_vm.product.Code_PCT))])],1)])]),_c('hr'),_c('div',{staticClass:\"d-flex flex-column flex-sm-row pt-1\"},[(!_vm.isAdministrator)?_c('b-button',{staticClass:\"btn-cart mr-0 mr-sm-1 mb-1 mb-sm-0\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.handleCartActionClick(_vm.product)}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"ShoppingCartIcon\"}}),_c('span',[_vm._v(\"Ajouter aux Favoris\")])],1):_vm._e(),(_vm.isAdministrator)?_c('div',{staticClass:\"mr-5 hover-hand\"},[_c('b-form-file',{attrs:{\"accept\":\"image/*\",\"browse-text\":\"Modifier l'image\"},on:{\"change\":_vm.handleFileChange}})],1):_vm._e()],1)],1)],1)],1),_c('e-commerce-product-details-related-products',{key:_vm.relatedProductsKey,on:{\"goTo\":_vm.handleEventGoTo}})],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card-body',[_c('div',{staticClass:\"mt-4 mb-2 text-center\"},[_c('h4',[_vm._v(\"Articles similaires\")]),_c('b-card-text',[_vm._v(\"Les pharmaciens font recherche également à ces articles\")])],1),_c('swiper',{key:_vm.productKey,staticClass:\"swiper-responsive-breakpoints px-4 py-2\",attrs:{\"options\":_vm.swiperOptions}},[_vm._l((_vm.relatedProducts),function(product,index){return _c('swiper-slide',{directives:[{name:\"show\",rawName:\"v-show\",value:(product.No != _vm.productSlug),expression:\"product.No != productSlug\"}],key:index},[_c('b-link',{on:{\"click\":function($event){return _vm.goTo(product)}}},[_c('div',{staticClass:\"item-heading\"},[_c('h5',{staticClass:\"text-truncate mb-0\"},[_vm._v(\" \"+_vm._s(product.Description)+\" \")]),_c('small',{staticClass:\"text-body\"},[_vm._v(\"by \"+_vm._s(product.Nom_Fournisseur))])]),_c('div',{staticClass:\"img-container w-50 mx-auto py-75\"},[(product.imageLoading === true)?_c('div',{staticClass:\"loading\"}):_c('div',[(!product.image)?_c('b-img',{staticClass:\"card-img-top product-img\",attrs:{\"alt\":((product.Description) + \"-\" + (product.No)),\"fluid\":\"\",\"src\":_vm.defaultImage}}):_c('b-img',{staticClass:\"card-img-top product-img\",attrs:{\"alt\":((product.Description) + \"-\" + (product.No)),\"fluid\":\"\",\"src\":'data:image/jpeg;base64,' + product.image}})],1)]),_c('div',{staticClass:\"item-meta\"},[_c('ul',{staticClass:\"unstyled-list list-inline mb-25\"}),_c('p',{staticClass:\"card-text text-primary mb-0\"},[_vm._v(\" \"+_vm._s(_vm.formatPrice(product.Unit_Price_pharmacien_TTC))+\" TND \")])])])],1)}),_c('div',{staticClass:\"swiper-button-next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"}),_c('div',{staticClass:\"swiper-button-prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n Articles similaires\n Les pharmaciens font recherche également à ces articles\n \n\n \n \n \n \n \n \n {{ product.Description }}\n \n by {{ product.Nom_Fournisseur }}\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {{ formatPrice(product.Unit_Price_pharmacien_TTC) }} TND\n \n \n \n \n\n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetailsRelatedProducts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetailsRelatedProducts.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ProductDetailsRelatedProducts.vue?vue&type=template&id=097d4c8b\"\nimport script from \"./ProductDetailsRelatedProducts.vue?vue&type=script&lang=js\"\nexport * from \"./ProductDetailsRelatedProducts.vue?vue&type=script&lang=js\"\nimport style0 from \"./ProductDetailsRelatedProducts.vue?vue&type=style&index=0&id=097d4c8b&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n Valider\n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n {{ product.Description }}\n\n \n \n fourni par\n \n {{ product.Nom_Fournisseur }}\n \n \n\n \n \n \n {{ formatPrice(product.Unit_Price_pharmacien_TTC) }} TND\n \n \n \n \n \n \n \n\n \n Prix H.T - {{ formatPrice(product.Unit_Price_pharmacien) }}\n TND\n Prix T.T.C - {{ formatPrice(product.Unit_Price_pharmacien_TTC) }}\n TND\n Prix Public - {{ formatPrice(product.Prix_Public) }}\n TND\n\n \n \n\n\n \n\n\n \n \n \n \n Catégorie : \n {{ product.Family }}\n \n \n \n \n Famille : {{ product.Subfamily }}\n \n \n\n \n\n \n \n \n \n \n DLC : {{ product.DLC }}\n \n \n \n DCI : {{ product.DCI }}\n \n \n \n PCT : {{ product.Code_PCT }}\n \n \n \n\n \n\n \n\n \n \n Ajouter aux Favoris\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetails.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetails.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ProductDetails.vue?vue&type=template&id=d741baae\"\nimport script from \"./ProductDetails.vue?vue&type=script&lang=js\"\nexport * from \"./ProductDetails.vue?vue&type=script&lang=js\"\nimport style0 from \"./ProductDetails.vue?vue&type=style&index=0&id=d741baae&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import useJwt from '@/auth/jwt/useJwt'\nimport VueJwtDecode from 'vue-jwt-decode'\n\n\nexport const isUserLoggedIn = () => {\n const token = localStorage.getItem(useJwt.jwtConfig.storageTokenKeyName)\n if (token == null || token == undefined || token == null) {\n return false\n }\n let isTokenNotExp = Date.now() < 1000 * VueJwtDecode.decode(token).exp\n return localStorage.getItem('userData') && isTokenNotExp\n}\n\nexport const getHomeRouteForLoggedInUser = userRole => {\n if (userRole === 'ROLE_SUPERVISOR') return { name: 'supervisor-dashboard' }\n if (userRole === 'ROLE_ADMIN') return { name: 'admin-dashboard' }\n if (userRole === \"ROLE_SUPPLIER\") return { name: 'supplier-dashboard' }\n if (userRole === 'ROLE_CUSTOMER' || userRole === 'ROLE_EDITOR') return { name: 'new-order' }\n return { name: 'auth-login' }\n}\n\nexport const gerRole = () => {\n return JSON.parse(localStorage.getItem('userData')).role;\n}\n\nexport const isAdministrator = () => {\n return JSON.parse(localStorage.getItem('userData')).role == \"ROLE_ADMIN\";\n}\n\nexport const isSupervisor = () => {\n return JSON.parse(localStorage.getItem('userData')).role == \"ROLE_SUPERVISOR\";\n}\n\nexport const isPharmacy = () => {\n return [\"ROLE_CUSTOMER\", \"ROLE_EDITOR\"].includes(JSON.parse(localStorage.getItem('userData')).role);\n}\n","module.exports = __webpack_public_path__ + \"img/default.03c565d0.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetails.vue?vue&type=style&index=0&id=d741baae&prod&lang=scss\"","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * Swiper 5.4.5\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 16, 2020\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document as document$1 } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition$1,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd$1,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document$1.activeElement\n && $(document$1.activeElement).is(data.formElements)\n && document$1.activeElement !== $targetEl[0]\n ) {\n document$1.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document$1.activeElement) {\n if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document$1.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document$1.addEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n\nfunction getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`${slide}`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl)) swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl)) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document$1).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document$1).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document$1;\n\n if (!isSupported) {\n const element = document$1.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document$1.implementation\n && document$1.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document$1.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(``);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n swiper.emit('hashChange');\n const newHash = document$1.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n swiper.emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document$1.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document$1.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(``);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(``);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(``);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(``);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(``);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(``);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n//# sourceMappingURL=swiper.esm.bundle.js.map\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","import router from '@/router'\n// eslint-disable-next-line object-curly-newline\nimport { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'\n\nexport const isObject = obj => typeof obj === 'object' && obj !== null\n\nexport const isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\nconst getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]\n\n// ? Light and Dark variant is not included\n// prettier-ignore\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\n\nexport const isDynamicRouteActive = route => {\n const { route: resolvedRoute } = router.resolve(route)\n return resolvedRoute.path === router.currentRoute.path\n}\n\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\nexport const useRouter = () => {\n const vm = getCurrentInstance().proxy\n const state = reactive({\n route: vm.$route,\n })\n\n watch(\n () => vm.$route,\n r => {\n state.route = r\n },\n )\n\n return { ...toRefs(state), router: vm.$router }\n}\n\n/**\n * This is just enhancement over Object.extend [Gives deep extend]\n * @param {target} a Object which contains values to be overridden\n * @param {source} b Object which contains values to override\n */\n// export const objectExtend = (a, b) => {\n// // Don't touch 'null' or 'undefined' objects.\n// if (a == null || b == null) {\n// return a\n// }\n\n// Object.keys(b).forEach(key => {\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = objectExtend(a[key], b[key])\n// }\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// }\n// })\n\n// return a\n// }\n"],"sourceRoot":""}
\n {{ formatPrice(product.Unit_Price_pharmacien_TTC) }} TND\n