{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/shared/process-lazy-preloader.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/onLoad.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/modules/virtual/virtual.js","webpack:///./node_modules/swiper/modules/keyboard/keyboard.js","webpack:///./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/parallax/parallax.js","webpack:///./node_modules/swiper/modules/zoom/zoom.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/a11y/a11y.js","webpack:///./node_modules/swiper/modules/history/history.js","webpack:///./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/modules/free-mode/free-mode.js","webpack:///./node_modules/swiper/modules/grid/grid.js","webpack:///./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack:///./node_modules/swiper/modules/manipulation/manipulation.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack:///./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack:///./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack:///./node_modules/lightbox2/dist/js/lightbox.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/lazyload/lazyload.js","webpack:///(webpack)/buildin/global.js","webpack:///./app/javascript/src/drawer.js","webpack:///./node_modules/jquery-tags-input/dist/jquery.tagsinput.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isObject","obj","constructor","extend","target","arguments","length","undefined","src","keys","forEach","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","slice","to","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowEl","elementChildren","element","selector","matches","tag","classes","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","support","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","_slicedToArray","arr","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","arr2","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","_ua$split$1$split$0$s2","num","Number","major","minor","isWebView","calcBrowser","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","_","column","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionLabel","getDirectionPropertyValue","label","slidesEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","_slide","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","nextElementSibling","elementNextAll","prevSlide","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionDuration","transitionStart","transitionEnd","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","_ref$slideTo","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","append","recalcSlides","currentSlideTranslate","diff","touches","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","touchEventsData","evCache","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchMove","type","browser","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","onTouchEnd","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","update","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","base","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","_points$i","init","resizeObserver","createElements","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","transition","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","detachEvents","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","trim","getWrapper","destroy","deleteInstance","cleanStyles","deleteProps","static","newDefaults","installModule","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","Virtual","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","tempDOM","innerHTML","force","_swiper$params","_swiper$params$virtua","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","createElementIfNotDefined","checkProps","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","_swiper$navigation","onPrevClick","onNextClick","initButton","_swiper$navigation2","destroyButton","_swiper$navigation3","_swiper$navigation4","pagination","clickable","isHidden","toggle","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","total","firstIndex","midIndex","classesToRemove","suffix","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","Parallax","parallax","setTransform","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","Zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","_getScaleOrigin2","getScaleOrigin","onGestureChange","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","_getListeners","_getListeners2","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Controller","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","Swiper","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","A11y","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","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","getRandomNumber","live","addElLive","updateNavigation","updatePagination","_ref3","History","root","keepQuery","paths","slugify","text","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","Autoplay","raf","timeLeft","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","_swiper$params$grid","_swiper$params$grid2","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","appendElement","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","parentNode","getSlide","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","shadowContainer","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","_swiper$touchEventsDa","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","$","Lightbox","album","currentImageIndex","option","albumLabel","alwaysShowNavOnTouchDevices","fadeDuration","fitImagesInViewport","imageFadeDuration","positionFromTop","resizeDuration","showImageNumberLabel","wrapAround","disableScrolling","sanitizeTitle","imageCountLabel","currentImageNum","totalImages","ready","build","currentTarget","appendTo","$lightbox","$overlay","$outerContainer","find","$container","$image","$nav","containerPadding","css","right","bottom","imageBorderWidth","end","attr","changeImage","one","$link","$window","proxy","sizeOverlay","imageNumber","addToAlbum","alt","link","title","$links","dataLightboxValue","fadeIn","addClass","filename","filetype","disableKeyboardNav","preloader","onload","maxImageHeight","maxImageWidth","aspectRatio","maxWidth","maxHeight","sizeContainer","oldWidth","outerWidth","oldHeight","outerHeight","postResize","trigger","showImage","updateNav","updateDetails","preloadNeighboringImages","enableKeyboardNav","alwaysShowNav","show","$caption","html","labelText","removeClass","keyboardAction","KEYCODE_ESC","KEYCODE_LEFTARROW","KEYCODE_RIGHTARROW","keycode","fadeOut","require","dataset","form","submit","LineIt","loadButton","FB","XFBML","parse","lazyload","lightbox","tagsInput","loopFillGroupWithBlank","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","content","cspNonce","expando","Element","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","isEditable","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","input","fire","initCustomEvent","Event","result","defaultPrevented","stopEverything","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","ajax","response","responseText","getResponseHeader","status","success","statusText","error","beforeSend","readyState","XMLHttpRequest","OPENED","send","toUpperCase","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","JSON","head","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","toArray","serializeElement","additionalParam","inputs","elements","selected","checked","encodeURIComponent","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","action","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","Turbolinks","supported","visit","clearCache","setProgressBarDelay","copyObject","Node","ELEMENT_NODE","defer","throttle","dispatch","u","uuid","Location","absoluteURL","requestURL","anchor","wrap","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","toJSON","valueOf","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","requestStarted","cancel","abort","lengthComputable","loaded","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","onerror","ontimeout","onabort","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","visible","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","refresh","insertBefore","firstChild","trickleInterval","setInterval","clearInterval","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","onPageLoad","onPopState","started","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","outerHTML","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","clone","cloneNode","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","async","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","focus","replaceChild","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","scrollToElement","scrollIntoView","scrollToPosition","updatePosition","pageXOffset","pageYOffset","scrollPositionChanged","SnapshotCache","snapshots","has","read","put","write","Visit","performScroll","identifier","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","clickBubbled","clickCaptured","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","nodeIsVisitable","currentScript","hasAttribute","console","warn","global","factory","w","noGlobal","getProto","getPrototypeOf","concat","class2type","hasOwn","fnToString","ObjectFunctionString","isFunction","isWindow","preservedScriptAttributes","noModule","DOMEval","code","toType","version","rhtmlSuffix","fn","isArrayLike","elem","jquery","pushStack","elems","ret","merge","prevObject","each","first","eq","last","even","grep","_elem","odd","copy","copyIsArray","deep","isPlainObject","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","second","callbackExpect","arg","guid","whitespace","rtrimCSS","RegExp","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","els","seed","nid","newSelector","newContext","exec","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","select","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","defaultView","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","compare","sortDetached","expr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","compile","unmatched","lang","elemLang","safeActiveElement","hasFocus","tabIndex","selectedIndex","empty","nextSibling","header","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","parseOnly","tokens","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","contents","sibling","cur","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","then","Callbacks","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","stopOnFalse","lock","fireWith","Deferred","func","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","maxDepth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","stack","readyException","readyList","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","tmp","count","pnum","source","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","defaultValue","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","types","origFn","leverageNative","isSetup","saved","isTrigger","delegateType","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","writable","load","noBubble","beforeunload","props","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","changedTouches","eventPhase","buttons","screenX","screenY","toElement","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","before","after","replaceWith","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","styles","computedVal","extra","marginDelta","getWidthOrHeight","valueIsBorderBox","getClientRects","Tween","easing","cssHooks","animationIterationCount","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","orphans","widows","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","scrollboxSizeBuggy","padding","border","expand","expanded","parts","propHooks","percent","eased","pos","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","opts","specialEasing","originalProperties","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","finalValue","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","processData","contentType","accepts","responseFields","converters","ajaxSetup","settings","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","finalText","hasContent","ifModified","headers","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","responseType","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","rtrim","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","srcset","rootMargin","extended","LazyLoad","images","IntersectionObserver","loadImages","observerConfig","entry","isIntersecting","backgroundImage","loadAndDestroy","attribute","g","Function","drawer","doAutosize","f","h","comfortZone","resetAutosize","minInputWidth","maxInputWidth","inputPadding","fontSize","fontFamily","whiteSpace","addTag","tagExist","removeTag","updateTagsField","onAddTag","onChange","unescape","str","importTags","onRemoveTag","interactive","defaultText","minChars","autocomplete","selectFirst","delimiter","removeWithBackspace","placeholderColor","autosize","pid","real_input","holder","input_wrapper","fake_input","autocomplete_url","attrname","autocomplete_options","Autocompleter","ui","maxChars","keydown"],"mappings":"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","file":"js/application-566a03412a7397bc60e7.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://d1z6efma9ma6gb.cloudfront.net/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\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 && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend() {\n let target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let src = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\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}\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}\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };","import { getWindow, getDocument } from 'ssr-window';\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback) {\n let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el) {\n let axis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\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 return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (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 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 return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let swiper = _ref.swiper,\n targetPosition = _ref.targetPosition,\n side = _ref.side;\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 const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\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 swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements() {\n let elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element) {\n let selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag) {\n let classes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\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}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\nfunction calcDevice() {\n let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n userAgent = _ref.userAgent;\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 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';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\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 }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice() {\n let overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getWindow } from 'ssr-window';\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\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 if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const _ua$split$1$split$0$s = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)),\n _ua$split$1$split$0$s2 = _slicedToArray(_ua$split$1$split$0$s, 2),\n major = _ua$split$1$split$0$s2[0],\n minor = _ua$split$1$split$0$s2[1];\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\n\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 once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\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 if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\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 if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\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 emit() {\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 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\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 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 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};","export const processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nexport const preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\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};","import { elementStyle } from '../../shared/utils.js';\nexport default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, '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 { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const wrapperEl = swiper.wrapperEl,\n slidesEl = swiper.slidesEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\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 if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\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 if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\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 for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', 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 if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const _slide = slide,\n clientWidth = _slide.clientWidth,\n offsetWidth = _slide.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\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 swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(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 if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}","export 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 if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(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 }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}","export default function updateSlidesProgress() {\n let translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;\n const swiper = this;\n const params = swiper.params;\n const slides = swiper.slides,\n rtl = swiper.rtlTranslate,\n snapGrid = swiper.snapGrid;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + 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 if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd,\n progressLoop = swiper.progressLoop;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function updateSlidesClasses() {\n const swiper = this;\n const slides = swiper.slides,\n params = swiper.params,\n slidesEl = swiper.slidesEl,\n activeIndex = swiper.activeIndex;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}","import { preload } from '../../shared/process-lazy-preloader.js';\nexport function getActiveIndexByTranslate(swiper) {\n const slidesGrid = swiper.slidesGrid,\n params = swiper.params;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\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 if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('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 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\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};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate() {\n let axis = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.isHorizontal() ? 'x' : 'y';\n const swiper = this;\n const params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n wrapperEl = swiper.wrapperEl;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const rtl = swiper.rtlTranslate,\n params = swiper.params,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo() {\n let translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;\n let runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let translateBounds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n let internal = arguments.length > 4 ? arguments[4] : undefined;\n const swiper = this;\n const params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\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;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}","export default function transitionEmit(_ref) {\n let swiper = _ref.swiper,\n runCallbacks = _ref.runCallbacks,\n direction = _ref.direction,\n step = _ref.step;\n const activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\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 if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart() {\n let runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let direction = arguments.length > 1 ? arguments[1] : undefined;\n const swiper = this;\n const params = swiper.params;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd() {\n let runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let direction = arguments.length > 1 ? arguments[1] : undefined;\n const swiper = this;\n const params = swiper.params;\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 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};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;\n let runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let internal = arguments.length > 3 ? arguments[3] : undefined;\n let initial = arguments.length > 4 ? arguments[4] : undefined;\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\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];\n // Normalize slideIndex\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 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 }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = 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 wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\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 if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}","export default function slideToLoop() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;\n let runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let internal = arguments.length > 3 ? arguments[3] : undefined;\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext() {\n let speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n let runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let internal = arguments.length > 2 ? arguments[2] : undefined;\n const swiper = this;\n const enabled = swiper.enabled,\n params = swiper.params,\n animating = swiper.animating;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev() {\n let speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n let runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let internal = arguments.length > 2 ? arguments[2] : undefined;\n const swiper = this;\n const params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled,\n animating = swiper.animating;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\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 if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\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 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 return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset() {\n let speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n let runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let internal = arguments.length > 2 ? arguments[2] : undefined;\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest() {\n let speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;\n let runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let internal = arguments.length > 2 ? arguments[2] : undefined;\n let threshold = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 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 if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import { elementChildren, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\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 = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\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 { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","export default function loopFix() {\n let _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n slideRealIndex = _ref.slideRealIndex,\n _ref$slideTo = _ref.slideTo,\n slideTo = _ref$slideTo === void 0 ? true : _ref$slideTo,\n direction = _ref.direction,\n setTranslate = _ref.setTranslate,\n activeSlideIndex = _ref.activeSlideIndex,\n byController = _ref.byController,\n byMousewheel = _ref.byMousewheel;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const slides = swiper.slides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n slidesEl = swiper.slidesEl,\n params = swiper.params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector) {\n let base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 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 if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\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 let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\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 params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (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 if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n 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 if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n slidesGrid = swiper.slidesGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\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 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\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 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\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}","export default function onResize() {\n const swiper = this;\n const params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 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 clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\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 if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\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';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const params = swiper.params,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\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 // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const params = swiper.params;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const realIndex = swiper.realIndex,\n initialized = swiper.initialized,\n params = swiper.params,\n el = swiper.el;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, 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 if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\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 if (directionChanged && initialized) {\n swiper.changeDirection();\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 if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints) {\n let base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'window';\n let containerEl = arguments.length > 2 ? arguments[2] : undefined;\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 return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\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 return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked,\n params = swiper.params;\n const slidesOffsetBefore = params.slidesOffsetBefore;\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 if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\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\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: 5,\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 // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: 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 slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams() {\n let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { extend, deleteProps, createElement, elementChildren, elementStyle, elementIndex } 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 checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader, preload } from '../shared/process-lazy-preloader.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};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\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 = args[0];\n params = args[1];\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\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 if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\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 });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\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 if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\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 // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\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 cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\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: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\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');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const slidesEl = this.slidesEl,\n params = this.params;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const slidesEl = swiper.slidesEl,\n params = swiper.params;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\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 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 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 emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(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 slidesPerViewDynamic() {\n let view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'current';\n let exact = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const swiper = this;\n const params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n slidesSizesGrid = swiper.slidesSizesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // 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 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 if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const snapGrid = swiper.snapGrid,\n params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection) {\n let needUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(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 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 if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.shadowEl) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement ? el : wrapperEl,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\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');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy() {\n let deleteInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let cleanStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const swiper = this;\n const params = swiper.params,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n slides = swiper.slides;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\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;","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.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","export default function unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\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}\nexport default function addClasses() {\n const swiper = this;\n const classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n el = swiper.el,\n device = swiper.device;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\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.classList.add(...classNames);\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const el = swiper.el,\n classNames = swiper.classNames;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let swiper = _ref.swiper,\n on = _ref.on,\n emit = _ref.emit;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const width = swiper.width,\n height = swiper.height;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let contentBoxSize = _ref2.contentBoxSize,\n contentRect = _ref2.contentRect,\n target = _ref2.target;\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 if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\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 { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\n const observers = [];\n const window = getWindow();\n const attach = function (target) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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 (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\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 const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nimport { createElement, elementChildren, setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) swiper.virtual.cache[index] = slideEl;\n return slideEl;\n }\n function update(force) {\n const _swiper$params = swiper.params,\n slidesPerView = _swiper$params.slidesPerView,\n slidesPerGroup = _swiper$params.slidesPerGroup,\n centeredSlides = _swiper$params.centeredSlides,\n isLoop = _swiper$params.loop;\n const _swiper$params$virtua = swiper.params.virtual,\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\n const _swiper$virtual = swiper.virtual,\n previousFrom = _swiper$virtual.from,\n previousTo = _swiper$virtual.to,\n slides = _swiper$virtual.slides,\n previousSlidesGrid = _swiper$virtual.slidesGrid,\n previousOffset = _swiper$virtual.offset;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\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 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 = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\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 update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\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 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}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { elementOffset, elementParents } from '../../shared/utils.js';\nexport default function Keyboard(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 function handle(event) {\n if (!swiper.enabled) return;\n const rtl = swiper.rtlTranslate;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.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 for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\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 inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\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}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\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 let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\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 }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\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 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 }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\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 if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // 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 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\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 };\n\n // Keep the most recent events\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);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\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 if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\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 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\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 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 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 }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import { createElement, elementChildren } from './utils.js';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Navigation(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 prevEl: null\n };\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const _swiper$navigation = swiper.navigation,\n nextEl = _swiper$navigation.nextEl,\n prevEl = _swiper$navigation.prevEl;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\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 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 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 let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let _swiper$navigation2 = swiper.navigation,\n nextEl = _swiper$navigation2.nextEl,\n prevEl = _swiper$navigation2.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\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 let _swiper$navigation3 = swiper.navigation,\n nextEl = _swiper$navigation3.nextEl,\n prevEl = _swiper$navigation3.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let _swiper$navigation4 = swiper.navigation,\n nextEl = _swiper$navigation4.nextEl,\n prevEl = _swiper$navigation4.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\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 if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector() {\n let classes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\nexport default function Pagination(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const bulletActiveClass = swiper.params.pagination.bulletActiveClass;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\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 let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\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 bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\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.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](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 let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\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 // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\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 if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\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;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(params.clickableClass);\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\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 (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n let el = swiper.pagination.el;\n if (!Array.isArray(el)) el = [el].filter(element => !!element);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(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[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport { createElement, elementOffset, nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n const dragEl = scrollbar.dragEl,\n el = scrollbar.el;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const scrollbar = swiper.scrollbar;\n const dragEl = scrollbar.dragEl,\n el = scrollbar.el;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const scrollbar = swiper.scrollbar,\n rtl = swiper.rtlTranslate;\n const el = scrollbar.el;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n 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 function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const scrollbar = swiper.scrollbar,\n wrapperEl = swiper.wrapperEl;\n const el = scrollbar.el,\n dragEl = scrollbar.dragEl;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const scrollbar = swiper.scrollbar,\n wrapperEl = swiper.wrapperEl;\n const el = scrollbar.el,\n dragEl = scrollbar.dragEl;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const scrollbar = swiper.scrollbar,\n wrapperEl = swiper.wrapperEl;\n const el = scrollbar.el;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const scrollbar = swiper.scrollbar,\n params = swiper.params;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const scrollbar = swiper.scrollbar,\n swiperEl = swiper.el;\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;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\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 el = swiper.scrollbar.el;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { elementChildren } from '../../shared/utils.js';\nexport default function Parallax(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const setTransform = (el, progress) => {\n const rtl = swiper.rtl;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\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 if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const el = swiper.el,\n slides = swiper.slides,\n progress = swiper.progress,\n snapGrid = swiper.snapGrid;\n elementChildren(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function () {\n let duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : swiper.params.speed;\n const el = swiper.el;\n el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\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}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getWindow } from 'ssr-window';\nimport { elementChildren, elementOffset, elementParents, getTranslate } from '../../shared/utils.js';\nexport default function Zoom(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit;\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 fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\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 set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.el.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const _getScaleOrigin = getScaleOrigin(),\n _getScaleOrigin2 = _slicedToArray(_getScaleOrigin, 2),\n originX = _getScaleOrigin2[0],\n originY = _getScaleOrigin2[1];\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\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 = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\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 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 if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const originX = gesture.originX,\n originY = gesture.originY;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${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 if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.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 if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const _getListeners = getListeners(),\n passiveListener = _getListeners.passiveListener,\n activeListenerWithCapture = _getListeners.activeListenerWithCapture;\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const _getListeners2 = getListeners(),\n passiveListener = _getListeners2.passiveListener,\n activeListenerWithCapture = _getListeners2.activeListenerWithCapture;\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\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}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { elementTransitionEnd, nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\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 function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\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 || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport { createElement, elementIndex } from '../../shared/utils.js';\nexport default function A11y(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\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 function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getRandomNumber() {\n let size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16;\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('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 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const _swiper$navigation = swiper.navigation,\n nextEl = _swiper$navigation.nextEl,\n prevEl = _swiper$navigation.prevEl;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\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 if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('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 const init = () => {\n const params = swiper.params.a11y;\n if (swiper.isElement) {\n swiper.el.shadowEl.append(liveRegion);\n } else {\n swiper.el.append(liveRegion);\n }\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('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);\n\n // Slide\n initSlides();\n\n // Navigation\n let _ref2 = swiper.navigation ? swiper.navigation : {},\n nextEl = _ref2.nextEl,\n prevEl = _ref2.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let _ref3 = swiper.navigation ? swiper.navigation : {},\n nextEl = _ref3.nextEl,\n prevEl = _ref3.prevEl;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\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}","import { getWindow } from 'ssr-window';\nexport default function History(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\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 const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\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 const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\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 ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\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[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\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}","import { getWindow, getDocument } from 'ssr-window';\nimport { elementChildren } from '../../shared/utils.js';\nexport default function HashNavigation(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n emit = _ref.emit,\n on = _ref.on;\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 getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\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 if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\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}","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nexport default function Autoplay(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on,\n emit = _ref.emit,\n params = _ref.params;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\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 let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}","import { getDocument } from 'ssr-window';\nimport { elementChildren, isObject } from '../../shared/utils.js';\nexport default function Thumb(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\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 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.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const thumbsParams = swiper.params.thumbs;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\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 swiper.thumbs.swiper.update();\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 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\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;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n 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) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\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 if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { elementTransitionEnd, now } from '../../shared/utils.js';\nexport default function freeMode(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n emit = _ref.emit,\n once = _ref.once;\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 function onTouchStart() {\n if (swiper.params.cssMode) return;\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 function onTouchMove() {\n if (swiper.params.cssMode) return;\n const data = swiper.touchEventsData,\n touches = swiper.touches;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let currentPos = _ref2.currentPos;\n if (swiper.params.cssMode) return;\n const params = swiper.params,\n wrapperEl = swiper.wrapperEl,\n rtl = swiper.rtlTranslate,\n snapGrid = swiper.snapGrid,\n data = swiper.touchEventsData;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n 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 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\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 if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.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 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 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 elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\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 if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\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 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const slidesPerView = swiper.params.slidesPerView;\n const _swiper$params$grid = swiper.params.grid,\n rows = _swiper$params$grid.rows,\n fill = _swiper$params$grid.fill;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const slidesPerGroup = swiper.params.slidesPerGroup;\n const spaceBetween = getSpaceBetween();\n const _swiper$params$grid2 = swiper.params.grid,\n rows = _swiper$params$grid2.rows,\n fill = _swiper$params$grid2.fill;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\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.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\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 slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const _swiper$params = swiper.params,\n centeredSlides = _swiper$params.centeredSlides,\n roundLengths = _swiper$params.roundLengths;\n const spaceBetween = getSpaceBetween();\n const rows = swiper.params.grid.rows;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\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 snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","export default function appendSlide(slides) {\n const swiper = this;\n const params = swiper.params,\n slidesEl = swiper.slidesEl;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const params = swiper.params,\n activeIndex = swiper.activeIndex,\n slidesEl = swiper.slidesEl;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const params = swiper.params,\n activeIndex = swiper.activeIndex,\n slidesEl = swiper.slidesEl;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const params = swiper.params,\n activeIndex = swiper.activeIndex;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\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[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\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(_ref) {\n let swiper = _ref.swiper;\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 effectInit(params) {\n const effect = params.effect,\n swiper = params.swiper,\n on = params.on,\n setTranslate = params.setTranslate,\n setTransition = params.setTransition,\n overwriteParams = params.overwriteParams,\n perspective = params.perspective,\n recreateShadows = params.recreateShadows,\n getEffectParams = params.getEffectParams;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\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 if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","import { getSlideTransformEl } from './utils.js';\nexport default function effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}","import { elementTransitionEnd } from './utils.js';\nexport default function effectVirtualTransitionEnd(_ref) {\n let swiper = _ref.swiper,\n duration = _ref.duration,\n transformElements = _ref.transformElements,\n allSlides = _ref.allSlides;\n const activeIndex = swiper.activeIndex;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\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';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFade(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const slides = swiper.slides;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\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 effectInit from '../../shared/effect-init.js';\nimport { createElement } from '../../shared/utils.js';\nexport default function EffectCube(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`);\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`);\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n slides = swiper.slides,\n swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n rtl = swiper.rtlTranslate,\n swiperSize = swiper.size,\n browser = swiper.browser;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.slidesEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.slidesEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.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.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const el = swiper.el,\n slides = swiper.slides;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\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 { createElement, getSlideTransformEl } from './utils.js';\nexport default function createShadow(params, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass}`);\n if (!shadowEl) {\n shadowEl = createElement('div', `swiper-slide-shadow${side ? `-${side}` : ''}`);\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\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';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFlip(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow(params, slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow(params, slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress, params);\n });\n };\n const setTranslate = () => {\n const slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.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 if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\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 createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCoverflow(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const swiperWidth = swiper.width,\n swiperHeight = swiper.height,\n slides = swiper.slides,\n slidesSizesGrid = swiper.slidesSizesGrid;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.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;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n 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.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow(params, slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow(params, slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\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';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCreative(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n creativeEffect: {\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 const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const slides = swiper.slides,\n wrapperEl = swiper.wrapperEl,\n slidesSizesGrid = swiper.slidesSizesGrid;\n const params = swiper.params.creativeEffect;\n const multiplier = params.progressMultiplier;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\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 }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.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}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow(params, slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\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 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';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCards(_ref) {\n let swiper = _ref.swiper,\n extendParams = _ref.extendParams,\n on = _ref.on;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const slides = swiper.slides,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate;\n const params = swiper.params.cardsEffect;\n const _swiper$touchEventsDa = swiper.touchEventsData,\n startTranslate = _swiper$touchEventsDa.startTranslate,\n isTouched = _swiper$touchEventsDa.isTouched;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\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 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 if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow(params, slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\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}","/*!\n * Lightbox v2.11.4\n * by Lokesh Dhakar\n *\n * More info:\n * http://lokeshdhakar.com/projects/lightbox2/\n *\n * Copyright Lokesh Dhakar\n * Released under the MIT license\n * https://github.com/lokesh/lightbox2/blob/master/LICENSE\n *\n * @preserve\n */\n\n// Uses Node, AMD or browser globals to create a module.\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals (root is window)\n root.lightbox = factory(root.jQuery);\n }\n})(this, function ($) {\n function Lightbox(options) {\n this.album = [];\n this.currentImageIndex = void 0;\n this.init();\n\n // options\n this.options = $.extend({}, this.constructor.defaults);\n this.option(options);\n }\n\n // Descriptions of all options available on the demo site:\n // http://lokeshdhakar.com/projects/lightbox2/index.html#options\n Lightbox.defaults = {\n albumLabel: 'Image %1 of %2',\n alwaysShowNavOnTouchDevices: false,\n fadeDuration: 600,\n fitImagesInViewport: true,\n imageFadeDuration: 600,\n // maxWidth: 800,\n // maxHeight: 600,\n positionFromTop: 50,\n resizeDuration: 700,\n showImageNumberLabel: true,\n wrapAround: false,\n disableScrolling: false,\n /*\n Sanitize Title\n If the caption data is trusted, for example you are hardcoding it in, then leave this to false.\n This will free you to add html tags, such as links, in the caption.\n If the caption data is user submitted or from some other untrusted source, then set this to true\n to prevent xss and other injection attacks.\n */\n sanitizeTitle: false\n };\n Lightbox.prototype.option = function (options) {\n $.extend(this.options, options);\n };\n Lightbox.prototype.imageCountLabel = function (currentImageNum, totalImages) {\n return this.options.albumLabel.replace(/%1/g, currentImageNum).replace(/%2/g, totalImages);\n };\n Lightbox.prototype.init = function () {\n var self = this;\n // Both enable and build methods require the body tag to be in the DOM.\n $(document).ready(function () {\n self.enable();\n self.build();\n });\n };\n\n // Loop through anchors and areamaps looking for either data-lightbox attributes or rel attributes\n // that contain 'lightbox'. When these are clicked, start lightbox.\n Lightbox.prototype.enable = function () {\n var self = this;\n $('body').on('click', 'a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]', function (event) {\n self.start($(event.currentTarget));\n return false;\n });\n };\n\n // Build html for the lightbox and the overlay.\n // Attach event handlers to the new DOM elements. click click click\n Lightbox.prototype.build = function () {\n if ($('#lightbox').length > 0) {\n return;\n }\n var self = this;\n\n // The two root notes generated, #lightboxOverlay and #lightbox are given\n // tabindex attrs so they are focusable. We attach our keyboard event\n // listeners to these two elements, and not the document. Clicking anywhere\n // while Lightbox is opened will keep the focus on or inside one of these\n // two elements.\n //\n // We do this so we can prevent propogation of the Esc keypress when\n // Lightbox is open. This prevents it from intefering with other components\n // on the page below.\n //\n // Github issue: https://github.com/lokesh/lightbox2/issues/663\n $('
\"\"/
').appendTo($('body'));\n\n // Cache jQuery objects\n this.$lightbox = $('#lightbox');\n this.$overlay = $('#lightboxOverlay');\n this.$outerContainer = this.$lightbox.find('.lb-outerContainer');\n this.$container = this.$lightbox.find('.lb-container');\n this.$image = this.$lightbox.find('.lb-image');\n this.$nav = this.$lightbox.find('.lb-nav');\n\n // Store css values for future lookup\n this.containerPadding = {\n top: parseInt(this.$container.css('padding-top'), 10),\n right: parseInt(this.$container.css('padding-right'), 10),\n bottom: parseInt(this.$container.css('padding-bottom'), 10),\n left: parseInt(this.$container.css('padding-left'), 10)\n };\n this.imageBorderWidth = {\n top: parseInt(this.$image.css('border-top-width'), 10),\n right: parseInt(this.$image.css('border-right-width'), 10),\n bottom: parseInt(this.$image.css('border-bottom-width'), 10),\n left: parseInt(this.$image.css('border-left-width'), 10)\n };\n\n // Attach event handlers to the newly minted DOM elements\n this.$overlay.hide().on('click', function () {\n self.end();\n return false;\n });\n this.$lightbox.hide().on('click', function (event) {\n if ($(event.target).attr('id') === 'lightbox') {\n self.end();\n }\n });\n this.$outerContainer.on('click', function (event) {\n if ($(event.target).attr('id') === 'lightbox') {\n self.end();\n }\n return false;\n });\n this.$lightbox.find('.lb-prev').on('click', function () {\n if (self.currentImageIndex === 0) {\n self.changeImage(self.album.length - 1);\n } else {\n self.changeImage(self.currentImageIndex - 1);\n }\n return false;\n });\n this.$lightbox.find('.lb-next').on('click', function () {\n if (self.currentImageIndex === self.album.length - 1) {\n self.changeImage(0);\n } else {\n self.changeImage(self.currentImageIndex + 1);\n }\n return false;\n });\n\n /*\n Show context menu for image on right-click\n There is a div containing the navigation that spans the entire image and lives above of it. If\n you right-click, you are right clicking this div and not the image. This prevents users from\n saving the image or using other context menu actions with the image.\n To fix this, when we detect the right mouse button is pressed down, but not yet clicked, we\n set pointer-events to none on the nav div. This is so that the upcoming right-click event on\n the next mouseup will bubble down to the image. Once the right-click/contextmenu event occurs\n we set the pointer events back to auto for the nav div so it can capture hover and left-click\n events as usual.\n */\n this.$nav.on('mousedown', function (event) {\n if (event.which === 3) {\n self.$nav.css('pointer-events', 'none');\n self.$lightbox.one('contextmenu', function () {\n setTimeout(function () {\n this.$nav.css('pointer-events', 'auto');\n }.bind(self), 0);\n });\n }\n });\n this.$lightbox.find('.lb-loader, .lb-close').on('click keyup', function (e) {\n // If mouse click OR 'enter' or 'space' keypress, close LB\n if (e.type === 'click' || e.type === 'keyup' && (e.which === 13 || e.which === 32)) {\n self.end();\n return false;\n }\n });\n };\n\n // Show overlay and lightbox. If the image is part of a set, add siblings to album array.\n Lightbox.prototype.start = function ($link) {\n var self = this;\n var $window = $(window);\n $window.on('resize', $.proxy(this.sizeOverlay, this));\n this.sizeOverlay();\n this.album = [];\n var imageNumber = 0;\n function addToAlbum($link) {\n self.album.push({\n alt: $link.attr('data-alt'),\n link: $link.attr('href'),\n title: $link.attr('data-title') || $link.attr('title')\n });\n }\n\n // Support both data-lightbox attribute and rel attribute implementations\n var dataLightboxValue = $link.attr('data-lightbox');\n var $links;\n if (dataLightboxValue) {\n $links = $($link.prop('tagName') + '[data-lightbox=\"' + dataLightboxValue + '\"]');\n for (var i = 0; i < $links.length; i = ++i) {\n addToAlbum($($links[i]));\n if ($links[i] === $link[0]) {\n imageNumber = i;\n }\n }\n } else {\n if ($link.attr('rel') === 'lightbox') {\n // If image is not part of a set\n addToAlbum($link);\n } else {\n // If image is part of a set\n $links = $($link.prop('tagName') + '[rel=\"' + $link.attr('rel') + '\"]');\n for (var j = 0; j < $links.length; j = ++j) {\n addToAlbum($($links[j]));\n if ($links[j] === $link[0]) {\n imageNumber = j;\n }\n }\n }\n }\n\n // Position Lightbox\n var top = $window.scrollTop() + this.options.positionFromTop;\n var left = $window.scrollLeft();\n this.$lightbox.css({\n top: top + 'px',\n left: left + 'px'\n }).fadeIn(this.options.fadeDuration);\n\n // Disable scrolling of the page while open\n if (this.options.disableScrolling) {\n $('body').addClass('lb-disable-scrolling');\n }\n this.changeImage(imageNumber);\n };\n\n // Hide most UI elements in preparation for the animated resizing of the lightbox.\n Lightbox.prototype.changeImage = function (imageNumber) {\n var self = this;\n var filename = this.album[imageNumber].link;\n var filetype = filename.split('.').slice(-1)[0];\n var $image = this.$lightbox.find('.lb-image');\n\n // Disable keyboard nav during transitions\n this.disableKeyboardNav();\n\n // Show loading state\n this.$overlay.fadeIn(this.options.fadeDuration);\n $('.lb-loader').fadeIn('slow');\n this.$lightbox.find('.lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption').hide();\n this.$outerContainer.addClass('animating');\n\n // When image to show is preloaded, we send the width and height to sizeContainer()\n var preloader = new Image();\n preloader.onload = function () {\n var $preloader;\n var imageHeight;\n var imageWidth;\n var maxImageHeight;\n var maxImageWidth;\n var windowHeight;\n var windowWidth;\n $image.attr({\n 'alt': self.album[imageNumber].alt,\n 'src': filename\n });\n $preloader = $(preloader);\n $image.width(preloader.width);\n $image.height(preloader.height);\n var aspectRatio = preloader.width / preloader.height;\n windowWidth = $(window).width();\n windowHeight = $(window).height();\n\n // Calculate the max image dimensions for the current viewport.\n // Take into account the border around the image and an additional 10px gutter on each side.\n maxImageWidth = windowWidth - self.containerPadding.left - self.containerPadding.right - self.imageBorderWidth.left - self.imageBorderWidth.right - 20;\n maxImageHeight = windowHeight - self.containerPadding.top - self.containerPadding.bottom - self.imageBorderWidth.top - self.imageBorderWidth.bottom - self.options.positionFromTop - 70;\n\n /*\n Since many SVGs have small intrinsic dimensions, but they support scaling\n up without quality loss because of their vector format, max out their\n size inside the viewport.\n */\n if (filetype === 'svg') {\n if (aspectRatio >= 1) {\n imageWidth = maxImageWidth;\n imageHeight = parseInt(maxImageWidth / aspectRatio, 10);\n } else {\n imageWidth = parseInt(maxImageHeight / aspectRatio, 10);\n imageHeight = maxImageHeight;\n }\n $image.width(imageWidth);\n $image.height(imageHeight);\n } else {\n // Fit image inside the viewport.\n if (self.options.fitImagesInViewport) {\n // Check if image size is larger then maxWidth|maxHeight in settings\n if (self.options.maxWidth && self.options.maxWidth < maxImageWidth) {\n maxImageWidth = self.options.maxWidth;\n }\n if (self.options.maxHeight && self.options.maxHeight < maxImageHeight) {\n maxImageHeight = self.options.maxHeight;\n }\n } else {\n maxImageWidth = self.options.maxWidth || preloader.width || maxImageWidth;\n maxImageHeight = self.options.maxHeight || preloader.height || maxImageHeight;\n }\n\n // Is the current image's width or height is greater than the maxImageWidth or maxImageHeight\n // option than we need to size down while maintaining the aspect ratio.\n if (preloader.width > maxImageWidth || preloader.height > maxImageHeight) {\n if (preloader.width / maxImageWidth > preloader.height / maxImageHeight) {\n imageWidth = maxImageWidth;\n imageHeight = parseInt(preloader.height / (preloader.width / imageWidth), 10);\n $image.width(imageWidth);\n $image.height(imageHeight);\n } else {\n imageHeight = maxImageHeight;\n imageWidth = parseInt(preloader.width / (preloader.height / imageHeight), 10);\n $image.width(imageWidth);\n $image.height(imageHeight);\n }\n }\n }\n self.sizeContainer($image.width(), $image.height());\n };\n\n // Preload image before showing\n preloader.src = this.album[imageNumber].link;\n this.currentImageIndex = imageNumber;\n };\n\n // Stretch overlay to fit the viewport\n Lightbox.prototype.sizeOverlay = function () {\n var self = this;\n /*\n We use a setTimeout 0 to pause JS execution and let the rendering catch-up.\n Why do this? If the `disableScrolling` option is set to true, a class is added to the body\n tag that disables scrolling and hides the scrollbar. We want to make sure the scrollbar is\n hidden before we measure the document width, as the presence of the scrollbar will affect the\n number.\n */\n setTimeout(function () {\n self.$overlay.width($(document).width()).height($(document).height());\n }, 0);\n };\n\n // Animate the size of the lightbox to fit the image we are showing\n // This method also shows the the image.\n Lightbox.prototype.sizeContainer = function (imageWidth, imageHeight) {\n var self = this;\n var oldWidth = this.$outerContainer.outerWidth();\n var oldHeight = this.$outerContainer.outerHeight();\n var newWidth = imageWidth + this.containerPadding.left + this.containerPadding.right + this.imageBorderWidth.left + this.imageBorderWidth.right;\n var newHeight = imageHeight + this.containerPadding.top + this.containerPadding.bottom + this.imageBorderWidth.top + this.imageBorderWidth.bottom;\n function postResize() {\n self.$lightbox.find('.lb-dataContainer').width(newWidth);\n self.$lightbox.find('.lb-prevLink').height(newHeight);\n self.$lightbox.find('.lb-nextLink').height(newHeight);\n\n // Set focus on one of the two root nodes so keyboard events are captured.\n self.$overlay.trigger('focus');\n self.showImage();\n }\n if (oldWidth !== newWidth || oldHeight !== newHeight) {\n this.$outerContainer.animate({\n width: newWidth,\n height: newHeight\n }, this.options.resizeDuration, 'swing', function () {\n postResize();\n });\n } else {\n postResize();\n }\n };\n\n // Display the image and its details and begin preload neighboring images.\n Lightbox.prototype.showImage = function () {\n this.$lightbox.find('.lb-loader').stop(true).hide();\n this.$lightbox.find('.lb-image').fadeIn(this.options.imageFadeDuration);\n this.updateNav();\n this.updateDetails();\n this.preloadNeighboringImages();\n this.enableKeyboardNav();\n };\n\n // Display previous and next navigation if appropriate.\n Lightbox.prototype.updateNav = function () {\n // Check to see if the browser supports touch events. If so, we take the conservative approach\n // and assume that mouse hover events are not supported and always show prev/next navigation\n // arrows in image sets.\n var alwaysShowNav = false;\n try {\n document.createEvent('TouchEvent');\n alwaysShowNav = this.options.alwaysShowNavOnTouchDevices ? true : false;\n } catch (e) {}\n this.$lightbox.find('.lb-nav').show();\n if (this.album.length > 1) {\n if (this.options.wrapAround) {\n if (alwaysShowNav) {\n this.$lightbox.find('.lb-prev, .lb-next').css('opacity', '1');\n }\n this.$lightbox.find('.lb-prev, .lb-next').show();\n } else {\n if (this.currentImageIndex > 0) {\n this.$lightbox.find('.lb-prev').show();\n if (alwaysShowNav) {\n this.$lightbox.find('.lb-prev').css('opacity', '1');\n }\n }\n if (this.currentImageIndex < this.album.length - 1) {\n this.$lightbox.find('.lb-next').show();\n if (alwaysShowNav) {\n this.$lightbox.find('.lb-next').css('opacity', '1');\n }\n }\n }\n }\n };\n\n // Display caption, image number, and closing button.\n Lightbox.prototype.updateDetails = function () {\n var self = this;\n\n // Enable anchor clicks in the injected caption html.\n // Thanks Nate Wright for the fix. @https://github.com/NateWr\n if (typeof this.album[this.currentImageIndex].title !== 'undefined' && this.album[this.currentImageIndex].title !== '') {\n var $caption = this.$lightbox.find('.lb-caption');\n if (this.options.sanitizeTitle) {\n $caption.text(this.album[this.currentImageIndex].title);\n } else {\n $caption.html(this.album[this.currentImageIndex].title);\n }\n $caption.fadeIn('fast');\n }\n if (this.album.length > 1 && this.options.showImageNumberLabel) {\n var labelText = this.imageCountLabel(this.currentImageIndex + 1, this.album.length);\n this.$lightbox.find('.lb-number').text(labelText).fadeIn('fast');\n } else {\n this.$lightbox.find('.lb-number').hide();\n }\n this.$outerContainer.removeClass('animating');\n this.$lightbox.find('.lb-dataContainer').fadeIn(this.options.resizeDuration, function () {\n return self.sizeOverlay();\n });\n };\n\n // Preload previous and next images in set.\n Lightbox.prototype.preloadNeighboringImages = function () {\n if (this.album.length > this.currentImageIndex + 1) {\n var preloadNext = new Image();\n preloadNext.src = this.album[this.currentImageIndex + 1].link;\n }\n if (this.currentImageIndex > 0) {\n var preloadPrev = new Image();\n preloadPrev.src = this.album[this.currentImageIndex - 1].link;\n }\n };\n Lightbox.prototype.enableKeyboardNav = function () {\n this.$lightbox.on('keyup.keyboard', $.proxy(this.keyboardAction, this));\n this.$overlay.on('keyup.keyboard', $.proxy(this.keyboardAction, this));\n };\n Lightbox.prototype.disableKeyboardNav = function () {\n this.$lightbox.off('.keyboard');\n this.$overlay.off('.keyboard');\n };\n Lightbox.prototype.keyboardAction = function (event) {\n var KEYCODE_ESC = 27;\n var KEYCODE_LEFTARROW = 37;\n var KEYCODE_RIGHTARROW = 39;\n var keycode = event.keyCode;\n if (keycode === KEYCODE_ESC) {\n // Prevent bubbling so as to not affect other components on the page.\n event.stopPropagation();\n this.end();\n } else if (keycode === KEYCODE_LEFTARROW) {\n if (this.currentImageIndex !== 0) {\n this.changeImage(this.currentImageIndex - 1);\n } else if (this.options.wrapAround && this.album.length > 1) {\n this.changeImage(this.album.length - 1);\n }\n } else if (keycode === KEYCODE_RIGHTARROW) {\n if (this.currentImageIndex !== this.album.length - 1) {\n this.changeImage(this.currentImageIndex + 1);\n } else if (this.options.wrapAround && this.album.length > 1) {\n this.changeImage(0);\n }\n }\n };\n\n // Closing time. :-(\n Lightbox.prototype.end = function () {\n this.disableKeyboardNav();\n $(window).off('resize', this.sizeOverlay);\n this.$lightbox.fadeOut(this.options.fadeDuration);\n this.$overlay.fadeOut(this.options.fadeDuration);\n if (this.options.disableScrolling) {\n $('body').removeClass('lb-disable-scrolling');\n }\n };\n return new Lightbox();\n});","require(\"@rails/ujs\").start()\nrequire(\"turbolinks\").start()\nrequire(\"lightbox2\")\nrequire(\"lazyload\")\nrequire(\"src/drawer\")\nrequire(\"swiper\")\nrequire('jquery-tags-input/dist/jquery.tagsinput.min.js')\n// import 'stylesheets/application';\n\n// require(\"channels\")\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nimport lightbox from 'lightbox2';\nimport Swiper, { Navigation, Pagination } from 'swiper';\nSwiper.use([Navigation, Pagination]);\n\n$(document).on('click', '.subimage', (e) => {\n e.preventDefault();\n $(e.currentTarget.dataset.target).trigger('click');\n});\n\n$(document).on('change', '.upload_subimages input[type=\"file\"]', (e) => {\n $('.upload_subimages h2').html('uploading...');\n e.currentTarget.form.submit();\n});\n\n$(document).on('click', '.toggle', (e) => {\n $(e.currentTarget.dataset.toggle).toggle();\n});\n\nconst init = function() {\n if(typeof LineIt != \"undefined\") { LineIt.loadButton(); }\n if(typeof FB != \"undefined\") { FB.XFBML.parse(); }\n lazyload();\n lightbox.init();\n $('#tags').tagsInput({ width: '100%', height: '140px'});\n $('.alert').delay(5000).fadeOut();\n\n const swiper = new Swiper('.swiper-container.gallery-container', {\n pagination: {\n el: '.swiper-pagination',\n type: 'fraction',\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n });\n\n const tag_swiper = new Swiper('.swiper-container.tag-swiper', {\n slidesPerView: 3,\n spaceBetween: 3,\n slidesPerGroup: 3,\n loop: true,\n loopFillGroupWithBlank: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n });\n};\n\ndocument.addEventListener('turbolinks:load',init, false);","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.isContentEditable = function (element) {\n var isEditable;\n isEditable = false;\n while (true) {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n if (!element) {\n break;\n }\n }\n return isEditable;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var isContentEditable, stopEverything;\n stopEverything = Rails.stopEverything;\n isContentEditable = Rails.isContentEditable;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isContentEditable,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function () {\n var t = this;\n (function () {\n (function () {\n this.Turbolinks = {\n supported: function () {\n return null != window.history.pushState && null != window.requestAnimationFrame && null != window.addEventListener;\n }(),\n visit: function (t, r) {\n return e.controller.visit(t, r);\n },\n clearCache: function () {\n return e.controller.clearCache();\n },\n setProgressBarDelay: function (t) {\n return e.controller.setProgressBarDelay(t);\n }\n };\n }).call(this);\n }).call(t);\n var e = t.Turbolinks;\n (function () {\n (function () {\n var t,\n r,\n n,\n o = [].slice;\n e.copyObject = function (t) {\n var e, r, n;\n r = {};\n for (e in t) n = t[e], r[e] = n;\n return r;\n }, e.closest = function (e, r) {\n return t.call(e, r);\n }, t = function () {\n var t, e;\n return t = document.documentElement, null != (e = t.closest) ? e : function (t) {\n var e;\n for (e = this; e;) {\n if (e.nodeType === Node.ELEMENT_NODE && r.call(e, t)) return e;\n e = e.parentNode;\n }\n };\n }(), e.defer = function (t) {\n return setTimeout(t, 1);\n }, e.throttle = function (t) {\n var e;\n return e = null, function () {\n var r;\n return r = 1 <= arguments.length ? o.call(arguments, 0) : [], null != e ? e : e = requestAnimationFrame(function (n) {\n return function () {\n return e = null, t.apply(n, r);\n };\n }(this));\n };\n }, e.dispatch = function (t, e) {\n var r, o, i, s, a, u;\n return a = null != e ? e : {}, u = a.target, r = a.cancelable, o = a.data, i = document.createEvent(\"Events\"), i.initEvent(t, !0, r === !0), i.data = null != o ? o : {}, i.cancelable && !n && (s = i.preventDefault, i.preventDefault = function () {\n return this.defaultPrevented || Object.defineProperty(this, \"defaultPrevented\", {\n get: function () {\n return !0;\n }\n }), s.call(this);\n }), (null != u ? u : document).dispatchEvent(i), i;\n }, n = function () {\n var t;\n return t = document.createEvent(\"Events\"), t.initEvent(\"test\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }(), e.match = function (t, e) {\n return r.call(t, e);\n }, r = function () {\n var t, e, r, n;\n return t = document.documentElement, null != (e = null != (r = null != (n = t.matchesSelector) ? n : t.webkitMatchesSelector) ? r : t.msMatchesSelector) ? e : t.mozMatchesSelector;\n }(), e.uuid = function () {\n var t, e, r;\n for (r = \"\", t = e = 1; 36 >= e; t = ++e) r += 9 === t || 14 === t || 19 === t || 24 === t ? \"-\" : 15 === t ? \"4\" : 20 === t ? (Math.floor(4 * Math.random()) + 8).toString(16) : Math.floor(15 * Math.random()).toString(16);\n return r;\n };\n }).call(this), function () {\n e.Location = function () {\n function t(t) {\n var e, r;\n null == t && (t = \"\"), r = document.createElement(\"a\"), r.href = t.toString(), this.absoluteURL = r.href, e = r.hash.length, 2 > e ? this.requestURL = this.absoluteURL : (this.requestURL = this.absoluteURL.slice(0, -e), this.anchor = r.hash.slice(1));\n }\n var e, r, n, o;\n return t.wrap = function (t) {\n return t instanceof this ? t : new this(t);\n }, t.prototype.getOrigin = function () {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }, t.prototype.getPath = function () {\n var t, e;\n return null != (t = null != (e = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) ? e[1] : void 0) ? t : \"/\";\n }, t.prototype.getPathComponents = function () {\n return this.getPath().split(\"/\").slice(1);\n }, t.prototype.getLastPathComponent = function () {\n return this.getPathComponents().slice(-1)[0];\n }, t.prototype.getExtension = function () {\n var t, e;\n return null != (t = null != (e = this.getLastPathComponent().match(/\\.[^.]*$/)) ? e[0] : void 0) ? t : \"\";\n }, t.prototype.isHTML = function () {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }, t.prototype.isPrefixedBy = function (t) {\n var e;\n return e = r(t), this.isEqualTo(t) || o(this.absoluteURL, e);\n }, t.prototype.isEqualTo = function (t) {\n return this.absoluteURL === (null != t ? t.absoluteURL : void 0);\n }, t.prototype.toCacheKey = function () {\n return this.requestURL;\n }, t.prototype.toJSON = function () {\n return this.absoluteURL;\n }, t.prototype.toString = function () {\n return this.absoluteURL;\n }, t.prototype.valueOf = function () {\n return this.absoluteURL;\n }, r = function (t) {\n return e(t.getOrigin() + t.getPath());\n }, e = function (t) {\n return n(t, \"/\") ? t : t + \"/\";\n }, o = function (t, e) {\n return t.slice(0, e.length) === e;\n }, n = function (t, e) {\n return t.slice(-e.length) === e;\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.HttpRequest = function () {\n function r(r, n, o) {\n this.delegate = r, this.requestCanceled = t(this.requestCanceled, this), this.requestTimedOut = t(this.requestTimedOut, this), this.requestFailed = t(this.requestFailed, this), this.requestLoaded = t(this.requestLoaded, this), this.requestProgressed = t(this.requestProgressed, this), this.url = e.Location.wrap(n).requestURL, this.referrer = e.Location.wrap(o).absoluteURL, this.createXHR();\n }\n return r.NETWORK_FAILURE = 0, r.TIMEOUT_FAILURE = -1, r.timeout = 60, r.prototype.send = function () {\n var t;\n return this.xhr && !this.sent ? (this.notifyApplicationBeforeRequestStart(), this.setProgress(0), this.xhr.send(), this.sent = !0, \"function\" == typeof (t = this.delegate).requestStarted ? t.requestStarted() : void 0) : void 0;\n }, r.prototype.cancel = function () {\n return this.xhr && this.sent ? this.xhr.abort() : void 0;\n }, r.prototype.requestProgressed = function (t) {\n return t.lengthComputable ? this.setProgress(t.loaded / t.total) : void 0;\n }, r.prototype.requestLoaded = function () {\n return this.endRequest(function (t) {\n return function () {\n var e;\n return 200 <= (e = t.xhr.status) && 300 > e ? t.delegate.requestCompletedWithResponse(t.xhr.responseText, t.xhr.getResponseHeader(\"Turbolinks-Location\")) : (t.failed = !0, t.delegate.requestFailedWithStatusCode(t.xhr.status, t.xhr.responseText));\n };\n }(this));\n }, r.prototype.requestFailed = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE);\n };\n }(this));\n }, r.prototype.requestTimedOut = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE);\n };\n }(this));\n }, r.prototype.requestCanceled = function () {\n return this.endRequest();\n }, r.prototype.notifyApplicationBeforeRequestStart = function () {\n return e.dispatch(\"turbolinks:request-start\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.notifyApplicationAfterRequestEnd = function () {\n return e.dispatch(\"turbolinks:request-end\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.createXHR = function () {\n return this.xhr = new XMLHttpRequest(), this.xhr.open(\"GET\", this.url, !0), this.xhr.timeout = 1e3 * this.constructor.timeout, this.xhr.setRequestHeader(\"Accept\", \"text/html, application/xhtml+xml\"), this.xhr.setRequestHeader(\"Turbolinks-Referrer\", this.referrer), this.xhr.onprogress = this.requestProgressed, this.xhr.onload = this.requestLoaded, this.xhr.onerror = this.requestFailed, this.xhr.ontimeout = this.requestTimedOut, this.xhr.onabort = this.requestCanceled;\n }, r.prototype.endRequest = function (t) {\n return this.xhr ? (this.notifyApplicationAfterRequestEnd(), null != t && t.call(this), this.destroy()) : void 0;\n }, r.prototype.setProgress = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.delegate).requestProgressed ? e.requestProgressed(this.progress) : void 0;\n }, r.prototype.destroy = function () {\n var t;\n return this.setProgress(1), \"function\" == typeof (t = this.delegate).requestFinished && t.requestFinished(), this.delegate = null, this.xhr = null;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ProgressBar = function () {\n function e() {\n this.trickle = t(this.trickle, this), this.stylesheetElement = this.createStylesheetElement(), this.progressElement = this.createProgressElement();\n }\n var r;\n return r = 300, e.defaultCSS = \".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \" + r + \"ms ease-out, opacity \" + r / 2 + \"ms \" + r / 2 + \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\", e.prototype.show = function () {\n return this.visible ? void 0 : (this.visible = !0, this.installStylesheetElement(), this.installProgressElement(), this.startTrickling());\n }, e.prototype.hide = function () {\n return this.visible && !this.hiding ? (this.hiding = !0, this.fadeProgressElement(function (t) {\n return function () {\n return t.uninstallProgressElement(), t.stopTrickling(), t.visible = !1, t.hiding = !1;\n };\n }(this))) : void 0;\n }, e.prototype.setValue = function (t) {\n return this.value = t, this.refresh();\n }, e.prototype.installStylesheetElement = function () {\n return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }, e.prototype.installProgressElement = function () {\n return this.progressElement.style.width = 0, this.progressElement.style.opacity = 1, document.documentElement.insertBefore(this.progressElement, document.body), this.refresh();\n }, e.prototype.fadeProgressElement = function (t) {\n return this.progressElement.style.opacity = 0, setTimeout(t, 1.5 * r);\n }, e.prototype.uninstallProgressElement = function () {\n return this.progressElement.parentNode ? document.documentElement.removeChild(this.progressElement) : void 0;\n }, e.prototype.startTrickling = function () {\n return null != this.trickleInterval ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, r);\n }, e.prototype.stopTrickling = function () {\n return clearInterval(this.trickleInterval), this.trickleInterval = null;\n }, e.prototype.trickle = function () {\n return this.setValue(this.value + Math.random() / 100);\n }, e.prototype.refresh = function () {\n return requestAnimationFrame(function (t) {\n return function () {\n return t.progressElement.style.width = 10 + 90 * t.value + \"%\";\n };\n }(this));\n }, e.prototype.createStylesheetElement = function () {\n var t;\n return t = document.createElement(\"style\"), t.type = \"text/css\", t.textContent = this.constructor.defaultCSS, t;\n }, e.prototype.createProgressElement = function () {\n var t;\n return t = document.createElement(\"div\"), t.className = \"turbolinks-progress-bar\", t;\n }, e;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.BrowserAdapter = function () {\n function r(r) {\n this.controller = r, this.showProgressBar = t(this.showProgressBar, this), this.progressBar = new e.ProgressBar();\n }\n var n, o, i;\n return i = e.HttpRequest, n = i.NETWORK_FAILURE, o = i.TIMEOUT_FAILURE, r.prototype.visitProposedToLocationWithAction = function (t, e) {\n return this.controller.startVisitToLocationWithAction(t, e);\n }, r.prototype.visitStarted = function (t) {\n return t.issueRequest(), t.changeHistory(), t.loadCachedSnapshot();\n }, r.prototype.visitRequestStarted = function (t) {\n return this.progressBar.setValue(0), t.hasCachedSnapshot() || \"restore\" !== t.action ? this.showProgressBarAfterDelay() : this.showProgressBar();\n }, r.prototype.visitRequestProgressed = function (t) {\n return this.progressBar.setValue(t.progress);\n }, r.prototype.visitRequestCompleted = function (t) {\n return t.loadResponse();\n }, r.prototype.visitRequestFailedWithStatusCode = function (t, e) {\n switch (e) {\n case n:\n case o:\n return this.reload();\n default:\n return t.loadResponse();\n }\n }, r.prototype.visitRequestFinished = function (t) {\n return this.hideProgressBar();\n }, r.prototype.visitCompleted = function (t) {\n return t.followRedirect();\n }, r.prototype.pageInvalidated = function () {\n return this.reload();\n }, r.prototype.showProgressBarAfterDelay = function () {\n return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n }, r.prototype.showProgressBar = function () {\n return this.progressBar.show();\n }, r.prototype.hideProgressBar = function () {\n return this.progressBar.hide(), clearTimeout(this.progressBarTimeout);\n }, r.prototype.reload = function () {\n return window.location.reload();\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.History = function () {\n function r(e) {\n this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"popstate\", this.onPopState, !1), addEventListener(\"load\", this.onPageLoad, !1), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"popstate\", this.onPopState, !1), removeEventListener(\"load\", this.onPageLoad, !1), this.started = !1) : void 0;\n }, r.prototype.push = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"push\", t, r);\n }, r.prototype.replace = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"replace\", t, r);\n }, r.prototype.onPopState = function (t) {\n var r, n, o, i;\n return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0;\n }, r.prototype.onPageLoad = function (t) {\n return e.defer(function (t) {\n return function () {\n return t.pageLoaded = !0;\n };\n }(this));\n }, r.prototype.shouldHandlePopState = function () {\n return this.pageIsLoaded();\n }, r.prototype.pageIsLoaded = function () {\n return this.pageLoaded || \"complete\" === document.readyState;\n }, r.prototype.update = function (t, e, r) {\n var n;\n return n = {\n turbolinks: {\n restorationIdentifier: r\n }\n }, history[t + \"State\"](n, null, e);\n }, r;\n }();\n }.call(this), function () {\n e.HeadDetails = function () {\n function t(t) {\n var e, r, n, s, a, u;\n for (this.elements = {}, n = 0, a = t.length; a > n; n++) u = t[n], u.nodeType === Node.ELEMENT_NODE && (s = u.outerHTML, r = null != (e = this.elements)[s] ? e[s] : e[s] = {\n type: i(u),\n tracked: o(u),\n elements: []\n }, r.elements.push(u));\n }\n var e, r, n, o, i;\n return t.fromHeadElement = function (t) {\n var e;\n return new this(null != (e = null != t ? t.childNodes : void 0) ? e : []);\n }, t.prototype.hasElementWithKey = function (t) {\n return t in this.elements;\n }, t.prototype.getTrackedElementSignature = function () {\n var t, e;\n return function () {\n var r, n;\n r = this.elements, n = [];\n for (t in r) e = r[t].tracked, e && n.push(t);\n return n;\n }.call(this).join(\"\");\n }, t.prototype.getScriptElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"script\", t);\n }, t.prototype.getStylesheetElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"stylesheet\", t);\n }, t.prototype.getElementsMatchingTypeNotInDetails = function (t, e) {\n var r, n, o, i, s, a;\n o = this.elements, s = [];\n for (n in o) i = o[n], a = i.type, r = i.elements, a !== t || e.hasElementWithKey(n) || s.push(r[0]);\n return s;\n }, t.prototype.getProvisionalElements = function () {\n var t, e, r, n, o, i, s;\n r = [], n = this.elements;\n for (e in n) o = n[e], s = o.type, i = o.tracked, t = o.elements, null != s || i ? t.length > 1 && r.push.apply(r, t.slice(1)) : r.push.apply(r, t);\n return r;\n }, t.prototype.getMetaValue = function (t) {\n var e;\n return null != (e = this.findMetaElementByName(t)) ? e.getAttribute(\"content\") : void 0;\n }, t.prototype.findMetaElementByName = function (t) {\n var r, n, o, i;\n r = void 0, i = this.elements;\n for (o in i) n = i[o].elements, e(n[0], t) && (r = n[0]);\n return r;\n }, i = function (t) {\n return r(t) ? \"script\" : n(t) ? \"stylesheet\" : void 0;\n }, o = function (t) {\n return \"reload\" === t.getAttribute(\"data-turbolinks-track\");\n }, r = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"script\" === e;\n }, n = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"style\" === e || \"link\" === e && \"stylesheet\" === t.getAttribute(\"rel\");\n }, e = function (t, e) {\n var r;\n return r = t.tagName.toLowerCase(), \"meta\" === r && t.getAttribute(\"name\") === e;\n }, t;\n }();\n }.call(this), function () {\n e.Snapshot = function () {\n function t(t, e) {\n this.headDetails = t, this.bodyElement = e;\n }\n return t.wrap = function (t) {\n return t instanceof this ? t : \"string\" == typeof t ? this.fromHTMLString(t) : this.fromHTMLElement(t);\n }, t.fromHTMLString = function (t) {\n var e;\n return e = document.createElement(\"html\"), e.innerHTML = t, this.fromHTMLElement(e);\n }, t.fromHTMLElement = function (t) {\n var r, n, o, i;\n return o = t.querySelector(\"head\"), r = null != (i = t.querySelector(\"body\")) ? i : document.createElement(\"body\"), n = e.HeadDetails.fromHeadElement(o), new this(n, r);\n }, t.prototype.clone = function () {\n return new this.constructor(this.headDetails, this.bodyElement.cloneNode(!0));\n }, t.prototype.getRootLocation = function () {\n var t, r;\n return r = null != (t = this.getSetting(\"root\")) ? t : \"/\", new e.Location(r);\n }, t.prototype.getCacheControlValue = function () {\n return this.getSetting(\"cache-control\");\n }, t.prototype.getElementForAnchor = function (t) {\n try {\n return this.bodyElement.querySelector(\"[id='\" + t + \"'], a[name='\" + t + \"']\");\n } catch (e) {}\n }, t.prototype.getPermanentElements = function () {\n return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementById = function (t) {\n return this.bodyElement.querySelector(\"#\" + t + \"[data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementsPresentInSnapshot = function (t) {\n var e, r, n, o, i;\n for (o = this.getPermanentElements(), i = [], r = 0, n = o.length; n > r; r++) e = o[r], t.getPermanentElementById(e.id) && i.push(e);\n return i;\n }, t.prototype.findFirstAutofocusableElement = function () {\n return this.bodyElement.querySelector(\"[autofocus]\");\n }, t.prototype.hasAnchor = function (t) {\n return null != this.getElementForAnchor(t);\n }, t.prototype.isPreviewable = function () {\n return \"no-preview\" !== this.getCacheControlValue();\n }, t.prototype.isCacheable = function () {\n return \"no-cache\" !== this.getCacheControlValue();\n }, t.prototype.isVisitable = function () {\n return \"reload\" !== this.getSetting(\"visit-control\");\n }, t.prototype.getSetting = function (t) {\n return this.headDetails.getMetaValue(\"turbolinks-\" + t);\n }, t;\n }();\n }.call(this), function () {\n var t = [].slice;\n e.Renderer = function () {\n function e() {}\n var r;\n return e.render = function () {\n var e, r, n, o;\n return n = arguments[0], r = arguments[1], e = 3 <= arguments.length ? t.call(arguments, 2) : [], o = function (t, e, r) {\n r.prototype = t.prototype;\n var n = new r(),\n o = t.apply(n, e);\n return Object(o) === o ? o : n;\n }(this, e, function () {}), o.delegate = n, o.render(r), o;\n }, e.prototype.renderView = function (t) {\n return this.delegate.viewWillRender(this.newBody), t(), this.delegate.viewRendered(this.newBody);\n }, e.prototype.invalidateView = function () {\n return this.delegate.viewInvalidated();\n }, e.prototype.createScriptElement = function (t) {\n var e;\n return \"false\" === t.getAttribute(\"data-turbolinks-eval\") ? t : (e = document.createElement(\"script\"), e.textContent = t.textContent, e.async = !1, r(e, t), e);\n }, r = function (t, e) {\n var r, n, o, i, s, a, u;\n for (i = e.attributes, a = [], r = 0, n = i.length; n > r; r++) s = i[r], o = s.name, u = s.value, a.push(t.setAttribute(o, u));\n return a;\n }, e;\n }();\n }.call(this), function () {\n var t,\n r,\n n = function (t, e) {\n function r() {\n this.constructor = t;\n }\n for (var n in e) o.call(e, n) && (t[n] = e[n]);\n return r.prototype = e.prototype, t.prototype = new r(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n e.SnapshotRenderer = function (e) {\n function o(t, e, r) {\n this.currentSnapshot = t, this.newSnapshot = e, this.isPreview = r, this.currentHeadDetails = this.currentSnapshot.headDetails, this.newHeadDetails = this.newSnapshot.headDetails, this.currentBody = this.currentSnapshot.bodyElement, this.newBody = this.newSnapshot.bodyElement;\n }\n return n(o, e), o.prototype.render = function (t) {\n return this.shouldRender() ? (this.mergeHead(), this.renderView(function (e) {\n return function () {\n return e.replaceBody(), e.isPreview || e.focusFirstAutofocusableElement(), t();\n };\n }(this))) : this.invalidateView();\n }, o.prototype.mergeHead = function () {\n return this.copyNewHeadStylesheetElements(), this.copyNewHeadScriptElements(), this.removeCurrentHeadProvisionalElements(), this.copyNewHeadProvisionalElements();\n }, o.prototype.replaceBody = function () {\n var t;\n return t = this.relocateCurrentBodyPermanentElements(), this.activateNewBodyScriptElements(), this.assignNewBody(), this.replacePlaceholderElementsWithClonedPermanentElements(t);\n }, o.prototype.shouldRender = function () {\n return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n }, o.prototype.trackedElementsAreIdentical = function () {\n return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n }, o.prototype.copyNewHeadStylesheetElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadStylesheetElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.copyNewHeadScriptElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadScriptElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(this.createScriptElement(t)));\n return o;\n }, o.prototype.removeCurrentHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getCurrentHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.removeChild(t));\n return o;\n }, o.prototype.copyNewHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.relocateCurrentBodyPermanentElements = function () {\n var e, n, o, i, s, a, u;\n for (a = this.getCurrentBodyPermanentElements(), u = [], e = 0, n = a.length; n > e; e++) i = a[e], s = t(i), o = this.newSnapshot.getPermanentElementById(i.id), r(i, s.element), r(o, i), u.push(s);\n return u;\n }, o.prototype.replacePlaceholderElementsWithClonedPermanentElements = function (t) {\n var e, n, o, i, s, a, u;\n for (u = [], o = 0, i = t.length; i > o; o++) a = t[o], n = a.element, s = a.permanentElement, e = s.cloneNode(!0), u.push(r(n, e));\n return u;\n }, o.prototype.activateNewBodyScriptElements = function () {\n var t, e, n, o, i, s;\n for (i = this.getNewBodyScriptElements(), s = [], e = 0, o = i.length; o > e; e++) n = i[e], t = this.createScriptElement(n), s.push(r(n, t));\n return s;\n }, o.prototype.assignNewBody = function () {\n return document.body = this.newBody;\n }, o.prototype.focusFirstAutofocusableElement = function () {\n var t;\n return null != (t = this.newSnapshot.findFirstAutofocusableElement()) ? t.focus() : void 0;\n }, o.prototype.getNewHeadStylesheetElements = function () {\n return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getNewHeadScriptElements = function () {\n return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getCurrentHeadProvisionalElements = function () {\n return this.currentHeadDetails.getProvisionalElements();\n }, o.prototype.getNewHeadProvisionalElements = function () {\n return this.newHeadDetails.getProvisionalElements();\n }, o.prototype.getCurrentBodyPermanentElements = function () {\n return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n }, o.prototype.getNewBodyScriptElements = function () {\n return this.newBody.querySelectorAll(\"script\");\n }, o;\n }(e.Renderer), t = function (t) {\n var e;\n return e = document.createElement(\"meta\"), e.setAttribute(\"name\", \"turbolinks-permanent-placeholder\"), e.setAttribute(\"content\", t.id), {\n element: e,\n permanentElement: t\n };\n }, r = function (t, e) {\n var r;\n return (r = t.parentNode) ? r.replaceChild(e, t) : void 0;\n };\n }.call(this), function () {\n var t = function (t, e) {\n function n() {\n this.constructor = t;\n }\n for (var o in e) r.call(e, o) && (t[o] = e[o]);\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n e.ErrorRenderer = function (e) {\n function r(t) {\n var e;\n e = document.createElement(\"html\"), e.innerHTML = t, this.newHead = e.querySelector(\"head\"), this.newBody = e.querySelector(\"body\");\n }\n return t(r, e), r.prototype.render = function (t) {\n return this.renderView(function (e) {\n return function () {\n return e.replaceHeadAndBody(), e.activateBodyScriptElements(), t();\n };\n }(this));\n }, r.prototype.replaceHeadAndBody = function () {\n var t, e;\n return e = document.head, t = document.body, e.parentNode.replaceChild(this.newHead, e), t.parentNode.replaceChild(this.newBody, t);\n }, r.prototype.activateBodyScriptElements = function () {\n var t, e, r, n, o, i;\n for (n = this.getScriptElements(), i = [], e = 0, r = n.length; r > e; e++) o = n[e], t = this.createScriptElement(o), i.push(o.parentNode.replaceChild(t, o));\n return i;\n }, r.prototype.getScriptElements = function () {\n return document.documentElement.querySelectorAll(\"script\");\n }, r;\n }(e.Renderer);\n }.call(this), function () {\n e.View = function () {\n function t(t) {\n this.delegate = t, this.htmlElement = document.documentElement;\n }\n return t.prototype.getRootLocation = function () {\n return this.getSnapshot().getRootLocation();\n }, t.prototype.getElementForAnchor = function (t) {\n return this.getSnapshot().getElementForAnchor(t);\n }, t.prototype.getSnapshot = function () {\n return e.Snapshot.fromHTMLElement(this.htmlElement);\n }, t.prototype.render = function (t, e) {\n var r, n, o;\n return o = t.snapshot, r = t.error, n = t.isPreview, this.markAsPreview(n), null != o ? this.renderSnapshot(o, n, e) : this.renderError(r, e);\n }, t.prototype.markAsPreview = function (t) {\n return t ? this.htmlElement.setAttribute(\"data-turbolinks-preview\", \"\") : this.htmlElement.removeAttribute(\"data-turbolinks-preview\");\n }, t.prototype.renderSnapshot = function (t, r, n) {\n return e.SnapshotRenderer.render(this.delegate, n, this.getSnapshot(), e.Snapshot.wrap(t), r);\n }, t.prototype.renderError = function (t, r) {\n return e.ErrorRenderer.render(this.delegate, r, t);\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ScrollManager = function () {\n function r(r) {\n this.delegate = r, this.onScroll = t(this.onScroll, this), this.onScroll = e.throttle(this.onScroll);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"scroll\", this.onScroll, !1), this.onScroll(), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"scroll\", this.onScroll, !1), this.started = !1) : void 0;\n }, r.prototype.scrollToElement = function (t) {\n return t.scrollIntoView();\n }, r.prototype.scrollToPosition = function (t) {\n var e, r;\n return e = t.x, r = t.y, window.scrollTo(e, r);\n }, r.prototype.onScroll = function (t) {\n return this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n }, r.prototype.updatePosition = function (t) {\n var e;\n return this.position = t, null != (e = this.delegate) ? e.scrollPositionChanged(this.position) : void 0;\n }, r;\n }();\n }.call(this), function () {\n e.SnapshotCache = function () {\n function t(t) {\n this.size = t, this.keys = [], this.snapshots = {};\n }\n var r;\n return t.prototype.has = function (t) {\n var e;\n return e = r(t), e in this.snapshots;\n }, t.prototype.get = function (t) {\n var e;\n if (this.has(t)) return e = this.read(t), this.touch(t), e;\n }, t.prototype.put = function (t, e) {\n return this.write(t, e), this.touch(t), e;\n }, t.prototype.read = function (t) {\n var e;\n return e = r(t), this.snapshots[e];\n }, t.prototype.write = function (t, e) {\n var n;\n return n = r(t), this.snapshots[n] = e;\n }, t.prototype.touch = function (t) {\n var e, n;\n return n = r(t), e = this.keys.indexOf(n), e > -1 && this.keys.splice(e, 1), this.keys.unshift(n), this.trim();\n }, t.prototype.trim = function () {\n var t, e, r, n, o;\n for (n = this.keys.splice(this.size), o = [], t = 0, r = n.length; r > t; t++) e = n[t], o.push(delete this.snapshots[e]);\n return o;\n }, r = function (t) {\n return e.Location.wrap(t).toCacheKey();\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Visit = function () {\n function r(r, n, o) {\n this.controller = r, this.action = o, this.performScroll = t(this.performScroll, this), this.identifier = e.uuid(), this.location = e.Location.wrap(n), this.adapter = this.controller.adapter, this.state = \"initialized\", this.timingMetrics = {};\n }\n var n;\n return r.prototype.start = function () {\n return \"initialized\" === this.state ? (this.recordTimingMetric(\"visitStart\"), this.state = \"started\", this.adapter.visitStarted(this)) : void 0;\n }, r.prototype.cancel = function () {\n var t;\n return \"started\" === this.state ? (null != (t = this.request) && t.cancel(), this.cancelRender(), this.state = \"canceled\") : void 0;\n }, r.prototype.complete = function () {\n var t;\n return \"started\" === this.state ? (this.recordTimingMetric(\"visitEnd\"), this.state = \"completed\", \"function\" == typeof (t = this.adapter).visitCompleted && t.visitCompleted(this), this.controller.visitCompleted(this)) : void 0;\n }, r.prototype.fail = function () {\n var t;\n return \"started\" === this.state ? (this.state = \"failed\", \"function\" == typeof (t = this.adapter).visitFailed ? t.visitFailed(this) : void 0) : void 0;\n }, r.prototype.changeHistory = function () {\n var t, e;\n return this.historyChanged ? void 0 : (t = this.location.isEqualTo(this.referrer) ? \"replace\" : this.action, e = n(t), this.controller[e](this.location, this.restorationIdentifier), this.historyChanged = !0);\n }, r.prototype.issueRequest = function () {\n return this.shouldIssueRequest() && null == this.request ? (this.progress = 0, this.request = new e.HttpRequest(this, this.location, this.referrer), this.request.send()) : void 0;\n }, r.prototype.getCachedSnapshot = function () {\n var t;\n return !(t = this.controller.getCachedSnapshotForLocation(this.location)) || null != this.location.anchor && !t.hasAnchor(this.location.anchor) || \"restore\" !== this.action && !t.isPreviewable() ? void 0 : t;\n }, r.prototype.hasCachedSnapshot = function () {\n return null != this.getCachedSnapshot();\n }, r.prototype.loadCachedSnapshot = function () {\n var t, e;\n return (e = this.getCachedSnapshot()) ? (t = this.shouldIssueRequest(), this.render(function () {\n var r;\n return this.cacheSnapshot(), this.controller.render({\n snapshot: e,\n isPreview: t\n }, this.performScroll), \"function\" == typeof (r = this.adapter).visitRendered && r.visitRendered(this), t ? void 0 : this.complete();\n })) : void 0;\n }, r.prototype.loadResponse = function () {\n return null != this.response ? this.render(function () {\n var t, e;\n return this.cacheSnapshot(), this.request.failed ? (this.controller.render({\n error: this.response\n }, this.performScroll), \"function\" == typeof (t = this.adapter).visitRendered && t.visitRendered(this), this.fail()) : (this.controller.render({\n snapshot: this.response\n }, this.performScroll), \"function\" == typeof (e = this.adapter).visitRendered && e.visitRendered(this), this.complete());\n }) : void 0;\n }, r.prototype.followRedirect = function () {\n return this.redirectedToLocation && !this.followedRedirect ? (this.location = this.redirectedToLocation, this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier), this.followedRedirect = !0) : void 0;\n }, r.prototype.requestStarted = function () {\n var t;\n return this.recordTimingMetric(\"requestStart\"), \"function\" == typeof (t = this.adapter).visitRequestStarted ? t.visitRequestStarted(this) : void 0;\n }, r.prototype.requestProgressed = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.adapter).visitRequestProgressed ? e.visitRequestProgressed(this) : void 0;\n }, r.prototype.requestCompletedWithResponse = function (t, r) {\n return this.response = t, null != r && (this.redirectedToLocation = e.Location.wrap(r)), this.adapter.visitRequestCompleted(this);\n }, r.prototype.requestFailedWithStatusCode = function (t, e) {\n return this.response = e, this.adapter.visitRequestFailedWithStatusCode(this, t);\n }, r.prototype.requestFinished = function () {\n var t;\n return this.recordTimingMetric(\"requestEnd\"), \"function\" == typeof (t = this.adapter).visitRequestFinished ? t.visitRequestFinished(this) : void 0;\n }, r.prototype.performScroll = function () {\n return this.scrolled ? void 0 : (\"restore\" === this.action ? this.scrollToRestoredPosition() || this.scrollToTop() : this.scrollToAnchor() || this.scrollToTop(), this.scrolled = !0);\n }, r.prototype.scrollToRestoredPosition = function () {\n var t, e;\n return t = null != (e = this.restorationData) ? e.scrollPosition : void 0, null != t ? (this.controller.scrollToPosition(t), !0) : void 0;\n }, r.prototype.scrollToAnchor = function () {\n return null != this.location.anchor ? (this.controller.scrollToAnchor(this.location.anchor), !0) : void 0;\n }, r.prototype.scrollToTop = function () {\n return this.controller.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.recordTimingMetric = function (t) {\n var e;\n return null != (e = this.timingMetrics)[t] ? e[t] : e[t] = new Date().getTime();\n }, r.prototype.getTimingMetrics = function () {\n return e.copyObject(this.timingMetrics);\n }, n = function (t) {\n switch (t) {\n case \"replace\":\n return \"replaceHistoryWithLocationAndRestorationIdentifier\";\n case \"advance\":\n case \"restore\":\n return \"pushHistoryWithLocationAndRestorationIdentifier\";\n }\n }, r.prototype.shouldIssueRequest = function () {\n return \"restore\" === this.action ? !this.hasCachedSnapshot() : !0;\n }, r.prototype.cacheSnapshot = function () {\n return this.snapshotCached ? void 0 : (this.controller.cacheSnapshot(), this.snapshotCached = !0);\n }, r.prototype.render = function (t) {\n return this.cancelRender(), this.frame = requestAnimationFrame(function (e) {\n return function () {\n return e.frame = null, t.call(e);\n };\n }(this));\n }, r.prototype.cancelRender = function () {\n return this.frame ? cancelAnimationFrame(this.frame) : void 0;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Controller = function () {\n function r() {\n this.clickBubbled = t(this.clickBubbled, this), this.clickCaptured = t(this.clickCaptured, this), this.pageLoaded = t(this.pageLoaded, this), this.history = new e.History(this), this.view = new e.View(this), this.scrollManager = new e.ScrollManager(this), this.restorationData = {}, this.clearCache(), this.setProgressBarDelay(500);\n }\n return r.prototype.start = function () {\n return e.supported && !this.started ? (addEventListener(\"click\", this.clickCaptured, !0), addEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.start(), this.startHistory(), this.started = !0, this.enabled = !0) : void 0;\n }, r.prototype.disable = function () {\n return this.enabled = !1;\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"click\", this.clickCaptured, !0), removeEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.stop(), this.stopHistory(), this.started = !1) : void 0;\n }, r.prototype.clearCache = function () {\n return this.cache = new e.SnapshotCache(10);\n }, r.prototype.visit = function (t, r) {\n var n, o;\n return null == r && (r = {}), t = e.Location.wrap(t), this.applicationAllowsVisitingLocation(t) ? this.locationIsVisitable(t) ? (n = null != (o = r.action) ? o : \"advance\", this.adapter.visitProposedToLocationWithAction(t, n)) : window.location = t : void 0;\n }, r.prototype.startVisitToLocationWithAction = function (t, r, n) {\n var o;\n return e.supported ? (o = this.getRestorationDataForIdentifier(n), this.startVisit(t, r, {\n restorationData: o\n })) : window.location = t;\n }, r.prototype.setProgressBarDelay = function (t) {\n return this.progressBarDelay = t;\n }, r.prototype.startHistory = function () {\n return this.location = e.Location.wrap(window.location), this.restorationIdentifier = e.uuid(), this.history.start(), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.stopHistory = function () {\n return this.history.stop();\n }, r.prototype.pushHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.push(this.location, this.restorationIdentifier);\n }, r.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.historyPoppedToLocationWithRestorationIdentifier = function (t, r) {\n var n;\n return this.restorationIdentifier = r, this.enabled ? (n = this.getRestorationDataForIdentifier(this.restorationIdentifier), this.startVisit(t, \"restore\", {\n restorationIdentifier: this.restorationIdentifier,\n restorationData: n,\n historyChanged: !0\n }), this.location = e.Location.wrap(t)) : this.adapter.pageInvalidated();\n }, r.prototype.getCachedSnapshotForLocation = function (t) {\n var e;\n return null != (e = this.cache.get(t)) ? e.clone() : void 0;\n }, r.prototype.shouldCacheSnapshot = function () {\n return this.view.getSnapshot().isCacheable();\n }, r.prototype.cacheSnapshot = function () {\n var t, r;\n return this.shouldCacheSnapshot() ? (this.notifyApplicationBeforeCachingSnapshot(), r = this.view.getSnapshot(), t = this.lastRenderedLocation, e.defer(function (e) {\n return function () {\n return e.cache.put(t, r.clone());\n };\n }(this))) : void 0;\n }, r.prototype.scrollToAnchor = function (t) {\n var e;\n return (e = this.view.getElementForAnchor(t)) ? this.scrollToElement(e) : this.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.scrollToElement = function (t) {\n return this.scrollManager.scrollToElement(t);\n }, r.prototype.scrollToPosition = function (t) {\n return this.scrollManager.scrollToPosition(t);\n }, r.prototype.scrollPositionChanged = function (t) {\n var e;\n return e = this.getCurrentRestorationData(), e.scrollPosition = t;\n }, r.prototype.render = function (t, e) {\n return this.view.render(t, e);\n }, r.prototype.viewInvalidated = function () {\n return this.adapter.pageInvalidated();\n }, r.prototype.viewWillRender = function (t) {\n return this.notifyApplicationBeforeRender(t);\n }, r.prototype.viewRendered = function () {\n return this.lastRenderedLocation = this.currentVisit.location, this.notifyApplicationAfterRender();\n }, r.prototype.pageLoaded = function () {\n return this.lastRenderedLocation = this.location, this.notifyApplicationAfterPageLoad();\n }, r.prototype.clickCaptured = function () {\n return removeEventListener(\"click\", this.clickBubbled, !1), addEventListener(\"click\", this.clickBubbled, !1);\n }, r.prototype.clickBubbled = function (t) {\n var e, r, n;\n return this.enabled && this.clickEventIsSignificant(t) && (r = this.getVisitableLinkForNode(t.target)) && (n = this.getVisitableLocationForLink(r)) && this.applicationAllowsFollowingLinkToLocation(r, n) ? (t.preventDefault(), e = this.getActionForLink(r), this.visit(n, {\n action: e\n })) : void 0;\n }, r.prototype.applicationAllowsFollowingLinkToLocation = function (t, e) {\n var r;\n return r = this.notifyApplicationAfterClickingLinkToLocation(t, e), !r.defaultPrevented;\n }, r.prototype.applicationAllowsVisitingLocation = function (t) {\n var e;\n return e = this.notifyApplicationBeforeVisitingLocation(t), !e.defaultPrevented;\n }, r.prototype.notifyApplicationAfterClickingLinkToLocation = function (t, r) {\n return e.dispatch(\"turbolinks:click\", {\n target: t,\n data: {\n url: r.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationBeforeVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:before-visit\", {\n data: {\n url: t.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationAfterVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:visit\", {\n data: {\n url: t.absoluteURL\n }\n });\n }, r.prototype.notifyApplicationBeforeCachingSnapshot = function () {\n return e.dispatch(\"turbolinks:before-cache\");\n }, r.prototype.notifyApplicationBeforeRender = function (t) {\n return e.dispatch(\"turbolinks:before-render\", {\n data: {\n newBody: t\n }\n });\n }, r.prototype.notifyApplicationAfterRender = function () {\n return e.dispatch(\"turbolinks:render\");\n }, r.prototype.notifyApplicationAfterPageLoad = function (t) {\n return null == t && (t = {}), e.dispatch(\"turbolinks:load\", {\n data: {\n url: this.location.absoluteURL,\n timing: t\n }\n });\n }, r.prototype.startVisit = function (t, e, r) {\n var n;\n return null != (n = this.currentVisit) && n.cancel(), this.currentVisit = this.createVisit(t, e, r), this.currentVisit.start(), this.notifyApplicationAfterVisitingLocation(t);\n }, r.prototype.createVisit = function (t, r, n) {\n var o, i, s, a, u;\n return i = null != n ? n : {}, a = i.restorationIdentifier, s = i.restorationData, o = i.historyChanged, u = new e.Visit(this, t, r), u.restorationIdentifier = null != a ? a : e.uuid(), u.restorationData = e.copyObject(s), u.historyChanged = o, u.referrer = this.location, u;\n }, r.prototype.visitCompleted = function (t) {\n return this.notifyApplicationAfterPageLoad(t.getTimingMetrics());\n }, r.prototype.clickEventIsSignificant = function (t) {\n return !(t.defaultPrevented || t.target.isContentEditable || t.which > 1 || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey);\n }, r.prototype.getVisitableLinkForNode = function (t) {\n return this.nodeIsVisitable(t) ? e.closest(t, \"a[href]:not([target]):not([download])\") : void 0;\n }, r.prototype.getVisitableLocationForLink = function (t) {\n var r;\n return r = new e.Location(t.getAttribute(\"href\")), this.locationIsVisitable(r) ? r : void 0;\n }, r.prototype.getActionForLink = function (t) {\n var e;\n return null != (e = t.getAttribute(\"data-turbolinks-action\")) ? e : \"advance\";\n }, r.prototype.nodeIsVisitable = function (t) {\n var r;\n return (r = e.closest(t, \"[data-turbolinks]\")) ? \"false\" !== r.getAttribute(\"data-turbolinks\") : !0;\n }, r.prototype.locationIsVisitable = function (t) {\n return t.isPrefixedBy(this.view.getRootLocation()) && t.isHTML();\n }, r.prototype.getCurrentRestorationData = function () {\n return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n }, r.prototype.getRestorationDataForIdentifier = function (t) {\n var e;\n return null != (e = this.restorationData)[t] ? e[t] : e[t] = {};\n }, r;\n }();\n }.call(this), function () {\n !function () {\n var t, e;\n if ((t = e = document.currentScript) && !e.hasAttribute(\"data-turbolinks-suppress-warning\")) for (; t = t.parentNode;) if (t === document.body) return console.warn(\"You are loading Turbolinks from a