{"version":3,"file":"swiper-bundle-y2-OU8Dl.js","sources":["../../../node_modules/swiper/modules/virtual.mjs","../../../node_modules/swiper/modules/keyboard.mjs","../../../node_modules/swiper/modules/mousewheel.mjs","../../../node_modules/swiper/modules/scrollbar.mjs","../../../node_modules/swiper/modules/parallax.mjs","../../../node_modules/swiper/modules/zoom.mjs","../../../node_modules/swiper/modules/controller.mjs","../../../node_modules/swiper/modules/a11y.mjs","../../../node_modules/swiper/modules/history.mjs","../../../node_modules/swiper/modules/hash-navigation.mjs","../../../node_modules/swiper/modules/thumbs.mjs","../../../node_modules/swiper/modules/free-mode.mjs","../../../node_modules/swiper/modules/grid.mjs","../../../node_modules/swiper/modules/manipulation.mjs","../../../node_modules/swiper/modules/effect-cube.mjs","../../../node_modules/swiper/shared/create-shadow.mjs","../../../node_modules/swiper/modules/effect-flip.mjs","../../../node_modules/swiper/modules/effect-coverflow.mjs","../../../node_modules/swiper/modules/effect-creative.mjs","../../../node_modules/swiper/modules/effect-cards.mjs","../../../node_modules/swiper/swiper-bundle.mjs"],"sourcesContent":["import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit, forceActiveIndex) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\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 if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\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 isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\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.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\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 slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\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 snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\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[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\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}\n\nexport { Manipulation as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n _loopSwapReset: false,\n watchSlidesProgress: true,\n loopAdditionalSlides: 3,\n centeredSlides: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/**\n * Swiper 11.2.4\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n"],"names":["Virtual","_ref","swiper","extendParams","on","emit","cssModeTimeout","document","getDocument","tempDOM","renderSlide","slide","index","params","slideEl","createElement","update","force","beforeInit","forceActiveIndex","slidesPerView","slidesPerGroup","centeredSlides","isLoop","initialSlide","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","slides","previousSlidesGrid","previousOffset","activeIndex","offsetProp","slidesAfter","slidesBefore","from","to","offset","onRendered","slidesToRender","i","prependIndexes","appendIndexes","getSlideIndex","slideIndex","el","loopFrom","loopTo","a","b","elementChildren","appendSlide","prependSlide","newActiveIndex","numberOfNewSlides","cache","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","key","removeAllSlides","domSlidesAssigned","setCSSProperty","Keyboard","window","getWindow","handle","event","rtl","e","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","elementParents","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","elementOffset","swiperCoord","point","enable","disable","Mousewheel","timeout","lastScrollTime","now","lastEventBeforeSnap","recentWheelEvents","normalize","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","disableParentSwiper","targetEl","targetElContainsTarget","delta","rtlFactor","data","positions","prevEvent","ignoreWheelEvents","position","wasBeginning","wasEnd","firstEvent","snapToThreshold","nextTick","events","method","Scrollbar","isTouched","dragTimeout","dragStartPos","dragSize","trackSize","divider","setTranslate","scrollbar","dragEl","progress","newSize","newPos","setTransition","duration","updateSize","getPointerPosition","setDragPosition","positionRatio","onDragStart","wrapperEl","onDragMove","onDragEnd","target","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","init","swiperEl","createElementIfNotDefined","classesToSelector","classesToTokens","destroy","makeElementsArray","subEl","_s","Parallax","elementsSelector","setTransform","x","y","scale","opacity","rotate","currentOpacity","transform","currentScale","currentRotate","snapGrid","isElement","elements","slideProgress","hostEl","parallaxEl","parallaxDuration","_swiper","Zoom","isScaling","isPanningWithMouse","mousePanStart","mousePanSensitivity","fakeGestureTouched","fakeGestureMoved","evCache","gesture","image","velocity","value","imageEl","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","maxRatio","imageMaxRatio","getScaleOrigin","box","getSlideSelector","eventWithinSlide","slideSelector","eventWithinZoomContainer","selector","containerEl","onGestureStart","originX","originY","onGestureChange","zoom","pointerIndex","cachedEv","onGestureEnd","allowTouchMoveTimeout","allowTouchMove","preventTouchMove","onTouchStart","device","onTouchMove","isMousePan","onMouseMove","getTranslate","scaledWidth","scaledHeight","scaleRatio","onTouchEnd","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","currentTransform","matrix","deltaX","deltaY","slideWidth","slideHeight","minX","maxX","minY","maxY","newX","newY","zoomIn","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","eventName","Controller","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","val","i1","i3","getInterpolateFunction","c","_t","byController","controlled","multiplier","controlledTranslate","Swiper","setControlledTranslate","translate","setControlledTransition","elementTransitionEnd","removeSpline","controlElement","onControllerSwiper","A11y","liveRegion","preventFocusHandler","focusTargetSlideEl","visibilityChangedTimestamp","notify","message","notification","getRandomNumber","size","randomChar","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","label","addElId","id","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","prevEls","updateNavigation","nextEl","prevEl","hasPagination","hasClickablePagination","updatePagination","bulletEl","elementIndex","initNavEl","wrapperId","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","isVisible","initSlides","slidesLength","ariaLabelMessage","History","initialized","paths","slugify","text","getPathValues","urlOverride","location","pathArray","part","total","setHistory","root","currentState","scrollToSlide","speed","runCallbacks","length","setHistoryPopState","HashNavigation","hash","slideWithHash","onHashChange","newHash","activeSlideEl","activeSlideHash","newIndex","setHash","Thumb","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","thumbsParams","SwiperClass","isObject","thumbsSwiperParams","initial","thumbsToActivate","thumbActiveClass","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","direction","newThumbsSlide","thumbs","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","freeMode","once","touches","_ref2","currentPos","timeDiff","lastMoveEvent","velocityEvent","distance","time","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","nextSlide","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","wasMultiRow","getSpaceBetween","spaceBetween","rows","fill","unsetSlides","updateSlide","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","updateWrapperSize","slideSize","roundLengths","newSlidesGrid","slidesGridItem","onInit","onUpdate","isMultiRow","slidesEl","appendElement","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","EffectCube","createSlideShadows","isHorizontal","shadowBefore","shadowAfter","effectInit","swiperSize","browser","r","getRotateFix","isVirtual","wrapperRotate","cubeShadowEl","slideAngle","round","tx","ty","tz","shadowAngle","scale1","scale2","zFactor","shadowEl","createShadow","suffix","side","shadowClass","shadowContainer","getSlideTransformEl","EffectFlip","rotateFix","rotateY","rotateX","effectTarget","transformElements","effectVirtualTransitionEnd","EffectCoverflow","slidesSizesGrid","center","slideOffset","centerOffset","offsetMultiplier","translateZ","stretch","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","getTranslateValue","isCenteredSlides","margin","originalProgress","t","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","startTranslate","currentTranslate","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","modules","Navigation","Pagination","Autoplay","EffectFade"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}