{"version":3,"file":"static/js/2692.9a4b08b4.chunk.js","mappings":"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","sources":["webpack://heliotherm/./node_modules/swiper/modules/pagination/pagination.min.css?d055","webpack://heliotherm/./node_modules/swiper/swiper.min.css?c286","../node_modules/swiper/components-shared/utils.js","../node_modules/swiper/components-shared/params-list.js","../node_modules/swiper/shared/calc-looped-slides.js","../node_modules/swiper/react/get-children.js","../node_modules/swiper/components-shared/update-swiper.js","../node_modules/swiper/react/use-isomorphic-layout-effect.js","../node_modules/swiper/react/context.js","../node_modules/swiper/react/swiper.js","../node_modules/swiper/components-shared/get-params.js","../node_modules/swiper/components-shared/mount-swiper.js","../node_modules/swiper/components-shared/get-changed-params.js","../node_modules/swiper/components-shared/update-on-virtual-data.js","../node_modules/swiper/react/virtual.js","../node_modules/swiper/react/loop.js","../node_modules/swiper/react/swiper-slide.js","../node_modules/swiper/shared/dom.js","../node_modules/swiper/shared/utils.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/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/slide/index.js","../node_modules/swiper/core/slide/slideTo.js","../node_modules/swiper/core/slide/slideToLoop.js","../node_modules/swiper/core/slide/slideNext.js","../node_modules/swiper/core/slide/slidePrev.js","../node_modules/swiper/core/slide/slideReset.js","../node_modules/swiper/core/slide/slideToClosest.js","../node_modules/swiper/core/slide/slideToClickedSlide.js","../node_modules/swiper/core/events/onTouchStart.js","../node_modules/swiper/core/events/onTouchMove.js","../node_modules/swiper/core/events/onTouchEnd.js","../node_modules/swiper/core/events/onResize.js","../node_modules/swiper/core/events/onClick.js","../node_modules/swiper/core/events/onScroll.js","../node_modules/swiper/core/events/index.js","../node_modules/swiper/core/breakpoints/setBreakpoint.js","../node_modules/swiper/core/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/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/loop/index.js","../node_modules/swiper/core/loop/loopCreate.js","../node_modules/swiper/core/loop/loopFix.js","../node_modules/swiper/core/loop/loopDestroy.js","../node_modules/swiper/core/grab-cursor/index.js","../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../node_modules/swiper/core/breakpoints/index.js","../node_modules/swiper/core/breakpoints/getBreakpoint.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 {};","// 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', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopedSlidesLimit', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];\nexport { paramsList };","import Swiper from 'swiper';\nexport const calcLoopedSlides = (slides, swiperParams) => {\n let slidesPerViewParams = swiperParams.slidesPerView;\n\n if (swiperParams.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);\n const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n\n let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));\n loopedSlides += swiperParams.loopAdditionalSlides;\n\n if (loopedSlides > slides.length && swiperParams.loopedSlidesLimit) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n};","import React from 'react';\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\n\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\n\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nexport { getChildren };","import { isObject, extend } from './utils.js';\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","import { useEffect, useLayoutEffect } from 'react';\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nexport { useIsomorphicLayoutEffect };","import { createContext, useContext } from 'react';\nexport const SwiperSlideContext = /*#__PURE__*/createContext(null);\nexport const useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nexport const SwiperContext = /*#__PURE__*/createContext(null);\nexport const useSwiper = () => {\n return useContext(SwiperContext);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport SwiperCore from 'swiper';\nimport { getParams } from '../components-shared/get-params.js';\nimport { mountSwiper } from '../components-shared/mount-swiper.js';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js';\nimport { renderLoop, calcLoopedSlides } from './loop.js';\nimport { getChangedParams } from '../components-shared/get-changed-params.js';\nimport { getChildren } from './get-children.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\nimport { renderVirtual } from './virtual.js';\nimport { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperContext } from './context.js';\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n\n });\n\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = new SwiperCore(swiperParams);\n\n swiperRef.current.loopCreate = () => {};\n\n swiperRef.current.loopDestroy = () => {};\n\n if (swiperParams.loop) {\n swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams);\n }\n\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n\n if (!swiperElRef.current) {\n initSwiper();\n } // Listen for breakpoints change\n\n\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n }); // set initialized flag\n\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n }); // mount swiper\n\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n\n if (!swiperElRef.current) return;\n\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line\n\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []); // watch for params change\n\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n\n return () => {\n detachEvents();\n };\n }); // update on virtual update\n\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]); // bypass swiper instance to slides\n\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n\n if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {\n return slides.map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current\n });\n });\n }\n\n return renderLoop(swiperRef.current, slides, swiperParams);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","import Swiper from 'swiper';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nexport { getParams };","import { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { mountSwiper };","import { paramsList } from './params-list.js';\nimport { isObject } from './utils.js';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","export const updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};","import React from 'react';\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style\n });\n });\n}\n\nexport { renderVirtual };","import React from 'react';\nimport { calcLoopedSlides } from '../shared/calc-looped-slides.js';\n\nfunction renderLoop(swiper, slides, swiperParams) {\n const modifiedSlides = slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n 'data-swiper-slide-index': index\n });\n });\n\n function duplicateSlide(child, index, position) {\n return /*#__PURE__*/React.cloneElement(child, {\n key: `${child.key}-duplicate-${index}-${position}`,\n className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}`\n });\n }\n\n if (swiperParams.loopFillGroupWithBlank) {\n const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;\n\n if (blankSlidesNum !== swiperParams.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankSlide = /*#__PURE__*/React.createElement(\"div\", {\n className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`\n });\n modifiedSlides.push(blankSlide);\n }\n }\n }\n\n if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {\n swiperParams.loopedSlides = modifiedSlides.length;\n }\n\n const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);\n const prependSlides = [];\n const appendSlides = [];\n\n for (let i = 0; i < loopedSlides; i += 1) {\n const index = i - Math.floor(i / modifiedSlides.length) * modifiedSlides.length;\n appendSlides.push(duplicateSlide(modifiedSlides[index], i, 'append'));\n prependSlides.unshift(duplicateSlide(modifiedSlides[modifiedSlides.length - index - 1], i, 'prepend'));\n }\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [...prependSlides, ...modifiedSlides, ...appendSlides];\n}\n\nexport { calcLoopedSlides, renderLoop };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, forwardRef } from 'react';\nimport { uniqueClasses } from '../components-shared/utils.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperSlideContext } from './context.js';\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n virtualIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n\n if (!slideElRef.current || !swiper) {\n return;\n }\n\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n\n return;\n }\n\n swiper.on('_slideClass', updateClasses); // eslint-disable-next-line\n\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0\n };\n\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex\n }, rest), /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, zoom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren()) : renderChildren()));\n});\nSwiperSlide.displayName = 'SwiperSlide';\nexport { SwiperSlide };","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } 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 };","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 };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import 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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import 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 loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","/* 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 navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","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 paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import $ 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 = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","/* 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 id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","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 if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","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 recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import 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 createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import $ 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 $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}"],"names":["isObject","o","constructor","Object","prototype","toString","call","slice","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","__swiper__","needsNavigation","params","arguments","undefined","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classes","split","map","c","trim","unique","push","join","paramsList","calcLoopedSlides","slides","swiperParams","slidesPerViewParams","slidesPerView","breakpoints","breakpoint","Swiper","getBreakpoint","breakpointOnlyParams","loopedSlides","Math","ceil","parseFloat","loopAdditionalSlides","loopedSlidesLimit","isChildSwiperSlide","child","type","displayName","includes","processChildren","React","toArray","props","children","slide","getChildren","slots","slot","foundSlides","updateSwiper","_ref","swiper","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","controller","control","newValue","mod","destroy","enabled","update","lazy","load","init","render","updateSize","setTranslate","allowSlideNext","allowSlidePrev","changeDirection","direction","useIsomorphicLayoutEffect","callback","deps","window","useEffect","useLayoutEffect","SwiperSlideContext","createContext","useSwiperSlide","useContext","SwiperContext","useSwiper","_extends","assign","bind","i","source","hasOwnProperty","apply","this","forwardRef","_temp","externalElRef","className","tag","Tag","wrapperTag","WrapperTag","onSwiper","rest","eventsAssigned","containerClasses","setContainerClasses","useState","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","useRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","events","obj","splitEvents","on","defaults","extendedDefaults","_emitClasses","allowedParams","replace","plainObj","search","concat","toLowerCase","substr","getParams","onBeforeBreakpoint","_containerClasses","initSwiper","current","SwiperCore","loopCreate","loopDestroy","loop","extendWith","cache","renderExternal","renderExternalUpdate","originalParams","off","emitSlidesClasses","destroyed","mountSwiper","eventName","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateSlides","updateProgress","updateSlidesClasses","parallax","ref","Provider","value","style","isHorizontal","rtlTranslate","offset","top","index","from","to","renderVirtual","modifiedSlides","duplicateSlide","position","slideDuplicateClass","loopFillGroupWithBlank","blankSlidesNum","slidesPerGroup","blankSlide","slideClass","slideBlankClass","prependSlides","appendSlides","floor","unshift","renderLoop","SwiperSlide","externalRef","zoom","virtualIndex","slideElRef","slideClasses","setSlideClasses","updateClasses","_s","classNames","getSlideClasses","slideData","isActive","isVisible","isDuplicate","isPrev","isNext","renderChildren","Methods","addClass","removeClass","hasClass","toggleClass","attr","removeAttr","transform","transition","trigger","transitionEnd","outerWidth","outerHeight","styles","css","each","html","text","is","eq","append","prepend","next","nextAll","prev","prevAll","parent","parents","closest","find","remove","methodName","defineProperty","$","fn","writable","nextTick","setTimeout","now","Date","getTranslate","axis","getWindow","matrix","curTransform","transformMatrix","curStyle","getComputedStyle","currentStyle","WebKitCSSMatrix","webkitTransform","a","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","m41","m42","nextSource","node","HTMLElement","nodeType","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","translate","time","startTime","duration","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","animate","getTime","progress","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","support","deviceCached","browser","getSupport","document","getDocument","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","get","addEventListener","e","gestures","calcSupport","getDevice","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","test","calcBrowser","handler","priority","self","eventsListeners","method","event","once","onceHandler","__emitterProxy","_len","args","Array","_key","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","data","context","_len2","_key2","isArray","$el","clientWidth","clientHeight","isVertical","parseInt","Number","isNaN","size","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","swiperSlideSize","abs","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getAttribute","visibleSlides","activeIndex","offsetHeight","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","realIndex","activeSlide","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","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","removeEventListener","transitionEmit","step","slideTo","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","transitionStart","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","selector","__closestFrom","assignedSlot","found","getRootNode","host","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","diff","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","dummyEventAttached","dummyEventListener","touchEvents","capture","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","fill","emitContainerClasses","removeClasses","initialSlide","resizeObserver","createElements","url","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","$selector","parentNode","blankNode","createElement","cloneNode","moving","isLocked","cursor","unsetGrabCursor","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","isEnabled","base","containerEl","currentHeight","innerHeight","points","point","minRatio","sort","b","matchMedia","matches","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","Image","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","swipers","newParams","modules","__modules__","extendParams","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","querySelector","res","options","wrapper","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","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","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","left","swiperCoord","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","contains","rtlFactor","sX","sY","pX","pY","detail","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","navigationDisabledClass","targetEl","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","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","getBoundingClientRect","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","Parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","maxRatio","toggle","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","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","scrollX","scrollY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","set","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","binarySearch","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","classList","$containerEl","repeat","randomChar","round","random","getRandomNumber","live","addElLive","updateNavigation","bulletEl","updatePagination","History","history","root","replaceState","keepQuery","paths","slugify","getPathValues","urlOverride","location","URL","pathArray","pathname","part","setHistory","currentState","state","pushState","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","hash","setHash","Autoplay","$activeSlideEl","delay","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","origin","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sourceRoot":""}