{"version":3,"file":"static/js/4832.7a2efaf7.chunk.js","mappings":"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","sources":["../node_modules/swiper/components-shared/utils.js","../node_modules/swiper/components-shared/params-list.js","../node_modules/swiper/shared/calc-looped-slides.js","../node_modules/swiper/react/get-children.js","../node_modules/swiper/components-shared/update-swiper.js","../node_modules/swiper/react/use-isomorphic-layout-effect.js","../node_modules/swiper/react/context.js","../node_modules/swiper/react/swiper.js","../node_modules/swiper/components-shared/get-params.js","../node_modules/swiper/components-shared/mount-swiper.js","../node_modules/swiper/components-shared/get-changed-params.js","../node_modules/swiper/components-shared/update-on-virtual-data.js","../node_modules/swiper/react/virtual.js","../node_modules/swiper/react/loop.js","../node_modules/swiper/react/swiper-slide.js","../node_modules/swiper/shared/dom.js","../node_modules/swiper/shared/get-support.js","../node_modules/swiper/shared/get-device.js","../node_modules/swiper/shared/get-browser.js","../node_modules/swiper/shared/utils.js","../node_modules/swiper/core/events-emitter.js","../node_modules/swiper/core/update/index.js","../node_modules/swiper/core/update/updateSize.js","../node_modules/swiper/core/update/updateSlides.js","../node_modules/swiper/core/update/updateAutoHeight.js","../node_modules/swiper/core/update/updateSlidesOffset.js","../node_modules/swiper/core/update/updateSlidesProgress.js","../node_modules/swiper/core/update/updateProgress.js","../node_modules/swiper/core/update/updateSlidesClasses.js","../node_modules/swiper/core/update/updateActiveIndex.js","../node_modules/swiper/core/update/updateClickedSlide.js","../node_modules/swiper/core/translate/index.js","../node_modules/swiper/core/translate/getTranslate.js","../node_modules/swiper/core/translate/setTranslate.js","../node_modules/swiper/core/translate/minTranslate.js","../node_modules/swiper/core/translate/maxTranslate.js","../node_modules/swiper/core/translate/translateTo.js","../node_modules/swiper/core/transition/transitionEmit.js","../node_modules/swiper/core/transition/index.js","../node_modules/swiper/core/transition/setTransition.js","../node_modules/swiper/core/transition/transitionStart.js","../node_modules/swiper/core/transition/transitionEnd.js","../node_modules/swiper/core/slide/index.js","../node_modules/swiper/core/slide/slideTo.js","../node_modules/swiper/core/slide/slideToLoop.js","../node_modules/swiper/core/slide/slideNext.js","../node_modules/swiper/core/slide/slidePrev.js","../node_modules/swiper/core/slide/slideReset.js","../node_modules/swiper/core/slide/slideToClosest.js","../node_modules/swiper/core/slide/slideToClickedSlide.js","../node_modules/swiper/core/events/onTouchStart.js","../node_modules/swiper/core/events/onTouchMove.js","../node_modules/swiper/core/events/onTouchEnd.js","../node_modules/swiper/core/events/onResize.js","../node_modules/swiper/core/events/onClick.js","../node_modules/swiper/core/events/onScroll.js","../node_modules/swiper/core/events/index.js","../node_modules/swiper/core/breakpoints/setBreakpoint.js","../node_modules/swiper/core/breakpoints/index.js","../node_modules/swiper/core/breakpoints/getBreakpoint.js","../node_modules/swiper/core/classes/index.js","../node_modules/swiper/core/classes/addClasses.js","../node_modules/swiper/core/classes/removeClasses.js","../node_modules/swiper/core/check-overflow/index.js","../node_modules/swiper/core/defaults.js","../node_modules/swiper/core/moduleExtendParams.js","../node_modules/swiper/core/core.js","../node_modules/swiper/core/loop/index.js","../node_modules/swiper/core/loop/loopCreate.js","../node_modules/swiper/core/loop/loopFix.js","../node_modules/swiper/core/loop/loopDestroy.js","../node_modules/swiper/core/grab-cursor/index.js","../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../node_modules/swiper/core/images/index.js","../node_modules/swiper/core/images/loadImage.js","../node_modules/swiper/core/images/preloadImages.js","../node_modules/swiper/core/modules/resize/resize.js","../node_modules/swiper/core/modules/observer/observer.js","../node_modules/swiper/modules/navigation/navigation.js","../node_modules/swiper/shared/create-element-if-not-defined.js","../node_modules/swiper/modules/zoom/zoom.js","../node_modules/swiper/modules/autoplay/autoplay.js","../node_modules/swiper/modules/thumbs/thumbs.js","../node_modules/swiper/modules/free-mode/free-mode.js"],"sourcesContent":["function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\n\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\n\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\n\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\n\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };","/* underscore in name -> watch for changes */\nconst paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopedSlidesLimit', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];\nexport { paramsList };","import Swiper from 'swiper';\nexport const calcLoopedSlides = (slides, swiperParams) => {\n let slidesPerViewParams = swiperParams.slidesPerView;\n\n if (swiperParams.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);\n const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n\n let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));\n loopedSlides += swiperParams.loopAdditionalSlides;\n\n if (loopedSlides > slides.length && swiperParams.loopedSlidesLimit) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n};","import React from 'react';\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\n\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\n\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nexport { getChildren };","import { isObject, extend } from './utils.js';\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","import { useEffect, useLayoutEffect } from 'react';\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nexport { useIsomorphicLayoutEffect };","import { createContext, useContext } from 'react';\nexport const SwiperSlideContext = /*#__PURE__*/createContext(null);\nexport const useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nexport const SwiperContext = /*#__PURE__*/createContext(null);\nexport const useSwiper = () => {\n return useContext(SwiperContext);\n};","function _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); }\n\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport SwiperCore from 'swiper';\nimport { getParams } from '../components-shared/get-params.js';\nimport { mountSwiper } from '../components-shared/mount-swiper.js';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js';\nimport { renderLoop, calcLoopedSlides } from './loop.js';\nimport { getChangedParams } from '../components-shared/get-changed-params.js';\nimport { getChildren } from './get-children.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\nimport { renderVirtual } from './virtual.js';\nimport { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperContext } from './context.js';\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n\n });\n\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = new SwiperCore(swiperParams);\n\n swiperRef.current.loopCreate = () => {};\n\n swiperRef.current.loopDestroy = () => {};\n\n if (swiperParams.loop) {\n swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams);\n }\n\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n\n if (!swiperElRef.current) {\n initSwiper();\n } // Listen for breakpoints change\n\n\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n }); // set initialized flag\n\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n }); // mount swiper\n\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n\n if (!swiperElRef.current) return;\n\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line\n\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []); // watch for params change\n\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n\n return () => {\n detachEvents();\n };\n }); // update on virtual update\n\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]); // bypass swiper instance to slides\n\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n\n if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {\n return slides.map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current\n });\n });\n }\n\n return renderLoop(swiperRef.current, slides, swiperParams);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","import Swiper from 'swiper';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nexport { getParams };","import { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { mountSwiper };","import { paramsList } from './params-list.js';\nimport { isObject } from './utils.js';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","export const updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};","import React from 'react';\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style\n });\n });\n}\n\nexport { renderVirtual };","import React from 'react';\nimport { calcLoopedSlides } from '../shared/calc-looped-slides.js';\n\nfunction renderLoop(swiper, slides, swiperParams) {\n const modifiedSlides = slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n 'data-swiper-slide-index': index\n });\n });\n\n function duplicateSlide(child, index, position) {\n return /*#__PURE__*/React.cloneElement(child, {\n key: `${child.key}-duplicate-${index}-${position}`,\n className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}`\n });\n }\n\n if (swiperParams.loopFillGroupWithBlank) {\n const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;\n\n if (blankSlidesNum !== swiperParams.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankSlide = /*#__PURE__*/React.createElement(\"div\", {\n className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`\n });\n modifiedSlides.push(blankSlide);\n }\n }\n }\n\n if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {\n swiperParams.loopedSlides = modifiedSlides.length;\n }\n\n const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);\n const prependSlides = [];\n const appendSlides = [];\n\n for (let i = 0; i < loopedSlides; i += 1) {\n const index = i - Math.floor(i / modifiedSlides.length) * modifiedSlides.length;\n appendSlides.push(duplicateSlide(modifiedSlides[index], i, 'append'));\n prependSlides.unshift(duplicateSlide(modifiedSlides[modifiedSlides.length - index - 1], i, 'prepend'));\n }\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [...prependSlides, ...modifiedSlides, ...appendSlides];\n}\n\nexport { calcLoopedSlides, renderLoop };","function _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); }\n\nimport React, { useRef, useState, forwardRef } from 'react';\nimport { uniqueClasses } from '../components-shared/utils.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperSlideContext } from './context.js';\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n virtualIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n\n if (!slideElRef.current || !swiper) {\n return;\n }\n\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n\n return;\n }\n\n swiper.on('_slideClass', updateClasses); // eslint-disable-next-line\n\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0\n };\n\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex\n }, rest), /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, zoom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren()) : renderChildren()));\n});\nSwiperSlide.displayName = 'SwiperSlide';\nexport { SwiperSlide };","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}"],"names":["isObject","o","constructor","Object","prototype","toString","call","slice","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","__swiper__","needsNavigation","params","arguments","undefined","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classes","split","map","c","trim","unique","push","join","paramsList","calcLoopedSlides","slides","swiperParams","slidesPerViewParams","slidesPerView","breakpoints","breakpoint","Swiper","breakpointOnlyParams","loopedSlides","Math","ceil","parseFloat","loopAdditionalSlides","loopedSlidesLimit","isChildSwiperSlide","child","type","displayName","includes","processChildren","React","props","children","slide","getChildren","slots","slot","foundSlides","updateSwiper","_ref","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","swiper","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","controller","control","newValue","mod","destroy","enabled","update","lazy","load","init","render","updateSize","setTranslate","allowSlideNext","allowSlidePrev","changeDirection","direction","useIsomorphicLayoutEffect","callback","deps","window","useEffect","useLayoutEffect","SwiperSlideContext","createContext","SwiperContext","_extends","assign","bind","i","source","hasOwnProperty","apply","this","forwardRef","_temp","externalElRef","className","_ref$tag","tag","Tag","_ref$wrapperTag","wrapperTag","WrapperTag","onSwiper","rest","_objectWithoutProperties","_excluded","eventsAssigned","_useState","useState","_useState2","_slicedToArray","containerClasses","setContainerClasses","_useState3","_useState4","virtualData","setVirtualData","_useState5","_useState6","breakpointChanged","setBreakpointChanged","initializedRef","useRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","_getParams","obj","splitEvents","on","events","_emitClasses","allowedParams","replace","plainObj","search","concat","toLowerCase","substr","getParams","restProps","_getChildren","onBeforeBreakpoint","_containerClasses","initSwiper","current","SwiperCore","loopCreate","loopDestroy","loop","extendWith","cache","renderExternal","renderExternalUpdate","originalParams","off","emitSlidesClasses","destroyed","mountSwiper","eventName","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateSlides","updateProgress","updateSlidesClasses","parallax","ref","Provider","value","style","isHorizontal","_defineProperty","rtlTranslate","offset","top","index","from","to","renderVirtual","modifiedSlides","duplicateSlide","position","slideDuplicateClass","loopFillGroupWithBlank","blankSlidesNum","slidesPerGroup","blankSlide","slideClass","slideBlankClass","prependSlides","appendSlides","floor","unshift","_toConsumableArray","renderLoop","SwiperSlide","externalRef","_ref$className","zoom","virtualIndex","slideElRef","slideClasses","setSlideClasses","updateClasses","_s","classNames","getSlideClasses","slideData","isActive","isVisible","isDuplicate","isPrev","isNext","renderChildren","Methods","addClass","removeClass","hasClass","toggleClass","attr","removeAttr","transform","transition","trigger","transitionEnd","outerWidth","outerHeight","styles","css","each","html","text","is","eq","append","prepend","next","nextAll","prev","prevAll","parent","parents","closest","find","remove","methodName","defineProperty","$","writable","support","deviceCached","browser","nextTick","setTimeout","now","Date","getTranslate","matrix","curTransform","transformMatrix","axis","getWindow","curStyle","getComputedStyle","currentStyle","WebKitCSSMatrix","webkitTransform","a","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","m41","m42","node","nextSource","HTMLElement","nodeType","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","time","targetPosition","side","startPosition","translate","startTime","duration","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","animate","getTime","progress","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSupport","document","getDocument","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","get","addEventListener","e","gestures","calcSupport","getDevice","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","test","calcBrowser","handler","priority","self","eventsListeners","method","event","once","onceHandler","__emitterProxy","_len","args","Array","_key","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","_len2","_key2","isArray","$el","clientWidth","clientHeight","isVertical","parseInt","Number","isNaN","size","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","slideSize","gridEnabled","grid","rows","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","_slide$","offsetWidth","swiperSlideSize","abs","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getAttribute","visibleSlides","activeIndex","offsetHeight","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","byController","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","_wrapperEl$scrollTo","onTranslateToWrapperTransitionEnd","removeEventListener","transitionEmit","step","transitionStart","slideTo","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","clientLeft","rewind","slidePrev","normalize","val","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","selector","__closestFrom","assignedSlot","found","getRootNode","host","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","diff","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","currentPos","touchEndTime","timeDiff","pathTree","lastClickTime","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","dummyEventAttached","dummyEventListener","touchEvents","capture","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","attachEvents","detachEvents","isGridEnabled","_swiper$loopedSlides","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","isEnabled","base","containerEl","currentHeight","innerHeight","points","point","minRatio","sort","b","_points$i","matchMedia","matches","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","initialSlide","resizeObserver","createElements","url","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","$selector","parentNode","blankNode","createElement","cloneNode","moving","isLocked","cursor","unsetGrabCursor","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","Image","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","_classCallCheck","swipers","newParams","_swiper$modules","modules","__modules__","extendParams","defaults","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","_createClass","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","querySelector","res","options","getWrapper","wrapper","mount","deleteInstance","cleanStyles","object","deleteProps","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","_swiper$navigation","$nextEl","$prevEl","onPrevClick","onNextClick","checkProps","element","createElementIfNotDefined","_swiper$navigation2","hideOnClick","hiddenClass","navigationDisabledClass","_swiper$navigation3","_swiper$navigation4","targetEl","clickable","contains","isHidden","Zoom","maxRatio","toggle","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","$slideEl","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","scale","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","left","scrollX","scrollY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","_getListeners2","_getListeners3","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Autoplay","timeout","$activeSlideEl","delay","clearTimeout","autoplayResult","reverseDirection","stopOnLastSlide","stop","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","j","moveDistance","currentSlideSize"],"sourceRoot":""}