{"version":3,"file":"static/js/1410.b96ea127.chunk.js","mappings":"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","sources":["webpack://rupertus/./node_modules/swiper/swiper.min.css?c286","../node_modules/swiper/react/utils.js","../node_modules/swiper/react/params-list.js","../node_modules/swiper/react/get-params.js","../node_modules/swiper/react/init-swiper.js","../node_modules/swiper/react/loop.js","../node_modules/swiper/react/get-changed-params.js","../node_modules/swiper/react/get-children.js","../node_modules/swiper/react/update-swiper.js","../node_modules/swiper/react/virtual.js","../node_modules/swiper/react/use-isomorphic-layout-effect.js","../node_modules/swiper/react/swiper.js","../node_modules/swiper/react/swiper-slide.js","../node_modules/dom7/dom7.esm.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/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/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/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/virtual/virtual.js","../node_modules/swiper/modules/keyboard/keyboard.js","../node_modules/swiper/modules/mousewheel/mousewheel.js","../node_modules/swiper/shared/create-element-if-not-defined.js","../node_modules/swiper/modules/navigation/navigation.js","../node_modules/swiper/shared/classes-to-selector.js","../node_modules/swiper/modules/pagination/pagination.js","../node_modules/swiper/modules/scrollbar/scrollbar.js","../node_modules/swiper/modules/parallax/parallax.js","../node_modules/swiper/modules/zoom/zoom.js","../node_modules/swiper/modules/lazy/lazy.js","../node_modules/swiper/modules/controller/controller.js","../node_modules/swiper/modules/a11y/a11y.js","../node_modules/swiper/modules/history/history.js","../node_modules/swiper/modules/hash-navigation/hash-navigation.js","../node_modules/swiper/modules/autoplay/autoplay.js","../node_modules/swiper/modules/thumbs/thumbs.js","../node_modules/swiper/modules/free-mode/free-mode.js","../node_modules/swiper/modules/grid/grid.js","../node_modules/swiper/modules/manipulation/methods/appendSlide.js","../node_modules/swiper/modules/manipulation/methods/prependSlide.js","../node_modules/swiper/modules/manipulation/methods/addSlide.js","../node_modules/swiper/modules/manipulation/methods/removeSlide.js","../node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","../node_modules/swiper/modules/manipulation/manipulation.js","../node_modules/swiper/shared/effect-init.js","../node_modules/swiper/shared/effect-target.js","../node_modules/swiper/shared/effect-virtual-transition-end.js","../node_modules/swiper/modules/effect-fade/effect-fade.js","../node_modules/swiper/modules/effect-cube/effect-cube.js","../node_modules/swiper/shared/create-shadow.js","../node_modules/swiper/modules/effect-flip/effect-flip.js","../node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","../node_modules/swiper/modules/effect-creative/effect-creative.js","../node_modules/swiper/modules/effect-cards/effect-cards.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {};","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', '_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', '_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';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj = {}) {\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 Object.keys(obj).forEach(key => {\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 events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\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 Swiper from 'swiper';\nimport { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction initSwiper(swiperParams) {\n return new Swiper(swiperParams);\n}\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 { initSwiper, mountSwiper };","import React from 'react';\nimport Swiper from 'swiper';\n\nfunction 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) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n}\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 modifiedSlides.forEach((child, index) => {\n if (index < loopedSlides) {\n appendSlides.push(duplicateSlide(child, index, 'prepend'));\n }\n\n if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {\n prependSlides.push(duplicateSlide(child, index, 'append'));\n }\n });\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [...prependSlides, ...modifiedSlides, ...appendSlides];\n}\n\nexport { calcLoopedSlides, renderLoop };","import { paramsList } from './params-list.js';\nimport { isObject } from './utils.js';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren) {\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 const oldChildrenKeys = oldChildren.map(child => child.key);\n const childrenKeys = children.map(child => child.key);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\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 };","import React from 'react';\n\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (child.type && child.type.displayName === 'SwiperSlide') {\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 (child.type && child.type.displayName === 'SwiperSlide') {\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 (changedParams.includes('children') && 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 React from 'react';\n\nfunction 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}\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, updateOnVirtualData };","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 };","function _extends() { _extends = Object.assign || 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 { getParams } from './get-params.js';\nimport { initSwiper, mountSwiper } from './init-swiper.js';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils.js';\nimport { renderLoop, calcLoopedSlides } from './loop.js';\nimport { getChangedParams } from './get-changed-params.js';\nimport { getChildren } from './get-children.js';\nimport { updateSwiper } from './update-swiper.js';\nimport { renderVirtual, updateOnVirtualData } from './virtual.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nconst Swiper = /*#__PURE__*/forwardRef(({\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n} = {}, externalElRef) => {\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 if (!swiperElRef.current) {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = initSwiper(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 } // 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 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);\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), slots['container-start'], 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 }), /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']);\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","function _extends() { _extends = Object.assign || 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 './utils.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nconst SwiperSlide = /*#__PURE__*/forwardRef(({\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n virtualIndex,\n ...rest\n} = {}, externalRef) => {\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) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n let slideData;\n\n if (typeof children === 'function') {\n 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\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), 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 };","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","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 (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 (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 (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.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) 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) 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}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // 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 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 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 return swiper.slideTo(swiper.slides.length - 1, 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 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) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\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 { 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 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 !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[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, e.target) : $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 if ($targetEl.is(data.focusableElements)) preventDefault = false;\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 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 // isMoved = true;\n swiper.allowClick = false;\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 } // 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(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\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(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(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 }\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 }], 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 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 // 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 });\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\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 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 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 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 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 ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\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\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 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 observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\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 $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import { 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 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 }\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 }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\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 init();\n update();\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 Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { 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}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n addElRole($(swiper.slides), params.slideRole);\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","/* 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 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 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 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) 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) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\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 } // Activate thumbs\n\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\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 if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiperCreated && thumbsSwiper) {\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 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 onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}"],"names":["isObject","o","constructor","Object","prototype","toString","call","slice","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","__swiper__","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","paramsList","getParams","obj","on","events","passedParams","Swiper","_emitClasses","init","rest","allowedParams","replace","search","toLowerCase","substr","initSwiper","swiperParams","mountSwiper","paginationEl","scrollbarEl","swiper","originalParams","calcLoopedSlides","slides","slidesPerViewParams","slidesPerView","breakpoints","breakpoint","breakpointOnlyParams","undefined","loopedSlides","Math","ceil","parseFloat","loopAdditionalSlides","renderLoop","modifiedSlides","child","index","React","duplicateSlide","position","className","props","slideDuplicateClass","loopFillGroupWithBlank","blankSlidesNum","slidesPerGroup","i","blankSlide","slideClass","slideBlankClass","prependSlides","appendSlides","getChangedParams","oldParams","children","oldChildren","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","processChildren","type","displayName","slide","getChildren","slots","slot","foundSlides","updateSwiper","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","changedParams","updateParams","currentParams","virtual","thumbs","includes","controller","control","newValue","mod","destroy","enabled","update","lazy","load","render","updateSize","setTranslate","allowSlideNext","allowSlidePrev","changeDirection","direction","updateOnVirtualData","destroyed","updateSlides","updateProgress","updateSlidesClasses","parallax","renderVirtual","virtualData","style","isHorizontal","rtlTranslate","offset","top","from","to","useIsomorphicLayoutEffect","callback","deps","window","useEffect","useLayoutEffect","_extends","assign","arguments","source","hasOwnProperty","apply","this","forwardRef","tag","Tag","wrapperTag","WrapperTag","onSwiper","externalElRef","eventsAssigned","useState","containerClasses","setContainerClasses","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","useRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","onBeforeBreakpoint","_containerClasses","current","loopCreate","loopDestroy","loop","extendWith","cache","renderExternal","renderExternalUpdate","attachEvents","eventName","detachEvents","off","renderSlides","emitSlidesClasses","ref","SwiperSlide","slideData","zoom","virtualIndex","externalRef","slideElRef","slideClasses","setSlideClasses","updateClasses","_s","getSlideClasses","isActive","isVisible","isDuplicate","isPrev","isNext","renderChildren","Dom7","items","proto","__proto__","defineProperty","get","set","value","makeReactive","Array","arrayFlat","arr","res","isArray","arrayFilter","$","selector","context","getWindow","document","getDocument","html","toCreate","tempParent","createElement","innerHTML","childNodes","a","querySelectorAll","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","shortcut","name","args","trigger","Methods","addClass","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","getAttribute","setAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","parents","k","handleEvent","j","event","dom7LiveListeners","proxyListener","addEventListener","dom7Listeners","handlers","handler","dom7proxy","removeEventListener","splice","CustomEvent","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","getPropertyValue","outerHeight","offsetHeight","getComputedStyle","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","left","css","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","methodName","writable","support","deviceCached","browser","deleteProps","object","nextTick","delay","setTimeout","now","Date","currentStyle","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","node","HTMLElement","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","time","targetPosition","side","startPosition","translate","startTime","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","animate","getTime","progress","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","calcDevice","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","getBrowser","isSafari","isWebView","test","calcBrowser","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","eventsArray","$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","floor","swiperSlideSize","abs","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","activeIndex","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","onTranslateToWrapperTransitionEnd","transitionEmit","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","prevSnapIndex","normalizedSnapGrid","prevSnap","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","$selector","blankNode","cloneNode","diff","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","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","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","currentPos","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","bind","isGridEnabled","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","isEnabled","disable","enable","base","containerEl","currentHeight","innerHeight","points","point","minRatio","sort","b","matchMedia","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","resizeObserver","createElements","url","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","moving","isLocked","cursor","unsetGrabCursor","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","Image","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","swipers","newParams","modules","__modules__","extendParams","defaults","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","cls","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","querySelector","options","getWrapper","wrapper","mount","deleteInstance","cleanStyles","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","Virtual","cssModeTimeout","renderSlide","$slideEl","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","clearTimeout","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","nodeName","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","createElementIfNotDefined","checkProps","element","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","targetEl","clickable","isHidden","classesToSelector","Pagination","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","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","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","LinearSpline","i1","i3","binarySearch","guess","array","interpolate","removeSpline","spline","inverse","by","_t","controlledTranslate","controlled","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","$containerEl","id","randomChar","round","random","repeat","getRandomNumber","live","addElLive","bulletEl","updatePagination","History","history","root","replaceState","paths","slugify","getPathValues","urlOverride","pathArray","URL","location","pathname","part","setHistory","currentState","state","pushState","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","hash","setHash","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","isCenteredSlides","margin","r","custom","getTranslateValue","translateString","rotateString","scaleString","opacityString","shadowOpacity","origin","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sourceRoot":""}