{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/dom7/dom7.esm.js","node_modules/es6-object-assign/auto.js","node_modules/es6-object-assign/index.js","node_modules/ssr-window/ssr-window.esm.js","node_modules/swiper/core/breakpoints/getBreakpoint.js","node_modules/swiper/core/breakpoints/index.js","node_modules/swiper/core/breakpoints/setBreakpoint.js","node_modules/swiper/core/check-overflow/index.js","node_modules/swiper/core/classes/addClasses.js","node_modules/swiper/core/classes/index.js","node_modules/swiper/core/classes/removeClasses.js","node_modules/swiper/core/core.js","node_modules/swiper/core/defaults.js","node_modules/swiper/core/events-emitter.js","node_modules/swiper/core/events/index.js","node_modules/swiper/core/events/onClick.js","node_modules/swiper/core/events/onResize.js","node_modules/swiper/core/events/onScroll.js","node_modules/swiper/core/events/onTouchEnd.js","node_modules/swiper/core/events/onTouchMove.js","node_modules/swiper/core/events/onTouchStart.js","node_modules/swiper/core/grab-cursor/index.js","node_modules/swiper/core/grab-cursor/setGrabCursor.js","node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","node_modules/swiper/core/images/index.js","node_modules/swiper/core/images/loadImage.js","node_modules/swiper/core/images/preloadImages.js","node_modules/swiper/core/loop/index.js","node_modules/swiper/core/loop/loopCreate.js","node_modules/swiper/core/loop/loopDestroy.js","node_modules/swiper/core/loop/loopFix.js","node_modules/swiper/core/moduleExtendParams.js","node_modules/swiper/core/modules/observer/observer.js","node_modules/swiper/core/modules/resize/resize.js","node_modules/swiper/core/slide/index.js","node_modules/swiper/core/slide/slideNext.js","node_modules/swiper/core/slide/slidePrev.js","node_modules/swiper/core/slide/slideReset.js","node_modules/swiper/core/slide/slideTo.js","node_modules/swiper/core/slide/slideToClickedSlide.js","node_modules/swiper/core/slide/slideToClosest.js","node_modules/swiper/core/slide/slideToLoop.js","node_modules/swiper/core/transition/index.js","node_modules/swiper/core/transition/setTransition.js","node_modules/swiper/core/transition/transitionEmit.js","node_modules/swiper/core/transition/transitionEnd.js","node_modules/swiper/core/transition/transitionStart.js","node_modules/swiper/core/translate/getTranslate.js","node_modules/swiper/core/translate/index.js","node_modules/swiper/core/translate/maxTranslate.js","node_modules/swiper/core/translate/minTranslate.js","node_modules/swiper/core/translate/setTranslate.js","node_modules/swiper/core/translate/translateTo.js","node_modules/swiper/core/update/index.js","node_modules/swiper/core/update/updateActiveIndex.js","node_modules/swiper/core/update/updateAutoHeight.js","node_modules/swiper/core/update/updateClickedSlide.js","node_modules/swiper/core/update/updateProgress.js","node_modules/swiper/core/update/updateSize.js","node_modules/swiper/core/update/updateSlides.js","node_modules/swiper/core/update/updateSlidesClasses.js","node_modules/swiper/core/update/updateSlidesOffset.js","node_modules/swiper/core/update/updateSlidesProgress.js","node_modules/swiper/modules/a11y/a11y.js","node_modules/swiper/modules/autoplay/autoplay.js","node_modules/swiper/modules/controller/controller.js","node_modules/swiper/modules/effect-cards/effect-cards.js","node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","node_modules/swiper/modules/effect-creative/effect-creative.js","node_modules/swiper/modules/effect-cube/effect-cube.js","node_modules/swiper/modules/effect-fade/effect-fade.js","node_modules/swiper/modules/effect-flip/effect-flip.js","node_modules/swiper/modules/free-mode/free-mode.js","node_modules/swiper/modules/grid/grid.js","node_modules/swiper/modules/hash-navigation/hash-navigation.js","node_modules/swiper/modules/history/history.js","node_modules/swiper/modules/keyboard/keyboard.js","node_modules/swiper/modules/lazy/lazy.js","node_modules/swiper/modules/manipulation/manipulation.js","node_modules/swiper/modules/manipulation/methods/addSlide.js","node_modules/swiper/modules/manipulation/methods/appendSlide.js","node_modules/swiper/modules/manipulation/methods/prependSlide.js","node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","node_modules/swiper/modules/manipulation/methods/removeSlide.js","node_modules/swiper/modules/mousewheel/mousewheel.js","node_modules/swiper/modules/navigation/navigation.js","node_modules/swiper/modules/pagination/pagination.js","node_modules/swiper/modules/parallax/parallax.js","node_modules/swiper/modules/scrollbar/scrollbar.js","node_modules/swiper/modules/thumbs/thumbs.js","node_modules/swiper/modules/virtual/virtual.js","node_modules/swiper/modules/zoom/zoom.js","node_modules/swiper/shared/classes-to-selector.js","node_modules/swiper/shared/create-element-if-not-defined.js","node_modules/swiper/shared/create-shadow.js","node_modules/swiper/shared/dom.js","node_modules/swiper/shared/effect-init.js","node_modules/swiper/shared/effect-target.js","node_modules/swiper/shared/effect-virtual-transition-end.js","node_modules/swiper/shared/get-browser.js","node_modules/swiper/shared/get-device.js","node_modules/swiper/shared/get-support.js","node_modules/swiper/shared/utils.js","node_modules/swiper/swiper.esm.js","src/js/analytics/listeners/externallyTriggeredEvents.js","src/js/analytics/pushToDataLayer.js","src/js/carousel/boxCarousel.js","src/js/carousel/carousel.js","src/js/carousel/carouselAlt.js","src/js/carousel/carouselGallery.js","src/js/carousel/config.js","src/js/carousel/introCarousel.js","src/js/carousel/product-list.js","src/js/carousel/productCarousel.js","src/js/carousel/productSupportingCarouselFrost.js","src/js/carousel/productSupportingCarouselJobst.js","src/js/carousel/promoboxCarousel.js","src/js/carousel/protectsCarousel.js","src/js/common/accordion.js","src/js/common/clickToScrollToElement.js","src/js/common/dropdown.js","src/js/common/externalLinksMegaMenu.js","src/js/common/headerScrollMobile.js","src/js/common/iframePopup.js","src/js/common/mobileNav.js","src/js/common/popup.js","src/js/common/scrollToTop.js","src/js/common/select.js","src/js/common/selectMultiLevel.js","src/js/common/showMore.js","src/js/common/siteSearch.js","src/js/common/stickyMenu.js","src/js/common/table.js","src/js/common/tabs.js","src/js/common/tooltip.js","src/js/common/videoPopup.js","src/js/dealer-locator.js","src/js/helpers/convertUrlToAbsolute.js","src/js/helpers/eventKeyCodes.js","src/js/helpers/getHeaderHeight.js","src/js/helpers/isInView.js","src/js/helpers/isMobile.js","src/js/helpers/isXPM.js","src/js/helpers/scrollToElement.js","src/js/imageLazyload.js","src/js/index.js","src/js/productFilterInfoPanel.js","src/js/products-compare-popup.js","src/js/products/headingHandler.js","src/js/products/productReviewAccessibility.js","src/js/products/productViewOptions.js","src/js/sizeGuidePopup.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","j","_len10","arguments","els","Array","_key10","toAdd","$","this","push","_len","classes","_key","classNames","arrayFlat","map","split","forEach","el","_el$classList","classList","add","apply","_toConsumableArray","initialProps","initialParams","animateInstance","window","_ssrWindow","getWindow","props","Object","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","cancelAnimationFrame","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","keys","prop","getComputedStyle","getPropertyValue","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","requestAnimationFrame","render","easeProgress","Date","getTime","begin","max","min","element","_el$prop","style","callback","dom","on","fireCallBack","target","off","newChild","document","getDocument","k","undefined","tempDiv","createElement","innerHTML","firstChild","appendChild","Dom7","parent","append","attrs","value","getAttribute","setAttribute","attrName","selector","children","childNodes","is","closest","parents","eq","_prop","key","dom7ElementDataStorage","dataKey","concat","dataset","attributes","_attr","name","indexOf","string","toLowerCase","match","group","toUpperCase","toCamelCase","remove","nodeType","parentNode","removeChild","textContent","returnIndex","arrayFilter","foundElements","found","querySelectorAll","_len4","_key4","filter","className","contains","innerHeight","css","display","html","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","_next","_len6","args","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","removeEventListener","proxyListener","splice","box","getBoundingClientRect","body","clientTop","clientLeft","_scrollTop","scrollY","scrollTop","_scrollLeft","scrollX","scrollLeft","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","_parents","handleEvent","_event","addEventListener","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","_styles2","styles","offsetHeight","_styles","offsetWidth","_parent","prepend","previousElementSibling","prevEls","_prev","propName","attr","removeAttribute","_len2","_key2","_el$classList2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxLeft","newTop","newLeft","animateTop","animateLeft","maxTop","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","trim","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","CustomEvent","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","nodeName","values","selectedOptions","_i","_el","isArray","options","selected","val","innerWidth","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","minLen","prototype","toString","slice","constructor","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","arg","input","hint","_typeof","prim","toPrimitive","String","Number","res","_toPrimitive","_toPropertyKey","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","Function","has","get","set","Wrapper","_construct","_getPrototypeOf","create","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","bind","instance","sham","Proxy","Boolean","valueOf","setPrototypeOf","__proto__","getPrototypeOf","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","NewTarget","Super","items","_this","proto","_classCallCheck","obj","context","_html","toCreate","tempParent","qsa","uniqueArray","arrayUnique","fn","noTrigger","shortcut","_len14","_key14","trigger","click","blur","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","polyfill","firstSource","to","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","isObject","extend","src","doc","ssrDocument","win","ssrWindow","activeElement","querySelector","getElementById","createEvent","initEvent","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","navigator","userAgent","history","replaceState","pushState","go","back","Image","screen","setTimeout","clearTimeout","matchMedia","id","breakpoints","base","containerEl","breakpoint","currentHeight","clientHeight","points","point","minRatio","substr","sort","b","parseInt","_points$i","clientWidth","_setBreakpoint","_interopRequireDefault","_getBreakpoint","__esModule","default","_default","setBreakpoint","getBreakpoint","breakpointParams","wasMultiRow","swiper","activeIndex","initialized","_swiper$loopedSlides","loopedSlides","$el","breakpointsBase","currentBreakpoint","originalParams","isGridEnabled","isMultiRow","wasEnabled","enabled","removeClass","containerModifierClass","emitContainerClasses","addClass","grid","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","direction","needsReLoop","loop","slidesPerView","changeDirection","_utils","isEnabled","allowTouchMove","allowSlideNext","allowSlidePrev","emit","loopDestroy","loopCreate","updateSlides","slideTo","rows","checkOverflow","lastSlideIndex","wasLocked","isLocked","slidesOffsetBefore","slides","lastSlideRightEdge","slidesGrid","slidesSizesGrid","size","snapGrid","isEnd","rtl","device","support","suffixes","entries","prefix","resultClasses","item","prepareClasses","pointer-events","touch","free-mode","freeMode","autoheight","autoHeight","grid-column","android","ios","css-mode","cssMode","centered","centeredSlides","watch-progress","watchSlidesProgress","join","_addClasses","_removeClasses","addClasses","removeClasses","_dom","_getSupport","_getDevice","_getBrowser","_resize","_observer","_eventsEmitter","_index","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","_defaults","_moduleExtendParams","prototypes","eventsEmitter","update","translate","transition","slide","grabCursor","images","extendedDefaults","Swiper","swipers","newParams","__swiper__","getSupport","getDevice","browser","getBrowser","eventsListeners","eventsAnyListeners","modules","__modules__","_swiper$modules","allModulesParams","mod","extendParams","once","desktop","swiperParams","passedParams","onAny","isHorizontal","isVertical","realIndex","isBeginning","previousTranslate","velocity","touchEvents","touchEventsTouch","start","move","end","cancel","touchEventsDesktop","simulateTouch","touchEventsData","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","focusableElements","lastClickTime","now","clickTimeout","velocities","allowMomentumBounce","isTouchEvent","startMoving","allowClick","touches","startX","startY","currentX","currentY","diff","imagesToLoad","imagesLoaded","init","newDefaults","m","installModule","setGrabCursor","unsetGrabCursor","speed","minTranslate","maxTranslate","translateTo","updateActiveIndex","updateSlidesClasses","cls","_emitClasses","slideEl","destroyed","slideClass","updates","getSlideClasses","view","exact","swiperSize","spv","breakLoop","slideSize","swiperSlideSize","_i2","_i3","setTranslate","translateValue","rtlTranslate","newTranslate","updateSize","updateProgress","updateAutoHeight","watchOverflow","newDirection","needUpdate","currentDirection","width","height","dir","mounted","getWrapperSelector","wrapperClass","wrapper","$wrapperEl","shadowRoot","getWrapper","createElements","wrapperEl","wrongRTL","mount","preloadImages","initialSlide","runCallbacksOnInit","attachEvents","deleteInstance","cleanStyles","detachEvents","removeAttr","slideVisibleClass","slideActiveClass","slideNextClass","slidePrevClass","deleteProps","prototypeGroup","protoMethod","use","touchEventsTarget","updateOnWindowResize","resizeObserver","nested","preventInteractionOnTransition","url","edgeSwipeDetection","edgeSwipeThreshold","setWrapperSize","virtualTranslate","effect","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","touchRatio","touchAngle","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","resistance","resistanceRatio","preventClicks","preventClicksPropagation","slideToClickedSlide","updateOnImagesReady","loopAdditionalSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","rewind","swipeHandler","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","maxBackfaceHiddenSlides","slideBlankClass","slideDuplicateActiveClass","slideDuplicateClass","slideDuplicateNextClass","slideDuplicatePrevClass","priority","method","__emitterProxy","offAny","eventHandler","_onTouchStart","_onTouchMove","_onTouchEnd","_onResize","_onClick","_onScroll","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","passiveListener","passive","onTouchStart","onTouchMove","onTouchEnd","onClick","onScroll","preventDefault","stopPropagation","stopImmediatePropagation","autoplay","running","paused","run","translatesDiff","originalEvent","currentPos","touchEndTime","timeDiff","pathTree","path","composedPath","updateClickedSlide","nextTick","swipeDirection","stopIndex","groupSize","_increment","rewindFirstIndex","rewindLastIndex","virtual","ratio","increment","abs","navigation","nextEl","prevEl","type","targetTouch","targetTouches","changedTouches","pageX","pageY","preventedByNestedSwiper","diffX","diffY","sqrt","pow","atan2","loopFix","getTranslate","setTransition","disableParentSwiper","$targetEl","which","button","swipingClassHasValue","eventPath","isTargetShadow","__closestFrom","assignedSlot","getRootNode","closestElement","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","shouldPreventDefault","isContentEditable","_setGrabCursor","_unsetGrabCursor","moving","cursor","_loadImage","_preloadImages","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","image","onload","onerror","find","currentSrc","_loopCreate","_loopFix","_loopDestroy","$selector","blankSlidesNum","blankNode","ceil","prependSlides","appendSlides","floor","newIndex","moduleParamName","moduleParams","auto","_ref","attach","observer","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","observe","childList","characterData","observers","observeParents","observeSlideChildren","containerParents","disconnect","resizeHandler","orientationChangeHandler","animationFrame","ResizeObserver","newWidth","newHeight","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","_slideTo","_slideToLoop","_slideNext","_slidePrev","_slideReset","_slideToClosest","_slideToClickedSlide","slideToLoop","slideNext","slidePrev","slideReset","slideToClosest","runCallbacks","internal","perGroup","slidesPerViewDynamic","_clientLeft","normalize","prevSnapIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","snap","snapIndex","prevIndex","lastIndex","initial","indexAsNumber","isFinite","slideIndex","previousIndex","skip","normalizedGrid","normalizedGridNext","transitionStart","transitionEnd","isH","isVirtual","scrollSnapType","_immediateVirtual","_swiperImmediateVirtual","smoothScroll","animateCSSModeScroll","targetPosition","side","_defineProperty","_wrapperEl$scrollTo","onSlideToWrapperTransitionEnd","slideToIndex","clickedIndex","clickedSlide","currentSnap","_currentSnap","_setTransition","_transitionStart","_transitionEnd","byController","step","_transitionEmit","axis","_getTranslate","_setTranslate","_minTranslate","_maxTranslate","_translateTo","x","y","newProgress","translateBounds","onTranslateToWrapperTransitionEnd","_updateSize","_updateSlides","_updateAutoHeight","_updateSlidesOffset","_updateSlidesProgress","_updateProgress","_updateSlidesClasses","_updateActiveIndex","_updateClickedSlide","updateSlidesOffset","updateSlidesProgress","newActiveIndex","previousRealIndex","previousSnapIndex","activeSlides","getSlideByIndex","visibleSlides","slideFound","multiplier","wasBeginning","wasEnd","isNaN","getDirectionLabel","property","margin-top","margin-bottom ","margin-left","margin-right","padding-left","padding-right","marginRight","getDirectionPropertyValue","node","label","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","setCSSProperty","gridEnabled","initSlides","allSlidesSize","maxSnap","_allSlidesSize","allSlidesOffset","addToSnapGrid","addToSlidesGrid","shouldResetSlideSize","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","updateSlide","slideStyles","webkitTransform","outerWidth","outerHeight","boxSizing","_slide$","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideSizeValue","v","backFaceHiddenClass","hasClassBackfaceClassAdded","hasClass","activeSlide","nextSlide","prevSlide","emitSlidesClasses","swiperSlideOffset","offsetLeft","offsetTop","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","keyCode","$nextEl","$prevEl","pagination","_classesToSelector","bulletClass","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","includes","sourceCapabilities","firesTouchEvents","$slideEl","$containerEl","repeat","round","random","getRandomNumber","live","_swiper$navigation","bulletEl","$bulletEl","renderBullet","bulletActiveClass","timeout","$activeSlideEl","delay","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","_s","LinearSpline","maxIndex","minIndex","guess","i1","i3","binarySearch","array","interpolate","x2","removeSpline","controller","control","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","setControlledTransition","cardsEffect","slideShadows","transformEl","rotate","perSlideRotate","perSlideOffset","_effectInit","_swiper$touchEventsDa","offset","tX","tY","tZ","scale","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","scaleString","$shadowEl","_createShadow","opacity","zIndex","_effectTarget","_effectVirtualTransitionEnd","perspective","overwriteParams","coverflowEffect","stretch","depth","modifier","swiperWidth","swiperHeight","center","centerOffset","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","prev","next","isCenteredSlides","margin","_loop","custom","translateString","rotateString","opacityString","shadow","shadowOpacity","allSlides","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","scale2","slideAngle","tx","ty","tz","-webkit-transform-origin","transform-origin","shadowAngle","sin","scale1","zFactor","isSafari","isWebView","setProperty","recreateShadows","getEffectParams","fadeEffect","crossFade","slideOpacity","flipEffect","limitRotation","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","position","lastMoveEvent","pop","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","afterBouncePosition","moveDistance","doBounce","bounceAmount","needsLoopFix","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","_swiper$params$grid","row","column","_swiper$params","_swiper$params$grid2","slideIndexInGroup","groupIndex","columnsInGroup","newSlideOrderIndex","-webkit-order","order","_swiper$params2","hashNavigation","watchState","onHashChange","newHash","setHash","root","keepQuery","slugify","getPathValues","urlOverride","URL","total","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","paths","handle","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","$imageEl","background","$pictureEl","slideOriginalIndex","sourceEl","$source","load","slideExist","amount","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","appendSlide","_appendSlide","prependSlide","_prependSlide","addSlide","_addSlide","removeSlide","_removeSlide","removeAllSlides","_removeAllSlides","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","slidesIndexes","indexToRemove","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","sX","sY","rtlFactor","pY","pX","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","_newEvent","sign","ignoreWheelEvents","snapToThreshold","_prevEvent","firstEvent","autoplayDisableOnInteraction","prevEvent","releaseScroll","getEl","toggleEl","disabled","disabledClass","lockClass","onPrevClick","onNextClick","_createElementIfNotDefined","destroy","_swiper$navigation2","hideOnClick","hiddenClass","navigationDisabledClass","_swiper$navigation3","isHidden","_swiper$navigation4","targetEl","toggleClass","bulletSize","pfx","bulletElement","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","dynamicBulletIndex","isPaginationDisabled","setSideBullets","current","paginationType","firstIndex","midIndex","bulletsOffset","offsetProp","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","progressbarDirection","scaleY","scaleX","paginationHTML","numberOfBullets","parallax","setTransform","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newSize","newPos","scrollbar","hide","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","currentIndex","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","currentThumbsIndex","newThumbsIndex","useOffset","prevThumbsIndex","nextThumbsIndex","cssModeTimeout","renderSlide","cache","force","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","previousOffset","slidesBefore","slidesAfter","onRendered","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","newCache","numberOfNewSlides","cachedIndex","$cachedEl","cachedElIndex","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","y2","onGestureStart","gestures","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","zoomIn","translateMinX","translateMaxY","overflow","touchAction","touchY","touchX","imageWidth","imageHeight","translateMinY","translateMaxX","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","_getListeners2","_getListeners3","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","in","out","checkProps","shadowClass","$shadowContainer","Methods","methodName","requireUpdateOnVirtual","overwriteParamsResult","effectParams","backface-visibility","-webkit-backface-visibility","eventTriggered","triggerEvents","ua","calcBrowser","overrides","deviceCached","platform","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","documentElement","DocumentTouch","supportsPassive","opts","calcSupport","startPosition","cssModeFrameID","isOutOfBound","currentPosition","object","noExtend","isNode","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","varName","varValue","currentStyle","HTMLElement","_core","_virtual","_keyboard","_mousewheel","_navigation","_pagination","_scrollbar","_parallax","_zoom","_lazy","_controller","_a11y","_history","_hashNavigation","_autoplay","_thumbs","_freeMode","_grid","_manipulation","_effectFade","_effectCube","_effectFlip","_effectCoverflow","_effectCreative","_effectCards","_pushToDataLayer","analyticsAccordionItemOpen","title","pushToDataLayer","action","analyticsSampleRequest","selectedItemName","formId","$formSample","stepNumber","productId","localStorage","getItem","isAnalyticsPushed","eventTrigger","eventCategory","eventAction","eventLabel","ga4_data","action_type","step_name","step_number","single_item_id","single_item_name","sessionStorage","setItem","form_name","form_id","analyticsCompareProductListener","selectedProductName","link_text","analyticsFormSend","$form","status","HMS","ProductSample","productSelectedName","select2","eventValue","dataLayer","_carousel","_createSuper","_get","receiver","hasOwnProperty","_superPropBase","BoxCarousel","Carousel","_thisSuper","carousel","$carousel","watchSlidesVisibility","992","_config","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_isXPM","_videoPopup","WeakMap","cacheBabelInterop","cacheNodeInterop","_slicedToArray","_arrayWithHoles","_e","_x","_r","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","hasAttribute","isXPM","interval","config","getElementsByClassName","carouselID","_extendConfig","extendedConfig","Pagination","Navigation","Lazy","Autoplay","Scrollbar","$button","nextState","VideoPopup","carouselClass","videoPaused","carouselNode","generateConfig","supportDuplicateSlideVideos","hasSingleSlide","hasAutoplayAttr","togglePlayPauseText","togglePlayPauseAriaLabel","pauseText","$player","$slide","playerId","jwplayer","play","_$button$attr$split2","playText","_carousel$autoplay","$videoContainer","getState","carouselIndex","player","VideoPlayer","CarouselAlt","CarouselGallery","768","IntroCarousel","first","that","updateTabIndex","slideChange","ProductList","ProductCarousel","ProductSupportingCarouselFrost","ProductSupportingCarouselJobst","PromoCarousel","CarouselProtects","_externallyTriggeredEvents","_isInView","_scrollToElement","_eventKeyCodes","Accordion","$arrow","$accordion","$item","deactivateAll","activateArrow","slideDown","isInView","scrollToElement","deactivateAllArrows","slideUp","activateItem","eventKeyCodes","enter","onToggle","currentTarget","addEvents","ClickToScrollToElement","_isMobile","Dropdown","siteNameWidth","getElementsByName","$dropdown","$dropdownLink","$dropdownContent","closeAllDropdowns","dropdownsLeft","siteNameBottom","$siteName","middle","showArrow","closeDropdown","openDropdown","tableLeftOffset","isMobile","dropdownLeftOffset","dropdown","onDropdownHover","isSegmentDropdown","segmentTimeout","escape","toggleDropdown","onDropdownLinkFocus","$dropdownContentLinks","$nextFocusableElement","relatedTarget","_this2","addEventListeners","fixChangeSiteDropdownWidth","_convertUrlToAbsolute","ExternalLinksMegaMenu","links","locationHostname","$element","targetURL","convertUrlToAbsolute","linkUrlHostname","HeaderScrollMobile","$window","$header","IframePopup","addIframeParamSuffix","magnificPopup","mainClass","iframe","patterns","azure","_select","MobileNav","isInited","onResize","mode","onMainNavItemClick","$mobileChangeCountry","Select","getSelectConfig","onChangeCountry","$mobileChangeCountryFooter","Popup","closeBtnInside","close","ScrollToTop","visible","toggleButton","fadeIn","fadeOut","select","$select","minimumResultsForSearch","dropdownParent","selectMultiLevelConfig","templateResult","$wrapper","SelectMultiLevel","ShowMore","inited","$content","initialHeight","active","rowsCount","lineHeight","paddingTopValue","lineHeightValue","paddingTop","fontSize","$container","rowCount","calculateHeight","onButtonClick","_this3","SiteSearch","searchTerm","searchPageUrl","searchQueryValue","searchPlaceholderLength","headerHeight","collapseSearchHeader","resetInputField","onSearch","siblings","isHeader","$nextHeaderItemToFocus","onSearchDeactivateFromHeader","$changeSite","toArray","reduce","totalSearchResults","calculateTotalSearchResults","search_term","search_results_count","$target","targetUrl","clickedText","link_url","onSearchTermChange","onSearchInputFocus","onSearchInputFocusOut","onSearchDeactivateKeyup","onFocusOutCollapseBtn","onSearchDeactivate","clickOutsideSearchElement","onMobileTabChange","searchEvents","clickOnSearchResultItem","StickyMenu","$headerMenu","$menuWrapper","$submenu","deactivate","defaultOffset","Table","table","$table","rowIndex","heading","innerText","setTableColumnDataLabels","Tabs","onTabClick","$tab","highlightActiveTab","activateActiveTab","Tooltip","isOpen","one","open","elementPosition","tooltip","glossaryElement","getPosition","$tooltip","removeTooltip","tooltipWidth","playerSelector","jwChildWithPop","currentJwplayer","setCurrentPlayer","setCurrentPlayerElement","playerElement","getCurrentPlayer","getCurrentPlayerElement","registerModule","markup","initJwplayer","setupClonedButton","buttonClone","instantiatePlayer","urlHref","urlHls","videoName","progressive","hls","analytics","playOnReady","appendPlayerToPopup","IsJwplayerContainerReady","mfpPlayer","hasChildNodes","getJwplayer","template","updateStatus","isDone","magnificPopupSetup","clickedElement","ev","DealerLocatorMap","infoWindow","selectedLocation","locations","markerLocationPairs","defaultCenter","getCountryCenter","google","maps","mapTypeControl","fullscreenControl","streetViewControl","InfoWindow","ajax","dataType","headers","Content-Type","createMarkers","initAutocomplete","sessionToken","autocomplete","countryCode","places","AutocompleteSessionToken","Autocomplete","componentRestrictions","country","fields","addListener","place","getPlace","address_components","countryComponent","component","types","short_name","geometry","marker","setMap","domain","lat","lng","de","fr","pl","it","uk","pt","ca","es","cz","be","at","se","no","showMarkers","customIcon","scaledSize","Size","Latitude","Longitude","latLng","LatLng","Marker","Name","icon","showInfoWindow","address","Street","Location","Zip","contentString","Phone","setContent","zoomLevel","maxDistance","Infinity","level","_this4","spherical","filteredMarkers","markerLatLng","computeDistanceBetween","filterType","_this5","getZoomLevelForDistance","filterMarkersByDistance","_ref3","clearMarkers","_ref4","setCenter","setZoom","showSearchResults","_this6","resultsList","empty","resultsHtml","elementA","elementB","Prio","_ref5","markerIndex","_filteredMarkers$mark","_this7","isDesktop","displaySearchResults","ready","isOnPage","googleMapsKey","GoogleMapsApiKey","dlrLocatorInitMap","initMap","script","link","getHeaderHeight","_getHeaderHeight","elementTop","elementBottom","screenBottom","screenTop","ImageLazyload","IntersectionObserver","handleIntersect","observeImages","removeLazyLoadedOnLoad","entry","$image","isIntersecting","img","_siteSearch","_dropdown","_stickyMenu","_scrollToTop","_clickToScrollToElement","_accordion","_tabs","_introCarousel","_productCarousel","_boxCarousel","_promoboxCarousel","_carouselAlt","_carouselGallery","_mobileNav","_selectMultiLevel","_showMore","_tooltip","_popup","_table","_iframePopup","_sizeGuidePopup","_protectsCarousel","_productSupportingCarouselFrost","_productList","_productViewOptions","_productFilterInfoPanel","_headingHandler","_headerScrollMobile","_externalLinksMegaMenu","_productSupportingCarouselJobst","_productsComparePopup","_dealerLocator","_imageLazyload","_productReviewAccessibility","HMSCommon","initClass","genericInit","PopupHandler","ProductsViewOptions","infoPanel","HeadingHandler","ProductComparePopup","ProductReviewAccessibility","$selectedFilterGroup","$targetClick","$infoPanelContentGroup","$filterGroup","togglePanel","$comparePopup","$productCard","productName","productImg","addProductToComparePopup","removeProductFromComparePopup","updatePopupVisibility","updateCompareLink","updateCheckboxStates","clearAllSelections","imgSrc","$productBox","$productNameElem","$productImgElem","$unselectedText","show","$compareLink","selectedProductIds","currentUrl","searchParams","maxProducts","selectedProductCount","$compareCheckboxes","not","$titleDesktop","$titleMobile","productTitleMobileHTML","productTitleDesktopHTML","toggleHeading","enhanceAccessibility","$starsContainer","labelValue","aria-hidden","tabindex","aria-label","$optionsGroups","selectedView","toggleView","triggerClass","isReviewPopup","togglePopup","$panelWrapper","$body","$openPopup","$closePopup","$popupContainer","fillComparePopup","popupContainer","data-src","class"],"mappings":"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","file":"index.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","'use strict';\n\nrequire('./index').polyfill();\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","/**\n * Swiper 8.4.5\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2022 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 21, 2022\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","/* eslint-disable camelcase */\nimport { pushToDataLayer } from '../pushToDataLayer';\n\n/**\n * Toggled from accordion.js\n * @param {String} title\n */\nexport const analyticsAccordionItemOpen = title => {\n pushToDataLayer({\n event: 'engagement',\n action: 'accordion-open',\n label: title\n });\n};\n\n/**\n * Handles the analytics tracking for sample requests. This function is responsible for sending data\n * to the dataLayer at different steps of the sample request process. It tracks user interactions\n * such as initiating the request form, selecting a product, filling out the form, and confirming the order\n *\n * Toggled from productSample.js\n * @param {String} step - Step number / Confirmation for last step\n * @param {String} selectedItemName\n */\nexport const analyticsSampleRequest = (step, selectedItemName) => {\n const $formSample = $('.js-form-sample');\n const stepNumber = parseInt(step.split(' ')[1], 10);\n const productId = parseInt(localStorage.getItem('currentId'));\n let isAnalyticsPushed = false;\n\n // Initial push to dataLayer\n pushToDataLayer({\n event: 'gaEvent',\n eventTrigger: 'sampleRequest',\n eventCategory: 'Sample request',\n eventAction: step,\n eventLabel: selectedItemName\n });\n\n // Step 1 - Push selected product info to dataLayer.\n if (stepNumber === 1) {\n pushToDataLayer({\n event: 'ga4_sample_form',\n ga4_data: {\n action_type: 'Initiate request form',\n step_name: 'Choose your product',\n step_number: stepNumber,\n single_item_id: '',\n single_item_name: selectedItemName\n }\n });\n }\n\n if ($formSample.length) {\n const formId = $('form').attr('id');\n sessionStorage.setItem('formId', formId);\n\n pushToDataLayer({\n event: 'ga4_form_visible',\n ga4_data: {\n form_name: 'Sample Order',\n form_id: formId\n }\n });\n\n /*\n Step 2/3 - On some publications, the form is on the second and somewhere on the third step,\n such as the example with the Polish site. This means that on those sites there is a step 2 which\n is an extra step that should not be followed with push to dataLayer. (Jira: HMS-6045)\n */\n $formSample.find('.form-field').on('change', () => {\n const isFormValid = $formSample.find('.valid').length > 0 || $('.field-checkbox').is(':checked');\n\n if (isFormValid && !isAnalyticsPushed) {\n pushToDataLayer({\n event: 'ga4_sample_form',\n ga4_data: {\n action_type: 'Filling out the form',\n step_name: 'Delivery information',\n step_number: 2,\n single_item_id: productId,\n single_item_name: selectedItemName\n }\n });\n\n pushToDataLayer({\n event: 'ga4_form_start',\n ga4_data: {\n form_name: 'Sample Order',\n form_id: formId\n }\n });\n isAnalyticsPushed = true;\n }\n });\n }\n};\n\n/**\n * Tracks a product comparison event in Google Analytics.\n *\n * @param {string} productId - The ID of the selected product.\n * @param {string} selectedProductName - The name of the selected product.\n */\nexport const analyticsCompareProductListener = (productId, selectedProductName) => {\n pushToDataLayer({\n event: 'ga4_product_comparison',\n ga4_data: {\n action_type: 'Add product',\n single_item_id: productId,\n single_item_name: selectedProductName,\n link_text: selectedProductName\n }\n });\n};\n\n/**\n * Events after the form has been sent\n * @param {Node} $form\n */\nexport const analyticsFormSend = $form => {\n function getProductName() {\n if (window.HMS.ProductSample && window.HMS.ProductSample.productSelectedName\n && window.HMS.ProductSample.productSelectedName.length) {\n return window.HMS.ProductSample.productSelectedName;\n }\n\n if ($('#AvailableSampleProducts').length) {\n return $('#AvailableSampleProducts').select2('data')[0].text;\n }\n\n return '';\n }\n\n switch ($form.data('formtype').toLowerCase()) {\n case 'sampleorder': {\n let status = $('.js-sample-form-status').data('form-status');\n\n if ($('.js-sample-form-status').length) {\n if (status === '') {\n status = 'Blacklisted';\n }\n analyticsSampleRequest(status, getProductName());\n }\n\n pushToDataLayer({\n event: 'ga4_form_submit',\n ga4_data: {\n form_name: 'Sample Order',\n form_id: sessionStorage.getItem('formId')\n }\n });\n\n if(status !== 'Refused') {\n pushToDataLayer({\n event: 'ga4_sample_form',\n ga4_data: {\n action_type: 'Confirmation',\n step_name: 'Order Confirmation',\n step_number: 3,\n single_item_id: localStorage.getItem('currentId'),\n single_item_name: localStorage.getItem('currentProductName')\n }\n });\n }\n break;\n }\n case 'contactus': {\n pushToDataLayer({\n event: 'gaEvent',\n eventTrigger: 'formSubmit',\n eventCategory: 'Form',\n eventAction: 'Submit',\n eventLabel: 'Contact us'\n });\n\n pushToDataLayer({\n event: 'ga4_form_submit',\n ga4_data: {\n form_name: 'Contact us',\n form_id: $('form').attr('id')\n }\n });\n break;\n }\n case 'askthedoctor': {\n pushToDataLayer({\n event: 'engagement',\n action: 'askTheDoctor'\n });\n\n pushToDataLayer({\n event: 'ga4_form_submit',\n ga4_data: {\n form_name: 'Ask the doctor',\n form_id: sessionStorage.getItem('trackedFormId')\n }\n });\n break;\n }\n case 'newsletter': {\n pushToDataLayer({\n event: 'gaEvent',\n eventTrigger: 'formSubmit',\n eventCategory: 'Form',\n eventAction: 'Submit',\n eventLabel: 'Newsletter',\n eventValue: undefined\n });\n\n pushToDataLayer({\n event: 'ga4_form_submit',\n ga4_data: {\n form_name: 'Newsletter form',\n form_id: sessionStorage.getItem('trackedFormId')\n }\n });\n break;\n }\n default:\n break;\n }\n\n if ($form.find('.ga-email-optin').length > 0) {\n pushToDataLayer({\n event: 'gaEvent',\n eventTrigger: 'emailOptIn',\n eventCategory: 'Email Opt-In',\n eventAction: 'Subscribe',\n eventLabel: window.location\n });\n }\n};\n","/**\n * Pushes analytics data to dataLayer\n * @param {Object} data\n*/\nexport const pushToDataLayer = data => {\n\twindow.dataLayer.push(data);\n};\n","import { Carousel } from './carousel';\n\nexport class BoxCarousel extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-boxCarousel';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(BoxCarousel.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, BoxCarousel.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false, \n });\n }\n\n return super.extendConfig({\n loop: false,\n watchSlidesVisibility: true,\n centeredSlides: true,\n spaceBetween: 10,\n breakpoints: {\n 992: {\n centeredSlides: false,\n slidesPerView: 3,\n spaceBetween: 20\n }\n },\n autoplay: super.toggleAutoplay($carousel),\n pagination: {\n el: '.js-carousel-box-pagination',\n clickable: true,\n type: 'bullets'\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n });\n }\n}","/* global VideoPlayer */\nimport { config } from './config';\n\nimport Swiper, { Navigation, Pagination, Lazy, Autoplay, Scrollbar } from 'swiper';\nimport { isXPM } from '../helpers/isXPM';\nimport { VideoPopup } from '../common/videoPopup';\n\n/**\n * Carousel is a generic carousel component with common carousel methods.\n */\nexport class Carousel {\n /**\n * Toggle autoplay functionality depending of presence of 'autoplay' attribute on container\n * @param {Node} $carousel Carousel container dom node\n * @returns {Boolean}\n */\n toggleAutoplay($carousel) {\n /**\n * Disable autoplay when in XPM\n */\n if (!$carousel.hasAttribute('autoplay') || isXPM() ) {\n return false;\n }\n\n const interval = $carousel.getAttribute('autoplay-interval');\n\n return interval ? { delay: interval } : config.autoplay;\n }\n\n /**\n * Check if carousel has only one slide\n * @param {Node} carousel Carousel container dom node\n * @returns {Boolean}\n */\n hasSingleSlide(carousel) {\n return carousel.getElementsByClassName('swiper-slide').length === 1;\n }\n\n /**\n * Check if carousel has autoplay attribute\n * @param {Node} carouselID\n * @returns {boolean}\n */\n hasAutoplayAttr(carouselID) {\n return $(`#${carouselID}`).attr('autoplay');\n }\n\n /**\n * Extends common config with passed config\n * @param {Object} extendConfig - Passed override of the common config\n * @returns {Object} Extended config\n */\n extendConfig(extendConfig) {\n const extendedConfig = $.extend({}, config, extendConfig);\n\n if (extendedConfig.pagination) {\n extendedConfig.modules.push(Pagination);\n }\n\n if (extendedConfig.navigation) {\n extendedConfig.modules.push(Navigation);\n }\n\n if (extendedConfig.lazy) {\n extendedConfig.modules.push(Lazy);\n }\n\n if (extendConfig.autoplay) {\n extendedConfig.modules.push(Autoplay);\n }\n\n if (extendConfig.scrollbar) {\n extendedConfig.modules.push(Scrollbar);\n }\n\n return extendedConfig;\n }\n\n togglePlayPauseText(carousel) {\n const $button = carousel.find('.js-play-pause-text');\n let currentState = $button.text();\n let nextState = $button.attr('data-state-toggle');\n\n $button.text(nextState).attr('data-state-toggle', currentState);\n }\n\n togglePlayPauseAriaLabel(carousel) {\n const $button = carousel.find('.js-play-pause-btn');\n let currentState = $button.attr('aria-label');\n let nextState = $button.attr('data-aria-label-toggle');\n\n $button.attr('aria-label', nextState).attr('data-aria-label-toggle', currentState);\n }\n\n /**\n * Inits video popups for duplicate slides\n * @param {Object} carousel\n * @param {Node} $carousel\n */\n supportDuplicateSlideVideos(carousel, $carousel) {\n carousel.on('slideChangeTransitionEnd', () => {\n if ($carousel.find('.swiper-slide-duplicate.swiper-slide-active .js-video-popup').length) {\n new VideoPopup();\n }\n });\n }\n\n /**\n * Inits the carousels in child classes\n * @param {Object} carouselClass - child class\n * @param {String} selector - css selector of carousel container\n */\n init(carouselClass, selector) {\n this.videoPaused = true;\n $.each($(selector), (index, carouselNode) => {\n const $carousel = $(carouselNode);\n const id = `${selector.replace('.js-', '')}-${index}`;\n $carousel.attr('id', id);\n const carousel = new Swiper(`#${id}`, carouselClass.generateConfig(carouselNode));\n // Added carousel to child class map for future use\n carouselClass.carousel.set(id, carousel);\n carousel.init();\n /** If video get supported on promobox carousel remove selector check */\n if (selector === '.js-intro-carousel' && $carousel.find('.js-video-popup').length) {\n this.supportDuplicateSlideVideos(carousel, $carousel);\n }\n\n /**\n * Carousel play-pause button.\n */\n if (this.hasSingleSlide(carouselNode) || !this.hasAutoplayAttr(id)) {\n $carousel.find('.js-play-pause-btn').css('display', 'none');\n } else {\n $carousel.find('.js-play-pause-btn').off('click').on('click', () => {\n if ($carousel.find('.js-play-pause-text').length > 0) {\n this.togglePlayPauseText($carousel);\n }\n\n carousel.autoplay.running ? carousel.autoplay.stop() : carousel.autoplay.start();\n $carousel.find('.svg-icon.play-icon').toggleClass('play-icon--is-paused');\n this.togglePlayPauseAriaLabel($carousel);\n });\n }\n\n /**\n * Used for the box carousel component.\n * Toggles the play-pause state of a carousel.\n */\n if (this.hasSingleSlide(carouselNode) || !this.hasAutoplayAttr(id)) {\n $carousel.find('.js-play-pause-box-btn').hide();\n } else {\n $carousel.find('.js-play-pause-box-btn').off('click').on('click', () => {\n this.togglePlayPauseText($carousel);\n\n this.videoPaused = !carousel.autoplay.running;\n carousel.autoplay.running ? carousel.autoplay.stop() : carousel.autoplay.start();\n $carousel.find('.svg-icon.play-icon').toggleClass('play-icon--is-paused');\n });\n }\n\n carousel.on('slideChange', () => {\n for (const slide in carousel.slides) {\n if (typeof carousel.slides[slide] === 'object') {\n const $slide = $(carousel.slides[slide]);\n const $player = $slide.find('.inline-video-container .jwplayer');\n if ($player.length) {\n const $button = $slide.find('.js-video-playback-text');\n const playerId = $player.attr('id');\n carousel.activeIndex === Number(slide) ?\n window.jwplayer(playerId).play() : window.jwplayer(playerId).pause();\n\n let [pauseText, playText] = $button.attr('data-state-init').split(';');\n $button.text(pauseText).attr('data-state-toggle', playText);\n $carousel.find('.video-playback-svg').removeClass('video-playback-svg--is-paused');\n }\n }\n }\n\n /**\n * Implementation of setTimeout() to make code execution after manuel slider \n * change (swipe, slider dots click or next-previous arrow click). \n */\n setTimeout(() => {\n if (!carousel.autoplay?.running) {\n if ($carousel.find('.js-play-pause-text').length > 0 && this.videoPaused) {\n this.togglePlayPauseText($carousel);\n this.videoPaused = false;\n }\n\n $carousel.find('.svg-icon.play-icon').removeClass('play-icon--is-paused');\n }\n }, 0);\n });\n\n $carousel.find('.js-video-playback').off('click').on('click', (event) => {\n const $videoContainer = $(event.target).closest('.video-container');\n const $player = $($videoContainer).find('.jwplayer');\n\n if ($player.length) {\n const playerId = $player.attr('id');\n window.jwplayer(playerId).getState() === 'playing' ?\n window.jwplayer(playerId).pause() : window.jwplayer(playerId).play();\n\n const $button = $($videoContainer).find('.js-video-playback-text');\n let currentState = $button.text();\n let nextState = $button.attr('data-state-toggle');\n\n $button.text(nextState).attr('data-state-toggle', currentState);\n $carousel.find('.video-playback-svg').toggleClass('video-playback-svg--is-paused');\n }\n });\n\n carousel.on('init', () => {\n $carousel.find('.video-player-init-disabled').each((carouselIndex, player) => new VideoPlayer(player));\n });\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class CarouselAlt extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-carousel-alt';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(CarouselAlt.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, CarouselAlt.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false\n });\n }\n\n return super.extendConfig({\n loop: true,\n autoplay: super.toggleAutoplay($carousel),\n pagination: {\n el: '.js-carousel-alt-pagination',\n clickable: true,\n type: 'bullets'\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n }\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class CarouselGallery extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-carousel-gallery';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(CarouselGallery.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, CarouselGallery.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false\n });\n }\n\n return super.extendConfig({\n loop: false,\n slidesPerView: 'auto',\n spaceBetween: 10,\n watchSlidesVisibility: true,\n centeredSlides: true,\n breakpoints: {\n 768: {\n centeredSlides: false,\n slidesPerView: 2,\n spaceBetween: 20\n }\n },\n autoplay: super.toggleAutoplay($carousel),\n pagination: {\n el: '.js-carousel-gallery-pagination',\n clickable: true,\n type: 'bullets'\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n }\n });\n }\n}","export const config = {\n init: false,\n loop: true,\n lazy: true,\n autoplay: { delay: 3000 },\n speed: 1000,\n modules: []\n};","import { Carousel } from './carousel';\n\n/**\n * IntroCarousel is carousel component displayed in full width\n */\nexport class IntroCarousel extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-intro-carousel';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(IntroCarousel.selector);\n }\n\n constructor() {\n super();\n this.carousel = new Map();\n super.init(this, IntroCarousel.selector);\n }\n\n updateTabIndex(swiper) {\n $('.intro-carousel-link').attr('tabindex', '-1');\n $('.btn.intro-carousel-btn').attr('tabindex', '-1');\n const activeSlide = swiper.slides[swiper.activeIndex];\n $(activeSlide).find('.btn.intro-carousel-btn').attr('tabindex', '0');\n $(activeSlide).find('.intro-carousel-link').first().attr('tabindex', '0');\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false\n });\n }\n\n const that = this;\n\n return super.extendConfig({\n autoplay: super.toggleAutoplay($carousel),\n pagination: {\n el: '.js-carousel-pagination-intro',\n clickable: true,\n type: 'bullets'\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n on: {\n init: function () {\n that.updateTabIndex(this);\n },\n slideChange: function () {\n that.updateTabIndex(this);\n },\n },\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class ProductList extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-product-list';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(ProductList.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, ProductList.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false,\n });\n }\n\n return super.extendConfig({\n slidesPerView: 2.5,\n autoplay: false,\n loop: false,\n spaceBetween: 15,\n scrollbar: {\n el: '.js-product-list .swiper-scrollbar',\n hide: false,\n draggable: true\n },\n breakpoints: {\n 992: {\n spaceBetween: 15,\n slidesPerView: 4,\n },\n }\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class ProductCarousel extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-product-carousel';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(ProductCarousel.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, ProductCarousel.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false,\n });\n }\n\n return super.extendConfig({\n slidesPerView: 2.5,\n loop: false,\n scrollbar: {\n el: '.swiper-scrollbar',\n hide: false,\n draggable: true\n },\n breakpoints: {\n 992: {\n slidesPerView: 4.2,\n },\n }\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class ProductSupportingCarouselFrost extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-product-supporting-carousel-frost';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(ProductSupportingCarouselFrost.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, ProductSupportingCarouselFrost.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false,\n });\n }\n\n return super.extendConfig({\n slidesPerView: 2.5,\n loop: false,\n spaceBetween: 15,\n scrollbar: {\n el: '.product-supporting-carousel-frost .swiper-scrollbar',\n hide: false,\n draggable: true\n },\n breakpoints: {\n 992: {\n spaceBetween: 15,\n slidesPerView: 4,\n },\n }\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class ProductSupportingCarouselJobst extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-product-supporting-carousel-jobst';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(ProductSupportingCarouselJobst.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, ProductSupportingCarouselJobst.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false,\n });\n }\n\n return super.extendConfig({\n slidesPerView: 2,\n loop: false,\n spaceBetween: 15,\n pagination: {\n el: '.js-carousel-pagination-supporting-jobst',\n clickable: true,\n type: 'bullets'\n },\n breakpoints: {\n 992: {\n spaceBetween: 15,\n slidesPerView: 4,\n },\n }\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class PromoCarousel extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-carousel';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(PromoCarousel.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, PromoCarousel.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false,\n roundLengths: true\n });\n }\n\n return super.extendConfig({\n autoplay: super.toggleAutoplay($carousel),\n watchSlidesVisibility: true,\n loopFillGroupWithBlank: true,\n spaceBetween: 10,\n breakpoints: {\n 992: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n spaceBetween: 30\n }\n },\n pagination: {\n el: '.js-carousel-pagination',\n clickable: true,\n type: 'bullets'\n },\n roundLengths: true\n });\n }\n}","import { Carousel } from './carousel';\n\nexport class CarouselProtects extends Carousel {\n /**\n * css selector of carousel container\n * @static\n */\n static selector = '.js-protects-carousel';\n\n /**\n * Checks if container node is present in the dom\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return document.querySelector(CarouselProtects.selector);\n }\n\n constructor() {\n super();\n\n this.carousel = new Map();\n super.init(this, CarouselProtects.selector);\n }\n\n /**\n * Generate config depending of the number of the slides in carousel by extending the default config\n * @param {Node} $carousel - Carousel DOM Node\n * @returns {Object} extended config\n */\n generateConfig($carousel) {\n if (super.hasSingleSlide($carousel)) {\n return super.extendConfig({\n pagination: false,\n loop: false,\n autoplay: false\n });\n }\n\n return super.extendConfig({\n loop: false,\n slidesPerView: 'auto',\n spaceBetween: 0,\n watchSlidesVisibility: true,\n centeredSlides: true,\n autoplay: super.toggleAutoplay($carousel),\n breakpoints: {\n 768: {\n centeredSlides: false,\n slidesPerView: 1,\n spaceBetween: 0\n }\n },\n pagination: {\n el: '.js-carousel-alt-pagination',\n clickable: true,\n type: 'bullets'\n }\n });\n }\n}","import { analyticsAccordionItemOpen } from '../analytics/listeners/externallyTriggeredEvents';\nimport { isInView } from '../helpers/isInView';\nimport { scrollToElement } from '../helpers/scrollToElement';\nimport { eventKeyCodes } from '../helpers/eventKeyCodes';\n\nexport class Accordion {\n static isOnPage() {\n return $('.js-accordion').length !== 0;\n }\n\n constructor() {\n this.init();\n $('.js-accordion-content').hide();\n }\n\n activateArrow($arrow) {\n $arrow\n .removeClass('icon-arrow-down')\n .addClass('icon-arrow-up');\n }\n\n deactivateAllArrows($accordion) {\n $accordion.find('.js-accordion-arrow')\n .removeClass('icon-arrow-up')\n .addClass('icon-arrow-down');\n }\n\n activateItem(item) {\n const $item = $(item).parents('.js-accordion-item');\n this.deactivateAll($item.parents('.js-accordion'));\n $item\n .addClass('accordion-expanded')\n .removeClass('accordion-collapsed');\n this.activateArrow($item.find('.js-accordion-arrow'));\n $item.find('.js-accordion-content').slideDown(() => {\n if (!isInView(item)) {\n scrollToElement($item);\n }\n\t\t});\n\t\tanalyticsAccordionItemOpen($.trim($item.find('.js-accordion-toggle').text()));\n }\n\n deactivateAll($accordion) {\n $accordion.find('.js-accordion-item')\n .removeClass('accordion-expanded')\n .addClass('accordion-collapsed');\n this.deactivateAllArrows($accordion);\n $accordion.find('.js-accordion-content').slideUp();\n }\n\n onToggle(target) {\n if ($(target).parents('.js-accordion-item').hasClass('accordion-collapsed')) {\n this.activateItem(target);\n } else {\n this.deactivateAll($(target).parents('.js-accordion'));\n }\n }\n\n addEvents() {\n $('.js-accordion-toggle').on('click keydown', (event) => {\n if (event.type === 'click' || event.keyCode === eventKeyCodes.enter) {\n event.preventDefault();\n this.onToggle(event.currentTarget);\n }\n });\n }\n\n init() {\n this.addEvents();\n }\n}","import { scrollToElement } from '../helpers/scrollToElement';\n\n/**\n * Handling the click on a sire-achor that leads to an element\n */\nexport class ClickToScrollToElement {\n /**\n * Checking if the element is on the page\n * @returns {boolean}\n */\n static isOnPage() {\n return $('.js-clicked-scroll-to-element').length !== 0;\n }\n\n /**\n * Finds the side-anchor and add the scroll logic with some added padding above\n */\n constructor() {\n $('.js-clicked-scroll-to-element').on('click', (event) => {\n event.preventDefault();\n var $el = $($(event.currentTarget).attr('href'));\n if ($el.length) {\n scrollToElement($el);\n }\n });\n }\n}","import { eventKeyCodes } from './../helpers/eventKeyCodes';\nimport { isMobile } from './../helpers/isMobile';\n\n/**\n * Generic implementations for dropdowns.\n * Used on many pages.\n *\n * Html example:\n *
\n * Dropdown Link\n *
Dropdown Content
\n *
\n */\nexport class Dropdown {\n static isOnPage() {\n return document.getElementsByName('js-dropdown');\n }\n\n constructor() {\n this.siteNameWidth = $('.js-site-name').width();\n this.init();\n }\n\n /**\n * Closes all dropdowns on page\n */\n closeAllDropdowns() {\n const $dropdown = $('.js-dropdown');\n const $dropdownLink = $dropdown.find('.js-dropdown-link');\n const $dropdownContent = $dropdown.find('.js-dropdown-content');\n\n $dropdown.find('.arrow').remove();\n $dropdownContent.removeClass('submenu--is-active');\n $dropdownLink.removeClass('opened');\n $dropdown.removeClass('js-dropdown--is-active menu-item--is-in-focus');\n $('.js-menu-item-main-icon').removeClass('icon-arrow-up');\n }\n\n onDropdownLinkFocus(event) {\n this.closeAllDropdowns();\n\n $(event.currentTarget).parents('.menu-item.has-submenu').addClass('menu-item--is-in-focus');\n }\n\n /**\n * Closes single dropdown\n * @param {jQuery} $dropdown\n * @param {jQuery} $dropdownContent\n * @param {jQuery} $dropdownLink\n */\n closeDropdown($dropdown, $dropdownContent, $dropdownLink) {\n $dropdown.find('.arrow').remove();\n $dropdownContent.removeClass('submenu--is-active');\n $dropdownLink\n .removeClass('opened')\n .find('.js-menu-item-main-icon').removeClass('icon-arrow-up');\n }\n\n /**\n * Shows arrow pointning from dropdown content to dropdown link\n * @param {jQuery} $dropdown\n * @param {jQuery} $dropdownLink\n */\n showArrow($dropdown, $dropdownLink) {\n let $arrow = $dropdown.find('.arrow');\n\n if (!$arrow.length) {\n $arrow = $('
');\n $dropdown.append($arrow);\n }\n\n $arrow.css({\n left: $dropdownLink[0].offsetLeft + ($dropdownLink.width() / 2) - ($arrow.width() / 2)\n });\n\n if ($dropdown.find('.js-is-show-more-dropdown').length) {\n const $dropdownContent = $dropdown.find('.js-dropdown-content');\n const $siteName = $('.js-site-name');\n const siteNameBottom = $siteName.offset().top + $siteName.find('a').height();\n const middle = $siteName.offset().left + ($siteName.width() / 2);\n let dropdownsLeft = middle - ($dropdownContent.width() / 2);\n\n if (this.siteNameWidth > 120 && window.innerWidth > 992) {\n dropdownsLeft = 'auto';\n }\n\n $arrow.offset({\n left: middle - ($arrow.width() / 2),\n top: siteNameBottom\n });\n\n $dropdownContent.offset({\n left: dropdownsLeft,\n top: $arrow.offset().top + $arrow.height() - 1\n });\n }\n }\n\n /**\n * Opens dropdown\n * @param {jQuery} $dropdown\n * @param {jQuery} $dropdownLink\n */\n openDropdown($dropdown, $dropdownLink) {\n const $dropdownContent = $dropdown.find('.js-dropdown-content');\n\n if ($dropdown.hasClass('js-country-selector')) {\n const width = $dropdown.parents('.container').width();\n $dropdownContent.css({ width });\n }\n\n $dropdown.addClass('js-dropdown--is-active');\n $dropdownContent.addClass('submenu--is-active');\n this.showArrow($dropdown, $dropdownLink);\n $dropdownLink\n .addClass('opened')\n .find('.js-menu-item-main-icon').addClass('icon-arrow-up');\n }\n\n /**\n * Toggles dropdown visibillity.\n * @param {jQuery} $dropdown\n * @param {jQuery} $dropdownContent\n * @param {jQuery} $dropdownLink\n */\n toggleDropdown($dropdown, $dropdownContent, $dropdownLink) {\n if ($dropdownLink.length > 1) {\n // Prevent duplicated toggle call when there are multiple dropdown links in the dropdown.\n // This will happen when a button is added in addition to link for keyboard usage.\n\n return;\n }\n\n if ($dropdownLink.hasClass('opened')) {\n this.closeDropdown($dropdown, $dropdownContent, $dropdownLink);\n } else {\n this.openDropdown($dropdown, $dropdownLink);\n }\n }\n\n /**\n * Opens dropdown on larger screens.\n * If Table filter - sets css 'left' property to position the dropdown in a scrollable container.\n * @param {jQuery} $dropdown\n * @param {jQuery} $dropdownLink\n */\n onDropdownHover($dropdown, $dropdownLink) {\n if (!isMobile() || !$dropdownLink.hasClass('menu-item-expand')) {\n this.openDropdown($dropdown, $dropdownLink);\n\n if ($dropdown.attr('tableType') === 'tableFilter') {\n // #js-table_wrapper ID generated by Swiper.js\n const tableLeftOffset = $dropdown.parents('#js-table_wrapper').offset().left;\n const dropdownLeftOffset = $dropdown.offset().left;\n\n $dropdown.find('.submenu').css({left: dropdownLeftOffset - tableLeftOffset});\n }\n }\n }\n\n /**\n * TODO: Refactor events and groups those that go on same element.\n * Example - https://learn.jquery.com/events/handling-events/#many-events-and-handlers\n *\n * Adds hover event for large screens, click for small, as well as events for keyboard navigation.\n * @param {HTMLElement} dropdown\n */\n addEventListeners(dropdown) {\n const $dropdown = $(dropdown);\n const $dropdownLink = $dropdown.find('.js-dropdown-link');\n const $dropdownContent = $dropdown.find('.js-dropdown-content');\n\n $dropdownLink.on('mouseover', () => this.onDropdownHover($dropdown, $dropdownLink));\n\n $dropdownLink.on('click', () => {\n if (isMobile() || $dropdownLink.hasClass('menu-item-expand')) {\n if ($dropdownLink.hasClass('opened')) {\n return this.closeDropdown($dropdown, $dropdown.find('.js-dropdown-content'), $dropdownLink);\n }\n this.openDropdown($dropdown, $dropdownLink);\n }\n });\n\n $dropdown.on('mouseleave', () => {\n const isSegmentDropdown = $dropdown.hasClass('ChangeSite-container');\n\n this.segmentTimeout = setTimeout(() => {\n if (!isMobile() || !$dropdownLink.hasClass('menu-item-expand')) {\n this.closeDropdown($dropdown, $dropdownContent, $dropdownLink);\n }\n\n if (!isMobile() && $dropdownLink.hasClass('menu-item-expand')) {\n $('body').removeClass('body-backdrop');\n }\n }, isSegmentDropdown ? 300 : 0);\n });\n\n // When the dropdown link is focused open the dropdown on enter, and close on escape.\n $dropdownLink.on('keyup', event => {\n const { enter, escape } = eventKeyCodes;\n\n if (event.which === enter) {\n this.toggleDropdown($dropdown, $dropdownContent, $dropdownLink);\n }\n\n if (event.which === escape) {\n this.closeDropdown($dropdown, $dropdownContent, $dropdownLink);\n }\n });\n\n // Used to close previously opened dropdowns when navigating to the new ones link.\n // Solves problem of closing popup when navigating away from firm with shift + tab\n $dropdownLink.on('focus', event => this.onDropdownLinkFocus(event));\n\n const $dropdownContentLinks = $dropdownContent.find('a');\n // Used to close the dropdown when navigating away from the last link in the dropdown.\n $dropdownContentLinks.on('focusout', event => {\n const $nextFocusableElement = $(event.originalEvent.relatedTarget);\n\n if ($dropdownContent.find($nextFocusableElement).length === 0) {\n this.closeDropdown($dropdown, $dropdownContent, $dropdownLink);\n $('.js-dropdown').removeClass('menu-item--is-in-focus');\n }\n });\n\n $dropdownContentLinks.on('keyup', event => {\n const { escape } = eventKeyCodes;\n if (event.which === escape) {\n this.closeDropdown($dropdown, $dropdownContent, $dropdownLink);\n $dropdownLink.focus();\n }\n });\n\n const onKeyboardFocusOut = event => {\n const $nextFocusableElement = $(event.originalEvent.relatedTarget);\n\n if ($dropdownContent.find($nextFocusableElement).length === 0) {\n $('.js-dropdown').removeClass('menu-item--is-in-focus');\n }\n };\n\n $dropdown.find('.js-menu-item-expand-keyboard')\n .on('focusout', event => onKeyboardFocusOut(event));\n\n $('.js-menu .js-dropdown:first-child .js-menu-item-main-link').on('focusout', event => {\n const $nextFocusableElement = $(event.originalEvent.relatedTarget);\n\n if (!$nextFocusableElement.parents('.js-dropdown').length) {\n $('.js-dropdown').removeClass('menu-item--is-in-focus');\n }\n });\n }\n\n /**\n * Fixes width of change size dropdown. Needed for active long segment name.\n */\n fixChangeSiteDropdownWidth() {\n if (this.siteNameWidth > 120 && !isMobile()) {\n $('.ChangeSite-list').css('width', this.siteNameWidth + 100);\n }\n }\n\n init() {\n $.each($('.js-dropdown'), (index, dropdown) => this.addEventListeners(dropdown));\n\n this.fixChangeSiteDropdownWidth();\n }\n}\n","import { convertUrlToAbsolute } from '../helpers/convertUrlToAbsolute';\n\n/**\n * Represents a class for handling external links in the mega menu and if it is an external link, it will add SVG to it.\n */\nexport class ExternalLinksMegaMenu {\n /**\n * Checks if the submenu is present on the page.\n * @returns {boolean}\n */\n static isOnPage() {\n return $('.js-external-links').length !== 0;\n }\n\n constructor() {\n this.init();\n }\n\n init() {\n const $dropdownContent = $('.js-external-links');\n const links = $dropdownContent.find('a');\n // Remove 'www.' prefix from the hostname\n const locationHostname = window.location.hostname.replace(/^www\\./, '');\n\n const elementContent = `\n \n \n \n `;\n\n links.each((index, element) => {\n const $element = $(element);\n\n if ($element.find('.svg-external-link').length > 0) {\n return;\n }\n\n let targetURL = convertUrlToAbsolute($element.attr('href'));\n const linkUrlObject = new URL(targetURL);\n const linkUrlHostname = linkUrlObject.hostname.replace(/^www\\./, '');\n const outbound = locationHostname !== linkUrlHostname;\n\n if (outbound) {\n $element.addClass('u-hide-after');\n $element.append(elementContent);\n }\n });\n }\n}\n","import { isMobile } from '../helpers/isMobile';\n/**\n * Represents a class for handling header scrolling on mobile devices.\n */\nexport class HeaderScrollMobile {\n /**\n * Checks if the header is present on the page.\n * @returns {boolean} True if the header is present, false otherwise.\n */\n static isOnPage() {\n return $('.js-menu').length !== 0;\n }\n\n /**\n * Initializes a new instance of the HeaderScrollMobile class.\n */\n constructor() {\n this.$window = $(window);\n this.$header = $('#mainheader');\n\n this.$window.scroll(() => this.toggle());\n this.$window.resize(() => this.toggle());\n }\n\n /**\n * Toggles the header class based on the scroll position.\n */\n toggle() {\n if (!isMobile() && this.$window.scrollTop() > 100) {\n this.$header.addClass('header-on-scroll');\n } else if (isMobile() && this.$window.scrollTop() > 50) {\n this.$header.addClass('header-on-scroll');\n } else {\n this.$header.removeClass('header-on-scroll');\n }\n }\n}\n","export class IframePopup {\n static isOnPage() {\n return $('.iframe-popup').length !== 0;\n }\n\n constructor() {\n this.addIframeParamSuffix();\n this.addEventListeners();\n }\n\n addIframeParamSuffix() {\n $('.iframe-popup').each((index, element) => {\n const $element = $(element);\n $element.attr('href', `${$element.attr('href')}?iframe=yes`);\n });\n }\n\n addEventListeners() {\n $('.iframe-popup').magnificPopup({\n mainClass: 'iframe-popup-large',\n type: 'iframe',\n iframe: {\n patterns: {\n azure: {\n index: 'azure.com',\n id: () => 0,\n src: 'http://www.azure.com/embed/%id%'\n }\n }\n }\n });\n }\n}\n","import { isMobile } from '../helpers/isMobile';\nimport { Select } from './select';\n\nexport class MobileNav {\n constructor() {\n this.isInited = false;\n this.isActive = false;\n if (isMobile() && !this.isInited) {\n this.init();\n }\n $(window).on('resize', () => {\n if ($(document.activeElement).attr('type') !== 'search') {\n this.onResize();\n }\n });\n }\n\n onResize() {\n if (this.isInited) {\n $('.js-mobile-header-changeLang').select2('close');\n }\n\n if (isMobile() && !this.isInited) {\n this.init();\n } else {\n this.toggle('deactivate');\n }\n }\n\n toggle(mode) {\n if (mode && mode === 'deactivate') {\n this.isActive = false;\n } else {\n this.isActive = !this.isActive;\n }\n $('body').toggleClass('mobile-nav--is-active', this.isActive);\n }\n\n onChangeCountry(event) {\n if (event.target.value) {\n window.location.replace(event.target.value);\n }\n }\n\n onMainNavItemClick(event) {\n if (isMobile()) {\n // Disable navigating away if the main nav item is clicked on the mobile.\n event.preventDefault();\n }\n }\n\n init() {\n this.isInited = true;\n\n $('.js-mobile-menu-trigger').on('click', () => this.toggle());\n $('.js-menu-item-main-link').on('click', event => this.onMainNavItemClick(event));\n $(document).on('click', '.mobile-nav--is-active .js-mobile-backdrop',\n () => this.toggle('deactivate'));\n\n const $mobileChangeCountry = $('.js-mobile-header-changeLang');\n $mobileChangeCountry.select2(Select.getSelectConfig($mobileChangeCountry));\n $mobileChangeCountry.on('change', event => this.onChangeCountry(event));\n\n const $mobileChangeCountryFooter = $('.js-mobile-footer-changeLang');\n $mobileChangeCountryFooter.select2(Select.getSelectConfig($mobileChangeCountryFooter));\n $mobileChangeCountryFooter.on('change', event => this.onChangeCountry(event));\n }\n}\n","export class Popup {\n\tstatic isOnPage() {\n\t\treturn $('.js-popup-container').length !== 0;\n\t}\n\n\tconstructor() {\n\t\tthis.init();\n\t\tthis.addEventListeners();\n\t}\n\n\tinit() {\n\t\t$('.js-popup-trigger').magnificPopup({\n\t\t\tcloseBtnInside: true,\n\t\t\ttype: 'inline'\n\t\t});\n\t}\n\n\taddEventListeners() {\n\t\t$('.js-popup-close').on('click', () => $.magnificPopup.instance.close());\n\t}\n}\n","import { eventKeyCodes } from '../helpers/eventKeyCodes';\n\nexport class ScrollToTop {\n static isOnPage() {\n return $('.Button--backToTop').length !== 0;\n }\n constructor() {\n this.$button = $('.Button--backToTop');\n this.visible = false;\n\n $(window).scroll(() => this.toggleButton());\n this.$button.click(() => this.ScrollToTop());\n this.$button.on('keydown', (e) => {\n if (e.keyCode === eventKeyCodes.enter) {\n this.ScrollToTop()\n }\n })\n }\n\n toggleButton() {\n if (window.scrollY >= 250 && !this.visible) {\n this.$button.fadeIn('slow');\n this.visible = true;\n }\n if (window.scrollY < 250 && this.visible) {\n this.$button.fadeOut('slow');\n this.visible = false;\n }\n }\n\n ScrollToTop() {\n $('html, body').animate({ scrollTop: 0 }, 400);\n }\n}","export class Select {\n static getSelectConfig($select) {\n const config = { dir: document.dir };\n if (!$select.hasClass('js-select-show-search')) {\n config.minimumResultsForSearch = 'Infinity';\n }\n\n if ($select.hasClass('js-mobile-header-changeLang')) {\n config.dropdownParent = '.header-menu-container';\n }\n\n if ($select.hasClass('js-mobile-footer-changeLang')) {\n config.dropdownParent = '.footer-frost';\n }\n\n return config;\n }\n\n static isOnPage() {\n return $('.js-select').length !== 0;\n }\n\n constructor() {\n window.onload = $(() => {\n $.each($('.js-select'), (index, select) => {\n const $select = $(select);\n\n if (!$select.hasClass('js-select-init-disable')) {\n $select.select2(Select.getSelectConfig($select));\n }\n });\n });\n }\n}\n","export const selectMultiLevelConfig = {\r\n dir: document.dir,\r\n minimumResultsForSearch: 'Infinity',\r\n templateResult: data => {\r\n if (!data.element) {\r\n return data.text;\r\n }\r\n const $wrapper = $('');\r\n $wrapper.addClass($(data.element)[0].className);\r\n $wrapper.text(data.text);\r\n\r\n return $wrapper;\r\n }\r\n};\r\n\r\n/**\r\n * Inits Select2 plugin for dropdowns that have 3 levels of options\r\n */\r\nexport class SelectMultiLevel {\r\n static isOnPage() {\r\n return $('.js-select-multilevel').length !== 0;\r\n }\r\n\r\n constructor() {\r\n $(() => {\r\n $.each($('.js-select-multilevel'), (index, select) =>\r\n $(select).select2(selectMultiLevelConfig));\r\n });\r\n }\r\n}\r\n","export class ShowMore {\n static isOnPage() {\n return $('.js-show-more-container').length !== 0;\n }\n\n constructor() {\n this.inited = false;\n this.items = [];\n this.init();\n $(window).on('resize', () => this.onResize());\n }\n\n onResize() {\n this.init();\n }\n\n onButtonClick(index, $content, $button, initialHeight) {\n $content.animate({ height: this.items[index].active ? initialHeight : this.items[index].height }, 'fast');\n $button.toggleClass('slideHide-show', !this.items[index].active);\n this.items[index].active = !this.items[index].active;\n }\n\n calculateHeight($element, rowsCount) {\n let paddingTop, lineHeight;\n const paddingTopValue = $element.css('padding-top');\n const lineHeightValue = $element.css('line-height');\n\n if (paddingTopValue) {\n paddingTop = parseInt(paddingTopValue.replace('px', ''));\n } else {\n paddingTop = 0;\n }\n\n if (lineHeightValue) {\n if (lineHeightValue.includes('px')) {\n lineHeight = parseFloat(lineHeightValue);\n } else {\n const fontSize = parseFloat($element.css('font-size'));\n lineHeight = parseFloat(lineHeightValue) * fontSize;\n }\n } else {\n lineHeight = 22;\n }\n\n return parseInt(paddingTop + (rowsCount * lineHeight));\n }\n\n toggle(index, container) {\n $(container).find('.js-show-more-content').height('initial');\n const $container = $(container);\n const height = $container.find('.js-show-more-content').height();\n // Default value of rows is set to 5 if data-row-count attribute is not set.\n const rowCount = $container.data('row-count') || 5;\n this.items[index] = {\n active: false,\n height\n };\n\n const initialHeight = this.calculateHeight($container.find('p'), rowCount);\n const $content = $container.find('.js-show-more-content');\n const $button = $container.find('.js-show-more-toggle');\n $button.removeClass('slideHide-show');\n const toggle = height > 200;\n\n if (toggle) {\n $content.height(initialHeight);\n $content.addClass('ContentSlide');\n $button.parents('.Button--AccordionWrap').addClass('u-display-block');\n if (!this.inited) {\n $button.on('click', () => this.onButtonClick(index, $content, $button, initialHeight));\n }\n } else {\n $content.removeClass('ContentSlide');\n $button.parents('.Button--AccordionWrap').remove();\n }\n }\n\n init() {\n $.each($('.js-show-more-container'), (index, container) => this.toggle(index, container));\n this.inited = true;\n }\n}","/* eslint-disable camelcase */\nimport { eventKeyCodes } from '../helpers/eventKeyCodes';\nimport { pushToDataLayer } from '../analytics/pushToDataLayer';\nimport { convertUrlToAbsolute } from '../helpers/convertUrlToAbsolute';\nimport { isMobile } from '../helpers/isMobile';\n\nexport class SiteSearch {\n constructor() {\n this.searchTerm = '';\n this.searchPageUrl = $('.js-site-search-url').data('search-page-url');\n this.searchQueryValue = '';\n this.searchPlaceholderLength = $('.header-top .input-site-search').attr('placeholder').length;\n this.addEvents();\n\n if ($('.js-input-search-main').length > 0) {\n $('.site-search-page .js-btn-site-search').attr('disabled', $('.js-input-search-main').val().length === 0);\n this.searchQueryValue = $('.js-input-search-main').val();\n }\n\n if (!isMobile()) {\n $('.header-top .input-site-search').attr('size', this.searchPlaceholderLength - 1);\n }\n }\n\n static isOnPage() {\n return document.getElementsByClassName('js-site-search-url').length > 0;\n }\n\n /**\n * Used to increase width of input search on desktop devices\n * Also when the focus is shifted to the input field and overlay appears over main background\n * @param {Object} event\n */\n onSearchInputFocus(event) {\n if ($(event.currentTarget).parents('.js-search-header').length > 0) {\n $('.js-header-logo').addClass('u-disableLink');\n $('.js-search-overlay').addClass('u-display-none');\n $('.js-search-header').addClass('site-search-box--is-expanded');\n if(innerWidth > 992) {\n $('.links-container-wrapper').addClass('u-display-none');\n }\n $('.js-collapse-search-header').removeClass('u-display-none');\n $('.header').addClass('header-search-expanded');\n\n if ($('.js-overlay-search-bg').length === 0) {\n // Add overlay when input in header is focused\n\n let headerHeight = $('.header-search-expanded').height();\n\n $('body')\n .addClass('u-overflow-hidden')\n .prepend(`
`);\n }\n }\n }\n\n /**\n * Used for collapse input search wrapper on desktop devices\n * Hide overlay on btn close icon\n * Reset search result and enable search button\n * @param {Object} event\n */\n onSearchDeactivateFromHeader(event) {\n this.searchTerm = '';\n\n if ($(event.currentTarget).hasClass('js-collapse-search-header')) {\n this.collapseSearchHeader();\n }\n\n $('.js-header-logo').removeClass('u-disableLink');\n $('.js-btn-site-search').attr('disabled');\n }\n\n /**\n * Navigate to searchPageUrl without params to reset the search\n */\n onSearchDeactivate() {\n window.location.href = this.searchPageUrl;\n this.resetInputField(false);\n }\n\n /**\n * Add value to search input variable\n * Added keyboard events to redirect/close input field\n * @param {Object} event\n */\n onSearchTermChange(event) {\n this.searchTerm = event.target.value;\n\n $(event.currentTarget.classList.contains('js-input-search-header')\n ? '.js-reset-search-header'\n : '.js-reset-search-main'\n ).toggleClass('u-display-none', this.searchTerm.length === 0);\n\n // Redirect action on pressed enter key on keyboard\n if (event.which === eventKeyCodes.enter) {\n this.onSearch();\n }\n\n // Close search input field on pressed escape key on keyboard\n if (event.which === eventKeyCodes.escape) {\n this.searchTerm = '';\n\n // Close overlay-background on pressed escape key on keyboard\n if ($(event.target).siblings('.js-collapse-search-header').length > 0) {\n $('.js-input-search-header').val('');\n $('.js-collapse-search-header').addClass('u-display-none');\n $('.js-search-overlay').removeClass('u-display-none');\n $('.js-search-header').removeClass('site-search-box--is-expanded');\n $('.links-container-wrapper').removeClass('u-display-none');\n $('.js-overlay-search-bg').remove();\n $('.js-input-site-search').blur();\n $('.header').removeClass('header-search-expanded');\n }\n }\n\n $('.js-btn-site-search').attr('disabled', this.searchTerm.length === 0);\n }\n\n /**\n * Redirect action on pressed enter key on keyboard\n */\n onSearch() {\n window.location.href = `${this.searchPageUrl}?q=${this.searchTerm}`;\n }\n\n /**\n * Navigate to new page using href passed from value of an option element\n * @param {Object} event\n */\n onMobileTabChange(event) {\n window.location.href = $(event.currentTarget).val();\n }\n\n /**\n * A method for resetting individual search input fields,\n * depending on the parameters that determine which search input field will be reset\n * @param {Boolean} isHeader\n */\n resetInputField(isHeader) {\n this.searchTerm = '';\n\n $(isHeader ? '.js-input-search-header' : '.js-input-search-main').val('');\n $(isHeader ? '.js-reset-search-header' : '.js-reset-search-main').addClass('u-display-none');\n $(isHeader ? '.js-search-header .js-btn-site-search' : '.js-site-search-page .js-btn-site-search')\n .attr('disabled', this.searchTerm.length === 0);\n }\n\n /**\n * Closing search and adding overlay background to body\n */\n collapseSearchHeader() {\n this.searchTerm = '';\n $('.js-input-search-header').val('');\n $('.js-collapse-search-header').addClass('u-display-none');\n $('.js-reset-search-header').addClass('u-display-none');\n $('.js-search-overlay').removeClass('u-display-none');\n $('.js-search-header').removeClass('site-search-box--is-expanded');\n $('.links-container-wrapper').removeClass('u-display-none');\n $('.js-overlay-search-bg').remove();\n $('body').removeClass('u-overflow-hidden');\n $('.js-btn-site-search').attr('disabled', this.searchTerm.length === 0);\n $('.header').removeClass('header-search-expanded');\n }\n\n /**\n * Hide search on when is clicked anywhere outside the element\n * @param {Object} event\n */\n clickOutsideSearchElement(event) {\n if (!$(event.target).closest('.header').length) {\n this.collapseSearchHeader();\n }\n }\n\n /**\n * When the user navigates away the search by using the tab key collapse the search header and\n * focus the next item in the header manually to fix skipping .header-items links.\n */\n onFocusOutCollapseBtn() {\n this.collapseSearchHeader();\n const $nextHeaderItemToFocus = $('.header-items a');\n\n if ($nextHeaderItemToFocus.length > 0) {\n $($nextHeaderItemToFocus[0]).focus();\n }\n }\n\n onSearchDeactivateKeyup(event) {\n if (event.which === eventKeyCodes.enter) {\n this.onSearchDeactivateFromHeader(event);\n }\n }\n\n /**\n * Change previous focusable event going back from search input from logo\n * to change site dropdown link.\n */\n onSearchInputFocusOut() {\n const $changeSite = $('.ChangeSite-container .js-dropdown-link');\n\n if ($changeSite.length) {\n // Timeout used to wait for the default element to be focused first.\n setTimeout(() => $changeSite.focus(), 0);\n }\n }\n\n /**\n * Calculate total number of search results.\n * @returns {Number}\n */\n calculateTotalSearchResults() {\n return $('.search-result-filter-item-text').toArray().reduce((total, element) => {\n // Extract the numeric characters from the current element.\n const match = $(element).text().match(/\\d+/);\n\n return match ? total + parseInt(match[0], 10) : total;\n }, 0);\n }\n\n /**\n * Related to tracking google analytics.\n * Tracks the value that was searched and total number of search results.\n * @param {String} searchTerm\n * @param {Number} totalSearchResults\n */\n searchEvents() {\n const searchTerm = $('.js-input-search-main').val();\n const totalSearchResults = this.calculateTotalSearchResults();\n\n if (searchTerm) {\n pushToDataLayer({\n event: 'ga4_view_search_results',\n ga4_data: {\n search_term: searchTerm,\n search_results_count: totalSearchResults\n }\n });\n }\n }\n\n /**\n * Related to tracking google analytics.\n * Tracks the total number of search results, and the value that was searched,\n * the text of the clicked element and the URL of the link the user clicked on.\n * @param {Object} event\n * @param {String} searchTerm\n * @param {Number} totalSearchResults\n */\n clickOnSearchResultItem(event, searchTerm, totalSearchResults) {\n const $target = $(event.currentTarget);\n const targetUrl = convertUrlToAbsolute(event.currentTarget.href);\n let clickedText;\n\n if ($(event.target).is('img')) {\n clickedText = $(event.target).attr('title').trim();\n } else if ($target.hasClass('ga4-search-result')) {\n clickedText = $target.find('.search-article-title').text().trim();\n } else {\n clickedText = $target.text().trim();\n }\n\n pushToDataLayer({\n event: 'ga4_select_search_results',\n ga4_data: {\n search_term: searchTerm,\n search_results_count: totalSearchResults,\n link_url: targetUrl,\n link_text: clickedText\n }\n });\n }\n\n addEvents() {\n $('.js-btn-site-search').on('click', () => this.onSearch());\n\n $('.js-input-site-search').on('keyup', event => this.onSearchTermChange(event));\n\n $('.js-input-site-search').on('focus', event => this.onSearchInputFocus(event));\n\n $('.js-input-site-search').on('blur', () => this.onSearchInputFocusOut());\n\n $('.js-collapse-search-header').on('click', event => this.onSearchDeactivateFromHeader(event));\n\n $('.js-collapse-search-header').on('keyup', event => this.onSearchDeactivateKeyup(event));\n\n $('.js-collapse-search-header').on('focusout', () => this.onFocusOutCollapseBtn());\n\n $('.js-reset-search-main').on('click', () => this.onSearchDeactivate());\n\n $('.js-reset-search-header').on('click', () => this.resetInputField(true));\n\n $(document).on('click', event => this.clickOutsideSearchElement(event));\n\n $('.js-header-logo').on('focus', () => this.collapseSearchHeader());\n\n $('.js-search-result-filter-dropdown').on('change', event => this.onMobileTabChange(event));\n\n if ($('.js-input-search-main').length) { this.searchEvents(); }\n\n $('.search-page-content').on('click', '.ga-product-click, .ga-buy-now-button, .ga4-search-result', event => {\n this.clickOnSearchResultItem(event, $('.js-input-search-main').val(), this.calculateTotalSearchResults());\n });\n }\n}\n","import { isMobile } from '../helpers/isMobile';\n\nexport class StickyMenu {\n static isOnPage() {\n return $('.js-menu').length !== 0;\n }\n\n constructor() {\n this.$window = $(window);\n this.$headerMenu = $('.header-menu');\n this.$menuWrapper = this.$headerMenu.find('.menu-wrapper');\n this.$submenu = $('.submenu-header-menu.submenu-opened');\n\n if (this.$menuWrapper.length > 0) {\n this.toggle();\n }\n\n this.$window.scroll(() => this.toggle());\n this.$window.resize(() => this.toggle());\n }\n\n deactivate() {\n this.$menuWrapper.removeClass('sticky');\n this.$headerMenu.height('auto');\n this.$submenu.css({\n position: 'absolute',\n top: this.$menuWrapper.position().top + this.$menuWrapper.height()\n });\n }\n\n toggle() {\n if (isMobile()) {\n if (this.$menuWrapper.is('.sticky')) {\n return this.deactivate();\n }\n\n return;\n }\n\n if (!this.$menuWrapper || !this.$menuWrapper.data() || !this.$menuWrapper.data().defaultOffset) {\n this.$menuWrapper.data('default-offset', this.$menuWrapper.offset().top);\n }\n if (this.$menuWrapper.is('.sticky')) {\n if (this.$window.scrollTop() < this.$menuWrapper.data().defaultOffset - 0) {\n this.deactivate()\n }\n } else if (this.$window.scrollTop() >= this.$menuWrapper.data().defaultOffset - 0) {\n this.$menuWrapper.addClass('sticky');\n this.$headerMenu.height(this.$menuWrapper.height());\n if (this.$submenu.length) {\n this.$submenu.css({\n position: 'fixed',\n top: this.$menuWrapper.height()\n });\n }\n }\n }\n}\n","import { isMobile } from '../helpers/isMobile';\n\nexport class Table {\n static isOnPage() {\n return $('.js-table').length !== 0;\n }\n\n constructor() {\n window.onload = $(() => {\n this.init();\n });\n }\n\n /**\n * Sets data-label attribute for each table cell,\n * required for the needs of the responsive table on mobile.\n */\n setTableColumnDataLabels() {\n $.each($('.js-table'), (index, table) => {\n const $table = $(table);\n\n $.each($table.find('th'), (rowIndex, heading) => {\n $table.find(`td:nth-child(${rowIndex + 1})`)\n .attr('data-label', heading.innerText);\n });\n });\n }\n\n init() {\n this.setTableColumnDataLabels();\n $('.js-table-filter-btn').toggleClass('js-table-filter-apply', !isMobile());\n }\n}","const selector = '.js-tabs';\n\nexport class Tabs {\n static isOnPage() {\n return $(selector).length !== 0;\n }\n\n constructor() {\n $(selector).find('.js-tab').click(event => this.onTabClick(event));\n }\n\n highlightActiveTab(index, $tab) {\n $tab.parents(selector).find('.js-tab')\n .removeClass('active')\n .eq(index).addClass('active');\n }\n\n activateActiveTab(index, $tab) {\n $tab.parents(selector).find('.js-tab-content')\n .removeClass('active')\n .eq(index).addClass('active');\n }\n\n onTabClick(event) {\n event.preventDefault();\n const $tab = $(event.currentTarget);\n const index = $tab.index();\n this.highlightActiveTab(index, $tab);\n this.activateActiveTab(index, $tab);\n }\n}\n","import { isMobile } from '../helpers/isMobile';\r\n\r\nexport class Tooltip {\r\n\tstatic isOnPage() {\r\n return $('.js-toggle-tooltip').length !== 0;\r\n\t}\r\n\r\n\tconstructor() {\r\n this.isOpen = false;\r\n\t\tthis.init();\r\n\t}\r\n\r\n removeTooltip() {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n\r\n $(this.isOpen).trigger('focus');\r\n $('.tooltip').remove();\r\n $(this.isOpen).one('mouseenter focus', event => this.open(event));\r\n this.isOpen = false;\r\n }\r\n\r\n open(event) {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n\r\n const glossaryElement = event.currentTarget;\r\n const elementPosition = this.getPosition(glossaryElement);\r\n const data = event.target.dataset;\r\n this.isOpen = glossaryElement;\r\n\r\n const tooltip = $(`\r\n
\r\n
\r\n
\r\n

${data.title}

\r\n

${data.description}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `);\r\n const $tooltip = $(tooltip);\r\n $tooltip.css({\r\n left: elementPosition.left,\r\n top: elementPosition.top\r\n });\r\n\r\n $('body').append(tooltip);\r\n\r\n $tooltip.trigger('focus');\r\n }\r\n\r\n\tinit() {\r\n\t\t$('.js-toggle-tooltip').on('mouseenter focus', event => {\r\n if (!this.isOpen) {\r\n this.open(event);\r\n }\r\n });\r\n\r\n $('.js-toggle-tooltip').on('mouseleave', event => this.removeTooltip(event.currentTarget));\r\n\r\n $(document).on('keydown', e => {\r\n if (this.isOpen && (e.key === 'Escape' || e.key === 'Tab' || (e.key === 'Tab' && e.shiftKey))) {\r\n this.removeTooltip();\r\n }\r\n });\r\n\t}\r\n\r\n\tgetPosition (glossaryElement) {\r\n\t\tconst offset = $(glossaryElement).offset();\r\n\t\tconst height = $(glossaryElement).height();\r\n\t\tconst width = $(glossaryElement).width();\r\n\t\tconst tooltipWidth = 270;\r\n\t\tconst windowWidth = $(window).width();\r\n\t\tconst arrowHeight = 11;\r\n\t\tconst position = {};\r\n\r\n\t\tposition.left = (offset.left - (tooltipWidth / 2)) + (width / 2);\r\n\t\tposition.top = offset.top + height + arrowHeight;\r\n\r\n if (isMobile()) {\r\n position.top = position.top - 100;\r\n }\r\n\r\n\t\tif (position.left < 10) {\r\n\t\t\tposition.left = 10;\r\n\t\t} else if (tooltipWidth + position.left > windowWidth) {\r\n\t\t\tposition.left =\r\n\t\t\t\tposition.left + (windowWidth - (tooltipWidth + position.left));\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t}\r\n}\r\n","const playerSelector = '.js-video-popup';\n\nexport class VideoPopup {\n static isOnPage() {\n return $(playerSelector).length !== 0;\n }\n\n constructor() {\n this.load();\n this.init();\n }\n\n load() {\n /**\n * JW Player support for magnific popup\n */\n\n // Create a contained object instead of global variables\n var currentJwplayer = (function () {\n var self = {\n setCurrentPlayer(player) {\n this.player = player;\n },\n setCurrentPlayerElement(playerElement) {\n this.playerElement = playerElement;\n },\n getCurrentPlayer() {\n return this.player;\n },\n getCurrentPlayerElement() {\n return this.playerElement;\n }\n };\n\n return {\n setCurrentPlayer: self.setCurrentPlayer,\n setCurrentPlayerElement: self.setCurrentPlayerElement,\n getCurrentPlayer: self.getCurrentPlayer,\n getCurrentPlayerElement: self.getCurrentPlayerElement\n };\n })();\n\n $.magnificPopup.registerModule('jwplayer', {\n options: {\n markup:\n '
' +\n '' +\n '
' +\n '
'\n },\n\n proto: {\n // eslint-disable-next-line no-empty-function\n initJwplayer: function () { },\n setupClonedButton: function (element) {\n currentJwplayer.setCurrentPlayerElement(element);\n\n // Create a dupe since this gets removed by the Platform Video Player\n var buttonClone = currentJwplayer.getCurrentPlayerElement().cloneNode(true);\n var parentToAddTo = currentJwplayer.getCurrentPlayerElement().parentNode;\n\n // Put the button copy where the removed button was\n parentToAddTo.appendChild(buttonClone);\n\n // Set new cloned button to be the player element\n currentJwplayer.setCurrentPlayerElement(buttonClone);\n },\n\n instantiatePlayer: function () {\n const urlHref = currentJwplayer.getCurrentPlayerElement().getAttribute('href');\n const urlHls = currentJwplayer.getCurrentPlayerElement().getAttribute('data-video-url-hls');\n const videoName = currentJwplayer.getCurrentPlayerElement().getAttribute('data-video-name');\n\n if (!(urlHref || urlHls || videoName)) {\n return;\n }\n // eslint-disable-next-line no-undef\n var player = new VideoPlayer(currentJwplayer.getCurrentPlayerElement(), {\n url: {\n progressive: urlHref,\n hls: urlHls\n },\n analytics: {\n name: videoName\n }\n });\n currentJwplayer.setCurrentPlayer(player);\n\n // Finish and play video\n player.playOnReady();\n },\n\n appendPlayerToPopup: function () {\n if (!currentJwplayer.getCurrentPlayer()) {\n return;\n }\n IsJwplayerContainerReady('#mfp-jwplayer', 100);\n },\n\n getJwplayer: function (item, template) {\n this.updateStatus('ready');\n var isDone = false;\n\n function magnificPopupSetup() {\n // Setup video and make sure it only does it once\n if (!isDone) {\n var clickedElement = item.el[0];\n $.magnificPopup.proto.setupClonedButton(clickedElement);\n $.magnificPopup.proto.instantiatePlayer();\n $.magnificPopup.proto.appendPlayerToPopup();\n\n if (!currentJwplayer.getCurrentPlayer()) {\n return;\n }\n\n isDone = true;\n }\n }\n\n this.ev.on('mfpOpen', function () {\n magnificPopupSetup();\n });\n\n this.ev.on('mfpChange', function () {\n magnificPopupSetup();\n });\n\n return template;\n }\n }\n });\n\n function uglyJwplayerWrapperHack() {\n var videoObj = $('.js-video-popup');\n var jwChildWithPop = videoObj.find($('.js-video-popup'));\n if (jwChildWithPop.length > 0) {\n jwChildWithPop.removeClass('js-video-popup');\n }\n }\n\n function IsJwplayerContainerReady(selector, time) {\n var mfpPlayer = document.querySelector(selector);\n if (mfpPlayer) {\n var playerElement = document.querySelector(\n '#' + currentJwplayer.getCurrentPlayer().element.id\n );\n if (mfpPlayer.hasChildNodes()) {\n mfpPlayer.removeChild(mfpPlayer.firstChild);\n }\n mfpPlayer.appendChild(playerElement);\n } else {\n setTimeout(function () {\n IsJwplayerContainerReady(selector, time);\n }, time);\n }\n }\n\n uglyJwplayerWrapperHack();\n }\n\n init() {\n $.each($(playerSelector), (index, player) => {\n if ($(player).parents('.image-carousel').length === 0) {\n const $player = $(player);\n let config = $player.hasClass('js-video-youtube') ? {\n type: 'iframe',\n iframe: {\n patterns: {\n azure: {\n index: 'azure.com',\n id: function () {\n return 0;\n },\n src: 'http://www.azure.com/embed/%id%'\n }\n }\n }\n } : { type: 'jwplayer' };\n\n $player.on('keydown', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n $player.magnificPopup('open');\n }\n });\n\n return $player.magnificPopup(config);\n }\n });\n }\n}","/* eslint-disable no-console, max-lines*/\n/* global google */\n\nexport class DealerLocatorMap {\n /**\n * Checks if the dealer locator map is on the page.\n * @returns {boolean} True if the dealer locator is on the page, false otherwise.\n */\n static isOnPage() {\n return $('.dealer-locator').length > 0;\n }\n\n /**\n * Initializes the DealerLocatorMap instance.\n */\n constructor() {\n this.map = null;\n this.infoWindow = null;\n this.selectedLocation = null;\n this.locations = [];\n this.markerLocationPairs = [];\n this.attachEvents();\n }\n\n /**\n * Initializes the Google Map, sets the default center, zoom and country code, fetches dealer locations,\n * and enables search functionality for locating dealers.\n */\n initMap() {\n const defaultCenter = this.getCountryCenter();\n\n this.map = new google.maps.Map($('.dealer-locator-map')[0], {\n center: defaultCenter.center,\n zoom: defaultCenter.zoom,\n mapTypeControl: false,\n fullscreenControl: false,\n streetViewControl: false,\n });\n\n this.infoWindow = new google.maps.InfoWindow();\n\n $.ajax({\n url: '/DealerLocator/Dealers',\n method: 'GET',\n dataType: 'json',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',\n },\n })\n .done((data) => {\n this.locations = data;\n this.createMarkers(false);\n });\n\n this.initAutocomplete();\n }\n\n initAutocomplete() {\n const { countryCode } = this.getCountryCenter();\n\n const input = document.querySelector('.dealer-locator-search-input');\n if (!input) { return; }\n\n let sessionToken = new google.maps.places.AutocompleteSessionToken();\n\n const options = {\n componentRestrictions: { country: countryCode },\n fields: ['address_components', 'geometry', 'name'],\n sessionToken: sessionToken\n };\n\n const autocomplete = new google.maps.places.Autocomplete(input, options);\n\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n\n if (place.address_components) {\n const countryComponent = place.address_components.find(component => component.types.includes('country'));\n\n if (!countryComponent || countryComponent.short_name.toLowerCase() !== countryCode) {\n input.value = '';\n\n return;\n }\n }\n\n if (place.geometry && place.geometry.location) {\n this.selectedLocation = place.geometry.location;\n\n sessionToken = new google.maps.places.AutocompleteSessionToken();\n }\n });\n }\n\n /**\n * Clears all map markers.\n */\n clearMarkers() {\n this.markerLocationPairs.forEach(({ marker }) => {\n marker.setMap(null);\n });\n }\n\n /**\n * Retrieves the default map center, zoom level and country code based on the country.\n * Supports predefined locations for specific countries and defaults to a world view.\n *\n * Supported countries: USA (jobst-usa.com), Germany, France, Poland, Italy, United Kingdom,\n * Portugal, Canada, Spain, Czech Republic, Belgium, Austria, Sweden, Norway.\n *\n * @returns {Object} The center coordinates, zoom level and country code for the country.\n */\n getCountryCenter() {\n const domain = window.location.hostname.split('.').pop();\n let countryData;\n\n if (window.location.hostname.includes('jobst-usa.com')) {\n countryData = {\n center: { lat: 37.0902, lng: -95.7129 }, // USA\n zoom: 5,\n countryCode: 'us'\n };\n } else {\n const domainToCountryData = {\n de: { center: { lat: 51.1657, lng: 10.4515 }, zoom: 6, countryCode: 'de' }, // Germany\n fr: { center: { lat: 46.6034, lng: 1.8883 }, zoom: 6, countryCode: 'fr' }, // France\n pl: { center: { lat: 51.9194, lng: 19.1451 }, zoom: 6, countryCode: 'pl' }, // Poland\n it: { center: { lat: 41.8719, lng: 12.5674 }, zoom: 6, countryCode: 'it' }, // Italy\n uk: { center: { lat: 55.3781, lng: -3.4360 }, zoom: 6, countryCode: 'gb' }, // United Kingdom\n pt: { center: { lat: 39.3999, lng: -8.2245 }, zoom: 6, countryCode: 'pt' }, // Portugal\n ca: { center: { lat: 56.1304, lng: -106.3468 }, zoom: 4, countryCode: 'ca' }, // Canada\n es: { center: { lat: 40.4637, lng: -3.7492 }, zoom: 6, countryCode: 'es' }, // Spain\n cz: { center: { lat: 49.8175, lng: 15.4730 }, zoom: 7, countryCode: 'cz' }, // Czech Republic\n be: { center: { lat: 50.8503, lng: 4.3517 }, zoom: 8, countryCode: 'be' }, // Belgium\n at: { center: { lat: 47.5162, lng: 14.5501 }, zoom: 7, countryCode: 'at' }, // Austria\n se: { center: { lat: 60.1282, lng: 18.6435 }, zoom: 5, countryCode: 'se' }, // Sweden\n no: { center: { lat: 60.4720, lng: 8.4689 }, zoom: 5, countryCode: 'no' } // Norway\n };\n\n countryData = domainToCountryData[domain] || {\n center: { lat: 0.0, lng: 0.0 }, // Default to World\n zoom: 2\n };\n }\n\n return countryData;\n }\n\n /**\n * Creates markers for all locations on the map.\n * @param {boolean} showMarkers - Whether to display the markers on the map.\n */\n createMarkers(showMarkers) {\n const customIcon = {\n url: '/assets/img/jobst/jobst-logo.png',\n scaledSize: new google.maps.Size(70, 25),\n };\n\n this.locations.forEach((location) => {\n const lat = parseFloat(location.Latitude);\n const lng = parseFloat(location.Longitude);\n const latLng = new google.maps.LatLng(lat, lng);\n\n const marker = new google.maps.Marker({\n position: latLng,\n map: showMarkers ? this.map : null,\n title: location.Name,\n icon: customIcon,\n });\n\n marker.addListener('click', () => {\n this.showInfoWindow(marker, location);\n });\n\n this.markerLocationPairs.push({ marker, location });\n });\n }\n\n /**\n * Displays an info window for a specific marker.\n * @param {google.maps.Marker} marker - The marker to associate with the info window.\n * @param {Object} location - The location details for the marker.\n */\n showInfoWindow(marker, location) {\n const address = `${location.Street}, ${location.Location}, ${location.Zip}`;\n const contentString = `\n
\n

${location.Name}

\n ${address}
\n ${location.Phone}
\n
\n `;\n\n this.infoWindow.setContent(contentString);\n this.infoWindow.open(this.map, marker);\n }\n\n /**\n * Calculates the zoom level based on the distance.\n * @param {number} distance - The distance in kilometers.\n * @returns {number} The zoom level for the given distance.\n */\n getZoomLevelForDistance(distance) {\n const zoomLevels = [\n { maxDistance: 5, zoom: 14 },\n { maxDistance: 10, zoom: 13 },\n { maxDistance: 20, zoom: 12 },\n { maxDistance: 30, zoom: 11 },\n { maxDistance: 50, zoom: 10 },\n { maxDistance: 100, zoom: 8 },\n { maxDistance: 500, zoom: 7 },\n { maxDistance: Infinity, zoom: 6 },\n ];\n\n const zoomLevel = zoomLevels.find((level) => distance <= level.maxDistance);\n\n return zoomLevel ? zoomLevel.zoom : 6;\n }\n\n /**\n * Filters markers by distance from a given center.\n * @param {google.maps.LatLng} center - The center point.\n * @param {number} distance - The distance in kilometers.\n * @returns {Array} Filtered markers and their associated locations.\n */\n filterMarkersByDistance(center, distance) {\n if (!google.maps.geometry || !google.maps.geometry.spherical) {\n return;\n }\n\n const filteredMarkers = [];\n this.markerLocationPairs.forEach(({ marker, location }) => {\n const markerLatLng = marker.getPosition();\n const distanceFromCenter =\n google.maps.geometry.spherical.computeDistanceBetween(\n center,\n markerLatLng\n ) / 1000;\n if (distanceFromCenter <= distance) {\n marker.setMap(this.map);\n filteredMarkers.push({ marker, location });\n } else {\n marker.setMap(null);\n }\n });\n\n $('.num-of-dealers').text(filteredMarkers.length);\n\n return filteredMarkers;\n }\n\n /**\n * Displays search results on the map based on selected location, distance, and filter type.\n * Filters markers and updates the map view accordingly.\n */\n displaySearchResults() {\n if (!this.selectedLocation) {\n return;\n }\n\n const distance = parseFloat($('.dealer-locator-distance').val()) || 0;\n const filterType = $('.dealer-locator-filter').val() || 'Default';\n const zoomLevel = this.getZoomLevelForDistance(distance);\n const filteredMarkers = this.filterMarkersByDistance(this.selectedLocation, distance).filter(({ location }) => {\n\n // eslint-disable-next-line eqeqeq\n return filterType == 'Default' || (location[filterType] != undefined && location[filterType] == true);\n });\n\n this.clearMarkers();\n filteredMarkers.forEach(({ marker }) => {\n marker.setMap(this.map);\n });\n\n this.map.setCenter(this.selectedLocation);\n this.map.setZoom(zoomLevel);\n\n $('.num-of-dealers').text(filteredMarkers.length);\n\n if (filteredMarkers.length > 0) {\n const isDesktop = window.innerWidth > 992;\n\n if (isDesktop) {\n $('.dealer-locator-options').fadeOut(() => {\n this.showSearchResults(filteredMarkers);\n });\n } else {\n this.showSearchResults(filteredMarkers);\n }\n }\n }\n\n /**\n * Renders the search results in the results section.\n * @param {Array} filteredMarkers - The markers to display in the results.\n */\n showSearchResults(filteredMarkers) {\n const resultsList = $('.dealer-locator-search-results-list');\n resultsList.empty();\n\n const sortedMarkers = [...filteredMarkers].sort((elementA, elementB) => {\n const priorityA = elementA.location.Prio || Infinity;\n const priorityB = elementB.location.Prio || Infinity;\n\n return priorityA - priorityB;\n });\n\n const resultsHtml = sortedMarkers.map(({ location }, index) => {\n const address = `${location.Street}, ${location.Location}, ${location.Zip}`;\n\n return `\n
  • \n ${location.Name}
    \n ${address}
    \n ${location.Phone}
    \n \n
  • `;\n }).join('');\n\n resultsList.html(resultsHtml);\n\n resultsList.off('click', '.dealer-locator-view-marker-btn').on('click', '.dealer-locator-view-marker-btn', (e) => {\n const markerIndex = $(e.target).data('marker-index');\n const { marker, location } = filteredMarkers[markerIndex];\n\n if (window.innerWidth < 992) {\n $('.dealer-locator-show-map').addClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-show-results').removeClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-search-results').fadeOut();\n }\n\n this.map.setCenter(marker.getPosition());\n this.map.setZoom(14);\n this.showInfoWindow(marker, location);\n });\n\n if (window.innerWidth < 992) {\n $('.dealer-locator-mobile-result-selector').fadeIn();\n }\n\n $('.dealer-locator-search-results').fadeIn();\n }\n\n /**\n * Attaches event listeners for the dealer locator map functionality.\n */\n attachEvents() {\n const isDesktop = window.innerWidth > 992;\n\n if (!isDesktop) {\n $('.dealer-locator-show-map').on('click', () => {\n $('.dealer-locator-show-map').addClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-show-results').removeClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-search-results').fadeOut();\n });\n\n $('.dealer-locator-show-results').on('click', () => {\n $('.dealer-locator-show-results').addClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-show-map').removeClass('dealer-locator-result-selector-btn--active');\n $('.dealer-locator-search-results').fadeIn();\n });\n }\n\n $(document).on('click', '.dealer-locator-search', () => {\n this.displaySearchResults();\n });\n\n $('.dealer-locator-back-btn').on('click', () => {\n if (isDesktop) {\n $('.dealer-locator-search-results').fadeOut(() => {\n $('.dealer-locator-options').fadeIn();\n });\n } else {\n $('.dealer-locator-search-results').fadeOut();\n }\n });\n }\n}\n\n/**\n * Initializes the Dealer Locator Map functionality when the document is ready.\n */\n$(document).ready(() => {\n if (!DealerLocatorMap.isOnPage()) {\n return;\n }\n\n /**\n * Dynamically loads the Google Maps API script if it has not been loaded already.\n * @param {string} googleMapsKey - The API key for Google Maps.\n */\n const loadGoogleMapsAPI = (googleMapsKey) => {\n if (!window.dlrLocatorInitMap) {\n function initMap() {\n const mapInstance = new DealerLocatorMap();\n mapInstance.initMap();\n }\n\n window.dlrLocatorInitMap = initMap;\n\n // Create and append the Google Maps API script\n let script = document.createElement('script');\n script.src = `https://maps.googleapis.com/maps/api/js?key=${googleMapsKey}&libraries=places,geometry&callback=dlrLocatorInitMap&loading=async`;\n document.body.appendChild(script);\n }\n }\n\n /**\n * Fetches the Google Maps API key from the server and loads the API.\n */\n const fetchApiKey = () => {\n $.ajax({\n url: '/DealerLocator/apikey',\n method: 'GET',\n dataType: 'json',\n headers: {\n 'Content-Type': 'application/json',\n }\n })\n .done((data) => {\n if (data.GoogleMapsApiKey) {\n loadGoogleMapsAPI(data.GoogleMapsApiKey);\n }\n })\n }\n\n fetchApiKey();\n});\n","/**\r\n * Converts relative url to absolute.\r\n * For example /men will be returned as https://www.tena.co.uk/men\r\n * @param {String} href\r\n * @returns {String}\r\n */\r\nexport const convertUrlToAbsolute = href => {\r\n const link = document.createElement('a');\r\n link.href = href;\r\n\r\n return link.href;\r\n};\r\n","/**\n * Maps keyboard characters to event key codes.\n */\nexport const eventKeyCodes = {\n enter: 13,\n escape: 27\n};","import { isMobile } from './isMobile';\n\nexport const getHeaderHeight = () => {\n if (isMobile()) {\n return $('#mainheader').height();\n }\n const $menuWrapper = $('.menu-wrapper');\n if ($menuWrapper.hasClass('sticky')) {\n return $menuWrapper.height();\n }\n\n return $('#mainheader').height();\n};\n","import { getHeaderHeight } from './getHeaderHeight';\n\nexport const isInView = element => {\n const $element = $(element);\n const elementTop = $element.offset().top;\n const elementBottom = $element.offset().top + $element.outerHeight();\n const screenBottom = $(window).scrollTop() + $(window).innerHeight();\n const screenTop = $(window).scrollTop();\n\n return ((screenBottom + getHeaderHeight() > elementTop) && (screenTop < elementBottom));\n};","export const isMobile = () => window.innerWidth < 992;","export const isXPM = () => window.self !== window.top;\n","import { getHeaderHeight } from './getHeaderHeight';\n\nexport const scrollToElement = $element => {\n let scrollTop = $element.offset().top - getHeaderHeight() - 20;\n if ($('.menu-wrapper.sticky').length === 0) {\n scrollTop = $element.offset().top - 80;\n }\n $('html, body').animate({ scrollTop }, 400);\n};\n","/**\n * This class handles the lazy-loading of images by removing the 'lazyloaded' class\n * from images that are visible in the viewport on page load using the Intersection Observer API.\n */\nexport class ImageLazyload {\n /**\n * CSS selector of Image LazyLoader element.\n * @static\n */\n static selector = 'img.lazyloaded';\n\n /**\n * Checks if the element is present in the DOM.\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return $(ImageLazyload.selector).length > 0;\n }\n\n /**\n * Initializes the class by selecting all images with the 'lazyloaded' class\n * and setting up the Intersection Observer to monitor their visibility.\n */\n constructor() {\n // Select all img elements with the 'lazyloaded' class\n this.$images = $('img.lazyloaded');\n\n // IntersectionObserver setup to trigger when images are 10% visible\n this.observer = new IntersectionObserver(this.handleIntersect.bind(this), {\n threshold: 0.1\n });\n\n this.observeImages();\n\n // Remove 'lazyloaded' class if present when the screen is loaded\n $(window).on('load', this.removeLazyLoadedOnLoad.bind(this));\n }\n\n /**\n * Callback function for Intersection Observer. It removes the 'lazyloaded' class\n * based on the visibility of images.\n *\n * @param {IntersectionObserverEntry[]} entries - Array of intersection observer entries for each image.\n */\n handleIntersect(entries) {\n entries.forEach(entry => {\n const $image = $(entry.target);\n\n // If the image is intersecting (visible), remove the 'lazyloaded' class\n if (entry.isIntersecting && $image.hasClass('lazyloaded')) {\n $image.removeClass('lazyloaded');\n }\n });\n }\n\n /**\n * Observes all images with the 'lazyloaded' class on the page\n * and applies the Intersection Observer to monitor their visibility.\n */\n observeImages() {\n this.$images.each((index, img) => {\n this.observer.observe(img);\n });\n }\n\n /**\n * Removes the 'lazyloaded' class from images if they are visible when the page is loaded.\n */\n removeLazyLoadedOnLoad() {\n this.$images.each((index, img) => {\n this.observer.observe(img); // Apply IntersectionObserver to monitor all images when page loads\n });\n }\n}\n\n// Initialize the ImageLazyload class when the document is ready.\n$(document).ready(() => {\n new ImageLazyload();\n});\n","import 'es6-object-assign/auto';\r\n\r\nimport { SiteSearch } from './common/siteSearch';\r\nimport { Dropdown } from './common/dropdown';\r\nimport { StickyMenu } from './common/stickyMenu';\r\nimport { ScrollToTop } from './common/scrollToTop';\r\nimport { ClickToScrollToElement } from './common/clickToScrollToElement';\r\nimport { Accordion } from './common/accordion';\r\nimport { Tabs } from './common/tabs';\r\nimport { IntroCarousel } from './carousel/introCarousel';\r\nimport { ProductCarousel } from './carousel/productCarousel';\r\nimport { BoxCarousel } from './carousel/boxCarousel';\r\nimport { PromoCarousel } from './carousel/promoboxCarousel';\r\nimport { CarouselAlt } from './carousel/carouselAlt';\r\nimport { CarouselGallery } from './carousel/carouselGallery';\r\nimport { MobileNav } from './common/mobileNav';\r\nimport { Select } from './common/select';\r\nimport { SelectMultiLevel } from './common/selectMultiLevel';\r\nimport { ShowMore } from './common/showMore';\r\nimport { Tooltip } from './common/tooltip';\r\nimport { Popup } from './common/popup';\r\nimport { Table } from './common/table';\r\nimport { IframePopup } from './common/iframePopup';\r\nimport { PopupHandler } from './sizeGuidePopup';\r\nimport { CarouselProtects } from './carousel/protectsCarousel';\r\nimport { ProductSupportingCarouselFrost } from './carousel/productSupportingCarouselFrost';\r\nimport { ProductList } from './carousel/product-list';\r\nimport { ProductsViewOptions } from './products/productViewOptions';\r\nimport { infoPanel } from './productFilterInfoPanel';\r\nimport { HeadingHandler } from './products/headingHandler';\r\nimport { HeaderScrollMobile } from './common/headerScrollMobile';\r\nimport { ExternalLinksMegaMenu } from './common/externalLinksMegaMenu';\r\nimport { ProductSupportingCarouselJobst } from './carousel/productSupportingCarouselJobst';\r\nimport { ProductComparePopup } from './products-compare-popup';\r\nimport { DealerLocatorMap } from './dealer-locator';\r\nimport { ImageLazyload } from './imageLazyload';\r\nimport { ProductReviewAccessibility } from './products/productReviewAccessibility';\r\n\r\n/**\r\n * Common HMS functionalities\r\n */\r\nwindow.HMSCommon = class HMSCommon {\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n /**\r\n * Loops through classes array and inits the class if the hook element is present on page.\r\n * @param {Array} classes - Array of class imports\r\n */\r\n genericInit(classes) {\r\n classes.forEach(initClass => {\r\n if (initClass.isOnPage()) {\r\n new initClass();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Init common js classes. Run on page load.\r\n */\r\n init() {\r\n new MobileNav();\r\n\r\n this.genericInit([\r\n Dropdown, StickyMenu, IntroCarousel, PromoCarousel, CarouselAlt, Popup, Table,\r\n CarouselGallery, BoxCarousel, Accordion, Tabs, ScrollToTop, Select, SelectMultiLevel, ShowMore, Tooltip,\r\n ProductCarousel, IframePopup, ClickToScrollToElement, SiteSearch, PopupHandler,\r\n ProductSupportingCarouselFrost, ProductList, ProductsViewOptions, infoPanel, CarouselProtects,\r\n HeaderScrollMobile, HeadingHandler, ExternalLinksMegaMenu, ProductSupportingCarouselJobst, ProductComparePopup,\r\n ImageLazyload, DealerLocatorMap, ProductReviewAccessibility\r\n ]);\r\n }\r\n}","/**\n * Manages info panel on the Product Filter page, handling its display,\n * toggling, and content organization based on user interactions.\n */\nexport class infoPanel {\n static isOnPage() {\n return $('.js-info-panel').length > 0;\n }\n\n constructor() {\n this.init();\n }\n\n /**\n * Toggles info panel visibility and filters\n * content based on the clicked info icon or close button.\n * @param {Event} event - Passes the element that was clicked on.\n */\n togglePanel (event) {\n let mode = 'close';\n const $targetClick = $(event?.currentTarget);\n const $infoPanelContentGroup = $('.js-info-panel-content-group');\n\n if (event) {\n mode = $targetClick.hasClass('info-panel-close-button') ? 'close' : 'open';\n }\n\n $('.js-info-panel-wrapper').toggleClass('info-panel-wrapper--opened', mode !== 'close');\n $('.js-info-panel').toggleClass('info-panel--opened', mode !== 'close');\n $infoPanelContentGroup.removeClass('info-panel-content-group--hide');\n\n if (mode === 'open') {\n const $selectedFilterGroup = $targetClick.data('filter-group');\n\n $infoPanelContentGroup.each((index, element) => {\n const $filterGroup = $(element);\n\n if ($filterGroup.data('filter-group') !== $selectedFilterGroup) {\n $filterGroup.addClass('info-panel-content-group--hide');\n }\n });\n }\n };\n\n /**\n * Initializes the info panel by setting up a click event listeners.\n */\n init() {\n // Open/close panel when the trigger element is clicked\n $('.js-info-panel-toggle').on('click', (event) => this.togglePanel(event));\n\n // Close the panel when a click event occurs outside the panel content\n $(document).on('click', event => {\n $(event.target).is('.js-info-panel-wrapper') && this.togglePanel();\n });\n }\n}","export class ProductComparePopup {\n /**\n * CSS selector of Compare Popup element.\n * @static\n */\n static selector = '.js-product-compare-popup';\n\n /**\n * Checks if element is present in the DOM.\n * @function isOnPage\n * @returns {Boolean}\n * @static\n */\n static isOnPage() {\n return $(ProductComparePopup.selector).length > 0;\n }\n\n /**\n * Initializes the compare popup functionality.\n * @function init\n * @static\n */\n static init() {\n const $comparePopup = $(ProductComparePopup.selector);\n const $compareCheckboxes = $('.product-card-compare-input');\n\n $compareCheckboxes.on('change', function () {\n const $productCard = $(this).closest('.component-product-box');\n const productName = $productCard.find('.title').text().trim();\n const productImg = $productCard.find('.product-box-img img').data('src');\n let productId = $productCard.attr('id');\n\n if (!productId) {\n productId = $productCard.find('.product-box-text a').data('productid');\n }\n\n if ($(this).is(':checked')) {\n ProductComparePopup.addProductToComparePopup($comparePopup, productId, productName, productImg);\n } else {\n ProductComparePopup.removeProductFromComparePopup($comparePopup, productId, productName);\n }\n\n ProductComparePopup.updatePopupVisibility($comparePopup);\n ProductComparePopup.updateCompareLink($comparePopup);\n ProductComparePopup.updateCheckboxStates();\n });\n\n $comparePopup.find('a').eq(0).on('click', function (e) {\n e.preventDefault();\n ProductComparePopup.clearAllSelections($comparePopup);\n });\n\n ProductComparePopup.clearAllSelections($comparePopup);\n ProductComparePopup.updatePopupVisibility($comparePopup);\n ProductComparePopup.updateCheckboxStates();\n }\n\n /**\n * Adds a product to the compare popup.\n * @function addProductToComparePopup\n * @static\n * @param {jQuery} $comparePopup - The compare popup element.\n * @param {String} id - The product ID.\n * @param {String} name - The product name.\n * @param {String} imgSrc - The product image source.\n */\n static addProductToComparePopup($comparePopup, id, name, imgSrc) {\n const $selectedProductBoxes = $comparePopup.find('.product-compare-popup--selected-product');\n\n $selectedProductBoxes.each(function () {\n const $productBox = $(this).closest('.product-compare-popup-product-box');\n const $productNameElem = $productBox.find('.product-compare-popup--product-name');\n const $productImgElem = $productBox.find('.product-compare-popup--product-img');\n const $unselectedText = $productBox.find('.product-compare-popup--unselected-text');\n\n if ($productNameElem.text() === '') {\n $productBox.attr('data-product-id', id);\n $productNameElem.text(name);\n $productImgElem.attr('src', imgSrc);\n $unselectedText.hide();\n $productBox.addClass('product-compare-popup-product-box--active');\n $productBox.find('.product-compare-popup--selected-product').show();\n\n return false;\n }\n });\n }\n\n /**\n * Removes a product from the compare popup.\n * @function removeProductFromComparePopup\n * @static\n * @param {jQuery} $comparePopup - The compare popup element.\n * @param {String} id - The product ID.\n */\n static removeProductFromComparePopup($comparePopup, id) {\n const $selectedProductBoxes = $comparePopup.find('.product-compare-popup--selected-product');\n\n $selectedProductBoxes.each(function () {\n const $productBox = $(this).closest('.product-compare-popup-product-box');\n const $productNameElem = $productBox.find('.product-compare-popup--product-name');\n const $productImgElem = $productBox.find('.product-compare-popup--product-img');\n const $unselectedText = $productBox.find('.product-compare-popup--unselected-text');\n\n // eslint-disable-next-line eqeqeq\n if ($productBox.attr('data-product-id') == id) {\n $productBox.removeAttr('data-product-id');\n $productNameElem.text('');\n $productImgElem.attr('src', '');\n $productBox.find('.product-compare-popup--selected-product').hide();\n $unselectedText.show();\n $productBox.removeClass('product-compare-popup-product-box--active');\n\n return false;\n }\n });\n }\n\n /**\n * Updates the visibility of the compare popup.\n * @function updatePopupVisibility\n * @static\n * @param {jQuery} $comparePopup - The compare popup element.\n */\n static updatePopupVisibility($comparePopup) {\n const isAnyProductSelected = $comparePopup.find('.product-compare-popup--product-name').filter(function () {\n return $(this).text() !== '';\n }).length > 0;\n\n if (isAnyProductSelected) {\n $comparePopup.fadeIn(300);\n } else {\n $comparePopup.fadeOut(300);\n }\n }\n\n /**\n * Updates the compare link with selected product IDs.\n * @function updateCompareLink\n * @static\n * @param {jQuery} $comparePopup - The compare popup element.\n */\n static updateCompareLink($comparePopup) {\n const $compareLink = $comparePopup.find('a').eq(1);\n const selectedProductIds = $comparePopup.find('.product-compare-popup--selected-product').map(function () {\n return $(this).closest('.product-compare-popup-product-box').attr('data-product-id');\n }).get().filter(Boolean);\n\n const currentUrl = new URL($compareLink.attr('href'));\n currentUrl.searchParams.set('selectedProducts', selectedProductIds.join(','));\n $compareLink.attr('href', currentUrl.toString());\n }\n\n /**\n * Clears all selections in the compare popup.\n * @function clearAllSelections\n * @static\n * @param {jQuery} $comparePopup - The compare popup element.\n */\n static clearAllSelections($comparePopup) {\n const $compareCheckboxes = $('.product-card-compare-input');\n $compareCheckboxes.prop('checked', false);\n\n $comparePopup.find('.product-compare-popup--selected-product').each(function () {\n const $productBox = $(this).closest('.product-compare-popup-product-box');\n const $productNameElem = $productBox.find('.product-compare-popup--product-name');\n const $productImgElem = $productBox.find('.product-compare-popup--product-img');\n const $unselectedText = $productBox.find('.product-compare-popup--unselected-text');\n\n $productBox.removeAttr('data-product-id');\n $productNameElem.text('');\n $productImgElem.attr('src', '');\n $(this).hide();\n $unselectedText.show();\n $productBox.removeClass('product-compare-popup-product-box--active');\n });\n\n ProductComparePopup.updatePopupVisibility($comparePopup);\n ProductComparePopup.updateCompareLink($comparePopup);\n ProductComparePopup.updateCheckboxStates();\n }\n\n /**\n * Updates the states of checkboxes based on the selected products.\n * @function updateCheckboxStates\n * @static\n */\n static updateCheckboxStates() {\n const windowWidth = $(window).width();\n let maxProducts;\n\n if (windowWidth <= 768) {\n maxProducts = 2;\n } else if (windowWidth <= 1200) {\n maxProducts = 3;\n } else {\n maxProducts = 4;\n }\n\n const selectedProductCount = $('.product-compare-popup--selected-product:visible').length;\n const $compareCheckboxes = $('.product-card-compare-input');\n\n $compareCheckboxes.prop('disabled', false);\n\n if (selectedProductCount >= maxProducts) {\n $compareCheckboxes.not(':checked').prop('disabled', true);\n }\n }\n}\n\n// Initialize the functionality\n$(document).ready(function () {\n if (ProductComparePopup.isOnPage()) {\n ProductComparePopup.init();\n }\n});\n","/**\n * Represents a HeadingHandler class that handles the visibility\n * of product titles headings based on the window width.\n */\nexport class HeadingHandler {\n static isOnPage() {\n return $('.js-product-title').length !== 0;\n }\n\n constructor() {\n this.productTitleDesktopHTML = $('.js-product-title--desktop').prop('outerHTML');\n this.productTitleMobileHTML = $('.js-product-title--mobile').prop('outerHTML');\n this.addEventListeners();\n this.toggleHeading(); // Initial call to toggleHeading to set the correct heading\n }\n\n /**\n * Toggles the visibility of product titles headings based on the window width.\n */\n toggleHeading = () => {\n const $window = $(window);\n const $titleDesktop = $('.js-product-title--desktop');\n const $titleMobile = $('.js-product-title--mobile');\n\n if ($titleDesktop.length) {\n $titleDesktop.remove();\n }\n\n if ($titleMobile.length) {\n $titleMobile.remove();\n }\n\n if ($window.width() < 992) {\n if (!$('.js-product-title--mobile').length) {\n $('.js-product-title-flag--mobile').after(this.productTitleMobileHTML);\n }\n } else if (!$('.js-product-title--desktop').length) {\n $('.js-product-title-flag--desktop').after(this.productTitleDesktopHTML);\n }\n }\n\n /**\n * Call toggleHeading on window resize.\n */\n addEventListeners() {\n $(window).on('resize', this.toggleHeading);\n }\n}\n","/**\n * Class for enhancing the accessibility of product review elements.\n * This class ensures that elements related to product reviews are properly\n * labeled and focusable for better accessibility.\n */\nexport class ProductReviewAccessibility {\n /**\n * Always returns true so the class gets instantiated.\n *\n * This method must return `true` because Bazaarvoice and PowerReviews\n * are loaded asynchronously and are not immediately available in the DOM.\n * If we relied on checking elements here, the class would not be initialized\n * at the right time. Instead, the constructor handles the actual check\n * and determines whether to execute `enhanceAccessibility()` after a delay.\n *\n * @returns {boolean} Always returns `true`.\n */\n static isOnPage() {\n return true;\n }\n\n /**\n * Initializes accessibility enhancements with a single delay.\n *\n * Since Bazaarvoice and PowerReviews load asynchronously, we wait 5 seconds\n * before checking for the necessary elements. If they are found, the\n * `enhanceAccessibility()` method is executed. Otherwise, nothing happens.\n */\n constructor() {\n setTimeout(() => {\n if ($('.bv_main_container').length > 0 || $('.pr-snippet-stars').length > 0) {\n this.enhanceAccessibility();\n }\n }, 5000);\n }\n\n /**\n * Enhances the accessibility of product review elements.\n */\n enhanceAccessibility() {\n $('.bv_main_container').each((index, element) => {\n const $starsContainer = $(element);\n const labelValue = $starsContainer.find('.bv-off-screen').text().trim();\n\n if (labelValue) {\n $starsContainer.attr({\n 'aria-hidden': 'false',\n 'tabindex': '0',\n 'aria-label': labelValue\n });\n }\n });\n\n $('.pr-snippet-stars').each((index, element) => {\n $(element).attr('tabindex', '0');\n });\n }\n}\n","/**\n * Used on: Family, products and filter pages.\n */\nexport class ProductsViewOptions {\n static isOnPage() {\n return $('.js-view-options').length !== 0;\n }\n\n constructor() {\n this.addEventListeners();\n }\n\n /**\n * @param {Event} event - Clicked icon element.\n */\n toggleView = (event) => {\n const $optionsGroups = $('.js-view-options-group');\n const $productCard = $('.component-product-box');\n const selectedView = $(event.currentTarget).data('view-option');\n\n $optionsGroups\n .toggleClass('view-options-group--active-grid', selectedView === 'grid')\n .toggleClass('view-options-group--active-list', selectedView === 'list');\n\n $productCard\n .toggleClass('component-product-box--four-elements', selectedView === 'grid')\n .toggleClass('component-product-box--list', selectedView === 'list');\n }\n\n /**\n * Listener for click on product view options icon.\n */\n addEventListeners() {\n $('.js-products-view-option').on('click', (event) => this.toggleView(event));\n }\n}\n","/* eslint-disable */\n/**\n * PopupHandler class is used to manage popup components (PDP).\n */\nexport class PopupHandler {\n constructor(triggerClass, wrapperClass, isReviewPopup = false) {\n this.triggerClass = triggerClass;\n this.wrapperClass = wrapperClass;\n this.isReviewPopup = isReviewPopup;\n this.init();\n }\n\n init() {\n const $openPopup = $(`.${this.triggerClass}`);\n const $panelWrapper = $(`.${this.wrapperClass}`);\n const $closePopup = $panelWrapper.find('.panel-close-button');\n const $body = $('body');\n\n /**\n * Toggle the popup appearance programmatically and adjusts the scrolling behavior of the page.\n * @param {string} [mode='open'] - The mode indicating whether to open or close the popup.\n * - 'open' (default): Opens the popup by adding the 'panel-wrapper--opened' class and hides overflow.\n * - 'close': Closes the popup by removing the 'panel-wrapper--opened' class and restores overflow.\n */\n const togglePopup = (mode = 'open') => {\n // Toggle class to open/close the popup\n $panelWrapper.toggleClass('panel-wrapper--opened', mode !== 'close');\n $body.css('overflow', mode !== 'close' ? 'hidden' : '');\n };\n\n // Open the popup when the trigger element is clicked\n $openPopup.on('click', event => {\n let $popupContainer = $(event.target).closest(\".js-compare-popup-data\");\n\n if($popupContainer.length == 1) {\n this.fillComparePopup($popupContainer);\n }\n\n event.preventDefault();\n togglePopup();\n });\n\n // Close the popup when the close button is clicked\n $closePopup.on('click', () => togglePopup('close'));\n\n // Close the popup when a click event occurs outside the popup content\n $(document).on('click', event => {\n if ($(event.target).is($panelWrapper)) {\n togglePopup('close');\n }\n });\n }\n\n // Checks if the popup is present on the page\n static isOnPage(triggerClass) {\n return $(`.${triggerClass}`).length > 0;\n }\n\n fillComparePopup(popupContainer) {\n let imgSrc = $(popupContainer).find(\"input[type=hidden][name=compare-img]\").val();\n let title = $(popupContainer).find(\"input[type=hidden][name=compare-title]\").val();\n let description = $(popupContainer).find(\"input[type=hidden][name=compare-description]\").val();\n let img = $('', {\n src: imgSrc,\n 'data-src': imgSrc,\n class: \"ls-is-cached lazyloaded\",\n });\n\n $(\".article-list-item-text .article-list-item-title\").html(title);\n $(\".article-list-item-text .text-content\").html(description);\n $(\".article-list-item .article-list-image\").html(img);\n }\n}\n\n// Initialize the different popups\n$(document).ready(() => {\n if (PopupHandler.isOnPage('js-guide-popup')) {\n new PopupHandler('js-guide-popup', 'guide-wrapper');\n }\n\n if (PopupHandler.isOnPage('js-reviews-popup')) {\n new PopupHandler('js-reviews-popup', 'reviews-wrapper', true);\n }\n});"]}