{"version":3,"sources":["webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/chevron_down_fill.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/chevron_left.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/chevron_right.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/chevron_right_fill.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/heart.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/@svgr+webpack@5.5.0/node_modules/@svgr/webpack/common/temp/split__lemon8_web_seo/node_modules/.pnpm/@lemon8+design@0.0.8-alpha.4_lottie-web@5.12.2_react-dom@18.2.0_react@18.2.0/node_modules/@lemon8/design/lib/icons/icon_assets/play_fill.svg","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRange.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSum.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createRange.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIterateeCall.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/range.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sum.js","webpack://@lemon8/web-seo/../common/temp/split__lemon8_web_seo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toFinite.js","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/virtual.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/keyboard.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/mousewheel.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/navigation.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/pagination.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/scrollbar.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/parallax.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/zoom.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/controller.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/a11y.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/history.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/hash-navigation.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/autoplay.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/thumbs.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/free-mode.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/shared/effect-target.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-fade.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-cube.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/shared/create-shadow.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-flip.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-coverflow.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/shared/effect-init.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-creative.mjs","webpack://@lemon8/web-seo/javascript/common/temp/split__lemon8_web_seo/node_modules/.pnpm/swiper@11.0.7/node_modules/swiper/modules/effect-cards.mjs"],"names":["_path","_extends","target","i","source","key","SvgChevronDownFill","props","SvgChevronLeft","SvgChevronRight","SvgChevronRightFill","SvgHeart","SvgPlayFill","nativeCeil","nativeMax","baseRange","start","end","step","fromRight","index","length","result","module","baseSum","array","iteratee","current","isIterateeCall","toFinite","createRange","MAX_SAFE_INTEGER","reIsUint","isIndex","value","type","eq","isArrayLike","isObject","object","identity","isFunction","isLength","range","sum","toNumber","INFINITY","MAX_INTEGER","sign","Virtual","_ref","swiper","extendParams","on","emit","cssModeTimeout","document","tempDOM","renderSlide","slide","params","slideEl","update","force","slidesPerView","slidesPerGroup","centeredSlides","isLoop","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","slides","previousSlidesGrid","previousOffset","activeIndex","offsetProp","slidesAfter","slidesBefore","from","to","offset","onRendered","slidesToRender","prependIndexes","appendIndexes","getSlideIndex","slideIndex","el","loopFrom","loopTo","a","b","appendSlide","prependSlide","newActiveIndex","numberOfNewSlides","cache","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","domSlidesAssigned","Keyboard","window","handle","event","rtl","e","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","point","enable","disable","Mousewheel","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","normalize","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","disableParentSwiper","targetEl","targetElContainsTarget","delta","rtlFactor","data","positions","prevEvent","ignoreWheelEvents","position","wasBeginning","wasEnd","firstEvent","snapToThreshold","events","method","originalParams","checkProps","element","Navigation","getEl","res","toggleEl","disabled","subEl","nextEl","prevEl","onPrevClick","onNextClick","init","initButton","dir","destroy","destroyButton","_s","isHidden","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","bulletActiveClass","onBulletClick","previousIndex","slidesLength","total","bullets","firstIndex","lastIndex","midIndex","classesToRemove","suffix","s","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","Scrollbar","isTouched","dragTimeout","dragStartPos","dragSize","trackSize","divider","setTranslate","scrollbar","dragEl","progress","newSize","newPos","setTransition","duration","updateSize","getPointerPosition","setDragPosition","positionRatio","onDragStart","wrapperEl","onDragMove","onDragEnd","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","Parallax","elementsSelector","setTransform","p","x","y","opacity","rotate","currentOpacity","transform","currentScale","currentRotate","snapGrid","isElement","elements","slideProgress","hostEl","parallaxEl","parallaxDuration","_swiper","Zoom","isScaling","fakeGestureTouched","fakeGestureMoved","evCache","gesture","image","velocity","imageEl","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","maxRatio","imageMaxRatio","getScaleOrigin","box","getSlideSelector","eventWithinSlide","slideSelector","eventWithinZoomContainer","selector","containerEl","onGestureStart","originX","originY","onGestureChange","zoom","pointerIndex","cachedEv","onGestureEnd","onTouchStart","device","onTouchMove","scaledWidth","scaledHeight","scaleRatio","onTouchEnd","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","eventName","Controller","LinearSpline","binarySearch","maxIndex","minIndex","guess","val","i1","i3","getInterpolateFunction","c","_t","byController","controlled","multiplier","controlledTranslate","Swiper","setControlledTranslate","translate","setControlledTransition","removeSpline","controlElement","onControllerSwiper","A11y","liveRegion","notify","message","notification","getRandomNumber","size","randomChar","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","label","addElId","id","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","updateNavigation","hasPagination","hasClickablePagination","updatePagination","initNavEl","wrapperId","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","initSlides","ariaLabelMessage","History","initialized","paths","slugify","text","getPathValues","urlOverride","location","pathArray","part","setHistory","root","currentState","scrollToSlide","speed","runCallbacks","setHistoryPopState","HashNavigation","hash","slideWithHash","onHashChange","newHash","activeSlideEl","activeSlideHash","newIndex","setHash","Autoplay","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","resume","calcTimeLeft","timeLeft","getSlideDelay","run","delayForce","delay","currentSlideDelay","proceed","stop","pause","internal","reset","onVisibilityChange","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","Thumb","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","thumbsParams","SwiperClass","thumbsSwiperParams","initial","thumbsToActivate","thumbActiveClass","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","direction","newThumbsSlide","thumbs","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","freeMode","once","touches","_ref2","currentPos","timeDiff","lastMoveEvent","velocityEvent","distance","time","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","nextSlide","j","moveDistance","currentSlideSize","effectParams","transformEl","transformElements","allSlides","getSlide","eventTriggered","transitionEndTarget","evt","EffectFade","tx","ty","slideOpacity","EffectCube","createSlideShadows","isHorizontal","shadowBefore","shadowAfter","recreateShadows","swiperSize","browser","isVirtual","wrapperRotate","cubeShadowEl","slideAngle","round","tz","shadowAngle","scale1","scale2","zFactor","shadowEl","side","shadowClass","shadowContainer","EffectFlip","rotateY","rotateX","EffectCoverflow","slidesSizesGrid","center","slideSize","slideOffset","centerOffset","offsetMultiplier","translateZ","stretch","slideTransform","shadowBeforeEl","shadowAfterEl","effect","overwriteParams","perspective","getEffectParams","overwriteParamsResult","requireUpdateOnVirtual","EffectCreative","getTranslateValue","isCenteredSlides","margin","originalProgress","t","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","startTranslate","currentTranslate","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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","file":"207-87d168da0e1772039f15.js","sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronDownFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.707 8.293a1 1 0 10-1.414 1.414l7.778 7.778a1 1 0 001.414 0l7.779-7.778a1 1 0 00-1.415-1.414l-7.07 7.071-7.072-7.071z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgChevronDownFill;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronLeft(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.37 3.78a.75.75 0 010 1.061L9.12 12.089l7.248 7.248a.75.75 0 11-1.06 1.06L7.53 12.62a.75.75 0 010-1.06L15.31 3.78a.75.75 0 011.06 0z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgChevronLeft;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronRight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.63 20.22a.75.75 0 010-1.061l7.249-7.248L7.63 4.663a.75.75 0 011.06-1.06l7.779 7.778a.75.75 0 010 1.06L8.69 20.22a.75.75 0 01-1.06 0z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgChevronRight;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronRightFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.293 19.293a1 1 0 101.414 1.414l7.778-7.778a1 1 0 000-1.414L9.707 3.737A1 1 0 008.293 5.15l7.07 7.07-7.07 7.072z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgChevronRightFill;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgHeart(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.998 21.598c-.23 0-.459-.06-.658-.18-3.161-1.83-8.576-5.7-9.264-11.1-.289-2.3.25-4.33 1.516-5.7 1.047-1.13 2.493-1.69 4.078-1.61 1.765.1 3.24.93 4.268 2.4.02.03.04.05.06.08.02-.03.04-.05.06-.08 1.027-1.47 2.502-2.3 4.267-2.4 1.576-.08 3.032.48 4.079 1.61 1.276 1.37 1.814 3.39 1.515 5.7-.688 5.41-6.102 9.28-9.273 11.11-.21.12-.419.17-.648.17zM7.35 4.497c-1.037 0-1.984.4-2.672 1.14-.967 1.04-1.366 2.63-1.127 4.48.618 4.88 6.033 8.54 8.436 9.94 2.403-1.4 7.827-5.07 8.446-9.94.239-1.85-.16-3.45-1.127-4.48-.738-.79-1.775-1.2-2.902-1.13-1.306.07-2.363.67-3.13 1.77a4.4 4.4 0 00-.56 1.19.746.746 0 01-1.445 0s-.17-.64-.559-1.19c-.767-1.1-1.824-1.69-3.13-1.77h-.24l.01-.01z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgHeart;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPlayFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.185 20c.385 0 .701-.138 1.106-.365l10.934-6.331c.79-.455 1.076-.78 1.076-1.304s-.286-.85-1.076-1.304L8.29 4.366C7.886 4.137 7.571 4 7.185 4 6.475 4 6 4.543 6 5.393v13.214C6 19.457 6.474 20 7.185 20z\",\n fill: \"currentColor\"\n })));\n}\nexport default SvgPlayFill;","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var baseSum = require('./_baseSum'),\n identity = require('./identity');\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n}\n\nmodule.exports = sum;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\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 if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\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.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\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;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.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 changeDirection', () => {\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 if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\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}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\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 if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\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;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","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 if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\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 if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n"],"sourceRoot":""}