{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/dom7/dom7.esm.js","node_modules/ssr-window/ssr-window.esm.js","node_modules/swiper/core/breakpoints/getBreakpoint.js","node_modules/swiper/core/breakpoints/index.js","node_modules/swiper/core/breakpoints/setBreakpoint.js","node_modules/swiper/core/check-overflow/index.js","node_modules/swiper/core/classes/addClasses.js","node_modules/swiper/core/classes/index.js","node_modules/swiper/core/classes/removeClasses.js","node_modules/swiper/core/core.js","node_modules/swiper/core/defaults.js","node_modules/swiper/core/events-emitter.js","node_modules/swiper/core/events/index.js","node_modules/swiper/core/events/onClick.js","node_modules/swiper/core/events/onResize.js","node_modules/swiper/core/events/onScroll.js","node_modules/swiper/core/events/onTouchEnd.js","node_modules/swiper/core/events/onTouchMove.js","node_modules/swiper/core/events/onTouchStart.js","node_modules/swiper/core/grab-cursor/index.js","node_modules/swiper/core/grab-cursor/setGrabCursor.js","node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","node_modules/swiper/core/images/index.js","node_modules/swiper/core/images/loadImage.js","node_modules/swiper/core/images/preloadImages.js","node_modules/swiper/core/loop/index.js","node_modules/swiper/core/loop/loopCreate.js","node_modules/swiper/core/loop/loopDestroy.js","node_modules/swiper/core/loop/loopFix.js","node_modules/swiper/core/moduleExtendParams.js","node_modules/swiper/core/modules/observer/observer.js","node_modules/swiper/core/modules/resize/resize.js","node_modules/swiper/core/slide/index.js","node_modules/swiper/core/slide/slideNext.js","node_modules/swiper/core/slide/slidePrev.js","node_modules/swiper/core/slide/slideReset.js","node_modules/swiper/core/slide/slideTo.js","node_modules/swiper/core/slide/slideToClickedSlide.js","node_modules/swiper/core/slide/slideToClosest.js","node_modules/swiper/core/slide/slideToLoop.js","node_modules/swiper/core/transition/index.js","node_modules/swiper/core/transition/setTransition.js","node_modules/swiper/core/transition/transitionEmit.js","node_modules/swiper/core/transition/transitionEnd.js","node_modules/swiper/core/transition/transitionStart.js","node_modules/swiper/core/translate/getTranslate.js","node_modules/swiper/core/translate/index.js","node_modules/swiper/core/translate/maxTranslate.js","node_modules/swiper/core/translate/minTranslate.js","node_modules/swiper/core/translate/setTranslate.js","node_modules/swiper/core/translate/translateTo.js","node_modules/swiper/core/update/index.js","node_modules/swiper/core/update/updateActiveIndex.js","node_modules/swiper/core/update/updateAutoHeight.js","node_modules/swiper/core/update/updateClickedSlide.js","node_modules/swiper/core/update/updateProgress.js","node_modules/swiper/core/update/updateSize.js","node_modules/swiper/core/update/updateSlides.js","node_modules/swiper/core/update/updateSlidesClasses.js","node_modules/swiper/core/update/updateSlidesOffset.js","node_modules/swiper/core/update/updateSlidesProgress.js","node_modules/swiper/modules/a11y/a11y.js","node_modules/swiper/modules/autoplay/autoplay.js","node_modules/swiper/modules/controller/controller.js","node_modules/swiper/modules/effect-cards/effect-cards.js","node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","node_modules/swiper/modules/effect-creative/effect-creative.js","node_modules/swiper/modules/effect-cube/effect-cube.js","node_modules/swiper/modules/effect-fade/effect-fade.js","node_modules/swiper/modules/effect-flip/effect-flip.js","node_modules/swiper/modules/free-mode/free-mode.js","node_modules/swiper/modules/grid/grid.js","node_modules/swiper/modules/hash-navigation/hash-navigation.js","node_modules/swiper/modules/history/history.js","node_modules/swiper/modules/keyboard/keyboard.js","node_modules/swiper/modules/lazy/lazy.js","node_modules/swiper/modules/manipulation/manipulation.js","node_modules/swiper/modules/manipulation/methods/addSlide.js","node_modules/swiper/modules/manipulation/methods/appendSlide.js","node_modules/swiper/modules/manipulation/methods/prependSlide.js","node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","node_modules/swiper/modules/manipulation/methods/removeSlide.js","node_modules/swiper/modules/mousewheel/mousewheel.js","node_modules/swiper/modules/navigation/navigation.js","node_modules/swiper/modules/pagination/pagination.js","node_modules/swiper/modules/parallax/parallax.js","node_modules/swiper/modules/scrollbar/scrollbar.js","node_modules/swiper/modules/thumbs/thumbs.js","node_modules/swiper/modules/virtual/virtual.js","node_modules/swiper/modules/zoom/zoom.js","node_modules/swiper/shared/classes-to-selector.js","node_modules/swiper/shared/create-element-if-not-defined.js","node_modules/swiper/shared/create-shadow.js","node_modules/swiper/shared/dom.js","node_modules/swiper/shared/effect-init.js","node_modules/swiper/shared/effect-target.js","node_modules/swiper/shared/effect-virtual-transition-end.js","node_modules/swiper/shared/get-browser.js","node_modules/swiper/shared/get-device.js","node_modules/swiper/shared/get-support.js","node_modules/swiper/shared/utils.js","node_modules/swiper/swiper.esm.js","src/js/carousel/carousel.js","src/js/carousel/config.js","src/js/carousel/productImageCarousel.js","src/js/carousel/productThumbnailsCarousel.js","src/js/common/videoPopup.js","src/js/helpers/eventKeyCodes.js","src/js/helpers/isXPM.js","src/js/productDetail.js","src/js/products/click2buySizes.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","j","_len10","arguments","els","Array","_key10","toAdd","$","this","push","_len","classes","_key","classNames","arrayFlat","map","split","forEach","el","_el$classList","classList","add","apply","_toConsumableArray","initialProps","initialParams","animateInstance","window","_ssrWindow","getWindow","props","Object","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","cancelAnimationFrame","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","keys","prop","getComputedStyle","getPropertyValue","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","requestAnimationFrame","render","easeProgress","Date","getTime","begin","max","min","element","_el$prop","style","callback","dom","on","fireCallBack","target","off","newChild","document","getDocument","k","undefined","tempDiv","createElement","innerHTML","firstChild","appendChild","Dom7","parent","append","attrs","value","getAttribute","setAttribute","attrName","selector","children","childNodes","is","closest","parents","eq","_prop","key","dom7ElementDataStorage","dataKey","concat","dataset","attributes","_attr","name","indexOf","string","toLowerCase","match","group","toUpperCase","toCamelCase","remove","nodeType","parentNode","removeChild","textContent","returnIndex","arrayFilter","foundElements","found","querySelectorAll","_len4","_key4","filter","className","contains","innerHeight","css","display","html","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","_next","_len6","args","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","removeEventListener","proxyListener","splice","box","getBoundingClientRect","body","clientTop","clientLeft","_scrollTop","scrollY","scrollTop","_scrollLeft","scrollX","scrollLeft","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","_parents","handleEvent","_event","addEventListener","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","_styles2","styles","offsetHeight","_styles","offsetWidth","_parent","prepend","previousElementSibling","prevEls","_prev","propName","attr","removeAttribute","_len2","_key2","_el$classList2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxLeft","newTop","newLeft","animateTop","animateLeft","maxTop","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","trim","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","CustomEvent","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","nodeName","values","selectedOptions","_i","_el","isArray","options","selected","val","innerWidth","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","minLen","prototype","toString","slice","constructor","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","arg","input","hint","_typeof","prim","toPrimitive","String","Number","res","_toPrimitive","_toPropertyKey","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","Function","has","get","set","Wrapper","_construct","_getPrototypeOf","create","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","bind","instance","sham","Proxy","Boolean","valueOf","setPrototypeOf","__proto__","getPrototypeOf","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","NewTarget","Super","items","_this","proto","_classCallCheck","obj","context","_html","toCreate","tempParent","qsa","uniqueArray","arrayUnique","fn","noTrigger","shortcut","_len14","_key14","trigger","click","blur","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","isObject","extend","src","doc","ssrDocument","win","ssrWindow","activeElement","querySelector","getElementById","createEvent","initEvent","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","navigator","userAgent","history","replaceState","pushState","go","back","Image","screen","setTimeout","clearTimeout","matchMedia","id","breakpoints","base","containerEl","breakpoint","currentHeight","clientHeight","points","point","minRatio","substr","sort","b","parseInt","_points$i","clientWidth","_setBreakpoint","_interopRequireDefault","_getBreakpoint","__esModule","default","_default","setBreakpoint","getBreakpoint","breakpointParams","wasMultiRow","swiper","activeIndex","initialized","_swiper$loopedSlides","loopedSlides","$el","breakpointsBase","currentBreakpoint","originalParams","isGridEnabled","isMultiRow","wasEnabled","enabled","removeClass","containerModifierClass","emitContainerClasses","addClass","grid","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","direction","needsReLoop","loop","slidesPerView","changeDirection","_utils","isEnabled","allowTouchMove","allowSlideNext","allowSlidePrev","emit","loopDestroy","loopCreate","updateSlides","slideTo","rows","checkOverflow","lastSlideIndex","wasLocked","isLocked","slidesOffsetBefore","slides","lastSlideRightEdge","slidesGrid","slidesSizesGrid","size","snapGrid","isEnd","rtl","device","support","suffixes","entries","prefix","resultClasses","item","prepareClasses","pointer-events","touch","free-mode","freeMode","autoheight","autoHeight","grid-column","android","ios","css-mode","cssMode","centered","centeredSlides","watch-progress","watchSlidesProgress","join","_addClasses","_removeClasses","addClasses","removeClasses","_dom","_getSupport","_getDevice","_getBrowser","_resize","_observer","_eventsEmitter","_index","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","_defaults","_moduleExtendParams","prototypes","eventsEmitter","update","translate","transition","slide","grabCursor","images","extendedDefaults","Swiper","swipers","newParams","__swiper__","getSupport","getDevice","browser","getBrowser","eventsListeners","eventsAnyListeners","modules","__modules__","_swiper$modules","allModulesParams","mod","extendParams","once","desktop","swiperParams","passedParams","onAny","isHorizontal","isVertical","realIndex","isBeginning","previousTranslate","velocity","touchEvents","touchEventsTouch","start","move","end","cancel","touchEventsDesktop","simulateTouch","touchEventsData","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","focusableElements","lastClickTime","now","clickTimeout","velocities","allowMomentumBounce","isTouchEvent","startMoving","allowClick","touches","startX","startY","currentX","currentY","diff","imagesToLoad","imagesLoaded","init","newDefaults","m","installModule","setGrabCursor","unsetGrabCursor","speed","minTranslate","maxTranslate","translateTo","updateActiveIndex","updateSlidesClasses","cls","_emitClasses","slideEl","destroyed","slideClass","updates","getSlideClasses","view","exact","swiperSize","spv","breakLoop","slideSize","swiperSlideSize","_i2","_i3","setTranslate","translateValue","rtlTranslate","newTranslate","updateSize","updateProgress","updateAutoHeight","watchOverflow","newDirection","needUpdate","currentDirection","width","height","dir","mounted","getWrapperSelector","wrapperClass","wrapper","$wrapperEl","shadowRoot","getWrapper","createElements","wrapperEl","wrongRTL","mount","preloadImages","initialSlide","runCallbacksOnInit","attachEvents","deleteInstance","cleanStyles","detachEvents","removeAttr","slideVisibleClass","slideActiveClass","slideNextClass","slidePrevClass","deleteProps","prototypeGroup","protoMethod","use","touchEventsTarget","updateOnWindowResize","resizeObserver","nested","preventInteractionOnTransition","url","edgeSwipeDetection","edgeSwipeThreshold","setWrapperSize","virtualTranslate","effect","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","touchRatio","touchAngle","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","resistance","resistanceRatio","preventClicks","preventClicksPropagation","slideToClickedSlide","updateOnImagesReady","loopAdditionalSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","rewind","swipeHandler","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","maxBackfaceHiddenSlides","slideBlankClass","slideDuplicateActiveClass","slideDuplicateClass","slideDuplicateNextClass","slideDuplicatePrevClass","priority","method","__emitterProxy","offAny","eventHandler","_onTouchStart","_onTouchMove","_onTouchEnd","_onResize","_onClick","_onScroll","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","passiveListener","passive","onTouchStart","onTouchMove","onTouchEnd","onClick","onScroll","preventDefault","stopPropagation","stopImmediatePropagation","autoplay","running","paused","run","translatesDiff","originalEvent","currentPos","touchEndTime","timeDiff","pathTree","path","composedPath","updateClickedSlide","nextTick","swipeDirection","stopIndex","groupSize","_increment","rewindFirstIndex","rewindLastIndex","virtual","ratio","increment","abs","navigation","nextEl","prevEl","type","targetTouch","targetTouches","changedTouches","pageX","pageY","preventedByNestedSwiper","diffX","diffY","sqrt","pow","atan2","loopFix","getTranslate","setTransition","disableParentSwiper","$targetEl","which","button","swipingClassHasValue","eventPath","isTargetShadow","__closestFrom","assignedSlot","getRootNode","closestElement","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","shouldPreventDefault","isContentEditable","_setGrabCursor","_unsetGrabCursor","moving","cursor","_loadImage","_preloadImages","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","image","onload","onerror","find","currentSrc","_loopCreate","_loopFix","_loopDestroy","$selector","blankSlidesNum","blankNode","ceil","prependSlides","appendSlides","floor","newIndex","moduleParamName","moduleParams","auto","_ref","attach","observer","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","observe","childList","characterData","observers","observeParents","observeSlideChildren","containerParents","disconnect","resizeHandler","orientationChangeHandler","animationFrame","ResizeObserver","newWidth","newHeight","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","_slideTo","_slideToLoop","_slideNext","_slidePrev","_slideReset","_slideToClosest","_slideToClickedSlide","slideToLoop","slideNext","slidePrev","slideReset","slideToClosest","runCallbacks","internal","perGroup","slidesPerViewDynamic","_clientLeft","normalize","prevSnapIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","snap","snapIndex","prevIndex","lastIndex","initial","indexAsNumber","isFinite","slideIndex","previousIndex","skip","normalizedGrid","normalizedGridNext","transitionStart","transitionEnd","isH","isVirtual","scrollSnapType","_immediateVirtual","_swiperImmediateVirtual","smoothScroll","animateCSSModeScroll","targetPosition","side","_defineProperty","_wrapperEl$scrollTo","onSlideToWrapperTransitionEnd","slideToIndex","clickedIndex","clickedSlide","currentSnap","_currentSnap","_setTransition","_transitionStart","_transitionEnd","byController","step","_transitionEmit","axis","_getTranslate","_setTranslate","_minTranslate","_maxTranslate","_translateTo","x","y","newProgress","translateBounds","onTranslateToWrapperTransitionEnd","_updateSize","_updateSlides","_updateAutoHeight","_updateSlidesOffset","_updateSlidesProgress","_updateProgress","_updateSlidesClasses","_updateActiveIndex","_updateClickedSlide","updateSlidesOffset","updateSlidesProgress","newActiveIndex","previousRealIndex","previousSnapIndex","activeSlides","getSlideByIndex","visibleSlides","slideFound","multiplier","wasBeginning","wasEnd","isNaN","getDirectionLabel","property","margin-top","margin-bottom ","margin-left","margin-right","padding-left","padding-right","marginRight","getDirectionPropertyValue","node","label","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","setCSSProperty","gridEnabled","initSlides","allSlidesSize","maxSnap","_allSlidesSize","allSlidesOffset","addToSnapGrid","addToSlidesGrid","shouldResetSlideSize","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","updateSlide","slideStyles","webkitTransform","outerWidth","outerHeight","boxSizing","_slide$","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideSizeValue","v","backFaceHiddenClass","hasClassBackfaceClassAdded","hasClass","activeSlide","nextSlide","prevSlide","emitSlidesClasses","swiperSlideOffset","offsetLeft","offsetTop","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","keyCode","$nextEl","$prevEl","pagination","_classesToSelector","bulletClass","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","includes","sourceCapabilities","firesTouchEvents","$slideEl","$containerEl","repeat","round","random","getRandomNumber","live","_swiper$navigation","bulletEl","$bulletEl","renderBullet","bulletActiveClass","timeout","$activeSlideEl","delay","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","_s","LinearSpline","maxIndex","minIndex","guess","i1","i3","binarySearch","array","interpolate","x2","removeSpline","controller","control","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","setControlledTransition","cardsEffect","slideShadows","transformEl","rotate","perSlideRotate","perSlideOffset","_effectInit","_swiper$touchEventsDa","offset","tX","tY","tZ","scale","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","scaleString","$shadowEl","_createShadow","opacity","zIndex","_effectTarget","_effectVirtualTransitionEnd","perspective","overwriteParams","coverflowEffect","stretch","depth","modifier","swiperWidth","swiperHeight","center","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","prev","next","isCenteredSlides","margin","_loop","custom","translateString","rotateString","opacityString","shadow","shadowOpacity","allSlides","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","scale2","slideAngle","tx","ty","tz","-webkit-transform-origin","transform-origin","shadowAngle","sin","scale1","zFactor","isSafari","isWebView","setProperty","recreateShadows","getEffectParams","fadeEffect","crossFade","slideOpacity","flipEffect","limitRotation","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","position","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","moveDistance","doBounce","bounceAmount","needsLoopFix","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","_swiper$params$grid","row","column","_swiper$params","_swiper$params$grid2","slideIndexInGroup","groupIndex","columnsInGroup","newSlideOrderIndex","-webkit-order","order","_swiper$params2","hashNavigation","watchState","onHashChange","newHash","setHash","root","keepQuery","slugify","getPathValues","urlOverride","URL","total","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","paths","handle","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","$imageEl","background","$pictureEl","slideOriginalIndex","sourceEl","$source","load","slideExist","amount","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","appendSlide","_appendSlide","prependSlide","_prependSlide","addSlide","_addSlide","removeSlide","_removeSlide","removeAllSlides","_removeAllSlides","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","slidesIndexes","indexToRemove","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","sX","sY","rtlFactor","pY","pX","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","_newEvent","sign","ignoreWheelEvents","snapToThreshold","_prevEvent","firstEvent","autoplayDisableOnInteraction","prevEvent","releaseScroll","getEl","toggleEl","disabled","disabledClass","lockClass","onPrevClick","onNextClick","_createElementIfNotDefined","destroy","_swiper$navigation2","hideOnClick","hiddenClass","navigationDisabledClass","_swiper$navigation3","isHidden","_swiper$navigation4","targetEl","toggleClass","bulletSize","pfx","bulletElement","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","dynamicBulletIndex","isPaginationDisabled","setSideBullets","current","paginationType","firstIndex","midIndex","bulletsOffset","offsetProp","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","progressbarDirection","scaleY","scaleX","paginationHTML","numberOfBullets","parallax","setTransform","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newSize","newPos","scrollbar","hide","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","currentIndex","nextIndex","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","currentThumbsIndex","newThumbsIndex","useOffset","prevThumbsIndex","nextThumbsIndex","cssModeTimeout","renderSlide","cache","force","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","to","previousSlidesGrid","previousOffset","slidesBefore","slidesAfter","onRendered","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","newCache","numberOfNewSlides","cachedIndex","$cachedEl","cachedElIndex","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","y2","onGestureStart","gestures","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","zoomIn","translateMinX","translateMaxY","overflow","touchAction","touchY","touchX","imageWidth","imageHeight","translateMinY","translateMaxX","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","_getListeners2","_getListeners3","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","in","out","checkProps","shadowClass","$shadowContainer","Methods","methodName","requireUpdateOnVirtual","overwriteParamsResult","effectParams","backface-visibility","-webkit-backface-visibility","eventTriggered","triggerEvents","ua","calcBrowser","overrides","deviceCached","platform","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","documentElement","DocumentTouch","supportsPassive","opts","calcSupport","startPosition","cssModeFrameID","isOutOfBound","currentPosition","object","noExtend","nextSource","isNode","keysArray","nextKey","desc","getOwnPropertyDescriptor","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","varName","varValue","currentStyle","HTMLElement","_core","_virtual","_keyboard","_mousewheel","_navigation","_pagination","_scrollbar","_parallax","_zoom","_lazy","_controller","_a11y","_history","_hashNavigation","_autoplay","_thumbs","_freeMode","_grid","_manipulation","_effectFade","_effectCube","_effectFlip","_effectCoverflow","_effectCreative","_effectCards","_config","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","hasOwnProperty","_interopRequireWildcard","_isXPM","_videoPopup","WeakMap","cacheBabelInterop","cacheNodeInterop","_slicedToArray","_arrayWithHoles","_e","_x","_r","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","Carousel","$carousel","hasAttribute","isXPM","interval","config","carousel","getElementsByClassName","carouselID","_extendConfig","extendedConfig","Pagination","Navigation","Lazy","Autoplay","Scrollbar","$button","nextState","VideoPopup","carouselClass","videoPaused","carouselNode","generateConfig","supportDuplicateSlideVideos","hasSingleSlide","hasAutoplayAttr","togglePlayPauseText","togglePlayPauseAriaLabel","pauseText","$player","$slide","playerId","jwplayer","play","_$button$attr$split2","playText","_carousel$autoplay","$videoContainer","getState","carouselIndex","player","VideoPlayer","_carousel","_eventKeyCodes","_createSuper","_get","receiver","_superPropBase","ProductImageCarousel","_thisSuper","carouselAPI","addEvents","activateImageViewer","_this2","HMS","ProductDetail","ProductThumbnailsCarousel","highlightActive","eventKeyCodes","enter","768","setActiveItem","activeItemIndex","magnificPopup","activeItem","currentScrollTop","api","media","mainClass","gallery","tCounter","iframe","patterns","azure","callbacks","beforeOpen","newItems","itemIndex","$image","$video","findIndex","open","thumbnails","elementContent","$element","data-index","class","close","afterClose","elementParse","selectorFrost","activeSelector","isOnPage","currentTarget","$items","navigateToSlide","isFrost","watchSlidesVisibility","playerSelector","jwChildWithPop","currentJwplayer","setCurrentPlayer","setCurrentPlayerElement","playerElement","getCurrentPlayer","getCurrentPlayerElement","registerModule","markup","initJwplayer","setupClonedButton","buttonClone","instantiatePlayer","urlHref","urlHls","videoName","progressive","hls","analytics","playOnReady","appendPlayerToPopup","IsJwplayerContainerReady","mfpPlayer","hasChildNodes","getJwplayer","template","updateStatus","isDone","magnificPopupSetup","clickedElement","ev","escape","_productImageCarousel","_productThumbnailsCarousel","_click2buySizes","HMSProductDetail","initClick2BuySizes","c2bWidget"],"mappings":"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","file":"productDetail.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\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 slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\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\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n 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\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // 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\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\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\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // 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\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\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\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\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\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\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n 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; // Each slide offset from center\n\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 centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\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\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\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\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\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\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\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 const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\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\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\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\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\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\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-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 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\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\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\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\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\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\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\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 const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\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 (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\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\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\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\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\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\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\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\n if (params.freeMode.sticky) {\n // If freeMode.sticky 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\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.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && 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 emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\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.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\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\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\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 emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\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\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\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = 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 {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\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 = slugify(slide.attr('data-history'));\n\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 const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\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 = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\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 const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\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\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\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\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\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\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(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); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [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\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\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\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\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\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 } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\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\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\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\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) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\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\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // 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) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\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\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\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\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\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\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\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\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = 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;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;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 if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // 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\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\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 = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\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.freeMode.sticky) {\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 momentum 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(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\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 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\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 lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!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 timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\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\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\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\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n 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]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\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]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(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 on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\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 scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\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\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\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\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\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\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 $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) 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\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\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;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\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 thumbsSwiper.slides.removeClass(thumbActiveClass);\n\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 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\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\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${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\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\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 Object.assign(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\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\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\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\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\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\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\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\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\n function appendSlide(slides) {\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\n update(true);\n }\n\n function prependSlide(slides) {\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\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\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\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\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\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\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\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\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 swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const 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 const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function 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 } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\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(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\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 currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.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 = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = 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 } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\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.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 && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\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\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\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\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 gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\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; // Fix duration\n\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 image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\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 gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\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 currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\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 translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\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\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n 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 } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","/**\n * Swiper 8.4.5\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2022 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 21, 2022\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","/* global VideoPlayer */\nimport { config } from './config';\n\nimport Swiper, { Navigation, Pagination, Lazy, Autoplay, Scrollbar } from 'swiper';\nimport { isXPM } from '../helpers/isXPM';\nimport { VideoPopup } from '../common/videoPopup';\n\n/**\n * Carousel is a generic carousel component with common carousel methods.\n */\nexport class Carousel {\n /**\n * Toggle autoplay functionality depending of presence of 'autoplay' attribute on container\n * @param {Node} $carousel Carousel container dom node\n * @returns {Boolean}\n */\n toggleAutoplay($carousel) {\n /**\n * Disable autoplay when in XPM\n */\n if (!$carousel.hasAttribute('autoplay') || isXPM() ) {\n return false;\n }\n\n const interval = $carousel.getAttribute('autoplay-interval');\n\n return interval ? { delay: interval } : config.autoplay;\n }\n\n /**\n * Check if carousel has only one slide\n * @param {Node} carousel Carousel container dom node\n * @returns {Boolean}\n */\n hasSingleSlide(carousel) {\n return carousel.getElementsByClassName('swiper-slide').length === 1;\n }\n\n /**\n * Check if carousel has autoplay attribute\n * @param {Node} carouselID\n * @returns {boolean}\n */\n hasAutoplayAttr(carouselID) {\n return $(`#${carouselID}`).attr('autoplay');\n }\n\n /**\n * Extends common config with passed config\n * @param {Object} extendConfig - Passed override of the common config\n * @returns {Object} Extended config\n */\n extendConfig(extendConfig) {\n const extendedConfig = $.extend({}, config, extendConfig);\n\n if (extendedConfig.pagination) {\n extendedConfig.modules.push(Pagination);\n }\n\n if (extendedConfig.navigation) {\n extendedConfig.modules.push(Navigation);\n }\n\n if (extendedConfig.lazy) {\n extendedConfig.modules.push(Lazy);\n }\n\n if (extendConfig.autoplay) {\n extendedConfig.modules.push(Autoplay);\n }\n\n if (extendConfig.scrollbar) {\n extendedConfig.modules.push(Scrollbar);\n }\n\n return extendedConfig;\n }\n\n togglePlayPauseText(carousel) {\n const $button = carousel.find('.js-play-pause-text');\n let currentState = $button.text();\n let nextState = $button.attr('data-state-toggle');\n\n $button.text(nextState).attr('data-state-toggle', currentState);\n }\n\n togglePlayPauseAriaLabel(carousel) {\n const $button = carousel.find('.js-play-pause-btn');\n let currentState = $button.attr('aria-label');\n let nextState = $button.attr('data-aria-label-toggle');\n\n $button.attr('aria-label', nextState).attr('data-aria-label-toggle', currentState);\n }\n\n /**\n * Inits video popups for duplicate slides\n * @param {Object} carousel\n * @param {Node} $carousel\n */\n supportDuplicateSlideVideos(carousel, $carousel) {\n carousel.on('slideChangeTransitionEnd', () => {\n if ($carousel.find('.swiper-slide-duplicate.swiper-slide-active .js-video-popup').length) {\n new VideoPopup();\n }\n });\n }\n\n /**\n * Inits the carousels in child classes\n * @param {Object} carouselClass - child class\n * @param {String} selector - css selector of carousel container\n */\n init(carouselClass, selector) {\n this.videoPaused = true;\n $.each($(selector), (index, carouselNode) => {\n const $carousel = $(carouselNode);\n const id = `${selector.replace('.js-', '')}-${index}`;\n $carousel.attr('id', id);\n const carousel = new Swiper(`#${id}`, carouselClass.generateConfig(carouselNode));\n // Added carousel to child class map for future use\n carouselClass.carousel.set(id, carousel);\n carousel.init();\n /** If video get supported on promobox carousel remove selector check */\n if (selector === '.js-intro-carousel' && $carousel.find('.js-video-popup').length) {\n this.supportDuplicateSlideVideos(carousel, $carousel);\n }\n\n /**\n * Carousel play-pause button.\n */\n if (this.hasSingleSlide(carouselNode) || !this.hasAutoplayAttr(id)) {\n $carousel.find('.js-play-pause-btn').css('display', 'none');\n } else {\n $carousel.find('.js-play-pause-btn').off('click').on('click', () => {\n if ($carousel.find('.js-play-pause-text').length > 0) {\n this.togglePlayPauseText($carousel);\n }\n\n carousel.autoplay.running ? carousel.autoplay.stop() : carousel.autoplay.start();\n $carousel.find('.svg-icon.play-icon').toggleClass('play-icon--is-paused');\n this.togglePlayPauseAriaLabel($carousel);\n });\n }\n\n /**\n * Used for the box carousel component.\n * Toggles the play-pause state of a carousel.\n */\n if (this.hasSingleSlide(carouselNode) || !this.hasAutoplayAttr(id)) {\n $carousel.find('.js-play-pause-box-btn').hide();\n } else {\n $carousel.find('.js-play-pause-box-btn').off('click').on('click', () => {\n this.togglePlayPauseText($carousel);\n\n this.videoPaused = !carousel.autoplay.running;\n carousel.autoplay.running ? carousel.autoplay.stop() : carousel.autoplay.start();\n $carousel.find('.svg-icon.play-icon').toggleClass('play-icon--is-paused');\n });\n }\n\n carousel.on('slideChange', () => {\n for (const slide in carousel.slides) {\n if (typeof carousel.slides[slide] === 'object') {\n const $slide = $(carousel.slides[slide]);\n const $player = $slide.find('.inline-video-container .jwplayer');\n if ($player.length) {\n const $button = $slide.find('.js-video-playback-text');\n const playerId = $player.attr('id');\n carousel.activeIndex === Number(slide) ?\n window.jwplayer(playerId).play() : window.jwplayer(playerId).pause();\n\n let [pauseText, playText] = $button.attr('data-state-init').split(';');\n $button.text(pauseText).attr('data-state-toggle', playText);\n $carousel.find('.video-playback-svg').removeClass('video-playback-svg--is-paused');\n }\n }\n }\n\n /**\n * Implementation of setTimeout() to make code execution after manuel slider \n * change (swipe, slider dots click or next-previous arrow click). \n */\n setTimeout(() => {\n if (!carousel.autoplay?.running) {\n if ($carousel.find('.js-play-pause-text').length > 0 && this.videoPaused) {\n this.togglePlayPauseText($carousel);\n this.videoPaused = false;\n }\n\n $carousel.find('.svg-icon.play-icon').removeClass('play-icon--is-paused');\n }\n }, 0);\n });\n\n $carousel.find('.js-video-playback').off('click').on('click', (event) => {\n const $videoContainer = $(event.target).closest('.video-container');\n const $player = $($videoContainer).find('.jwplayer');\n\n if ($player.length) {\n const playerId = $player.attr('id');\n window.jwplayer(playerId).getState() === 'playing' ?\n window.jwplayer(playerId).pause() : window.jwplayer(playerId).play();\n\n const $button = $($videoContainer).find('.js-video-playback-text');\n let currentState = $button.text();\n let nextState = $button.attr('data-state-toggle');\n\n $button.text(nextState).attr('data-state-toggle', currentState);\n $carousel.find('.video-playback-svg').toggleClass('video-playback-svg--is-paused');\n }\n });\n\n carousel.on('init', () => {\n $carousel.find('.video-player-init-disabled').each((carouselIndex, player) => new VideoPlayer(player));\n });\n });\n }\n}","export const config = {\n init: false,\n loop: true,\n lazy: true,\n autoplay: { delay: 3000 },\n speed: 1000,\n modules: []\n};","import { Carousel } from './carousel';\nimport { eventKeyCodes } from '../helpers/eventKeyCodes';\nconst selector = '.js-product-image-carousel';\n\nexport class ProductImageCarousel extends Carousel {\n static isOnPage() {\n return document.querySelector(selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, selector);\n this.carouselAPI = this.carousel.get('product-image-carousel-0');\n this.addEvents();\n this.activateImageViewer();\n }\n\n addEvents() {\n this.carouselAPI.on('slideChange', () => {\n window.HMS.ProductDetail.step = this.carouselAPI.realIndex;\n window.HMS.ProductDetail.ProductThumbnailsCarousel.highlightActive();\n });\n\n $('.popUpEnlarge').on('keydown', (event) => {\n if (event.which === eventKeyCodes.enter) {\n $('.gallery-popup .swiper-slide.active a').trigger('click');\n }\n });\n }\n\n navigateToSlide(index) {\n this.carouselAPI.slideToLoop(index);\n }\n\n /**\n * Generate config\n * @returns {Object} config\n */\n generateConfig() {\n const config = {\n autoplay: false,\n pagination: false,\n loop: window.innerWidth > 768,\n navigation: {\n nextEl: '.carousel-nav-button-next',\n prevEl: '.carousel-nav-button-prev'\n },\n preloadImages: false,\n slideActiveClass: 'active',\n speed: 500,\n lazy: {\n loadOnTransitionStart: true\n }\n };\n if (document.querySelector('.js-product-carousel-frost')) {\n config.breakpoints = {\n 768: {\n scrollbar: {\n hide: true,\n }\n },\n };\n config.scrollbar = {\n el: '.swiper-scrollbar',\n hide: false,\n draggable: true\n };\n }\n\n return super.extendConfig(config);\n }\n\n activateImageViewer() {\n const api = this.carouselAPI;\n let media = [];\n let currentScrollTop;\n\n const setActiveItem = () => {\n const activeItemIndex = $.magnificPopup.instance.index;\n const activeItem = $(`.js-product-intro-carousel-thumbnail-img[data-index=\"${activeItemIndex}\"]`);\n\n $('.js-product-intro-carousel-thumbnail-img').removeClass('product-intro-carousel-thumbnail-img--active');\n activeItem.addClass('product-intro-carousel-thumbnail-img--active');\n }\n\n $('.gallery-popup a').magnificPopup({\n type: 'image',\n mainClass: 'image-carousel-popup',\n zoom: {\n enabled: true,\n duration: 300\n },\n gallery: {\n enabled: true,\n tCounter: '%curr% / %total%'\n },\n iframe: {\n patterns: {\n azure: {\n index: 'azure.com',\n id: function () {\n return 0;\n },\n src: 'http://www.azure.com/embed/%id%'\n }\n }\n },\n callbacks: {\n beforeOpen: function() {\n // Remove swiper duplicate items and set real index\n const newItems = this.items.filter(item => {\n return !$(item).parent().hasClass('swiper-slide-duplicate');\n });\n this.items = newItems;\n this.index = window.HMS.ProductDetail.step;\n\n $('.images.gallery-popup .image:not(.swiper-slide-duplicate)').each(function() {\n const itemIndex = $(this).data('swiper-slide-index');\n const $image = $(this).find('img.product-intro-carousel-image');\n const $video = $(this).find('a.videoBackground');\n\n if ($video.length) {\n const existingVideoIndex = media.findIndex(item => item.itemIndex === itemIndex);\n\n if (existingVideoIndex === -1) {\n media.push({ type: 'video', src: $video.find('img').attr('data-src') || $video.find('img').attr('src'), itemIndex });\n }\n } else if ($image.length) {\n const existingImageIndex = media.findIndex(item => item.itemIndex === itemIndex);\n\n if (existingImageIndex === -1) {\n const src = $image.data('src') || $image.attr('src');\n media.push({ type: 'image', src, itemIndex });\n }\n }\n });\n },\n\n open: function() {\n const thumbnails = $('
').addClass('product-intro-carousel-thumbnail');\n\n media.forEach((item, index) => {\n let $element;\n\n if (item.type === 'video') {\n const elementContent = `\n \n `;\n\n $element = $(elementContent);\n } else {\n $element = $('', {\n 'data-index': index,\n class: 'product-intro-carousel-thumbnail-img js-product-intro-carousel-thumbnail-img',\n src: item.src,\n });\n }\n\n $element.on('click', (event) => {\n event.stopPropagation();\n $('.gallery-popup').magnificPopup('goTo', index);\n });\n\n thumbnails.append($element);\n });\n\n $('.mfp-container').append(thumbnails);\n setActiveItem();\n\n // The following line gets the current vertical scroll position of the page\n currentScrollTop = $(window).scrollTop();\n },\n\n close: function() {\n media = [];\n },\n\n afterClose: function () {\n // This line resets the vertical scroll position of the page to what it was before the popup was opened.\n // This ensures that when the popup is closed, the user returns to the same spot on the page where they were before.\n $(window).scrollTop(currentScrollTop);\n },\n\n elementParse: function (item) {\n if (item.el[0].classList.contains('js-video-popup')) {\n item.type = 'jwplayer';\n } else {\n item.type = 'image';\n }\n },\n change: function () {\n setActiveItem();\n api.slideToLoop($.magnificPopup.instance.index);\n window.HMS.ProductDetail.ProductThumbnailsCarousel\n .highlightActive($.magnificPopup.instance.index - 1);\n }\n }\n });\n }\n}\n","import { Carousel } from './carousel';\n\nconst selector = '.js-product-thumbnails-carousel';\nconst selectorFrost = '.js-product-thumbnails-carousel--isFrost';\n\nexport class ProductThumbnailsCarousel extends Carousel {\n static isOnPage() {\n // return the frost selector if it exists otherwise default to the standard selector\n return document.querySelector(selectorFrost) || document.querySelector(selector);\n }\n\n constructor() {\n super();\n // eslint-disable-next-line new-parens\n this.carousel = new Map;\n\n // assign selector based on which one is present\n this.activeSelector = ProductThumbnailsCarousel.isOnPage() === document.querySelector(selectorFrost) ? selectorFrost : selector;\n super.init(this, this.activeSelector);\n\n this.carouselAPI = this.carousel.get('product-thumbnails-carousel-0');\n this.addEvents();\n }\n\n addEvents() {\n $('body').on('click', '.js-product-thumbnail', event => this\n .onThumbClick($(event.currentTarget).index()));\n }\n\n highlightActive() {\n const $items = $('.js-product-thumbnail');\n $items.removeClass('active');\n $items.eq(window.HMS.ProductDetail.step).addClass('active');\n }\n\n onThumbClick(index) {\n this.highlightActive(index);\n window.HMS.ProductDetail.ProductImageCarousel.navigateToSlide(index);\n }\n\n getActiveSlide() {\n return this.carouselAPI.activeIndex;\n }\n\n /**\n * Generate config\n * @returns {Object} config\n */\n generateConfig() {\n const isFrost = this.activeSelector === selectorFrost;\n\n return super.extendConfig({\n autoplay: false,\n pagination: false,\n loop: false,\n navigation: {\n nextEl: '.icon-nav-arrow-bottom',\n prevEl: '.icon-nav-arrow-top'\n },\n direction: 'vertical',\n slidesPerView: isFrost ? 7 : 4,\n slidesPerGroup: isFrost ? 7 : 4,\n spaceBetween: 5,\n speed: 1000,\n watchSlidesVisibility: true,\n autoHeight: false,\n lazy: true\n });\n }\n}","const playerSelector = '.js-video-popup';\n\nexport class VideoPopup {\n static isOnPage() {\n return $(playerSelector).length !== 0;\n }\n\n constructor() {\n this.load();\n this.init();\n }\n\n load() {\n /**\n * JW Player support for magnific popup\n */\n\n // Create a contained object instead of global variables\n var currentJwplayer = (function () {\n var self = {\n setCurrentPlayer(player) {\n this.player = player;\n },\n setCurrentPlayerElement(playerElement) {\n this.playerElement = playerElement;\n },\n getCurrentPlayer() {\n return this.player;\n },\n getCurrentPlayerElement() {\n return this.playerElement;\n }\n };\n\n return {\n setCurrentPlayer: self.setCurrentPlayer,\n setCurrentPlayerElement: self.setCurrentPlayerElement,\n getCurrentPlayer: self.getCurrentPlayer,\n getCurrentPlayerElement: self.getCurrentPlayerElement\n };\n })();\n\n $.magnificPopup.registerModule('jwplayer', {\n options: {\n markup:\n '
' +\n '' +\n '
' +\n '
'\n },\n\n proto: {\n // eslint-disable-next-line no-empty-function\n initJwplayer: function () { },\n setupClonedButton: function (element) {\n currentJwplayer.setCurrentPlayerElement(element);\n\n // Create a dupe since this gets removed by the Platform Video Player\n var buttonClone = currentJwplayer.getCurrentPlayerElement().cloneNode(true);\n var parentToAddTo = currentJwplayer.getCurrentPlayerElement().parentNode;\n\n // Put the button copy where the removed button was\n parentToAddTo.appendChild(buttonClone);\n\n // Set new cloned button to be the player element\n currentJwplayer.setCurrentPlayerElement(buttonClone);\n },\n\n instantiatePlayer: function () {\n const urlHref = currentJwplayer.getCurrentPlayerElement().getAttribute('href');\n const urlHls = currentJwplayer.getCurrentPlayerElement().getAttribute('data-video-url-hls');\n const videoName = currentJwplayer.getCurrentPlayerElement().getAttribute('data-video-name');\n\n if (!(urlHref || urlHls || videoName)) {\n return;\n }\n // eslint-disable-next-line no-undef\n var player = new VideoPlayer(currentJwplayer.getCurrentPlayerElement(), {\n url: {\n progressive: urlHref,\n hls: urlHls\n },\n analytics: {\n name: videoName\n }\n });\n currentJwplayer.setCurrentPlayer(player);\n\n // Finish and play video\n player.playOnReady();\n },\n\n appendPlayerToPopup: function () {\n if (!currentJwplayer.getCurrentPlayer()) {\n return;\n }\n IsJwplayerContainerReady('#mfp-jwplayer', 100);\n },\n\n getJwplayer: function (item, template) {\n this.updateStatus('ready');\n var isDone = false;\n\n function magnificPopupSetup() {\n // Setup video and make sure it only does it once\n if (!isDone) {\n var clickedElement = item.el[0];\n $.magnificPopup.proto.setupClonedButton(clickedElement);\n $.magnificPopup.proto.instantiatePlayer();\n $.magnificPopup.proto.appendPlayerToPopup();\n\n if (!currentJwplayer.getCurrentPlayer()) {\n return;\n }\n\n isDone = true;\n }\n }\n\n this.ev.on('mfpOpen', function () {\n magnificPopupSetup();\n });\n\n this.ev.on('mfpChange', function () {\n magnificPopupSetup();\n });\n\n return template;\n }\n }\n });\n\n function uglyJwplayerWrapperHack() {\n var videoObj = $('.js-video-popup');\n var jwChildWithPop = videoObj.find($('.js-video-popup'));\n if (jwChildWithPop.length > 0) {\n jwChildWithPop.removeClass('js-video-popup');\n }\n }\n\n function IsJwplayerContainerReady(selector, time) {\n var mfpPlayer = document.querySelector(selector);\n if (mfpPlayer) {\n var playerElement = document.querySelector(\n '#' + currentJwplayer.getCurrentPlayer().element.id\n );\n if (mfpPlayer.hasChildNodes()) {\n mfpPlayer.removeChild(mfpPlayer.firstChild);\n }\n mfpPlayer.appendChild(playerElement);\n } else {\n setTimeout(function () {\n IsJwplayerContainerReady(selector, time);\n }, time);\n }\n }\n\n uglyJwplayerWrapperHack();\n }\n\n init() {\n $.each($(playerSelector), (index, player) => {\n if ($(player).parents('.image-carousel').length === 0) {\n const $player = $(player);\n let config = $player.hasClass('js-video-youtube') ? {\n type: 'iframe',\n iframe: {\n patterns: {\n azure: {\n index: 'azure.com',\n id: function () {\n return 0;\n },\n src: 'http://www.azure.com/embed/%id%'\n }\n }\n }\n } : { type: 'jwplayer' };\n\n $player.on('keydown', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n $player.magnificPopup('open');\n }\n });\n\n return $player.magnificPopup(config);\n }\n });\n }\n}","/**\n * Maps keyboard characters to event key codes.\n */\nexport const eventKeyCodes = {\n enter: 13,\n escape: 27\n};","export const isXPM = () => window.self !== window.top;\n","import { ProductImageCarousel } from './carousel/productImageCarousel';\nimport { ProductThumbnailsCarousel } from './carousel/productThumbnailsCarousel';\nimport { initClick2BuySizes } from './products/click2buySizes';\n\nwindow.HMSProductDetail = class HMSProductDetail {\n constructor() {\n this.init();\n this.step = 0;\n }\n\n init() {\n if (ProductImageCarousel.isOnPage()) {\n this.ProductImageCarousel = new ProductImageCarousel();\n }\n\n if (ProductThumbnailsCarousel.isOnPage()) {\n this.ProductThumbnailsCarousel = new ProductThumbnailsCarousel();\n\t\t}\n\n\t\tinitClick2BuySizes();\n }\n}\n","/**\n * Changes data-widget-id attribute when the size changes\n * @param {Event} event - change event of the