{"version":3,"sources":["webpack:///./src/views/CaseDetail.vue?5d89","webpack:///./src/views/Home.vue?d0df","webpack:///./src/views/Search.vue?24e0","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./src/components/SearchInfoItem.vue?5235","webpack:///./src/views/Search.vue?5ac3","webpack:///./src/components/SearchInfoItem.vue?d958","webpack:///src/components/SearchInfoItem.vue","webpack:///./src/components/SearchInfoItem.vue?5311","webpack:///./src/components/SearchInfoItem.vue","webpack:///./src/components/SearchProductItem.vue?4b59","webpack:///src/components/SearchProductItem.vue","webpack:///./src/components/SearchProductItem.vue?d4ed","webpack:///./src/components/SearchProductItem.vue","webpack:///./src/components/SearchCaseItem.vue?fa24","webpack:///src/components/SearchCaseItem.vue","webpack:///./src/components/SearchCaseItem.vue?d51d","webpack:///./src/components/SearchCaseItem.vue","webpack:///src/views/Search.vue","webpack:///./src/views/Search.vue?536d","webpack:///./src/views/Search.vue","webpack:///./src/components/HomeInfoCard.vue?d646","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./src/components/HomeMainBanner.vue?cb77","webpack:///./src/components/HomeDisplaySection.vue?35a4","webpack:///./src/components/HomeCaseBanner.vue?0dce","webpack:///./src/components/HomeResolutionCard.vue?f31a","webpack:///./src/components/HomeCaseCard.vue?a728","webpack:///./src/assets/img/case_detail_banner.jpg","webpack:///./src/assets/img/pic_n1.jpg","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./src/components/HomeResolutionBanner.vue?ceb2","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./src/views/Case.vue?01b2","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./src/views/CaseDetail.vue?6bb1","webpack:///src/views/CaseDetail.vue","webpack:///./src/views/CaseDetail.vue?a1a8","webpack:///./src/views/CaseDetail.vue","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./src/views/Case.vue?292b","webpack:///src/views/Case.vue","webpack:///./src/views/Case.vue?ac54","webpack:///./src/views/Case.vue","webpack:///./src/data/meta.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./src/views/Home.vue?4095","webpack:///./src/components/HomeMainBanner.vue?35d3","webpack:///./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///src/components/HomeMainBanner.vue","webpack:///./src/components/HomeMainBanner.vue?9f14","webpack:///./src/components/HomeMainBanner.vue","webpack:///./src/components/HomeDisplaySection.vue?8353","webpack:///src/components/HomeDisplaySection.vue","webpack:///./src/components/HomeDisplaySection.vue?dab9","webpack:///./src/components/HomeDisplaySection.vue","webpack:///./src/components/HomeResolutionBanner.vue?cd36","webpack:///./src/components/HomeResolutionCard.vue?cfde","webpack:///src/components/HomeResolutionCard.vue","webpack:///./src/components/HomeResolutionCard.vue?2273","webpack:///./src/components/HomeResolutionCard.vue","webpack:///src/components/HomeResolutionBanner.vue","webpack:///./src/components/HomeResolutionBanner.vue?627b","webpack:///./src/components/HomeResolutionBanner.vue","webpack:///./src/components/HomeCaseBanner.vue?74f3","webpack:///./src/components/HomeCaseCard.vue?798f","webpack:///src/components/HomeCaseCard.vue","webpack:///./src/components/HomeCaseCard.vue?645e","webpack:///./src/components/HomeCaseCard.vue","webpack:///src/components/HomeCaseBanner.vue","webpack:///./src/components/HomeCaseBanner.vue?16c3","webpack:///./src/components/HomeCaseBanner.vue","webpack:///./src/components/HomeInfoCard.vue?8b6f","webpack:///src/components/HomeInfoCard.vue","webpack:///./src/components/HomeInfoCard.vue?6bcb","webpack:///./src/components/HomeInfoCard.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?493c","webpack:///./src/views/Home.vue","webpack:///./src/components/SearchProductItem.vue?6c50","webpack:///./src/components/SearchCaseItem.vue?8332","webpack:///./src/assets/img/pic_n3.jpg","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./src/views/CaseDetail.vue?b2ee","webpack:///./src/assets/img/pic_n2.jpg","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js"],"names":["fails","global","$RegExp","RegExp","module","exports","re","exec","groups","a","replace","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","toString","getMethod","callRegExpExec","regexpExec","stickyHelpers","UNSUPPORTED_Y","arrayPush","push","min","Math","MAX_UINT32","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","this","arguments","result","split","length","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","string","lim","undefined","call","match","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","slice","index","test","O","splitter","rx","S","res","done","value","C","unicodeMatching","p","q","A","e","z","i","isCallable","classof","R","TypeError","render","_vm","_h","$createElement","_c","_self","staticClass","directives","name","rawName","expression","attrs","domProps","on","$event","type","indexOf","_k","keyCode","key","stopPropagation","searchData","target","composing","searchKeyword","_v","_l","item","class","currentSearchType","switchTypeAndSearch","_s","label","isLoadingInfo","isLoadingProduct","isLoadingResolution","isLoadingCase","id","_e","currentData","pagination","total","current","pageSize","$set","paginationChange","staticRenderFns","query","data","title","description","desc","props","Object","required","component","detailRouter","String","components","SearchInfoItem","SearchProductItem","SearchCaseItem","searchTypeList","freeze","methods","getInfoList","getProductList","getResolutionList","getCaseList","self","pageIndex","params","dealInfoListData","forEach","Id","Title","Desc","date","img","Cover","getFormatDate","dateString","productType","dealProductListData","icon","Icon","ShortName","Summary","dealCaseListData","Pic","Name","getCurrentSearchType","fromPageName","created","$route","keyword","isObject","wellKnownSymbol","MATCH","it","charAt","regexpFlags","shared","create","getInternalState","get","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","prototype","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","object","group","state","str","raw","charsAdded","strCopy","input","$","isArray","toObject","createProperty","arraySpeciesCreate","arrayMethodHasSpeciesSupport","V8_VERSION","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","array","concat","SPECIES_SUPPORT","isConcatSpreadable","spreadable","FORCED","proto","forced","arg","k","len","E","n","style","backgroundImage","backgroundSize","backgroundRepeat","detailHtml","metaInfo","meta","banner","watch","getDetailData","setCurrentCase","currentIndex","showPopup","ceil","inject","computed","caseBrandListData","caseOrigin","currentCase","Cases","keywords","that","dotAll","ref","bannerData","resolutionData","infoListData","caseData","unit","background","backgroundPosition","link","_m","obj","constructor","extend","src","keys","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","selector","context","els","tempParent","html","trim","toCreate","innerHTML","nodeType","unique","uniqueArray","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","getAttribute","attrName","removeAttr","removeAttribute","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","args","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","includeMargins","styles","offsetWidth","parseFloat","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","prop","each","matchedItems","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parentNode","parent","closest","find","foundElements","found","removeChild","toAdd","fn","Class","Methods","outerWidth","outerHeight","offset","methodName","Utils","delay","now","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","url","param","urlToParse","paramsPart","decodeURIComponent","o","to","nextSource","keysArray","nextIndex","nextKey","getOwnPropertyDescriptor","enumerable","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SwiperClass","eventsListeners","eventName","priority","method","onceHandler","f7proxy","eventHandler","Array","eventsArray","instanceParams","instance","modules","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","use","static","install","m","installModule","updateSize","swiper","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","floor","slidesPerView","slidesPerColumnFill","max","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","emit","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","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","nextTick","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","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","toLowerCase","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","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","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","navigation","nextEl","prevEl","onResize","breakpoints","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","b","innerWidth","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","wasLocked","lastSlidePosition","checkOverflow$1","defaults","init","uniqueNavElements","wrapperClass","prototypes","images","extendedDefaults","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","Device$1","Support$1","support","isSafari","isEdge","isUiWebView","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","destroy","Virtual","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","overwriteParams","Keyboard","kc","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","handle","Keyboard$1","enable","disable","isEventSupported","isSupported","element","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","stop","animateSlider","releaseScroll","getTime","handleMouseEnter","handleMouseLeave","Mousewheel$1","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onNextClick","onPrevClick","Navigation$1","hideOnClick","hiddenClass","isHidden","Pagination","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","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","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","containerClass","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","preloaderClass","slideOriginalIndex","originalSlide","loadInSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$1","loadOnTransitionStart","Controller","LinearSpline","binarySearch","guess","i1","i3","interpolate","c","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","getInterpolateFunction","inverse","setControlledTransition","Controller$1","a11y","role","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","disableEl","enableEl","bulletEl","$bulletEl","makeElFocusable","addElRole","addElLabel","paginationBulletMessage","onEnterKey","A11y","notificationClass","updateNavigation","updatePagination","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","slugify","includes","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","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Thumbs$1","_t","subTitle","default","router","ResolutionCard","HomeCaseCard","option","list","MainBanner","DisplaySection","ResolutionBanner","HomeCaseBanner","InfoCard","bannerLoading","infoLoading","caseLoading","newTypeData","statisticData","resolution","allReady","ready","newsData","news","case","deep","immediate","$nextTick","getBannerData","dealBannerData","Jump","newsTypeId","redefine","createNonEnumerableProperty","SPECIES","RegExpPrototype","KEY","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","$exec"],"mappings":"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","file":"static/js/Home.e4a71df9.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseDetail.vue?vue&type=style&index=0&id=c8b7e4d8&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=e9f8affa&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=style&index=0&id=51d3a954&lang=less&scoped=true&\"","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","var anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = exec.call(R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return regexpExec.call(R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInfoItem.vue?vue&type=style&index=0&id=1022278e&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"search-page\"},[_c('section',{staticClass:\"search-section\"},[_c('div',{staticClass:\"search-box\"},[_c('div',{staticClass:\"search-input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchKeyword),expression:\"searchKeyword\"}],attrs:{\"type\":\"text\",\"placeholder\":\"输入关键词搜索\"},domProps:{\"value\":(_vm.searchKeyword)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();return _vm.searchData.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchKeyword=$event.target.value}}})]),_c('button',{staticClass:\"search-btn\",on:{\"click\":_vm.searchData}},[_c('span',[_vm._v(\"站内搜索\")]),_c('i',{staticClass:\"icon-search\"})])]),_c('div',{staticClass:\"search-content\"},[_c('ul',{staticClass:\"nav-list\"},_vm._l((_vm.searchTypeList),function(item){return _c('li',{key:item.value,staticClass:\"list-item\",class:{'list-item--active': _vm.currentSearchType === item.value},on:{\"click\":function($event){return _vm.switchTypeAndSearch(item)}}},[_vm._v(\" \"+_vm._s(item.label)+\" \")])}),0),_c('div',{staticClass:\"content-area\"},[_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.isLoadingInfo || _vm.isLoadingProduct || _vm.isLoadingResolution || _vm.isLoadingCase),expression:\"isLoadingInfo || isLoadingProduct || isLoadingResolution || isLoadingCase\"}]},[(_vm.currentSearchType === 'info')?_c('div',{staticClass:\"info-content\"},_vm._l((_vm.currentData),function(item){return _c('SearchInfoItem',{key:item.id,attrs:{\"mode\":\"dark\",\"data\":item}})}),1):(_vm.currentSearchType === 'product')?_c('div',{staticClass:\"product-content\"},_vm._l((_vm.currentData),function(item){return _c('SearchProductItem',{key:'product' + item.id,attrs:{\"data\":item,\"detail-router\":\"ProductDescription\"}})}),1):(_vm.currentSearchType === 'resolution')?_c('div',{staticClass:\"resolution-content\"},_vm._l((_vm.currentData),function(item){return _c('SearchProductItem',{key:'resolution' + item.id,attrs:{\"data\":item,\"detail-router\":\"ResolutionDescription\"}})}),1):(_vm.currentSearchType === 'case')?_c('div',{staticClass:\"case-content\"},_vm._l((_vm.currentData),function(item){return _c('SearchCaseItem',{key:'case' + item.id,attrs:{\"data\":item,\"detail-router\":\"CaseDetail\"}})}),1):_vm._e(),(!_vm.currentData.length)?_c('div',{staticClass:\"placeholder-content\"},[_vm._v(\"暂无搜索结果\")]):_vm._e()]),(_vm.pagination.total > 5)?_c('div',{staticClass:\"list-pagination\"},[_c('el-pagination',{attrs:{\"layout\":\"prev, pager, next\",\"current-page\":_vm.pagination.current,\"total\":_vm.pagination.total,\"page-size\":_vm.pagination.pageSize},on:{\"update:currentPage\":function($event){return _vm.$set(_vm.pagination, \"current\", $event)},\"update:current-page\":function($event){return _vm.$set(_vm.pagination, \"current\", $event)},\"current-change\":_vm.paginationChange}})],1):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{staticClass:\"search-info-item\",attrs:{\"to\":{ name: 'NewsDetail', query: { id: _vm.data.id } }}},[_c('div',{staticClass:\"item-icon\"},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.data.img),expression:\"data.img\"}]})]),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"content-title\"},[_vm._v(_vm._s(_vm.data.title))]),_c('div',{staticClass:\"in-two-line content-desc\",attrs:{\"title\":_vm.data.description}},[_vm._v(_vm._s(_vm.data.desc))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInfoItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchInfoItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchInfoItem.vue?vue&type=template&id=1022278e&scoped=true&\"\nimport script from \"./SearchInfoItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchInfoItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchInfoItem.vue?vue&type=style&index=0&id=1022278e&lang=less&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 \"1022278e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{staticClass:\"search-product-item\",attrs:{\"to\":{ name: _vm.detailRouter, query: { id: _vm.data.id } }}},[_c('div',{staticClass:\"item-icon\"},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.data.icon),expression:\"data.icon\"}]})]),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"content-title\"},[_vm._v(_vm._s(_vm.data.title))]),_c('div',{staticClass:\"in-two-line content-desc\",attrs:{\"title\":_vm.data.description}},[_vm._v(_vm._s(_vm.data.description))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchProductItem.vue?vue&type=template&id=16825b9a&scoped=true&\"\nimport script from \"./SearchProductItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchProductItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchProductItem.vue?vue&type=style&index=0&id=16825b9a&lang=less&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 \"16825b9a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{staticClass:\"search-case-item\",attrs:{\"to\":{ name: _vm.detailRouter, query: { id: _vm.data.id } }}},[_c('div',{staticClass:\"item-icon\"},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.data.icon),expression:\"data.icon\"}]})]),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"content-title\"},[_vm._v(_vm._s(_vm.data.title))]),_c('div',{staticClass:\"in-two-line content-desc\",attrs:{\"title\":_vm.data.description}},[_vm._v(_vm._s(_vm.data.description))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCaseItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCaseItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchCaseItem.vue?vue&type=template&id=c6c91fec&scoped=true&\"\nimport script from \"./SearchCaseItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchCaseItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchCaseItem.vue?vue&type=style&index=0&id=c6c91fec&lang=less&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 \"c6c91fec\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=51d3a954&scoped=true&\"\nimport script from \"./Search.vue?vue&type=script&lang=js&\"\nexport * from \"./Search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Search.vue?vue&type=style&index=0&id=51d3a954&lang=less&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 \"51d3a954\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeInfoCard.vue?vue&type=style&index=0&id=15e967da&lang=less&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.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeMainBanner.vue?vue&type=style&index=0&id=f3d4b4a6&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeDisplaySection.vue?vue&type=style&index=0&id=1ec232ac&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseBanner.vue?vue&type=style&index=0&id=59178650&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionCard.vue?vue&type=style&index=0&id=46c18956&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseCard.vue?vue&type=style&index=0&id=6b7c9fda&lang=less&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/case_detail_banner.4bef58ba.jpg\";","module.exports = __webpack_public_path__ + \"static/img/pic_n1.fe284440.jpg\";","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionBanner.vue?vue&type=style&index=0&id=661953ea&lang=less&scoped=true&\"","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Case.vue?vue&type=style&index=0&id=636490b3&lang=less&scoped=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-content case-detail-page\"},[_c('div',{staticClass:\"banner-area\",style:({ backgroundImage: (\"url(\" + (require('../assets/img/case_detail_banner.jpg')) + \")\"), backgroundSize: '100% 100%', backgroundRepeat: 'no-repeat' })},[_c('div',{staticClass:\"banner-slogan\"},[_c('h4',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.desc))])])]),_c('div',{staticClass:\"detail-content\",domProps:{\"innerHTML\":_vm._s(_vm.detailHtml)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CaseDetail.vue?vue&type=template&id=c8b7e4d8&scoped=true&\"\nimport script from \"./CaseDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./CaseDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CaseDetail.vue?vue&type=style&index=0&id=c8b7e4d8&lang=less&scoped=true&\"\nimport style1 from \"./CaseDetail.vue?vue&type=style&index=1&id=c8b7e4d8&scoped=true&lang=css&\"\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 \"c8b7e4d8\",\n null\n \n)\n\nexport default component.exports","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-content case-page\"},[_c('div',{staticClass:\"case-title\"},[_vm._v(\"客户案例\")]),_c('div',{staticClass:\"user-content\"},[_c('div',{staticClass:\"user-list\",on:{\"mouseleave\":function($event){return _vm.setCurrentCase()}}},[_vm._l((_vm.caseBrandListData),function(item,index){return _c('div',{key:item.Id,staticClass:\"list-item\",class:{'list-item--active': _vm.currentIndex === index},on:{\"mouseenter\":function($event){return _vm.setCurrentCase(index)}}},[_c('div',{staticClass:\"item-content\"},[_c('img',{attrs:{\"src\":item.Pic}})])])}),_c('div',{staticClass:\"list-item-box\",class:{'list-item-box--show' : _vm.showPopup},style:({ 'transform': (\"translateY(\" + (Math.ceil((_vm.currentIndex + 1) / 5) * 128) + \"px)\") })},[_c('div',{staticClass:\"case-list\"},_vm._l((_vm.currentCase),function(item){return _c('div',{key:item.Id,staticClass:\"case-list-item\"},[_c('router-link',{staticClass:\"item-title\",attrs:{\"to\":{ name: 'CaseDetail', query: { id: item.Id } }}},[_vm._v(\" \"+_vm._s(item.Name)+\" \")])],1)}),0)])],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Case.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Case.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Case.vue?vue&type=template&id=636490b3&scoped=true&\"\nimport script from \"./Case.vue?vue&type=script&lang=js&\"\nexport * from \"./Case.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Case.vue?vue&type=style&index=0&id=636490b3&lang=less&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 \"636490b3\",\n null\n \n)\n\nexport default component.exports","export const description = '零方科技长期深耕便利店行业,熟悉零售业务,能准确、快速地理解和洞察客户需求,为零售行业专业定制解决方案,同时也培养了许多零售行业内的精英技术人才。 零方科技肩负“成为中国最具竞争力的数字化零售服务商,服务中国700万家门店”的使命,不断利用科技手段推进及引领行业变革,牵头探索互联网新业务模式'\r\n\r\nexport const keywords = '美宜佳,东莞美宜佳,便利店,零方信息科技有限公司,零方科技'\r\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-content home-page\"},[_c('MainBanner',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.bannerLoading),expression:\"bannerLoading\"}],ref:\"mainBanner\",attrs:{\"data\":_vm.bannerData}}),_c('div',{staticClass:\"main-content\"},[_c('DisplaySection',{attrs:{\"title\":\"数字化解决方案\",\"desc\":\"直击行业痛点,提供丰富的场景化解决方案,快速满足企业对多场景的业务需求\"}},[_c('ResolutionBanner',{ref:\"resolutionBanner\",attrs:{\"data\":_vm.resolutionData}})],1),_c('DisplaySection',{staticClass:\"even\",attrs:{\"title\":\"零方资讯\",\"desc\":\"及时获取覆盖全场景的数智化新零售方案的前沿信息\"}},[_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.infoLoading),expression:\"infoLoading\"}],staticClass:\"info-card-list\"},_vm._l((_vm.newsData),function(item){return _c('InfoCard',{key:item.id,attrs:{\"option\":item,\"list\":_vm.infoListData[item.id]}})}),1)]),_c('DisplaySection',{staticClass:\"water-print\",attrs:{\"title\":\"客户案例\",\"desc\":\"零方致力于成为零售企业最信赖的数智化服务品牌\"}},[_c('HomeCaseBanner',{ref:\"caseBanner\",attrs:{\"data\":_vm.caseData}})],1),_c('section',{staticClass:\"statistic-section\"},[_c('div',{staticClass:\"statistic-list\"},_vm._l((_vm.statisticData),function(item){return _c('div',{key:item.name,staticClass:\"list-item\"},[_c('div',{staticClass:\"item-number\"},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(item.img),expression:\"item.img\"}],staticClass:\"number-img\"}),_c('div',{staticClass:\"number-unit\"},[_vm._v(_vm._s(item.unit))])]),_c('div',{staticClass:\"item-desc\"},[_vm._v(_vm._s(item.desc))])])}),0)])],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('div',{staticClass:\"page-banner swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.data),function(item){return _c('a',{key:item.id,staticClass:\"swiper-slide\",style:({\n background: (\"url(\" + (item.img) + \") no-repeat\"),\n backgroundPosition: 'center'\n }),attrs:{\"href\":item.link ? item.link : 'javascript:;'}},[_c('div',{staticClass:\"slider-content\"},[_c('h2',{staticClass:\"slider-title\"},[_vm._v(_vm._s(item.title))]),_c('h4',{staticClass:\"slider-desc\"},[_vm._v(_vm._s(item.desc))])])])}),0),_vm._m(0),_vm._m(1),_c('div',{staticClass:\"main-swiper-pagination swiper-pagination\"})])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-prev\"},[_c('i',{staticClass:\"icon icon-prev\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-next\"},[_c('i',{staticClass:\"icon icon-next\"})])}]\n\nexport { render, staticRenderFns }","/**\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 * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Swiper 5.3.6\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: February 29, 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: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch));\n }()),\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) activeSlides.push(...swiper.visibleSlides);\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.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 if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -translate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\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 (UIWebView) 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 === 'mousemove') 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) {\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\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\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.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 } = swiper;\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? -wrapperEl.scrollLeft : -wrapperEl.scrollTop;\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(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 if (!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 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, with UIWebView).\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 isUiWebView: /(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 // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\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 && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\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 (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) 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 },\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) {\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}\">`;\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 && swiper.$el.find(params.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 gesture.$imageEl.transition(0);\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.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 e.preventDefault();\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 gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\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 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 }\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 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 }\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\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 (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 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 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 } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($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 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 } 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 }\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.isUiWebView) ? (-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 // 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\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\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 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 if (swiper.realIndex !== thumbsSwiper.realIndex) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\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.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).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 } else {\n newThumbsIndex = swiper.realIndex;\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 multipleActiveThumbs: true,\n swiper: null,\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","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeMainBanner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeMainBanner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeMainBanner.vue?vue&type=template&id=f3d4b4a6&scoped=true&\"\nimport script from \"./HomeMainBanner.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeMainBanner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeMainBanner.vue?vue&type=style&index=0&id=f3d4b4a6&lang=less&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 \"f3d4b4a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"display-section-wrapper\"},[_c('div',{staticClass:\"display-section\"},[_c('h2',{staticClass:\"section-title\"},[_vm._v(_vm._s(_vm.title))]),_c('h4',{staticClass:\"section-desc\"},[_vm._v(_vm._s(_vm.desc))]),_c('div',{staticClass:\"section-content\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeDisplaySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeDisplaySection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeDisplaySection.vue?vue&type=template&id=1ec232ac&scoped=true&\"\nimport script from \"./HomeDisplaySection.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeDisplaySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeDisplaySection.vue?vue&type=style&index=0&id=1ec232ac&lang=less&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 \"1ec232ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"resolution-banner swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.data),function(item){return _c('ResolutionCard',{key:item.title,staticClass:\"swiper-slide\",attrs:{\"data\":item}})}),1),_vm._m(0),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-prev\"},[_c('i',{staticClass:\"icon icon-prev\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-next\"},[_c('i',{staticClass:\"icon icon-next\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"resolution-card\"},[_c('img',{staticClass:\"card-img\",attrs:{\"src\":_vm.data.img}}),_c('router-link',{staticClass:\"card-content\",attrs:{\"to\":_vm.data.link}},[_c('img',{staticClass:\"card-icon\",attrs:{\"src\":_vm.data.icon}}),_c('h3',{staticClass:\"in-one-line card-title\"},[_vm._v(_vm._s(_vm.data.subTitle))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeResolutionCard.vue?vue&type=template&id=46c18956&scoped=true&\"\nimport script from \"./HomeResolutionCard.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeResolutionCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeResolutionCard.vue?vue&type=style&index=0&id=46c18956&lang=less&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 \"46c18956\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionBanner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeResolutionBanner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeResolutionBanner.vue?vue&type=template&id=661953ea&scoped=true&\"\nimport script from \"./HomeResolutionBanner.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeResolutionBanner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeResolutionBanner.vue?vue&type=style&index=0&id=661953ea&lang=less&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 \"661953ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"case-banner swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.data),function(item){return _c('HomeCaseCard',{key:item.title,staticClass:\"swiper-slide\",attrs:{\"data\":item}})}),1),_vm._m(0),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-prev\"},[_c('i',{staticClass:\"icon icon-prev\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-swiper-button custom-swiper-button-next\"},[_c('i',{staticClass:\"icon icon-next\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{staticClass:\"case-card\",attrs:{\"to\":{ name: 'CaseDetail', query: { id: _vm.data.id } }}},[_c('img',{staticClass:\"card-pic\",attrs:{\"src\":_vm.data.img}}),_c('div',{staticClass:\"card-content\"},[_c('div',{staticClass:\"content-title\"},[_vm._v(_vm._s(_vm.data.title))]),_c('div',{staticClass:\"in-four-line content-desc\"},[_vm._v(_vm._s(_vm.data.desc))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeCaseCard.vue?vue&type=template&id=6b7c9fda&scoped=true&\"\nimport script from \"./HomeCaseCard.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeCaseCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeCaseCard.vue?vue&type=style&index=0&id=6b7c9fda&lang=less&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 \"6b7c9fda\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseBanner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeCaseBanner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeCaseBanner.vue?vue&type=template&id=59178650&scoped=true&\"\nimport script from \"./HomeCaseBanner.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeCaseBanner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeCaseBanner.vue?vue&type=style&index=0&id=59178650&lang=less&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 \"59178650\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"info-card\"},[_c('router-link',{staticClass:\"card-pic\",style:({\n background: (\"url(\" + (_vm.option.img) + \") no-repeat\"),\n backgroundSize: '100% 100%'\n }),attrs:{\"to\":{ name: 'News', query: { type: _vm.option.id } }}},[_c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.option.icon),expression:\"option.icon\"}],staticClass:\"card-icon\"}),_c('h3',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.option.title))])]),_c('div',{staticClass:\"card-content\"},[(_vm.list.length)?_c('div',{staticClass:\"info-list\"},_vm._l((_vm.list),function(item){return _c('router-link',{key:item.id,staticClass:\"list-item\",attrs:{\"to\":{ name: 'NewsDetail', query: { id: item.id }}}},[_c('div',{staticClass:\"item-date\"},[_vm._v(_vm._s(item.date))]),_c('div',{staticClass:\"in-one-line item-title\"},[_vm._v(_vm._s(item.title))])])}),1):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeInfoCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeInfoCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeInfoCard.vue?vue&type=template&id=15e967da&scoped=true&\"\nimport script from \"./HomeInfoCard.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeInfoCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HomeInfoCard.vue?vue&type=style&index=0&id=15e967da&lang=less&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 \"15e967da\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=e9f8affa&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=e9f8affa&lang=less&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 \"e9f8affa\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProductItem.vue?vue&type=style&index=0&id=16825b9a&lang=less&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCaseItem.vue?vue&type=style&index=0&id=c6c91fec&lang=less&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/pic_n3.a089bdaf.jpg\";","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseDetail.vue?vue&type=style&index=1&id=c8b7e4d8&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"static/img/pic_n2.039b75d4.jpg\";","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n"],"sourceRoot":""}